JBoss.orgCommunity Documentation

Chapter 3. Editors

3.1. Editors Features
3.1.1. OpenOn
3.1.2. Content Assist
3.1.3. Synchronized Source and Visual Editing
3.2. Visual Page Editor
3.2.1. Visual/Source View
3.2.2. Pages Styling
3.2.3. Visual Templates for Unknown Tags
3.2.4. Export/Import of the Templates for Unknown Tags
3.2.5. VPE Toolbar
3.2.6. Page Preview
3.2.7. Error Messages
3.2.8. Support for Custom Facelets Components
3.3. More Editors
3.3.1. Graphical Properties Editor
3.3.2. Graphical Tag Library Editor
3.3.3. Graphical Web Application File (web.xml) Editor
3.3.4. CSS Editor
3.3.5. JavaScript Editor
3.3.6. XSD Editor
3.3.7. Support for XML Schema

In the JSF Tools Reference Guide you may have read about the Graphical Editors for JSF configuration files and Tiles Files. All these editors have OpenOn (see Section 3.1.1, “OpenOn”) and Code Assist (see Section 3.1.2, “Content Assist”) features, which are described in more detail in this document. In addition, this document will cover the Visual Page Editor (see Section 3.2, “Visual Page Editor”), which provides combined visual and source editing of Web pages, as well as a number of additional editors (see Section 3.3, “More Editors”) for different types of files.

JBoss Developer Studio has powerful editing features that help you easily navigate within your application and make use of content and code assist no matter what type of project file (JSP, XHTML, XML, CSS etc.) you are working on.

The mentioned features are the following:

OpenOn lets you easily link directly from one resource to another in your project without using the Package Explorer view (i.e. the project tree). With OpenOn, you can simply use F3 or Ctrl+Click on a reference to another file and the file will be opened.

OpenOn is available for:

Content assist is available when working with:

Notice that code completion for EL variables have icons illustrating what they are from. These icons are described in the table below.




The ranking and sorting are available in EL code completions.

As you can see, in addition to proposals, content assist also provides descriptions of selected tags or attributes.


When working with a JSF project in JBoss Developer Studio, you can use various Content Assist features while developing:

JBoss Developer Studio takes Content Assist to the next level. JBoss Developer Studio will constantly scan your project, and you will be able to insert code into the JSP page from your project including:

The figure below demonstrates how to insert a message from a Properties file. You simply put the cursor inside the value attribute and press Ctrl+Space. JBoss Developer Studio will scan your project and display a list of possible values that can be inserted.


In the following screenshot we are inserting a Managed bean attribute value. Again, by simply pressing Ctrl+Space, JBoss Developer Studio will show a list of all possible values that can be inserted.

Once you select a Managed bean, it will show you a list of all available attributes for the selected Managed bean.


Code Assist based on project data will also prompt you for navigation rules that exist in your JSF configuration file.


Code Assist can also provide you with access to the beans located in JAR archives.


Code Assist is able to define Resource Bundles on template pages and provides the proposals on the client page.


JBoss Developer Studio comes with a powerful and customizable Visual Page Editor (VPE). You can use the Visual Page Editor to develop an application using any technology such as JSF, JSP, HTML and more. Double-click on a file in the Package Explorer view to open it in the Visual Editor, or just drag-and-drop it into perspective (the drag-and-drop feature can be also applied to JSP, XHTML or HTML files created locally).

As a new JSF 2.0 specification has been released, support of new features is now implemented in the Visual Page Editor. The JSF 2.0 tags like <h:body>, <h:head>, <h:outputscript>, <h:outputstyle> are supported in the editor, as well as the composite components and expression language resource handling. (See the JSF 2 fu, Part 2: Templating and composite components for information on how to use composite components and JSF 2.0 New Feature Preview Series (Part 2.3): Resources on how to handle EL resources).

The current VPE version has three tabs: Visual/Source, Source and Preview. To switch between the views you can use tabs at the bottom of the VPE or the shortcut keys Ctrl+PageUp and Ctrl+PageDown.


Using the Visual/Source view you can edit your pages in the Source and Visual modes simultaneously, with instant synchronization between them:


The view is designed in the form of a split pane with toggle buttons for quickly moving between Source, Visual or Source/Visual modes, as shown on the figure above.

One more way to toggle between the various states of the split pane is using the Shift+F6 keyboard shortcut for maximizing or restoring the Source part and Shift+Alt+F6 for maximizing or restoring the Visual part.

You can synchronize the scrolling between the source and visual panes by clicking the Synchronize scrolling between source and visual panes (Synchronize scrolling between source and visual panes) button in the toolbar of the Web Development perspective. This will ensure that scrolling in one window pane will automatically scroll the other pane to the same location.

Tip:

When editing large documents hiding the Visual part will speed up the editing.

It should be pointed out that, no matter what mode you are working in, you get a full integration with the Properties and Outline views:


The Outline view displays a specific outline of a structured file that is currently open in the editor area, and lists its structural elements. Right-clicking on these elements will open additional options that allow other specific elements to be added in their appropriate positions.

The Properties view shows the property names and their values for a selected item. The values are editable: just select any value and click on the button that will appear to choose a new value. The key combination Ctrl+Z will return the previous value, while Ctrl+Y will return the new value again. The Properties view has additional options and can be set up to display categories and advanced properties.

It is also possible to use the JBoss Tools Palette (see Chapter 5, JBoss Tools Palette) to insert any tag from the list of tag libraries into the page you are editing with just a click or by dragging-and-dropping.


You can insert a tag or component from the palette into either the Source or the Visual part by displaying the context menu and selecting Insert around, Insert before, Insert after or Replace With, picking the type of the tag and finally choosing the tag you want to insert.

The image below illustrates how you can insert a tag into the Source part.


And this is how a tag is inserted using a context menu in the Visual part.


The Visual Page Editor also displays custom tags correctly if they are configured properly. The picture below shows an example how the custom tags pagination and echo will be displayed in VPE.


The listings of the custom tag implementations will help to demonstrate how VPE works.

  • echo.xhtml:

    <ui:composition xmlns:ui="http://java.sun.com/jsf/facelets">
    	<span class="message">#{msg}</span>
    </ui:composition>
              
  • paginator.xhtml:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
    	xmlns:ui="http://java.sun.com/jsf/facelets"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:f="http://java.sun.com/jsf/core">
    <ui:component>
    <!-- h:inputHidden id="currentPage" replace, because if on page two fields,
    two elements with equal id has been used, but should be used only one -->
    	<h:panelGrid style="margin-right:auto;margin-left:auto;" columns="4">
    		<h:commandButton value="&lt;&lt;" type="submit" 
    		onclick="document.getElementById('currentPage').value=0" >
    		</h:commandButton>
    		<h:commandButton value="&lt;" type="submit" 
    		onclick="document.getElementById('currentPage').value=#{user.currentPage-user.rowsPerPage}">
    		</h:commandButton>
    		<h:commandButton value="&gt;" type="submit" 
    		onclick="document.getElementById('currentPage').value=#{user.currentPage+user.rowsPerPage}">
    		</h:commandButton>
    		<h:commandButton value="&gt;&gt;" type="submit" 
    		onclick="document.getElementById('currentPage').value=#{user.numberOfItems - user.rowsPerPage}">
    		</h:commandButton>
    	</h:panelGrid>
    	<h:inputHidden id="currentPage" value=""/>
    </ui:component>
    </html>
              

If your custom tags are not configured correctly your Visual mode will look like this:


When you make a selection of tags in the source part of the editor, they will all be selected in the visual part of the editor as well. This makes it easy to link code that you have written, with the visual output.


Most web pages use the cascading style sheets (CSS) to control the way they look. With Visual Page Editor you can easily stylize your pages. In this section we are going to introduce you to a powerful mechanism that Visual Page Editor provides for complete control over a pages' styling. Additional information on working with CSS files can be found in Chapter 6, CSS Editing Perspective

The pages you are working with in the Visual Page Editor can use external stylesheets.

The Visual Page Editor allows you to create new style classes in existing stylesheets, as well as edit them. The Edit Style Class dialog is provided for this purposes.

Select the element for which you need to create or edit style class, and press button next to the styleClass field in the Properties view.


This will display the Edit Style Class dialog, which is shown in the image below:


Choose a style class from the variants provided, and click on the OK button to apply the changes.

To open a CSS dialog based on the active CSS file click on in the top panel or use hot-keys (Shift+Ctrl+C).

To create a new CSS class for the file click on the Add CSS Class button, enter its name in the textbox, and click on the OK button:


Then you can configure style settings by switching between the tabs: Text/Font, Background, Boxes, Property Sheet. The list of existing classes with names beginning with the symbols printed will be displayed by using the standard Ctrl+Space key combination. To add an existing style to the chosen element just point to the necessary one. Each time you select any class it is displayed in the Preview tab. Click on the Apply button to apply the changes without closing the window.


The Edited properties tab provides a preview of the properties which are set for the existing style class. You can easily modify them with the help of this wizard.


If the style class is not chosen, the tab does not show any properties.


The Preview tab provides a way to view the content of the selected CSS file. This tab is hidden if no CSS file is selected.


At the top of the CSS Class dialog you can see a preview box which visualizes the result. To edit the preview you should double click in the box. To leave the focus, use Ctrl+Tab.


The dialog for creating a new CSS class, which is called from NewOther...JBoss Tools WebCSS Class, is shown in the image below:


Click on the Browse button to open a dialog where you can select the CSS file to create a CSS class for:


Choose the appropriate CSS file and click on the OK button.

The Visual Page Editor toolbar includes the following buttons:


The Page Design Options button ( ) displays a window which helps you specify necessary references of the resources. It is represented by a window with four tabs. The first one, Actual Run-Time folders, is used to replace absolute and relative path values when generating a preview:


The second tab, Included CSS files, is used to add CSS files to be linked by Visual Page Editor when generating a preview:


The third tab, Included tag libs, can be used to add Taglibs that can be used by the editor for getting appropriate templates to generate a preview:


And finally, the Substituted El expressions tab is used to add El expressions that will be substituted by the editor when generating a preview:


The first two tabs of the window let you define actual runtime folders. The example below will help you understand how this can be done.

Suppose you have the following project structure:

WebContent/
  pages/
    img/
       a.gif
    header.jsp
  main.jsp
  
        

The content of the header.jsp is:

My Header
<img src="img/a.gif"/>

        

and main.jsp content is:

<jsp:include page="pages/header.jsp" />

        

When you open the main.jsp file in the Visual Page Editor, it will not be able to resolve the image from the header, however it will work fine in runtime. To fix this in design time, click the Page Design Options button and set Actual Run-Time Relative Folder to [Project Name]WebContentpages, and you will see the image appeared.

Let's consider an example for other tabs. For instance, the definition of your CSS on the page is the next:

<link rel="stylesheet" type="text/css"  
    href="#{facesContext.externalContext.requestContextPath}/style.css"/>

        

This will work fine in runtime, but the Visual Page Editor does not know the value of requestContextPath in design time. In order to see the necessary styles applied in design time your should add a path to your stylesheet in the CSS File Path section.

The next URI section lets you add URI taglibs so that the editor knows where to find the tag libraries.

And the last Substituted EL expressions section is provided to specify the values for specific EL variables. It can be useful for a preview generation.

As an example look at the figure below:


Here both in Source and Visual modes you see the EL expression #{user.name}. When you switch to Preview view, you will also see this expression. Now click the Page Design Options button and set the value for the user.name as World.


As a result in Visual mode and Preview view the word World is displayed.


Visual Page Editor supports custom Facelets tag libraries both declared in the web.xml file (for details, see Creating a component) and packed into a JAR file.

Tip:

In case of Facelets tag library packed in .jar, remember to put *.taglib.xml in right place: [filename].jar/META-INF/*.taglib.xml

Visual Page Editor recognizes the tags from the custom Facelets tag library and correctly renders them both in source and visual view of the editor.


While editing an XHTML file that uses a custom Facelets components you can always make use of the following editor's features:

Besides Visual Page Editor JBDS is supplied with a huge range of various editors for different file types: properties, TLD, web.xml, tiles and so on.

The deployment descriptor web.xml file is intended for describing the servlets, container-managed security constraints and various deployment properties specific for your web application.

To edit the deployment descriptor JBoss Developer Studio provides its own web.xml editor that comes with the same features you will find in all other JBoss Developer Studio editors: