Page Structure  Locate

A typical page in the Business Service Console consists of:

These parts are composed together using the <syswf:wrap> JSP tag, which wraps its body between the specified header and footer JSPs, and includes this compound content into the page. Example 24 is taken from the Browse Endpoints page which contains a header, a footer, a navigation tree, and a search results view.

Table 88, “Web UI components” summarizes the components used in Business Service Console pages:

Table 88. Web UI components

ComponentDescriptionFile
System Page HeaderHTML prologue for the page pageHeader.jsp
System Page FooterHTML epilogue for the page, script invocations pageFooter.jsp
Page headerGraphics at the top of the page, button bar and main navigation tabs design/pageHeader.jsp
Page footerGraphics at the end of the page, initialization scripts design/pageFooter.jsp
Normal FrameFrame for a content area design/normalFrame*.jsp
Printable Frame Header Header of a content area that supports printing design/printableFrameHeader.jsp
Tabbed FrameFrame for the content presented on several tabs on the right side of pagedesign/tabbedFrame*.jsp
Search FrameDesign for search pages, it contains search and result tabs at the bottomdesign/tabbedFrame*.jsp
Resizable FrameContains mouse resizable frame for trees displayed on the left side of pagedesign/resizableFrame*.jsp
No FrameEmpty design for pages where a visible frame around content is not required, such as on the home page.design/noFrame*.jsp

System Page Header  Locate

This component is mandatory for all pages, since it contains the HTML head declaration and includes standard JavaScripts. You may need to modify the pageHeader.jsp component in order to change the page's title or <META> tags in the page header.

System Page Footer  Locate

This component is mandatory for all pages. It contains hidden form fields for the web framework core (such targetTask) and executes necessary scripts that adjust the page layout dynamically.

There is no visible content to customize, although you may want to add scripts to this component to be run after the page is loaded.

Page Header  Locate

The page header contains the graphics at the top of the page, including the login and edit profile buttons. The header also contains the main navigation tabs:

Home
Catalog
Report

The main navigation tab area is rendered by an HTML table. Individual buttons are realized as syswf:controls in script mode, attached as JavaScript to the graphic elements for the tabs. To add a tab, simply add a new <td> element with the appropriate class and graphics and use the <syswf:control> tag to jump to the desired task as shown below:

<td id="B_myButton" class="menuTabInactive" onClick="navSave('myButton');
<syswf:control mode='script' targetTask='/search' targetDepth='0'/>">MY TAB</td>

You may want to copy the element's graphics from the buttons used in the standard UI.

There are several other attributes on the <td> element that enable it to work with the rest of the UI framework:

  • The class attribute should represent the default button's state. There are two possible values recognized by the scripts: menuTabActive and menuTabInactive. When a tab is shown, the JavaScript on the page will reassign the object class as necessary.

  • The id attribute should uniquely identify the button. The value must begin with a B_ prefix. The remaining portion of the element's id is considered to be its identifier and is used, for example, in the navSave JavaScript.

[Tip]Tip

For an example of how tab switching works, see the data/script/naviswitch.js script.

Page Footer  Locate

The footer provides the bottom part of the page, where the product name and copyright is displayed in the standard UI. Except for the static content (copyright text, administrator email, etc.), there are no visible active elements in the standard UI's page footer.

The standard UI uses scripts on this page to initialize scrolling regions properly. If you add more scrolling regions (currently four are supported), you may need to adjust the scripts here. Supposing your scrollable content is identified by the id attribute as mycontent, you will need to add these lines:

if (getObj('mycontent'))  { 
                scrollers[scrollers.length] = new treeScrollerControl(getObj('mycontent')); 
}               
if (getObj('mycontent')) loadScrollInfo('mycontent',getObj('mycontent').parentNode,
                '<c:out value="${taskName}"/>');

The first line initializes the scroll object and the second one loads stored scroll information into it from a cookie.

See the data/script/tree_scroller.js script for details on how the scroller component is implemented.

Normal Frame Header  Locate

This component provides:

  • Graphics for the content area border, specifically for its top and sides

  • Content caption area

  • Optional buttons in the caption area

  • The default scrollable container

Use the normal frame header to wrap the real content that you want to display to the user, so that presentation is consistent across the entire console.

This component processes several parameters that can be passed using a <syswf:param> element nested in the <syswf:wrap> JSP tag.

Table 89.  Parameters

ParamDescriptionRequired
dialogCaptionThe caption text to be displayed in the caption area. If unspecified, it will default to the Task name, which is provided as a variable by the Systinet Web Framework. no
control1,...,control4Optional content to be included in the caption area, such as action buttons. You should pass valid HTML in these parameters. They are empty by default. no
contentIdThe identification of the content area. The contentId parameter will be used as a suffix in the HTML id attributes of various elements. The default value is an empty string. no
omitScrollableCauses the <div> tags that identify the scrollable area not to be generated as output by the header. This may be useful if only a portion of the embedded content page should scroll. no
buttonsOptional content to be included in the right bottom corner, such as action buttons. You should pass valid HTML in this parameter.no

Providing a Caption Name  Locate

You may need to provide a caption name that dynamically changes based on the state of your application. Example 22 shows how to provide a caption for your content:

Example 22. Dynamic Caption Content

<!-- Wrap with the normal header and footer -->
<syswf:wrap headerTemplate="design/normalFrameHeader.jsp" 
    footerTemplate="design/normalFrameFooter.jsp">
    <!-- We will generate the caption from a static text, and a parameter 
    (or a variable) -->
    <syswf:param name="caption">
        Detailed list of <c:out value="${entityPluralName}"/>
    </syswf:param>

<!-- This is the content of the area -->
<!-- End of the content -->

</syswf:wrap>

Adding a Button to the Caption Bar  Locate

In order to provide a specific button to the content's caption area, pass a parameter to the header component, as shown in Example 23.

Example 23. Button in the Caption Bar

<!-- Wrap with the normal header and footer -->
<syswf:wrap headerTemplate="design/normalFrameHeader.jsp" 
    footerTemplate="design/normalFrameFooter.jsp">
    <!-- We will include one control -->
    <syswf:param name="control1">
        <!-- This is the control's HTML code -->
        <img title="Printable view" 
            onClick="openPrintableView2('<c:out value='${dataUrl}/'/>','content');" 
            src="gfx/icon/printview.gif" align="absmiddle"/>
    </syswf:param>

<!-- This is the content of the area -->
<!-- End of the content -->

</syswf:wrap>

This example shows real code that adds a Printable View button to the header.

Normal Content Footer  Locate

This component contains the graphics that frame the content area at the bottom. It contains no textual or parameterized content in the standard UI. You may combine the normalFrameFooter with all the frame headers to visually close the content area.

Printable Frame Header  Locate

This header is similar to the Normal Frame Header but includes the Printable View button. This header is easier to use for pages that support the printing feature, since you need not pass an explicit <syswf:param> element as shown in the preceding examples.

It accepts the same parameters as the Normal Frame Header:

Table 90.  Parameters

ParamDescriptionRequired
dialogCaptionThe caption text to be displayed in the caption area. If unspecified, it will default to the Task name, which is provided as a variable by the Systinet Web Framework. no
control1,...,control4Optional content to be included in the caption area, such as action buttons. You should pass valid HTML in these parameters. They are empty by default. no
contentIdThe identification of the content area. The contentId parameter will be used as a suffix in the HTML id attributes of various elements. The default value is an empty string. no
omitScrollableCauses the <div> tags that identify the scrollable area not to be generated as output by the header. This may be useful if only a portion of the embedded content page should scroll. no
buttonsOptional content to be included in the right bottom corner, such as action buttons. You should pass valid HTML in this parameter.no

JSP Page Example   Locate

Example 24. Business Service Console Page - Browse Endpoints

<!-- Includes the JSTL core, required, if you want to use conditionals, 
loops, expressions -->
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<!-- Includes the Systinet Web Framework tag library, required -->
<%@ taglib prefix="syswf" uri="http://systinet.com/jsp/syswf" %>
<!-- Includes the Business Service Console specific tag library -->
<%@ taglib prefix="bsc" uri="http://systinet.com/jsp/bsc" %>

<!--
    Provides the system header and footer, wraps the entire page content inside
    This is a required part for all pages
-->
<syswf:page headerTemplate="pageHeader.jsp" footerTemplate="pageFooter.jsp">

    <!-- Provides the page header and footer -->
    <syswf:wrap headerTemplate="design/pageHeader.jsp" 
        footerTemplate="design/pageFooter.jsp">

        <!--
            This is the page actual content:
            There's one area that covers 15% of the page's width, and another 
            area that covers the rest. The space distribution is best done through tables.
        -->
        <table width="100%" border="0" cellapdding="0" cellspacing="0" 
            class="DialogOffset_5px">
            <tr>
                <td valign="top" width="15%">

                    <!--
                    We use another wrapper with header and footer in order to provide
                    resizing of the area
                    -->
                    <syswf:wrap headerTemplate="design/resizableFrameHeader.jsp" 
                     footerTemplate="design/resizableFrameFooter.jsp" >
                        <!--
                            This is the Business Service Console's navigation tree. 
                            This component will be
                            explained later.
                        -->
                        <syswf:component name="browseTree" prefix="browseTree">
                            <syswf:param name="focus" value="endpoints"/>
                        </syswf:component>
                    </syswf:wrap>
                </td> <!-- End of the tree area -->

                <!--
                    This is construction of a UDDI query, will be explained later. 
                    This part is not visual.
                -->
                <bsc:parseUddiQuery var="findQuery" scope="request">
                    <find_binding xmlns="urn:uddi-org:api_v3">
                    </find_binding>
                </bsc:parseUddiQuery>

                <td> 
                    <!--
                        We use a special printable header to provide the  
                        "printable view" icon
                    -->
                    <syswf:wrap headerTemplate="design/printableFrameHeader.jsp" 
                         footerTemplate="design/normalFrameFooter.jsp">
                        <!--
                            This is the result view, that covers the main area
                        -->
                        <syswf:component prefix="resultView" 
                                name="endpointSearchResults">
                            <syswf:param name="defaultView" 
                                value="endpointsCommonResults" />
                            <syswf:param name="query" 
                                value="${findQuery}"/>
                        </syswf:component>
                    </syswf:wrap>
                </td>
            </tr>
        </table>
    </syswf:wrap>
</syswf:page>

The Header and Footer are included by using <syswf:wrap>, which injects header and footer JSPs around the content area. The content area itself is divided vertically, using HTML tables, and the real content is embedded using the <syswf:component> JSP tag.