Contents
FormMaker User Guide
1 The FormMaker Approach
2 Using FormMaker
3 Appendix
FormMaker User Guide
FormMaker is one of the main design components within the MVC product. Using FormMaker, you can quickly and easily construct dynamic and transactional web based systems. This guide will explain how to use FormMaker in detail, and will reference a number of examples detailing how to produce certain types of screens using FormMaker. For a step by step guide showing how to create an example application, please look through the MVC Online Tutorials and "How To..." guides, typically located at http://www.hyfinity.net/faq, and for higher level information please consult the MVC Overview documentation.
1 The FormMaker Approach
FormMaker uses a data driven design approach to construct pages. You can drag and drop data elements from W3C schemas, WSDL files, and databases to create the page design including any constraints that should be applied to the data. You can also use the range of design palettes containing standard and composite controls as well as page templates and reuse existing page content to design you web pages. FormMaker allows data binding of posted information from the browser to business data, and for pre-population of page fields with existing data values before delivery to the browser. Using FormMaker ensures the separation of business data from display formatting through the use of three components, a skin, CSS (Cascading Style Sheet) files, and the page contents. The skin defines the structure of each page to help ensure consistency across an application. The CSS file is used to control the visual display of each page, including fonts, colours, images, structuring, positioning, visibility etc. The page content pulls in both of these components to produce the final page. FormMaker makes it easy to construct full web applications, not just the screens themselves, by linking pages to server side processing, which may include calls to remote services and databases, to achieve the required application flow. For a high-level overview of MVC and FormMaker please refer to the MVC Overview document.
2 Using FormMaker
FormMaker is a web based application that is accessed through a web browser. You will need Microsoft Internet Explorer version 6 and above (Ideally IE7 or IE8 to benefit from the multi-tabbing capabilities). The FormMaker design environment needs an SVG Viewer (Scalable Vector Graphics). Version 3 of the Adobe SVG Viewer can be freely downloaded from Adobe, but should be automatically installed during the installation process. For information on how to install FormMaker, please consult the Installation Guide. Please note: Applications created using FormMaker result in standard XHTML, CSS and Javascript and can be used within most popular browsers, including Internet Explorer, Netscape, FireFox, Safari, Chrome and others. The MVC product should install this component automatically if it is not present within Internet Explorer. For information on how to install FormMaker, please consult the Installation Guide.
2.1 Application Map
The Application Map tab is usually the first screen that will be shown when using FormMaker, although you can choose to arrive at the Page Structure tab, depending on your mode of development. You can navigate through the rest of FormMaker using the tabs at the top, which include Page Structure, Field Details and Data Bindings. An application in FormMaker refers to a collection of interconnected web pages and server-side Controllers that form a Web Application. The Application Map tab shows the overall structure and flow of the web applications, including the links between the pages and server controllers. Screen shot of a typical application displayed on FormMaker
2.1.1 Using the Application Map Diagram
The top of the Application Map screen shows the name of the currently selected project. The centre of the screen shows an interactive diagram illustrating the screen flow for the current application.
The image contains different types of components:
Web Pages - Each web page on the diagram represents one page in the web application being created. Partial Pages - These are contained within full pages and can be refreshed independently using AJAX. Controllers - A Controller is a server side component in the deployed web application. These are responsible for orchestration functions and ensuring the relevant data is available to display the required pages. This may involve communicating with remote web services and databases. Third party service calls - These components can be used to make calls to third party services from the client, without having to make a server roundtrip. Actions - Actions are used to create connections between pages, partial pages, third party services and controllers to indicate the screen flow within the application. Each action can be performed by the component from which the action originates. Action names can be viewed by hovering over the action links on the screen.
You can create and amend the application map using the controls within the palette on the left hand panel. You can click on any component within the application map to display additional details on the right hand panel. The selected component is always highlighted in yellow. You can move components around by simply clicking and dragging them to achieve the desired layout.
The main controls used for creating the application map include:
Add Full Page - This adds a new web page to the application. You can create a full page by dragging and dropping the full page control on to the diagram. You can change the default page name by double-clicking the page image or using the right-click context menu and selecting the Rename option. The web page name must be unique. Add Partial Page - This adds a new partial page to the application. You can create partial pages using the same approach as described above for creating full pages. Please note that creating partial pages also creates an integrated server Controller (see below), used to serve the contents of the partial page. It may take a few extra seconds to complete the server-side setup, so please be patient. Add Controller - This adds a new controller to the application. You can add controllers by dragging and dropping the Controller control onto the diagram. The new name for the controller can be changed using double-click and the name must be unique. Add third party service - This adds a new asynchronous third party service to the application, which can be called from the browser client. Again, you can create these services by dragging and dropping the control from the palette onto the diagram in the middle. The new name for the third party service must be unique and can be changed by double-clicking the icon on the diagram. Add Action - This allows you to specify an action between the different components. To specify that a particular component can call a another component on the diagram, we click on the originating component to select it first and drag the action from the palette to the required target component. The same process is used for all combinations of links between components. Please note that you cannot add an action from a component to itself. Delete - You can right-click to pop-up the context menu and select the Delete option to delete components from the diagram.
2.1.2 Application Defaults
The Application Defaults section is shown in the bottom left of the Application Map screen. This allows you to specify information that will be used for all the web pages in the application. By default, most of these settings are hidden from view, as they are of an advanced nature and usually do not need to be changed from the defaults. However, they can be displayed if the Show Advanced Options button is clicked. Screen shot of the Application Defaults
The followed options are available:
Select Skin - This is used to select the skin file that should be used by default for each page in this application. This is a web page wrapper that contains elements that are repeated on every page. For example, logos, menu items and so on. Once a file has been selected, you can click on the file name to quickly edit the contents of the skin file. Included Javascript Files - This section allows you to select client side javascript files for the project. For each file you should enter the location relative to the web application context. If all script files are placed within a 'js' directory for example, you would enter 'js/myfunctions.js'. Any files listed here will be included on every page within the project. Included CSS Files - Use this field to enter the names of the CSS files that should be imported by every generated web page in this application.
FormMaker allows you to Preview pages before they are deployed. When you generate the application or an individual page FormMaker creates an HTML instance of the page for preview purposes. You can change the preview location using the Preview Location and Preview URL values. For full details on how to set up the preview functionality see the Preview section.
Preview Location - This specifies the directory on the hard drive that is used to place generated web pages and supporting XML instance documents that are copied from FormMaker to enable the preview mechanism. This will usually be a webapp directory within the project that you are currently working on, residing under the repository (e.g. C:\jprogramfiles\hyfinity\design\repository\{workspace}\mvc\{project}\webapp). Preview URL - This should specify the URL that should be used to access the webapp being used for the preview. e.g. http://localhost:7070/Preview/{workspace}/mvc/{project}/webapp The Accessibility Level dropdown is for setting the default level of conformance to web accessibility standards. Double-A is selected by default, but users can select any one of four options, with None and Triple-A being the lowest and highest standards respectively. This field may be overridden by page-specific accessibility level settings. In the future, changes made on each page will be validated depending on the accessibility level of the relevant page, and a warning will ensue to alert users if the changes will result in pages that do not conform to that accessibility level. The Java Code Location entry can be used to specify the location of the Java classes that represent the code for Controllers that are designated as having the Java Implementation Type. The Package Name entry is linked to the Java Code Location item above. This enables Java Controller code to be packaged for each project. For more information on implementing Java Controllers please see the Advanced section within the MVC Overview documentation.
The Save button can be used to save any changes made on the Application Map screen without navigating off the page.
2.1.3 Page Details
Selecting a web page in the diagram will show a new panel containing web page specific settings in the top right section of the screen. Web Page specific settings
The Advanced Options allow the application-wide default settings to be overridden for this particular web page. These settings are for advanced users, and are hidden unless required.
Is this the start page? - In every application created by FormMaker, the first page on the Application Map screen will automatically be set as the start page for the application. There can only be one start page per application. The start page signifies that the web page can be rendered without having to call a server-side Controller. All other pages except the first page will have this checkbox disabled. Whenever this option is enabled for a particular page the option on the previous start page will be disabled. Select Page Skin - This sets the skin file that should be used for this web page, allowing override and overlaying control at the page level. If this value is left blank, the file specified in the Application Defaults section will be used instead. Included Javascript Files - This section allows you to see what client side javascript files are included in the page. It is possible to add additional ones by clicking the Insert link as well as remove existing ones. Files listed here will only be included by this particular page, as apposed to those in the Application Defaults section which will appear on every page. Included CSS Files - This sets a page specific CSS file that this web page should include in addition to the application-wide CSS specified in the Application Defaults section. It is recommended that this is left blank. This should be used when there may be some very specific styling that is only required by a single web page. Is styling file overridden? - Selecting this checkbox will result in FormMaker ignoring the value entered in the Styling File field. This can be used if more advanced CSS functionality is needed, such as having browser-specific CSS files for the same application. In this case you will need to update the CSS section within the generated page XSL manually to achieve the required output. Accessibility Level - As mentioned in the Application Defaults section, this dropdown list allows users to set the accessibility level of the page. Again, Double-A is the default, but this may be changed if required.
The Save button will perform the generation operation on the currently selected web page. This can also be done by clicking on the Generate Page button at the top.
2.1.4 Controller Details
A Controller defines the server-side processing required to support the web pages. When a Controller is selected, a Controller Details panel appears on the right. This panel describes the details of the controller, and the services (model layer patterns) available for use by the application. Screen shot of a selected controller's details on FormMaker
Implementation Type - This option enables you to specify whether you wish to use an XML or Java implementation of the Controller logic on the server. This provides flexibility and choice on the server, enabling you to better adapt MVC to your server architecture. If you use the XML option you will have access to all the native XML processing instructions, including SQL access and SOAP and REST support for remote Web Service access. Selecting the Java option means you will have access to the request and response objects from the web interface and you can process this information in your choice of technology framework. Please note: that the XML option still enables you to use Java Controllers for specific situations. Additional information on Java Controllers, including example code can be found within the MVC Overview document. View Controller Rules - When clicked, this opens a new window showing the RuleMaker screen for the selected controller, enabling its rules to be easily customised. Please see the RuleMaker User Guide for more information. Used Services - This shows the Web Services currently used by the controller. For new controllers, no services will be present initially. When used services are present, a Remove Link to Service button will appear below the text area. Selecting a service and clicking this button will remove the selected service from the list, and it will appear in the list below it. Available Services - If Web Services have been defined for this application, a list of these services will be present in this dropdown. Selecting one of these services, and clicking on Use Service, will transfer the service from this list to the text area above, to show that a link now exists between the controller and that service. The easiest way to add new entries to this list, is to use the Import WSDL function described within the XDE User Guide. This will process a given WSDL file and create the required entries within the model layer of the MVC application, which would then appear in this list.
The Save button saves all server-side component manipulation to do with the Controller. Screen shot of a selected controller's advanced details in FormMaker
In exceptional circumstances it may be necessary to make the controller replicate the functionality of a different controller, Generally, this will not be necessary, but the advanced options make this possible.
Create New Controller - If a controller has already been created on the application map it has a set of rules/logic associated with it. However, you can associate a new set of rules/logic to the controller without creating a new controller on the application map using this feature. Select Existing Controller - It is possible to easily replicate the functionality of a different controller by selecting an already existing controller in this dropdown list.
2.1.5 Partial Page Details
Each partial page is composed of a page and a controller. The right hand side panel for each partial page therefore provides details that are a combination of the page and controller details. The Controller part is just responsible for arranging all the details needed to display this particular partial page. Screen shot of a selected partial page's details on FormMaker The save button for partial pages saves the controller and page information.
2.1.6 Third Party Service Details
Each third party service represents a remote system that your application can communicate with directly from the page. Depending on the Submission Method of the link calling the third party service, this could be an asynchronous call to update part of the page, or a form submission or URL call to return a completely new page. The Third Party Service Details panel (shown when one is selected on the diagram) allows the entry of a Location URL. This is the URL that will be called to access the remote system. Screen shot of a selected third party service details on FormMaker As mentioned above, the response from third party services will be assumed to be HTML pages (or fragments) and used to directly render to the page. If you need to manipulate the response received form the service before rendering the page, you may want to use a standard Controller to communicate with the remote service. This then provides the full data manipulation capabilities enabling message repurposing as needed before rendering.
2.1.7 Action Details
Clicking on an Action brings up the Action Details panel. The fields displayed on this panel are described below. Screen shot of a selected link in FormMaker The first two non-editable fields show the source and destination components of each action, as well as the types of components being linked. Multiple links can be created between most components if necessary. The next field is the Action Name textbox, which represents the action of the action. This field should be populated with a unique name. You can either enter the name here or double-click the action on the diagram. You can also use the right-click menu and the Rename option to rename the action. Advanced Options If the Show Advanced Options button is clicked, more information is made available, depending on the source of the selected link. If the source is a Page or a Partial Page, the following fields will be made available: Page Painter detail of a selected link The Submission Method dropdown list is for selecting the method of submitting web page content to the server-side. By default with standard pages, the data is passed back with the Form Submit method, in which a standard Form submission is performed. Users can also opt to use the URL Parameters submission method, where the data from the web page is put into a list of parameters, and appended to a URL request string, before being submitted to the server. If an action targets a third party service there will be an additional AJAX submission method available. This allows a certain part of the page to be replaced asynchronously by the response of the third party service. If an action targets a Partial Page only an AJAX submission method will be available for selection. Note: The URL Parameters submission method can only be used correctly if the source page of this Action link does not contain any user-editable fields. Also, an Anchor button, with an action type of Target Location, needs to be created on the source page. Please see here for more information. The Select Page Painter dropdown list shows the View patterns available to the application. A default view pattern with node 'Page_Painter' is created upon project creation, and in most cases this does not need to be changed. However, new View patterns can be generated by clicking on Create New Painter. Action Condition XPath detail of a selected link If the selected action originates from a Controller, then an Action Condition XPath field is made available (as shown above). This field describes the XPath that determines when data will flow between the action's source and target. This XPath will be saved in the Controller from which this action originates. If the XPath evaluates to true, control flow will then flow along the link, from its source to its target. This is especially useful if multiple targets are specified, with different conditions to be fulfilled per target. For example, a controller may invoke a service to return a list of contacts. The resulting list may contain zero, one or many entries. You may choose to re-direct to different web pages based on the returned results. You would need to set-up three links from the controller to different pages, and each link would have a different XPath to identify the scenario that leads to that web page being rendered. One would identify zero XML entries, one would identify a single entry and a third would identify many. Note: Once the controller setup has been saved, you may find it easier to edit these condition XPaths using RuleMaker via the View Controller Rules option against the source controller. If the target component for an action is a partial page or third party service then the submission method can be AJAX. This enables information to be submitted asynchronously to refresh parts of the page dynamically.
2.2 Page Structure
The Page Structure screen is split into three areas. The left hand section provides a number of control palettes for creating and manipulating the page structure. The middle section provides a representation of the structure of the current page, and the right hand section provides a range of data sources, including Database Schemas, W3C Schemas, WSDL files (Service Definition), Templates and Existing Pages. These data sources are typically rendered in XML Schema format and elements can be dragged and dropped on the page to create the page structure. Screenshot of Manipulating the Page Structure The middle section, representing the page, is split into two tabs providing different views of the current structure. The Layout View is the default tab and this provides a view of the structure that more closely resembles the layout of the resulting page. Alternatively, the Tree View tab can be used, which provides a purely hierarchical view of the structure of the current page. This is the same view provided on both the Page Details and Data Bindings pages. Both the Layout View and the Tree View provide similar functionality. Both views also provide a customised context menu (available by right clicking) to perform some of the common functions. If a field or group has the conditional hiding option enabled (or conditional disabling for fields), then you will see (?) by the side of the name to indicate that the visibility of that component is not guaranteed. Also, if a field is set to not be generated, then you will see (X) by the side of its name so that you know that the field will never appear in the resulting page.
2.2.1 Design Palettes
The Design Palette on the left contains different sections. By default you should find three sections, Form Controls, Layout and Group Controls and Composite Rich Controls. The form controls, include edit boxes, radio buttons, etc. The Group Controls enable you to group the standard controls for positioning and manipulation. For example, use Repeat to indicate a repeating group of controls, or use tabs to organise your information on the page. You can also nest most Group controls within each other. For example, a Tab can contain a Repeating Group of Standard controls. In addition to the Standard and Group controls the Design Palette also contains Composite Controls. Composite controls enable you to package a collection of Standard Controls and Group Controls that can be used as a single entity, such as a Tree. Please contact Hyfinity if you wish to create your own sections of the Design Palette containing your own Composite Controls.
2.2.2 Manipulating the Page Structure
The page layout in the centre of the screen provides full drag and drop support to rearrange components to achieve the required layout. When you move your mouse over the centre panel, a red highlight will indicate which component you are currently selecting. If you now press the mouse button, and start to drag this component, you will see a grey line appear to indicate where it will be placed when you release the mouse button. Moving groups or repeats in this way will automatically move everything contained within them. This drag and drop approach is also used to add new components, either from the design palette, or from a selected data source. In this case, the drag and drop approach also supports the concept of merging with the current component on the page. If a merge will be performed, when the mouse is released on a drag operation, you will see a dark red border around the component on the screen instead of the default grey insertion line.
The following merge operations are available when dragging from the design palette:
Merge Individual Control - If you drag one of the basic form controls from the palette, you can merge it with any individual field already on the page. In this case it will take all the display/look and feel properties from the palette control and apply these to the existing field. This includes changing the type of control, the styling applied, the visibility of the label, any display format information, etc. It will not adjust the name of the field or any of the data binding information. Merge Basic Group - You can merge a basic group control onto an existing group to change its display characteristics. For example, easily convert an existing layout group into a bordered group.
You can double-click elements on the page structure to rename the component and its label or caption where applicable. You can remove components by choosing 'Delete' from the right click context menu available on the centre panel. This menu also provides options for some common functions such as enabling the field label, or dynamic hiding capabilities, as well as links to visit the Field Details and Data Bindings tabs for the appropriate component. The Save and Cancel All buttons work in a similar manner to other pages. Clicking Save saves all changes made to the page structure since the last server call, whereas Cancel All resets all changes to the original state since the last server call.
2.2.3 Data Driven Design
On the right hand panel, the three top level tabs allow you to select different types of data sources. Clicking on either the Template or the Existing Page tab will bring up a Repository Viewer window, which can be used to select the appropriate file. When the Data Source tab is selected, you can choose from W3C Schema, Service Definition (WSDL) and Database. You may also have customised additional options depending on your particular installation. For example, you may see additional application environments listed that can be used to obtain schema information for creating pages. Selecting a W3C Schema or Service Definition will enable you to choose a file using the Repository Viewer. When you select the Database option you can create a new database connection or select an existing connection to navigate database schema information. In all cases, when you have navigated and selected an appropriate item, a tree representation of the information will be displayed. You can drag and drop elements from this tree to create your page structure.
When dragging fields from a data source, you also have access to the following merge functions:
Merge Individual Control - If you drag an individual field from a data source, you have the option to merge this with an existing field on the page. This merge will update the name of the field to match the data source element, and will also adjust the data bindings for the field so that its value will link to the data source. This will not affect the type of the control, or any of its visual characteristics. Merge Repeating Content - You can drag a repeating element from a data source (identified by an 'R:' prefix) onto an existing repeat control representing a table structure to merge this information. This will update the name of this repeat, and its contained group, and add all the fields within the repeat in the data source along side the table contents on your page. The bindings will also be updated to match the data source. Merge Repeat to a 'select' type field - You can also merge a repeat element from a data source onto an individual control that provides a set of options to select from (eg select, radio, multiple checkbox). In this case, the target field will be updated to display a dynamic set of options as retrieved from the data source. You will be asked to select which particular entry from the data source should be used as the display value shown to the user, and which provides the data value to use in the XML messages.
2.2.4 Automatic Data Binding
If elements are added to the page from a schema or WSDL definition, or from a template or an existing page with binding information defined, the newly added components will have binding information pre defined for them. This can however still be adjusted using the Data Bindings tab. When you drag and drop elements from the right hand panel FormMaker detects whether the dragged elements represent request structures to other services or databases. Based on this, FormMaker is able to automatically create request structures for calling remote services and making calls to databases. If the Database option was chosen as the data source then you may be prompted to select the type of request you wish to make. These may be Insert, Update or Delete for example. Screenshot of Action Selection Popup FormMaker identifies actions that originate from this page and will prompt you to associate data structures that represent requests with particular actions. Using this association between the page action and the request data structure, FormMaker will also bind the page data in the required structure on the server when the action is submitted. All other page elements will be bound within the formData fragment by default. You can review and change these default bindings using the Data Bindings tab.
2.2.5 Configuring Group Display using Layout View
The Layout View tab provides extra functionality to help with configuring the display of groups within the structure. This is because the layout view attempts to provide a representation of how the page will look, which is very dependant on the Display Methods of each group. Each group in the structure is drawn with a header strip which contains a Details button in the top left corner. Clicking this button will show some new options that allow changing of the Display Method for the selected group. This value can easily be updated by changing the value of the dropdown, which will cause the layout view to be immediately updated to reflect the change. If the group's display method is set to 'Grid', then two extra options are available to control the size of the grid. Changing these values and clicking the Update button will apply the new size to the displayed grid. Screenshot of Layout view group options The Layout View also provides control over how components are ordered within the grid. Any currently empty cells within the grid will be shown as an 'Empty Cell' block, and new components can be easily added or moved onto this empty cell. If new components are added into the middle of a grid, then the following components will be 'shuffled' along (across the row, and wrapping onto the next one) until a free cell is found. If the grid is full, when new a component is added to it, then an new row will be automatically created. Of course the number of rows and columns can easily be changed as mentioned above, and the components moved around if needed. The layout view can also be used to allow components to be merged across cells within a grid structure. When right clicking on a component within a grid a number of extra options will be provided in the context menu, as shown below. Screenshot of Layout view grid context menu Depending on the position of the current component in the grid in relation to any empty cells, the different merge options will be available or greyed out. If one of the Merge options is selected, the view will be immediately updated to reflect the change. A single component can be merged multiple times if needed to achieve the required layout. If you wish to stop the current component from spanning multiple cells, the Split option can be selected to revert the component to just occupying a single cell.
2.3 Field Details
Each page is composed using a collection of controls and these controls may be of different types. These include groups, repeats and fields. A group represents a collection of elements that should be shown together on the page. For example, a customer details page may have a group for the address details (House number, road name, etc.). A repeat is used to specify that the contained components can occur a number of times on the page based on the data from which the page is constructed. A field represents one piece of data on the page and can be created using any of the Standard Controls from the page structure palette. A page can also contain custom components where complex content is required. The content of theses can be edited using the Field Details tab. The Field Details tab shows a representation of the page structure on the left hand side and the main page content on the right. The structure is shown in a treeview representation similar to that used in the standard Windows file explorer application, with the name of each component displayed. This makes the nested structure of the page easy to understand, and shows which elements are contained by group and repeat components. The width of these panes can be changed by dragging the divider across if needed. Group and repeat elements are further identified by the G and R letters and different background colouring. Clicking on any name in the treeview will show additional details for that element on the right hand side. Also, the element for which the details are currently being shown is highlighted in the treeview. The View Scripts and View CSS links at the top right of this screen provide easy access to view and edit the CSS or script files that are applied to this page. Clicking on a file name will open the selected file in an separate window to be easily edited. If you wish to add an additional file, then you will need to use the Application Map tab. This screen also contains three buttons at the bottom: Save, Cancel and Cancel All. The Save button will save the changes made to any of the components since the last call to the server. The Cancel button will undo the changes made to the currently shown component since the last call to the server. Finally, the Cancel All button will undo all changes made to any component since the last call to the server.
2.3.1 General Page Details
The Page Details section is displayed on first entry into the Field Details tab. These details can be accessed at anytime within the Field Details tab by clicking the Page Details link at the root of the treeview. Page Details Screen shot Error Display Details - This dropdown list is used to set how validation errors should be highlighted on this page.
There are three options to choose from:
None - Errors will not be highlighted. Message Text - This option will show the error message as text either beside the field or at the top level (see below), as well as applying the style changes specified in the Error Highlighting Details page. Message Tooltip - This option works in a similar way to the Message Text option above, but instead of always showing the error message, a tooltip is used that will show the message when the mouse is hovered over the highlighted error field. For this option to work correctly, the skin must contain certain components as explained here.
The Show Local Error Message? checkbox controls whether the error message will be shown beside each field or not. For example, this could be unchecked (in combination with the Message Text option above) if you want to highlight each field in error, but you don't want to provide the error message next to the field. The Show Popup Alert for Errors checkbox will cause a standard popup alert box to appear, listing down the error for erroneous fields. This can be done in conjunction with any of the error display methods mentioned above. This checkbox works in conjunction with the Validation Mode dropdown list right below it, in that users can set the popup alert to either show all errors (i.e. errors for all problematic fields), or for the first error only. Error Highlighting Styles - This section is used to control the appearance of the error message on the screen, using CSS. In each case, the first box (Class) should contain the name of the CSS class to use, which must be defined in the imported CSS file (see Page Details). Alternatively, the CSS Override option can be used to specify a CSS String (e.g. background : red;) to apply. The Background styling will be applied to the container of the field element, whereas the Error Message styling is applied to the error message container element directly. For example, the background class could be used to provide a border around the field in error, whereas the error message class could set the colour or font of the displayed error message. Top-Level Message Details - These settings allow the error messages to be grouped together and displayed in one place. This can be used along with, or instead of a Local Error Message based on the setting of the appropriate checkboxes. The Show Top Level Message? checkbox is used to turn this feature on or off. By default, this top-level message will be placed at the top of the screen, but it can be positioned and styled as required by specifying appropriate CSS classes or style overrides in the appropriate text boxes. The contents of the Message Override box, if entered, will be shown in this container instead of the default approach of showing a combined list of all the local error messages. Mark Mandatory Fields - This feature provides the option to automatically add an indicator against each field that is mandatory (as indicated by its constraints information).
The 'Apply Marker to Mandatory Fields? checkbox is used to turn this feature on, and then the following options are available:
Marker Location - This is used to indicate where the marker should be placed. There are four possible options available, before and after the label, and before and after the actual field control (eg the text box) Marker Styling - The two styling fields can be used to apply specific styling to the marker, wherever it is placed. For example, you may want to make the text red. This can be done by specifying a particular CSS class to apply, or by entering the CSS settings directly. Marker Text - This field is used to enter the actual content that will be used for the marker. A common approach is to use an asterisk (*) character, although if this is done, you need to ensure that it is explained somewhere on the page. It is also possible to leave this field empty if you are using CSS to insert an image as the marker.
Description Details - This allows users to add comments and any other details to the page. Page Onload Events - The Page Onload Events section allows you to define events that will be triggered when the page loads. For more information on events see the events section Depending on your installation you may also have a section called External Events. You can create events here using the same approach as for page events and field events. The key difference within this section is that you can select actions based on events that occur within external application scripts rather then events raised by components within this current page. This means that WebMaker generates Javascript functions for each external event that is created in this section and these script functions can be called from external application scripts or any component within this page using the custom script Action. The generated WebMaker functions themselves call separate script functions that can be created and modified as required. This level of client script integration is controlled using an event_config.xml file within the generic collection of the WebMaker repository. The Field Details page is shown whenever a field element is selected from the treeview This page is split into a number of different sections, most of which (such as the Data Constraints section) are hidden by default, but can be shown by clicking the arrow button next to the relevant heading. Each section is described in more detail in following pages. Screenshot of Field Details This section, which is always shown, allows us to configure the basic options for the field element to set how it will appear in the generated page. Screenshot of Field Settings The first row shows the abbreviated name for the current element so we can be sure we are working on the correct page component. The button following this enables us to view or hide the full name of the current element.
The select box then allows us to select what type of control this page element will be shown as. The options are as follows:
Text Box - This option creates this field element as a standard one-line text entry box. Text Area - This option is similar to the Text Box, with the difference being that both the height (number of lines) and width of this text entry box can be changed using CSS. Select Box - Choosing this option will create a drop-down list of options from which the user can select. Combo Box - A Combo Box works in a similar way to a Select Box, but with an additional entry at the end of all the options in which the user can enter their own value. This control is therefore a combination of a Select Box and a Text Box. Radio Buttons - This will create a set of connected radio buttons from which the user can select one value. Single Checkbox - This will create a single tick box that the user can tick if required. This is a Boolean (true or false) control. Multiple Checkboxes (Select Many) - This option is similar to the Radio Buttons control type in that it provides a list of options. The difference is that only one option can be selected for a radio button group, whereas multiple options can be selected together with this control. Button (Anchor) - This option will create a clickable button for this field. Buttons of this type are created as HTML anchor tags, providing greater flexibility over their styling. Button (Standard) - This option will create a standard Windows clickable button for this field. Output - This is used when we want the field to just output some data for display to the user, but without them being able to change the data. Secret (Password) - This option creates a control that is identical to a Text Box, except that as the user enters data it will be shown as asterisks (*) instead of the actual letters. Hidden - This option creates a hidden control containing the data, which will not be visible on the page. Image (Picture) - This option creates a placeholder for an image element. These images can be stored locally, or be accessed through a URL string. Tabs - This option is only available if this field is being used to control the visibility of one or more groups (See the Group Details section). In this case, this field acts as the control deciding which tab (group) is currently shown. You can drag and drop a tab control from the palette on the Page Structure tab and review the various settings for the tab groups and the controlling field in the Field Details tab.
The following options are dependent on the type of control that is selected as to whether or not they can be entered and to what functions they will perform. The Value is option for single text value type fields (Text Box, Text Area, Hidden, Secret and Output) specifies whether the value initially shown should be static or dynamic. If static is selected, the required value should be entered into the Value text box. If dynamic is selected, some data binding information will be required for this field to specify where the value should come from (see Data Bindings for more information). If dynamic is selected, we can use the Default Value text box to specify a value that should be used if none is present in the source data for the page. For list type controls (Select Box, Combo Box, Radio Buttons, Multiple Checkboxes, Tabs) the radio buttons are used to select whether the Options are static or dynamic. This refers to the different options that the user should be able to select from on the page. If static is selected, these values will be taken from the enumeration information specified in the Data Constraints section. If dynamic is chosen, then some data binding information will be required to pull in the values to use (see Data Bindings). With these types of controls the Default Value can be specified to set which entry should be selected if no current value is specified in the data going to the page. For the single checkbox control, the radio buttons specify whether the Checkbox value is static or dynamic. This is the value that will be returned from the page if the checkbox is selected and will be compared against the data creating the page to determine whether the checkbox should initially be selected. If static is selected, it can be entered into the Checkbox Value box, otherwise data binding information is required. The Default Value option can be used to set the default data value to use if there is none in the data used to create the page. Setting this to the checkbox value will cause the checkbox to be selected by default if there is no data going to the page indicating otherwise. For a button type control, the caption shown on the button can be static or dynamic by setting the Caption is control. The static caption should be entered into the Caption text box if required. A dynamic caption requires data binding information. For the image control, the Location (URL) is used to point to where the actual image file for this image element is stored. If it is set to Static, a Location (URL) field is used for pointing to the image; this field is replaced by Default Location (URL) when Dynamic is selected. A dynamic URL will require data bindings to be set. Any valid URL can be specified, including local address references. The Size option is used with text box type controls (Text Box and Secret) to set their size, (width) and with select box type controls (Select Box and Combo Box), to set how many options (entries) should be displayed vertically at an instance in time. The Initial drop down entry option can be used with Select Boxes and Combo Boxes to specify an option that will be included at the start of the list. For example, we may wish to enter Please Select into this option so that this message will be shown in the drop down when no entry has been selected. This is an alternative to the Default Value option to set what should be shown before the user has picked a value. The Editable entry default text option is only used with Combo Box controls, and specifies the default text that should be used for the entry that can be edited by the user. The Allow multiple selections? option can only be used with Select Boxes and allows the user to select more than one option at a time. Field Label Details - This section is used to specify what label (if any) should be used for this field. If a label is required, the check box should be ticked, which will enable the other options. The Label Type sets whether the label should be a static value or a dynamic one. If static is selected, the value to use should be entered in the Static Label text box, otherwise some data binding information will be needed. A dynamic label should be used when dynamic data needs to be incorporated into the label text. The styling options provide control (using CSS) of how the label will appear, by either specifying one (or more) class names and/or a CSS override string. The two types of styling (label and label background) work in the same way as with the control and background styling described in the next section. Any positional or sizing type styling should be applied to the label background, where as you may want to apply more visual properties (eg color, font size, etc) to the label. The exact markup generated will depend on the what the field is contained in, but as an example, if the field is contained within a table structure, the label background styling will be applied to the table cell containing the label, and the label styling will be applied to the <label> tag within this cell. It is this label tag that will actually contain the label text. The field style details section comes immediately after the Field Settings section, and can be shown by clicking the Show Field Style Details section. This section enables us to control the styling and appearance of this field using cascading style sheets (CSS). This approach provides a powerful and flexible method for controlling the appearance of the generated page. In most cases you should find that you do not need to change the default class names applied when adding fields from the palette. Screenshot of Field Style Details This section provides control over three different types of styling, Background, Control and Disabled. For each one we can provide a set of CSS class names to use, and/or a CSS formatted string to override the classes. The Background styling will be applied to the container element, where as the Control styling is applied to the control element directly. For example, if the field is being used as a text box in a table, the background style may be used to set the size and colour of the table cell, whereas the control style could set the colour and font of the text box itself. The following image shows this structure, and also how the error and hint container fits in. (See the hint and error details section for more information). The disabled styling, if applied, will only be given to the control element; the background styling will be unchanged. Screenshot of Structure Template Each type of style also has the option of dynamic or conditional styling. This allows a certain type of styling to be applied only if a given condition is true. For example, you may want to show numerical data in black by default, but highlight values in red if they are negative. You add dynamic styling by clicking on the appropriate 'Add Conditional ... Styling' button, and remove a conditional style by clicking the associated 'Remove' button. Each conditional style will require a data binding to be set to indicate the condition to check for. It is possible for each type of styling to have any number of conditional styles applied to it, and in addition, each conditional style has the option of being fully dynamic. This means that instead of entering the name of the CSS class to apply directly, a separate binding is required to find the class name to apply. The Disabled styling section is enabled if the Disable field based on runtime data option is selected in the Visibility Details section. (Or if this field is within a group with the 'disable' option turned on.) If enabled, this style will be applied to the field Control if the data sets that it should be disabled. Again these styles can be static or dynamic, and can be set through classes or CSS strings. CSS Palette When you hover over CSS entry fields you should find a CSS Palette pop-up that provides basic CSS override buttons, including Bold, Italic, Underline, Alignment and basic colour pickers. You can click on these icons to create the necessary CSS entries for styling. You can always manually edit CSS strings to suit your exact needs. Please note that anything you enter into the CSS Override fields will appear as inline style attributes within the generated page HTML. The Visibility Details section provides a number of additional settings that can be used to control the appearance of a field. Screenshot of Visibility Details The Generate Field checkbox is used to indicate whether the current field should be included in the generated output. If this box is not ticked, the current field will not be included in the resulting page. The Hide Field Based on Runtime Server Data? option provides an alternative method for conditionally hiding this field In this case some binding information will need to be specified that specifies when to hide the field This check happens on the server, so if the field is hidden the contents will never be available on the client side. The Disable Field based on Runtime Data option allows us to disable the field based on some data in the information used to construct the page at runtime. For example, we may have a button on a page that can only be used by certain users. Therefore we could set it to disable the button if the current user isn't allowed access. The Disable method radio buttons are enabled if the Disable Field based on Runtime Data option is selected. (Or if this field is within a group with the 'disable' option turned on.) The user may then choose how to disable the field, either by setting the disabled flag, or by setting it to read-only. There are differences in how the browsers handle these two options and so a different setting may be required in different circumstances. Regardless of the setting, specific styling options for disabled fields can be set in the Field Style Details section. The events section allows events to be associated with each field. This is achieved by specifying the script to execute when a particular event (e.g. onclick) occurs. FormMaker allows events to be associated with both the field and its label. Screenshot of Event Details The Show events for radio buttons are used to select whether to see the events associated with the field control or its label. The selected events will be shown in the area below the buttons. To add a new event, we simply click the New Event button. This will add a new row to the table for the new event. The Event select box is used to set the event we are interested in handling. This list of events includes standard web page events, such as when a key is pressed, when a cursor is hovered over a field, etc. However, one of these events - anchor activated - cannot be accessed unless an anchor button is chosen as the current field's control. Each event can be linked to any of the entries in the following select box - Action, which shows a list of actions that can be performed on any selected event. The adjoining Required Information section to the right of the action provides a set of details that depend on the type of action selected. In general, the Required Information section will provide a set of dropdowns in the first column that enable you to decide how to indicate the values for a given action. For example, for the Form Submission action, you will see an Action dropdown. You can select Show actions to view the list of predefined actions in the application map or select Enter action name to enter your own free-text action name.
The available actions in this list are described in detail below:
URL Location - This action type is only made available if an anchor activated event is selected; hence, its availability also depends on having an anchor button control. This enables standard URL based calls to be made to other parts of the application, or any other location. When selected, three fields will appear in the Required Information column. The Action dropdown list will hold the actions of the links connected to the Page (as set in the Required Information panel on the Application Map screen). These actions are different from those specified for the Form Submission action type: they will appear only if the submission method for this page is set to URL Parameters on the Application Map screen (see the Required Information section for information). Conversely, users may wish to enter a specific URI, which may be any valid local or Internet address, or choose a dynamic URI. In this case, an additional data binding will be required to specify where to get the URI from at runtime. If this option is chosen, any Set Value events defined for the anchor activated trigger will be converted into parameters added to the URL called. (Please note that field value type set value events are not supported in this case.) Form Submission - This action type is similar to the action type mentioned above, except that it enables the page to be submitted through the MVC architecture as a standard HTML form, to be processed by the application's server-side components. When selected, a dropdown list will appear in the Required Information column, and will hold the actions of the links connected to the Page. However, actions will only be present if, in contrast to the Target Location action type, the Form submission method is selected on the Application Map screen. The Validate checkbox can be enabled if the user needs to validate all the elements of the page upon submission. It performs a validation check on each of the page's fields, depending on the fields' data constraints. You can also choose to validate information based on server data. If this option is selected then don't need to enter anything further here, but will need to enter an XPath to locate the validation indicator within the server data in the Data Bindings page. AJAX Submission - This action type provides the ability to submit part of a page asynchronously and refresh another part independently, without having to refresh the complete page. Similar to the Form Submission method, the AJAX Submission requires an Action Target to indicate one of the links that was defined in the Application Map. Please Note: that the Action Target will contain a combination of the actions available from the partial page and the actions available from the page that contains the partial page. This action type also requires a Target Group. This is the group where the results from the asynchronous call will be placed. The Source Type option determines whether the submission should be made using the whole form data or data from a specific group. Finally, each AJAX Submission action provides the Validate option in the same way as for the standard Form Submission actions. Set Value - For this action type, when the specified event fires, a field in the page can be populated with a certain value of choice. The Target dropdown list contains the fields already present within the page. The Value Type list includes 3 options: for Static, the relevant target field will be populated with any user-specified value in the textbox area below; Dynamic will set the target field with a value depending on dynamic data (see Data Bindings); and Field allows users to set the target field with the value of another field on the page, to be selected from the Source dropdown list below it. Group Toggle - This straightforward action type enables the use of showing or hiding a group when the selected event is fired. You can also tick the Animate checkbox to achieve a rollover effect when hiding and showing the group information. Custom Script - For more advanced use, customised script can be inserted into the generated XSL by filling in the textbox for this action type. This can be any script code supported by web browsers (i.e. JavaScript), including calls to functions defined elsewhere.
To remove an existing event, we simply need to click on the remove (x) button alongside the event to remove it. Multiple events can be defined for the same Event Trigger, and they can be reordered by using the up and down arrows at the side of each event entry. An example use for this feature would be to validate and submit the web page when a button is clicked. In this case you would create a new button control, and then use either the onclick or anchor activated Event Trigger to specify the function. Then, selecting the Form Submission action type, selecting the action defined for this page, and clicking on Validate, should be all that is needed to successfully submit a page. For more information see the How To Guides in the FAQ, located at. This section is used to specify the type of value that is expected and allowed to be entered for each field. The information entered in this section will be used by the automatic validation process when validating this field. Depending on the type of data structure file used for this section, much of this data will be entered automatically, e.g. from the W3C Schema constraints information. Screenshot of Data Constraints The first line shows where the constraints of the field are taken from. When fields are added to the structure of a page (see the Page Structure page), an option exists to link the constraints of the element to a schema element. If this is done, on the Data Constraints section, the message line will show that the constraints of the field are driven by the used data structure file. If this field is edited by the user in any way, or if fields are not added from a data structure file, it will reflect this as well. However, if a schema link does exist, users can revert back to the schema constraints by clicking on the Revert to Schema Constraints button. The Data Type specifies the type of data values that should be used for this field: String, number, boolean or date. The Mandatory checkbox indicates whether a value is required for this field or whether the user can leave it empty. A tick in the checkbox means they must provide a value. The Enumerations settings are used for list type controls that have static options. The two list boxes are related and show the Data Value and Display Text of each enumeration value accordingly. The data value represents the value used 'behind-the-scenes' for the enumeration, whereas the display text shows the text that will be visible to the user of the page. To add a new entry to the list, type the data value to use in the text box at the bottom of the data values list and type the display text in the text box beneath the display text list. Then click the Save button to add the entry to the list. Selecting an existing entry in either of the lists will show the values in the text boxes so they can be edited if required. Clicking Save will save the changes. Alternatively, clicking Remove will remove the selected enumeration entry from the list. The enumeration entries are displayed here in the same order as they will be shown on the generated page. Therefore the Up and Down buttons can be used to achieve the required order. This is done by clicking on the entry to move and then clicking the button that represents the required movement. The Use these enumeration values for output display checkbox indicates whether these values should be used as a mapping between data and display for output information. For example, a page may display the current status of an order, but this status may be represented as a code within the system. Therefore, by setting the data values to the possible codes, and the display texts to the relevant display messages, the system will convert the code number to a helpful message for the user if this checkbox is ticked.
The following eight options allow us to constrain the acceptable values without restricting the user to a set list. The options that are available depend on which data type is selected and are described below.
Min Inclusive - This value can be used for number or date data types and specifies the minimum value that can be entered. Max Inclusive - This value can be used for number or date data types and specifies the maximum value that can be entered. Min Exclusive - This value can be used for number or date data types and is similar to Min Inclusive, except this specifies an exclusive minimum, i.e. the entered value must be greater than this value. Max Exclusive - This value can be used for number or date data types and is similar to Max Inclusive, except this specifies an exclusive maximum, i.e. the entered value must be less than this value. Min Length - This value can be used for the string data type and sets a minimum required length (number of characters) for the entered string. Max Length - This value can be used for the string data type and sets a maximum required length (number of characters) for the entered string. Length - This value can be used for the string data type and sets a required length (number of characters) for the entered string. Pattern - This value can be used for the string and number data types and contains a regular expression that the entered values must match.
This section can be used to specify conversions that should be applied to the data between the web page and the back-end system. For example, dates may be stored in a different format to which they are entered and displayed. Screenshot of Value Conversions The Data column represents the format of the data in the system, and any entered values will automatically be converted to this format when they are submitted. The Display column represents the value displayed on the web page and the system data will be converted to this format before it is displayed. The Date Formats options set the formats to be used for dates in the system. If the data type for this field is date, then the data date format must be specified. These fields accept date format strings in a similar way to the Java SimpleDateFormat class, e.g. dd/MM/yyyy. Please note that the display date format may contain the special character # in text input fields. This creates a dropdown box which allows users to easily select date parts. Please see the example below to see how to use this option. The table below describes the specific data conversion formats that are available. Table of Value Conversions available for Dates
Field Full Form Short Form
Year yyyy (4 digits) yy (2 digits), y (2 or 4 digits)
Month MMM (name or abbr.) MM (2 digits), M (1 or 2 digits)
  NNN (abbr.)  
Day of Month dd (2 digits) d (1 or 2 digits)
Day of Week EE (name) E (abbr)
Hour (1-12) hh (2 digits) h (1 or 2 digits)
Hour (0-23) HH (2 digits) H (1 or 2 digits)
Hour (0-11) KK (2 digits) K (1 or 2 digits)
Hour (1-24) kk (2 digits) k (1 or 2 digits)
Minute mm (2 digits) m (1 or 2 digits)
Second ss (2 digits) s (1 or 2 digits)
AM/PM a  
Examples: Table of example date format strings
yyyy-M-d 2006-10-15
dd MMMM yy 15 October 06
MM/dd/yyyy HH:mm:ss 10/15/2006 17:23:45
MM/dd/yyyy hh:mma 10/15/2006 5:23PM

The # symbol used in a date display format for a text input field will render the preceding date part into a dropdown box. For example the date format dd/MMMM#/yyyy will give:
/ /

The Case options set how the case of the data should be changed. The options are Preserve, Lower, Upper, Title and Sentence. Preserve leaves the case exactly the same, Title capitalises the first letter of each word in the string of data, and Sentence capitalises the first letter of the first word. Lower and Upper should be self-explanatory. The Whitespace option specifies how any whitespace entered in the value for this field should be treated. The values are Preserve, which leaves the data as entered, Collapse, which removes whitespace from the beginning and end of the string and then shrinks any group of whitespace characters to a single space, and finally Remove, which removes all whitespace from the entered string. The Calendar Popup section is an option that can be used for fields with a data type of date (see Data Constraints). If the checkbox is ticked, upon generating the page, a link will be created next to the field that will bring up a calendar window from which the user can select the date they require. This option should only really be used for Text Box type controls. The Calendar Type list shows the various selection and display methods for the calendar. These include the ability to navigate monthly or yearly, and to enter a value for the year. The Calendar Display Method option controls whether the displayed calendar will be shown in a completely new window (Popup window) or whether it should look like part of the existing page (In Page Display). The second option is often thought to look better, but may cause problems with older browsers if there are certain control fields (eg select boxes) in the vicinity. The Button Styling option allows a CSS class name to be specified for the calendar display button, that could be used to show a calendar image for example. For the default CSS file provided, the datePickerIcon class name should be used. The Button Text option allows us to specify the caption that should be used for the calendar popup button. The Custom Attributes section provides an easy way to add extra attributes into your HTML markup. Screenshot of Custom Attributes The section will show all the currently defined custom attributes as well as allowing you to add new ones. For example, using certain Dojo effects would require you to insert certain custom attributes for them to function properly. Please see the Hyfinity FAQ for examples of how to use custom attributes with third party JavaScript libraries such as Dojo. Screenshot of Accessibility Options The Field Tip field allows the user to input a short description about the field which will be used by screen readers and other browsers Inputting an Access Key will allow shortcut key access to the field. The Tab Index allows the user to specify the order of the tabbing index of the field on the page. This should be a numeric field. This section on the Field Details page provides control over displaying of error and hint information with this field. These options should be considered along with the settings on the Page Details page. Screenshot of Hint and Error Details The Validation select box allows us to control whether the data entered by the user for this field should be validated or not when the page is submitted. We can either turn this on or off, or set it to be dynamic based on some data binding information. Even if this field is set to be validated, the Validate option on the appropriate submission event must be ticked for the validation to take place. Enabling the Create Message Container check box will create a container beside the field, to contain any error or other messages. This is required for the Local Error Message functionality from the Page Details section to work for this field. Once this has been selected, a Hint can be specified by selecting the Provide Hint checkbox. A hint is a custom message that should help the user know what to enter for this field, or what the information is saying. The two styling boxes allow CSS to be applied to the message container when it is showing the hint, and the Hint Message text area should be used to enter the actual hint message. The Error Display Method setting on the Page Details page will control how the hint is displayed. The Show Server Message checkbox allows you to associate this field with messages from the server. If this is selected, some binding information will need to be provided to set where the message should come from. If this option is selected, and matching data is present in the incoming data, this incoming message will be shown next to the field, overriding any hint that may be specified. Any client side validation errors that occur once the page has loaded will override any server messages or hints specified. The Retain through client side validation checkbox sets what should then be shown after the client side validation problem has been fixed. If ticked, the server message will be re-shown, otherwise the hint or no message will be shown as appropriate. The final two boxes should be used to set how the server message should be styled when it is being shown. This final section provides a simple control for entering a description against this field. The user can enter any details they want in this text area to try and aid in understanding the purpose and display of the current field element. Screenshot of Fields Description Details The group details page allows us to configure how each group will be displayed in the generated output. This information appears when you select a group on the left hand panel representing the page information. Screenshot of Group Details The top of the page displays the short name for the current group so we can ensure we are working on the correct one. As with the Field Settings page, we can click the Show Full Name button to show the full name of the current group. The two styling text boxes allow us to associate CSS classes with this group (Group Styling (Class) text box) or to provide a direct CSS string that should be applied to this group. These can be used for visual styling (e.g. to give the group a coloured background) or to enable the creation of a hierarchical CSS file that can display elements differently based on their position within the hierarchy. The Extended Border Styling option is used to provide more control over the border display of this group. This can be used to show rounded corners, or shadows for example. See the appropriate entry on the WebMaker FAQ for more details on how this is achieved. The Display Method option provides some control over how the group contents will be laid out in the generated page. There are four main options available, which are Vertical, Horizontal, Table and Grid. The remaining option, Horizontal Table should only be used when this group is beneath a repeat as described below. The Grid option is the most flexible of the four, as it gives the user control over how many rows and columns will be displayed, and exactly which components will be present in each 'cell' of the grid. Please see the section on Manipulating the Page Structure for details on how this is specified. Screenshot of Display Methods for Tables There is a special case that occurs if this group is the only child of a repeat element. In this case, if the Display Method of the group is set to Table, the labels will be taken out of the repeat to produce a table with a number of rows based on the data producing the page. This can be useful for displaying summary tables of information. Screenshot of Repeat Table Details If the Horizontal Table Display Method is chosen, the resultant output will be similar to this turned on its side. This means that the data is controlling the number of columns in the table, with the labels down the left hand side. Screenshot of Horizontal Repeat Details The Force Table Layout checkbox provides some more control over how the group is generated. Ticking this box will tell the system to use HTML table mark-up to render the group, rather than using more generic container elements such as DIVs and SPANs. This option may also be useful for fixing the relationship between grouped elements in the generated output. Therefore, it may make sense to tick this box for groups at the lowest level, but leave it unchecked for groups higher up in the page hierarchy. The final checkbox - Use a Fieldset for this group, puts the elements in this group within a containing border, thereby separating it from the rest of the page, and making it more easily distinguishable. This option is often recommended for accessibility, as it provides the user with more context information about the fields contained within it. The Label position for contained components option is used to provide control over where the labels will be shown for any fields or groups contained within this group. The default option is to place the labels to the left of each field, but if you wanted to change this (for example to put the labels above or to the right of each field), you could put he fields within a group, and then set this property accordingly. Depending on the Display Method of this group, this setting may not be available, or the options provided may be reduced. The Vertical display method prvoides all the options. Label Details - This section controls whether a label is shown for this group. The format of the controls is the same as for the field label described previously. The checkbox is used to indicate whether the label is required, and the radio buttons decide whether it is a static or dynamic label. If a static label is required it is entered into the Static Label text box, or alternatively binding information must be set on the bindings page to create a dynamic label. The styling options allow full control over how the label will appear using either defined CSS class names, or a valid CSS string. The Visibility Details section provides a number of options around controlling when this group will be displayed. If a group is hidden, then any components it contains will also be hidden. Screenshot of Group Visibility Options
The available options are described below.
Display Group Based on the Value of a Field? - This option is used to indicate that this group is dependant upon the value of another field on the page. If ticked, the following two options are required, and only if the given field has the specified value will this group be shown. This process is done on the client side, and as the chosen field's value is changed this group will be visible or hidden as appropriate. Field - This dropdown provides a list of all the fields on the page that are outside of this group. The value of the selected field will be used to control the visibility of this group at runtime. Value - This field should be used to enter the values of the selected field for which this group should be visible. Multiple values can be entered by separating them with semicolon (;) characters. At runtime, as long as the selected field's value is one of the ones entered here, the group will be visible. Hide Group Based on Runtime Server Data? - This option provides an alternative method for conditionally hiding this group. In this case some binding information will need to be specified that specifies when to hide the group. This check happens on the server, so if hidden, the group contents will never be available on the client side. Submit Data if Group Not Visible? - Regardless of which of the two hide modes above are used, this option controls how hiding a group will affect the underlying data. If ticked (the default) then the data will not be affected, but if it is unticked, then any information relating to a currently hidden group will be removed from the underlying data. In order to do this, some binding information will need to be specified so that the data can be inserted back again if the group is re-shown. Disable Group Based on Runtime Server Data? - This option allows you to easily disable all the fields contained within this group in certain situations. Data binding information is used to determine when the fields should be disabled, and the settings against each field control how they will appear when disabled.
Please see the How To Guides on the FAQ, located at for some examples of the use of these options. The group events section allows events to be associated with each group. This is achieved by specifying the script to execute when a particular event (e.g. onclick) occurs. FormMaker allows events to be associated with the group itself and its label. Screenshot of Event Details The options available for group events are the same as those defined previously for field level events, with the exception being that the URL Location action type can not be used for group events. One example of the use of group level events may be to highlight a row in a data table as you move your mouse over it. The Custom Attributes section provides an easy way to add extra attributes into your HTML markup. Screenshot of Custom Attributes The section will show all the currently defined custom attributes as well as allowing you to add new ones. For example, using certain DOJO effects would require you to insert certain custom attributes for them to function properly. The Repeat Details page provides some control over how the contents of the repeat will be presented, including sorting and styling options. Many of these options work best if used on a repeat having one group as a child, which has a display method of Table. These details appear when a Repeat component is selected on the left hand panel representing the page elements. Screenshot of Repeat Details The top of this page provides the full name of the current repeat, and a checkbox that can be used to try and solve display problems that may occur in some browsers. Element Sorting This section controls if and how the elements within this repeat will be sorted at runtime. Ticking the Sort Containing Elements checkbox indicates that the elements should be sorted and so requires some binding information to specify what to sort by. The Sort Order option selects whether the data should be sorted in ascending or descending order, or alternatively can be set to dynamic to enable this option to be pulled in from the data used to construct the page at runtime. In a similar way, the Sort Data-type control can be set to text, number or dynamic. This option sets the type of data to sort and is needed, as for example, 10 would come before 2 if the sort data-type was text. The Assume Default Sorting Behaviour checkbox will cause the system to make some assumptions about the sorting mechanism and the binding information required to try and minimise data entry requirements to achieve this functionality. This will add event handlers for the 'onclick' event to each label and will assume the required binding information. If data is entered for the Sorted Heading Styling text boxes, this will override the styling specified on the field settings page for the label of the element that is currently being sorted. This provides a way for the page to show which element is currently being sorted. Row and Column Styling Both of these sections work in the same way, with one controlling row styling and the other column styling. The aim of these options is to create alternate styling of rows and columns in a table of data by switching between two different sets of styles. The Alternate Styling select box turns this feature on or off, or sets it to dynamic, in which case some runtime data determines whether it should be applied or not. The Change Interval specifies how often the styles should be changed. A value of 1 indicates that the styles will alternate after every row (or column) and so is likely to be the most common option. A value of 2 will create 2 rows (or columns) with the first style, then 2 with the second etc. The styling text boxes allow the CSS class names or text strings for each of the two alternating styles to be specified. If any styling has been applied to the background of elements within this repeat, that will be applied as well as the alternating styles specified here. The Restrict Table Height? option (under 'Advanced Options') can be used to restrict the number of entries within the repeat that are shown at any one time. This will cause vertical scrollbars to be displayed on the screen to allow the user to see all the entries. The Number of rows to display field should be used to specify how many to show. This option is only available for repeats that contain a single group with a 'Display Method' of 'Table' If a custom field is selected, the Custom Details section will show. Here, the user is free to put in any content that is needed, with the only requirement being that it is valid XHTML. This may be useful for more advanced users, or for more complex data display and management. You will be required to fix any invalid content before navigating away from the page. Custom Details screen If a paragraph field is selected, the Paragraph Details section will show. This is used for basic paragraph text entry. Paragraph Details screen FormMaker provides the ability to bind data from the server to the web page elements for prepopulation and also bind page data back to the server after information has been captured or modified on the web page. FormMaker achieves this by using one XML message structure to represent the data on the server before a page is prepopulated and a second set of XML structures, each of which capture the information submitted by each action on a page. You can view the Data Binding information by using the Data Bindings tab. When you have the Bindings tab selected on the left hand panel, you should notice two tabs in the centre. The Page Display Bindings tab will contain the bindings that prepopulate the page using the XML document structure on the right. the second Action Submission Bindings tab will contain a list of actions. As you select each action the submission bindings for the selected action will be revealed, together with the XML document binding structure for this particular action on the right hand side. XML document structures for data binding When you create pages using the Page Structure tab, FormMaker automatically generates binding structures by default. These XML document structures are created using best assumptions and they can be modified using the Edit or Edit in Editor links on the right hand panel. Please don't forget to use the Refresh Document link to reflect your changes. These document structures fall into two types. The page display documents are used purely to help with generating the bindings, and for previewing the pages. They will not be used by the running application. The action submission documents however will be used at runtime to provide the structure needed to bind the submitted data into. (Unless the 'Use base document structure' option is turned off under Action Configuration.)
The following provides some detail of the decision making processes that are used to generate the XML document structures for data binding:
Standard Palette Controls - When standard palette controls are dropped on to a page a default element using the control name is created within the formData element. Please note that this is the default container for page fields when FormMaker has not been able to establish further binding structure for a given element. The /mvc:eForm/mvc:Control and /mvc:eForm/mvc:Data elements are the generic containers for MVC messages and will be applied to all messages by default. This is to provide a standard wrapper that can be used during development. The same binding structure is generated for Page Display Bindings and Action Submission Bindings. This default structure for the Action Submission Bindings will be used for all actions originating from this page which do not have their own binding structures. See Data Sources later to learn about specific Action Submission Bindings. Composite Palette Controls - When composite palette controls are dropped on to a page an entry for each of the contained standard controls is created within the formData element. Data Sources - When datasource elements are used during page design (W3C Schema, WSDL, Database Schema, Templates, Existing Pages, etc.) FormMaker will detect any elements that may constitute a request structure to a database or web service invocation for example. Based on this it will prompt the designer to select an action (if any actions have been defined in the application map) that may submit the selected information structure that was dragged and dropped onto the page. If an action is selected then a binding fragment that is the same as the element that was dragged will be associated with this action and this structured fragment will be shown when the particular action is selected within the Action Submission Bindings tab during the data binding process.
Due to the native XML architecture of Hyfinity's technology, the binding information for each page simply consists of a number of XPaths used within the generated XSL. The following screen shot shows an example of how the binding page may appear upon first entry. The left section of the page contains a representation of the structure of the current page. The right hand section contains a representation of the binding files chosen for this page or associated actions as required. Each page contains a content-specific set of helpful guidelines, and can be shown or hidden as needed. Clicking on the XPath Guidelines will display the relevant help notes; clicking it again will hide them. Screenshot of Binding Details Depending on how the page has been configured, XPath bindings may be required for the Groups, Repeats or Fields within it. Therefore, the remainder of this page is specific to the currently selected page component and actions. The name of this component is provided, and is highlighted in the page structure representation.
For each component, the bindings are split into two types:
Page Display Bindings - These represent all the details needed to render the page correctly. For example working out which value to prepopulate a control with. Action Submission Bindings - These detail how to insert the information on the page back into XML form when the page is submitted. Different bindings can be provided for each action this page is involved with.
No matter what element is selected, the required XPaths can be typed directly into the appropriate text area. Alternatively we can make use of the instance data files to create our XPaths. Once the required part of the XML instance has been found, if we click and drag it to the appropriate XPath text area, the XPath will be automatically created for us. Regardless of how the XPath has been created, FormMaker will try to 'match' it against the instance document. Any matching elements will be highlighted on the document treeview. You can click on the text showing the number of matches to automatically display the document with the matches highlighted. The red bars on the treeview on the left hand side highlight the page components for which binding information is currently invalid, or still needs to be provided. Once all the required XPaths have been entered for a component, the red bar will disappear from the appropriate entry in the treeview. You will notice that most of the XPaths have already been populated. When you add components to the page on the Page Structure screen, the appropriate bindings will be generated based on whether or not the field came from a data source. You can however adjust these default bindings if required. The main bindings that will not have been pre populated are those for additional features that have been enabled, such as conditional styling or dynamic hiding. In these cases, a message saying 'enter_xpath_here' will be displayed, alerting users to fill in XPath values appropriately. The following pages provide a description of what each required XPath is used for. The screenshot below shows the Action Configuration tab on the bindings screen, which allows customisation of how the binding process will work for each action applicable to this page. Screenshot of Action Configuration Details The left side of the screen provides a list of all the actions that can be submitted from this page. You can click to select an action to work with.
For each action, the following configuration options are available:
Use server-side data binding? - If server side binding is enabled, the form data will be bound to the defined XML structure for this action when the action is submitted. The remaining options below will only appear if server-side binding is ticked. Use base document structure? - This option will use the XML binding structure that has been created by FormMaker (which may have been manually edited subsequently) to bind the submitted data for this action. If this option is turned off, then the only way to provide a structure to bind the data to is via the following two options. Keep previous form data? - This option preserves the formData element between server roundtrips. If this option is enabled on your actions, as you move through pages in the application, the formData section will grow to contain a combined list of data from all the pages that have been visted. Maintain Additional Data - This link enables you to indicate multiple fragments within the XML binding structure that need to preserve their data between server roundtrips. Each fragment matched by an XPath entered here will be taken out of the data available as the page is rendered, and will be reinserted under the mvc:Data element in the document submitted to this action.
When entering Action Submission bindings for any component on the page, these details will be processed to always show the correct binding structure on the right hand side. Set bindings based on another action? - This enables you to set all the bindings xpaths for every component on the page for this action so that they are the same as another action from this page. To do this, you just need to enable this checkbox, and then select which action should be used as the base for the current one. Any changes made to the bindings for this base action will now be automatically applied to this action as well. When using this option, it is important to make sure that the structure configuration options detailed above are set the same for both actions. Multiple Bindings There may be occasions when you need to bind the data from the same page field to multiple locations within the submitted document structure. You can achieve this by using the Add Additional Binding link. This is available when configuring the Action Submission Bindings for any component on the page. Each Repeat can require a number of XPaths based on the options set in the Repeat Details section. Page Display Bindings
Repeating Data Location - This binding is always required. This sets the context for the repeat, i.e. what elements we are repeating over. Sort Location - If sorting is selected (on the Repeat Details page), this XPath must point to the element that should be sorted against. However, if the default sorting checkbox is selected on the Repeat Details page, this textbox will be disabled. Sort Order Value - If the sort order is set to dynamic, this XPath will be used to determine the ordering. At runtime, this must evaluate to either ascending or descending. As above, this XPath textbox will be disabled if default sorting is enabled. Sort Datatype Value - If the sort data-type is set to dynamic this XPath is required. At runtime, this must evaluate to either text or number. With default sorting, this field will similarly be disabled as in the two above. Alternate Row Style If - If the alternate row styling option is set to dynamic, this is used to determine at runtime whether alternating row styling should be used for this repeat. This XPath will be evaluated to either true or false to make this determination. Alternate Column Style If - If the alternate column styling option is set to dynamic, this is used to determine at runtime whether alternating column styling should be used for this repeat. This XPath will be evaluated to either true or false to make this distinction.
Action Submission Bindings
Repeat Submission Binding - This option sets the context point for this repeat in the data submitted from the page. This should point to the element that is repeated in the data. This binding is only required for repeats that contain editable fields (eg text boxes)
Each Group can require a number of different bindings depending on the options selected: Page Display Bindings
Hide If - This XPath is used as the check to determine whether to show this group or not. If the XPath evaluates to true at runtime, using the standard XPath rules, the group will then be hidden. This XPath is required if the Hide Group Based on Runtime Data option has been selected (see Group Details). Disable If - This XPath is required if the Disable Group Based On Runtime Data option is selected on the Field Details page. If this XPath evaluates to true at runtime, then all the fields within this group will be disabled. Label Value - This XPath is required if a dynamic label has been requested for this group. The text value of this XPath at runtime will be used for the group label. Set Value Events - If a dynamic Set Value action type is selected for an event against this group or its label on the Group Events section, these XPaths will become available. The resulting value from evaluating each XPath will be put into the target field of the event when the event gets triggered. Dynamic Group Style XPaths - The XPaths in this section are used for setting the dynamic background styling of the field if dynamic background styles have been selected on the Group Details page. The first field, Apply '...' Group Style if, will be used for entering a condition to be fulfilled in order to apply the specified conditional style. If the XPath here evaluates to True, the entered class (on the Group Details screen) will be used for this element. If dynamic was selected, another XPath text area will appear: Dynamic Group Style Value. The value of this XPath will be converted to a string at runtime, which will be used as the CSS class name to apply to this field's background container (if the condition XPath is true). Dynamic Label Style XPaths - These XPaths work in the same way as the XPath values above, except that they define the dynamic styling requirements for this group's label.
Action Submission Bindings
Context Location - This XPath is required if the 'Submit Data if Group Not Visible?' option has been unticked in the Group Visibility Settings section. It is used to indicate the location in the data that contains all the information about this group. Group XML Fragment - This is required if the 'Submit Data if Group Not Visible?' option has been unticked in the Group Visibility Settings section. Unlike the other binding details this field should contain an XML fragment. This fragment should be the empty structure needed to bind all the fields within this group. This fragment will be inserted into the Context Location (if needed) when this group is visible so that all the contained fields can be successfully bound. This field can still be populated by drag and drop from the instance documents. This will cause the XML structure for the selected element and all children to be inserted into the field, rather than the XPath to it. If this group contains any other conditional display groups with the 'Submit Data if Group Not Visible?' flag unset then this fragment should not contain any data related to the nested group, as this will be stored against the subgroup.
Each Field may require a number of different XPaths based on the options set on the Field Details section. In addition, if the field supports selecting multiple values (eg a multiple checkbox control or a select box with multiple selection enabled) you will also be asked to select the Data Format to use. This controls how the multiple selected values will be stored in the XML data. The two options are CSV String which combines all the selected values into a single comma separated string, and XML Structure which creates a separate element in the XML message for each selected value. Page Display Bindings
Field Value - This is the location of the current value for this field in the instance document that should be displayed on the screen. Please note, if this field is contained within a repeat, and a relative XPath is required, the repeat variables will need to be used for this xpath if this is a select box, radio button or multiple checkbox control with dynamic options. The XPath Guidelines will detail the repeat variables available. This is because the Options Location value used to find the set of options to display will alter the current context point. Label Value - This XPath is required if a dynamic label has been requested for this field. The text value of this XPath at runtime will be used for the label. Options Location - This XPath is required for select box, radio button or multiple checkbox controls that have been set to have dynamic options on the Field Settings page. This XPath should point to the node set that contains all the data to use when creating all the options for the control. Options Data Value - This XPath is used in conjunction with the Options Location to set the value that should be used in the background and returned from the page for each option selected by the Options Location XPath. This XPath should be relative to the Options Location XPath. Options Display Text - This XPath is used in conjunction with the Options Location to set the text that should be displayed on the page for each option selected by the Options Location XPath. This XPath should be relative to the Options Location XPath. Hide If - This XPath is required if the Hide Field Based On Runtime Data option is selected on the Field Details page. If this XPath evaluates to true at runtime, the field will not be output in the resulting page. Disable If - This XPath is required if the Disable Field Based On Runtime Data option is selected on the Field Details page. If this XPath evaluates to true at runtime, the field will be disabled. If this field is also within a group that has the disable option set, then this XPath will override the group disable check for this particular field. Checkbox Value - This XPath is required if the field type is a Single Checkbox with a dynamic value, and is used to set the value for the checkbox field. Validate If - This XPath is used to determine whether the value entered for this field should be validated when the page data is submitted. The entered XPath will need to evaluate to true at runtime for this to occur. Error from Server Value - This XPath is used to specify a server message to show by this field. The Show Server Message option must be selected on the Field Details page for this option to be available. If at runtime, this XPath evaluates to a string, that string will be used as the server message. Set Value Events - If a dynamic Set Value action type is selected for any field or label event on the Events section, these XPaths will become available. The resulting value from evaluating each XPath will be put into the target field of the event when the event gets triggered. Dynamic Background Style XPaths - The XPaths in this section are used for setting the dynamic background styling of the field if dynamic background styles have been selected on the Field Details page. The first field, Apply '...' Background Style if, will be used for entering a condition to be fulfilled in order to apply the specified conditional style. If the XPath here evaluates to True, the entered class (on the Field Details screen) will be used for this element. If dynamic was selected, another XPath text area will appear: Dynamic Background Style Value. The value of this XPath will be converted to a string at runtime, which will be used as the CSS class name to apply to this field's background container (if the condition XPath is true). Dynamic Element Style XPaths - These XPaths are used for setting the dynamic styling to apply to this field's control if this option has been selected on the Field Details page. These options work in exactly the same way as described above for dynamic background styling. Dynamic Disabled Style XPaths - These XPaths work in the same way as the XPath values above, except that they define the dynamic styling requirements for this field control if it is disabled. Dynamic Label Style XPaths - These XPaths work in the same way as the XPath values above, except that they define the dynamic styling requirements for this field's label.
Action Submission Bindings
Field Submission Binding - This XPath provides the location in the action binding structure in which the value for this field should be inserted when the page is submitted and the particular action called. Submission Context Location - This is required for fields that support multiple values, with the Data Format set to XML Structure. This binding should point to the element that will be repeated for each selected value. Field Value Binding - This is required for fields that support multiple values, with the Data Format set to XML Structure. This binding is realtive to the Submission Context Location, and indicates the location within the repeating element where the actual value should be placed. In most cases this value will be left as '.' to indicate that the value should be placed directly into each repeating element.
As already explained, all the data binding information is specified using XPaths. This means that handling of namespaces can be important to ensure the correct details are being bound. Fortunately, FormMaker automatically imports all namespace definitions from the specified instance documents, so for the majority of cases you will not have to worry about namespaces at all. Simply drag your fields as needed to create the bindings, or use the the default bindings provided. However, if you find that you would like more control over the namespaces in use, the Namespace Definitions section can be opened to show all the namespaces that are currently defined. This allows you to see which namespaces have been imported from the instance documents, and provides the ability to add new ones and remove existing definitions. The namespace handling section of the bindings page. When examining the instance documents, there are often namespaces present that do not have a prefix defined. In this case FormMaker generates a prefix of the form ns1, ns2, etc. for each one. If you would like to change this prefix to something more appropriate, you just need to click the Edit button next to the appropriate definition, and the adjust the prefix value accordingly. Once you have made the change, click the Save button to store the new details. This will automatically update any bindings that are using the namespace to include the new prefix. When entering binding information, FormMaker automatically checks the entered details to ensure that the XPaths are valid and that any namespaces have been defined. If any errors are found these will be detailed on the screen, and the red bar will appear on the treeview to indicate that there is a problem with the field. This makes it very easy to find and fix any problems that may occur. Once a page has been set up in FormMaker, we need to generate the page to create the output file for use in the final application. This can be done by clicking the Generate Page link at the top of all the screens, or by selecting the page on the Application Map screen and then clicking the Save link in the Page Details. Alternatively, the Generate Application button will generate all the pages as well as prepare the server-side components represented by the action links and the controllers shown on the Application Map diagram. Once a page has been generated, the output file (XSL) will be created in the XSL asset pool within XDE. To be able to easily see how a page will look, FormMaker provides a Preview function that can be used after generating to provide an example of what the page will look like. This works by generating example HTML for each page using the data provided by the 'Page Display' XML document defined for it. These sample HTML pages are then saved into the webapp directory for your project so that they can correctly pick up all the needed resources, such as CSS, JavaScript, and image files. You can use the Preview Page button available at the top of every FormMaker screen to view what this preview looks like at any time. If you make any changes to the page, you will need to perform a generate operation on the page before the preview will reflect these changes. In order for this to work correctly, there are a couple of settings in the Application Defaults section that tell FormMaker where these directories are located. In most cases you will not need to adjust these values, but for more advanced scenarios (such as using the same webapp resources for multiple projects) they can be changed as needed. The Preview Location box should contain the filesystem location of this webapp directory, eg {install dir}\design\repository\{workspace}\mvc\{project}\webapp. The Preview URL box should be used to provide the URL that FormMaker should use to access this web application, eg http://localhost:7070/Preview/{workspace}/mvc/{project}/webapp. Deployment When you are happy that your pages are looking okay in the Preview, you need to deploy the application to see how it actually works when running. FormMaker provides a button at the top of every screen to deploy the application. This deploys all the pages and controller components in your project to the local runtime environment to test and debug using the Test Dashboard discussed elsewhere in the documentation. Once the full application has been deployed at least once, you can make use of the Deploy Page button when you want to quickly test changes to a particular page in the runtime environment. If you have added any additional resources to your page (CSS files, script files, etc) then you will need to do a full application deployment for these to be picked up. Once you are happy that the project is working correctly, the publication options can be used to package up a version for installing on a production server. For more details on deployment and publication options, please see the Project Deployment and Publication section elsewhere in the documentation. Sections within the appendix contain supplementary information to the main documentation set. FormMaker generates XSL files for use within the Hyfinity Morphyc Architecture. For these files, the skin file will be another XSL that will be imported by the generated file.
The output XSL will not perform the full transform, but instead will define the following named templates that should be called from the 'skin' where required
section_title - Contains the name of the page. page_scripts - Contains the 'script' tags for any custom scripts for this page. This should be placed within the head of the HTML page. css_imports - Contains the CSS import statements needed to pull in the required CSS files. This should be placed within the head of the HTML page. section_body - This template contains the main content of the page, starting from the 'form' level. This should be placed within the body of the HTML page.
If an output file already exists when a generation operation is performed, the result is slightly different, in that only the contents of the section_body, css_imports, and page_scripts templates are recreated. All other templates are simply copied from the existing file. This ensures that any new templates created will be retained. In order to use the advanced value conversion, validation, and error highlighting features of FormMaker a number of JavaScript library files must be included by your skin. This should be done at the same point as the call to the page_scripts template is performed. The skin file used in the tutorial examples includes the full list of standard scripts. You can view this list by opening the skin file xsl. In order to use the AJAX based partial page functionality, the Dojo toolkit needs to be imported by the skin. Please see the provided demo_skin.xsl file for an example of this. In order to use the Message Tooltip form of error display, the following HTML fragment should be placed in the skin so that it is created directly under the HTML body tag in the output.
<div id="tipDiv" style="position:absolute; top:-100px; left:-300px; width : 300px; height : 100px; visibility:hidden;">
    <iframe title="tipFrame" id="tipFrame" name="tipFrame" src="#" style="width :300px; height : 100px;">
    </iframe>
    <div id="messageDiv" style="position: absolute; top : 0 ; left : 0; width : 100%; height : auto; background : white; border : thin solid black; padding : 2px;">
    </div>
</div>
                    
In this fragment, all the required styling has been in-lined on the components; however it may be better to separate this out and used named styles instead. The styling applied to the messageDiv will control how the information appears to the user. In this example there will be a white box with a black border containing the text. In order to use FormMaker, a variety of different files need to be chosen. This is achieved using the Repository Viewer application, which provides a simple mechanism for viewing and manipulating files which ensures a consistent approach. An example Repository Viewer window instance is shown below, which will appear upon clicking the Select Skin button from within the Application Map screen in FormMaker. Screenshot of Repository Viewer The contents of the first column will depend on the location and function of the button that called up Repository Viewer. This column shows all the categories of documents that are available to view. In the example above, the list shows just one category, XSL, which is the directory where the current project's XSL files are kept. Selecting a category will update the right hand column which shows the list of all the documents in the selected category. The red text indicates the currently selected category. Clicking on any of the displayed documents will close the window, and that selected filename will be passed back to FormMaker to be used and saved as needed.
The functions available for documents within a collection are described below.
Upload - This uploads a file from the local file system which has been selected using the Browse button to the current categroy. The name of the new File will be set by the File Name field. New - This option creates a new file in this category. The name of the new document will be taken from the File Name field. Copy - This option copies an existing document within this collection to a new document with a different name. The file to copy should be selected using the radio buttons, and the new document name entered into the File Name field. Rename - This option renames the selected file. The file to rename should be selected using the radio buttons, and the new name entered into the File Name field. Edit - Opens the document selected by the radio buttons so that it can be easily viewed and editted within the browser. Edit in Editor - Opens the document selected by the radio buttons in an external editor (eg XMLSpy) so that it can be edited directly. Delete - This deletes the document with the selected radio button. This option cannot be undone, so should be used with caution.
By default, the application will try and use Altova's XMLSpy as the external editor for the Edit in Editor command. When a document has been opened in an external editor, it can be saved directly within the editor to update the version stored in the repository. You will have been given the option of changing the editor to use during install time, but this can still be changed at a later point if needed. For details on this please see this entry on the FAQ.