Configuration Directives

Window Directives

These directives control the appearance and behavior of a browser window. They always appear in directive blocks enclosed by one of following tags: <StandardWindow>, <ToolWindow>, or <DialogBox>. The tags themselves indicate the window type.

Each directive block is associated with a name pattern, specified in the open tag. Wapache apply a block to a given window if the name of that window matches the pattern. In the following example, both "popup_warning" and "popup_error" will use the settings in the <ToolWindow> block, while only "main" will use the <StandardWindow> block:

<StandardWindow "main">
  Width 80%
  Height 80%
</StandardWindow>

<ToolWindow "popup_.*">
  Width 2in
  Height 4in
</ToolWindow>

A Standard Window behaves like a regular browser window. The user can maximize, minimize, and resize it (unless these features are explicitly turned off). For every standard window there is a button in the Task Bar. Each one also gets a slot in the Task Switch (Alt-Tab) window.

A Tool Window has a more diminative title bar than regular windows. It can not be maximized or minimized and usually are not resizeable. It also does not have an icon for activating the system menu. Tool windows are designed for floating tool bars and for displaying information supplemental to contents in a Standard Window. It is "owned" by the window that opened it. When the opener closes, so does the tool window. When the opener is minimized, the tool window becomes hidden. When a tool window has the keyboard focus, its opener will still appear to be active. In essence, a tool window is an extended part of a standard window.

Like a Tool Window, a Dialog Box is also an owned window. It will close when its opener closes. A Dialog Box can be modeless and modal. A modal Dialog Box does not yield control back to its opener until the user closes it.

Both Tool Windows and Dialog Boxes will always appear in front of their openers.

There are two ways to specify the size of a window. You supply the actual size of the window using the Width and Height directives, or you can specify the size of the document view using the ClientWidth and ClientHeight directives (see figure below). The second pair is useful when the HTML contents to be displayed have a a fixed pixel size.

The dimensions can be specified in number of pixels (px), number of scaled pixels (sx), inches (in), or percentage.

A scaled pixel is the length of a pixel at Windows's default resolution of 96 DPI (dots per inch)–i.e. 1/96 of an inch. If the end user's display device has a higher resolution, Wapache would adjust the dimensions of the window so that it is of roughly the same size on screen as it were at 96 DPI.

When specifying dimensions in inches, you must provide integers. Wapache does not recognize numbers with decimals. For finer control, use the scaled pixel.

Dimensions specified in percentage are calculated based on the width and height of the desktop area–that is, the screen area minus the Windows Task Bar.

Four directives are available for specifying the location of a window: Left, Top, Right, and Bottom. Most of the time you would not be using all four. You would just specify the window's height and width and then the location of one of its corners.

The figures given in these directives are not screen coordinates. They are offsets from the window's offset rectangle. The offset rectangle for a Standard Window is the desktop area. The offset rectangle for a Tool Window or a Dialog Box is the area occupied by its opener (or the desktop area if it was not opened from another window).

The HorizontalAlign and VerticalAlign directives affect how the figures are interpreted. When HorizontalAlign is set to "Left," they are distances from the left edge of the offset rectangle:

When HorizontalAlign is "Right," they are distances from the right edge of the offset rectangle:

When HorizontalAlign is "Center," both Left and Right are ignored. Wapahce will simply center the window in the offset rectangle.

The effect of VerticalAlign on Top and Bottom are analogous. When VerticalAlign is "Top":

When VerticalAlign is "Bottom":

You would always place Standard Windows inside its offset rectangle. Otherwise it would be outside the desktop area and not be visible. The offset rectangle of a Tool Window, on the other hand, is the area of its opener. In this case you might want to position the window outside of its offset rectangle, so the windows do not overlap. For that you need to use negative numbers. The following example places a Tool Window next to a Standard Window, 5 pixels away and 10 pixels lower:

<ToolWindow "tools">
  HorizontalAlign Right
  VerticalAlign Top
  Left -5px
  Top 10px
  Left 5px
  Width 220px
  Height 100px
</ToolWindow>

Changing HorizontalAlign to "Left" and setting Right to -5px would place the Tool Window on the other side.

When FullScreen is turned on, all window placement directives are ignored–the window will simply fill up the whole screen.

You can give your application a more unique appearance with a custom window frame. First, turn off the system window frame with the Frameless directive, leaving only the HTML document visible on screen. Then create then custom frame within the HTML document, using a combination of CSS, Javascript, and images.

Example:

<StandardWindow Main>
  Left 10%
  Top 10%
  Height 100px
  Width 220px
  Frameless On
  ScrollBar Off
  3DBorder Off
  RoundedCorners 10px
</StandardWindow>

Use the scripting methods exposed through the External Object to implement features normally provided by the system window frame, such as minimizing, maximizing, and moving.

Description: Determines whether a 3-D border appears around browser frames
Syntax: 3DBorder On|Off
Default: 3DBroder On
Context: window config

The 3DBorder directive turns off 3-D borders for all frames (iframes included). Use the InnerBorder to turn off the border around the main document.

Description: Name of the context menu that appears when the user right clicks on a hyperlink
Syntax: AnchorContextMenu menu-name|Off
Default: AnchorContextMenu (IE menu)
Context: window config

Normally when the user right-clicks on a hyperlink, Internet Explorer's hyperlink context menu appears, with the options to "Open in New Window," "Save Target As," and so on. The AnchorContextMenu directive lets you supply a custom menu tailored to your application.

The menu-name argument refers to a <Menu> directive block, where the menu items are defined.

Javascript: Menu items are not context aware at the DOM level. A ScriptMenuItem, for example, will always invoke a method of the window object, even in this case, when context menu was opened for a specific element. If the action performed is element specific, attach a handler to the oncontextmenu event and save a reference to event.srcElement in a global variable.
Description: Determines whether AutoComplete is active
Syntax: AutoComplete On|Off
Default: AutoComplete Off
Context: window config

Microsoft's Intelliforms™ technology aids users in filling out forms in Internet Explorer. The AutoComplete directive determine whether this feature is available in a Wapache browser window as well.

Need to confirm behavior; might not work at all. - Chung

Description: Sets the bottom position of the window
Syntax: Bottom distance [px|sx|in|%]
Default: Bottom (undefined)
Context: window config

The Bottom directive is used to set the bottom position of a window. If VerticalAlign is "Bottom," distance is interpreted as that from the bottom of the window to the bottom of its offset rectangle. If VerticalAlign is "Top," then it is the distance from the bottom the window to the top of its offset rectangle.

For Standard Windows, the offset rectangle is the desktop area. For Tool Windows and Dialog Boxes, it is the area occupied by the opener window.

Pixel length is assumed if no unit is specified.

See Window Placement for more information.

Description: Name of the context menu that appears when the user right clicks on a form input field
Syntax: ControlContextMenu menu-name
Default: ControlContextMenu (IE default)
Context: window config

Normally when the user right-clicks on a input field, the standard edit context menu appears, with the options to "Copy," "Paste," and so on. The ControlContextMenu directive lets you supply a your own solution.

The menu-name argument refers to a <Menu> directive block, where the menu items are defined. You must provide definition for every item in this menu. There is no way to add an item to the existing menu. The directive block for the standard edit menu is shown below.

<Menu edit>
  BasicMenuItem "Undo" _this IDM_UNDO
  MenuSeparator
  BasicMenuItem "Cut" _this IDM_CUT
  BasicMenuItem "Copy" _this IDM_COPY
  BasicMenuItem "Paste" _this IDM_PASTE
  BasicMenuItem "Delete" _this IDM_DELETE
  MenuSeparator
  BasicMenuItem "Select All" _this IDM_SELECTALL
</Menu>
Description: Name of the context menu that appears when the user right clicks on an element that is neither a hyperlink, image, or input field
Syntax: DefaultContextMenu menu-name
Default: DefaultContextMenu (IE default)
Context: window config

The DefaultContextMenu directive sets the context menu for elements that do not require a more specialized menu. The following table lists those that do with the coresponding directive.

Hyperlinks AnchorContextMenu
Images ImageContextMenu
Input Fields ControlContextMenu
Selected Text TextSelectionContextMenu

menu-name refers to a <Menu> directive block, which contains the menu item definitions

Description: Specifies a menu to be used as the window's drop-down menu
Syntax: DropDownMenu menu-name
Default: DropDownMenu (none)
Context: window config

The DropDownMenu directive assigns a menu to a window. Top level items will appear across the top of the window. Submenus will drop down from this menu bar.

menu-name refers to a <Menu> directive block, where the menu items are defined.

Description: Height of the window excluding the title bar, menu, and border–i.e. the height of the document view
Syntax: ClientHeight length [px|sx|in|%]
Default: ClientHeight (undefined)
Context: window config

The ClientHeight directive lets you specify the desired height of the HTML document view port. Wapache would then calculate the necessary height the window should have in order to accommadate it. This is an alternative to the Height directive, which sets the actual height of the window.

If not unit is given, pixel length is assumpted

See Window Placement for more information.

Description: Height of the window excluding its border–i.e. the width of the document view
Syntax: ClientWidth length [px|sx|in|%]
Default: ClientWidth (undefined)
Context: window config

The ClientWidth directive lets you specify the desired width of the HTML document view port. Wapache would then calculate the necessary width the window must have in order to accommadate it. This is an alternative to the Width directive, which sets the actual width of the window.

If not unit is given, pixel length is assumpted

See Window Placement for more information.

Description: Contains directive affecting the appearance of a web browser window and indicates that should behave like a dialog box
Syntax: <DialogBox name-regex>
Context: server config

DialogBox is a container for directives that affect the appearance and behavior of a web browser window.

name-regex is a regular expression. Directives in the block are applied to a window if its name matches the pattern. A match in this case means the full name must fit the pattern. This is constrast to how regular expressions are normally used in Apache, where a pattern would only need to macth some portion of the test string. Wapache automatically adds the start-of-string (^) and end-of-string ($) meta-character to the pattern. You need to put wildcard meta-character in the pattern if you wish to use the same directive block for different windows.

By default a Dialog Box is modeless.

See Window Types for more information.

Description: Determines whether scroll bars in the web browser window look flat
Syntax: FlatScrollBar On|Off
Default: FlatScrollBar Off
Context: window config

The FlatScrollBar directive makes the scroll bars a flatter. They will still have a slight 3-D appearance.

Description: Determines whether the window should be frameless
Syntax: Frameless On|Off
Default: Frameless Off
Context: window config

The Frameless directive turns off the default window frame provided by the operation system. A flameless window shows just the document view port. You are expected to provide a frame in the HTML document, at well as implement missing functionalities like window moving and closing in Javascript.

Use the RoundedCorners to round off the window's sharp corners.

While it is possible to add a drop-down menu to a frameless window, it is not recommended–it would look stupid.

Currently it is not possible for the user to resize a frameless window. The Resizeable directive is ignored when Frameless is on.

MaximizeButton, MinimizeButton, and HelpButton are also ignored. SystemMenu still has an effect, however, as the system menu is available through the Task Bar.

For an example, see the Custom Window Frame section.

Description: Determines whether the window should take up the space of the entire screen
Syntax: FullScreen On|Off
Default: FullScreen Off
Context: window config

The FullScreen directive makes a window fill up the whole screen. When it is set to On, all window positioning directives are ignored.

If the window has a drop down menu, it will apppear at the top of the screen.

You should provide a way for the user to close the window, as the standard close button will not be available.

Currently it is not possible to switch between full-screen and non-full-screen operation.

Description: Height of the window, including the frame
Syntax: Height length [px|sx|in|%]
Default: Height (undefined)
Context: window config

The Height directive sets the actual height of the window. This height includes the height of the the title bar and that of the menu bar if one is present. Depending on the font settings, Windows version, and current GUI theme, the height of the document view can vary between computers. Consider using the ClientHeight directive instead, if it is desirable to maintain a consistent view port size.

If not unit is specified, pixel length is assumed.

See Window Placement for more information.

Description: Determines whether the window has a help button in the title bar
Syntax: HelpButton On|Off
Default: HelpButton Off
Context: window config

The HelpButton directive places a button with a question mark on the window's title bar. When the user clicks on it, the mouse cursor becomes a pointer with a question mark. When he/she clicks on an element in the HTML document, an onhelp event is fired on that element.

Description: Affects how other window positioning directives are interpreted
Syntax: HorizontalAlign Left|Center|Right
Default:
HorizontalAlign Left StandardWindow

HorizontalAlign Left ToolWindow

HorizontalAlign Center DialogBox
Context: window config

The HorizontalAlign directive changes the meanings of Left and Right. See Window Placement for more information.

Note that the default value for DialogBox is "Center," while it is "Left" for the other two window types

Description: Path to icon file used by the window
Syntax: IconPath ico-file-path
Default: IconPath (Windows default)
Context: window config

The icon path is relative to the directory path of the configuration file.

Currently only .ICO files can be used.

Description: Name of the context menu that appears when the user clicks on an image
Syntax: ImageContextMenu menu-name
Default: ImageContextMenu (IE default)
Context: window config

Description: Determines whether the embedded web browser has a border
Syntax: InnerBorder On|Off
Default: InnerBorder On
Context: window config

The InnerBorder directive can be used to turn off the border around the HTML document view. If the document has frames, they will retain their borders–in contrast with the 3DBorder directive, which turns off all borders.

Platform note: This directive only works if Internet Explorer 6 and above is install on the end user's computer.
Description: Sets the left position of the window
Syntax: Left distance [px|sx|in|%]
Default:
Left (undefined) StandardWindow

Left 0px ToolWindow

Left 0px DialogBox
Context: window config

The Left directive is used to set the left position of a window. If HorizontalAlign is "Left," distance is interpreted as that from the left of the window to the left of its offset rectangle. If HorizontalAlign is "Right," then it is the distance from the left the window to the right of its offset rectangle.

For Standard Windows, the offset rectangle is the desktop area. For Tool Windows and Dialog Boxes, it is the area occupied by the opener window.

Pixel length is assumed if no unit is specified.

See Window Placement for more information.

Description: Determines whether the window has a maximize button
Syntax:
Default: MaximizeButton On StandardWindow
(not applicable) ToolWindow
(not applicable) DialogBox
Context: window config

Only Standard Windows can have a maximize button.

A window cannot have both a minimized button and a help button.

Description: Indicates whether the window should be maximized initially
Syntax: Maximized On|Off
Default: Maximized Off
Context: window config

The Maximized directive determine whether the window should be maximized initially. Only Standard Windows can be maximized.

Even if you switch off MaximizeButton, the user can still "demaximized" a window by double clicking on the title bar.

Description: Determines whether the window has a minimize button in its title bar
Syntax: MinimizeButton On|Off
Default: MinimizeButton On StandardWindow
(not applicable) ToolWindow
(not applicable) DialogBox
Context: window config

Only Standard Window can have a minimized button.

A window cannot have both a minimized button and a help button.

Description: Controls whether the user can switch to the opener window while this window is still open
Syntax: Modal On|Off
Default: Modal Off
Context: window config

The Modal directive makes a Dialog Box modal–that is, the window will not yield control to the window underneath while it remains open.

You can close a window programmatically by using the window.close() or window.external.CloseWindow() method in Javascript, or by adding an X-Command-Before header to the HTTP response with the command "Basic _this IDM_CLOSE."

After the user has submitted a form in the Dialog Box, you may need to update information displayed in the parent window. The easiest way to do this is to add an X-Command-Before header to the HTTP response with the command "Basic _opener IDM_REFRESH."

Description: Determines whether the window is resizeable
Syntax: Resizeable On|Off
Default: Resizeable On StandardWindow
Resizeable Off ToolWindow
Resizeable Off DialogBox
Context: window config

The Resizeable directive deterimes whether a window is resizeable or not. By default, only Standard Windows can be resized. Through this directive you make a Tool Window or Dialog Box resizeable as well; or vice-versa, make a Standard Window not resizeable.

A resizeable window has a slightly thicker border than one that is not resizeable

This directive has no effect when Frameless or FullScreen is on.

Description: X-coordinate of the lower right-hand corner of the window
Syntax: Right distance [px|sx|in|%]
Default: Right (undefined)
Context: window config

The Right directive is used to set the right position of a window. If HorizontalAlign is "Right," distance is interpreted as that from the right of the window to the left of its offset rectangle. If HorizontalAlign is "Right," then it is the distance from the right the window to the right of its offset rectangle.

For Standard Windows, the offset rectangle is the desktop area. For Tool Windows and Dialog Boxes, it is the area occupied by the opener window.

Pixel length is assumed if no unit is specified.

See Window Placement for more information.

Description: Width and height of the ellipsis comprising rounded off corners of the window
Syntax: RoundedCorners width [px|sx|in|%] [height [px|sx|in|%]]
Default: RoundedCorners (undefined)
Context: window config

The RoundedCorners directive lets you round off the sharp corners of a frameless window. While it possible to do the same to regular windows, the resulting appearance would be very odd.

The heightand width arguments are for the full ellipsis, even though each corner is just one quantrant of it. So a rounded corner that is 5 pixels wide requests a width of 10 pixels. You can think of it as the ellipsis being cut into four pieces, which are then placed at each corner.

height is optional. When omitted the corner is circular, with width being the diameter.

Description: Determine whether the window has scroll bars
Syntax: ScrollBar On|Off
Default: ScrollBar On
Context: window config

The ScrollBar directive can be used to turn off the web browser's unsightly scroll bars. By default the browser shows a vertical scroll bar, even if the document does not require scrolling. If the document body's scroll attribute is set to "auto," the layout would still reserve space for the scroll bar. Setting setting ScrollBar to off turns off the scrolling completely.

Note: Setting ScrollBar to Off will turn off scrolling with the mouse wheel or arrow keys as well. Use this directive only when you know the HTML contents are not going to overflow the view port.
Description: Contains directive affecting the appearance of a web browser window
Syntax: <StandardWindow name-regex> ... </StandardWindow>
Context: server config

StandardWindow is a container for directives that affect the appearance and behavior of a web browser window.

name-regex is a regular expression. Directives in the block are applied to a window if its name matches the pattern. A match in this case means the full name must fit the pattern. This is constrast to how regular expressions are normally used in Apache, where a pattern would only need to macth some portion of the test string. Wapache automatically adds the start-of-string (^) and end-of-string ($) meta-character to the pattern. You need to put wildcard meta-character in the pattern if you wish to use the same directive block for different windows.

See Window Types for more information.

Description: Determines whether the window has a system menu
Syntax: SystemMenu On|Off
Default: SystemMenu On StandardWindow
(not applicable) ToolWindow
(not applicable) DialogBox
Context: window config

The system menu is the menu activated by clicking on the icon at the a window's upper left-hand corner. If it is turned off, the icon will disappear as well.

When MaximizeButton or MinimizeButton is set to On, the window will have a system menu regardless of what is specified by this directive.

Description: Name of the context menu that appears when the user right-clicks on a block of selected text
Syntax: TextSelectionContextMenu menu-name
Default: TextSelectionContextMenu (IE default)
Context: window config

Description: Contains directive affecting the appearance of a web browser window and indicates that it should behave like a tool window
Syntax: <ToolWindow name-regex> ... </ToolWindow>
Context: server config

The ToolWindow is a container for directives that affect the appearance and behavior of a web browser window.

name-regex is a regular expression. Directives in the block are applied to a window if its name matches the pattern. A match in this case means the full name must fit the pattern. This is constrast to how regular expressions are normally used in Apache, where a pattern would only need to macth some portion of the test string. Wapache automatically adds the start-of-string (^) and end-of-string ($) meta-character to the pattern. You need to put wildcard meta-character in the pattern if you wish to use the same directive block for different windows.

See Window Types for more information.

Description: Sets the top position of the window
Syntax: Top distance [px|sx|in|%]
Default: Top (undefined) StandardWindow
Top 0px ToolWindow
Top 0px DialogBox
Context: window config

The Top directive is used to set the top position of a window. If VerticalAlign is "Bottom," distance is interpreted as that from the top of the window to the bottom of its offset rectangle. If VerticalAlign is "Top," then it is the distance from the top the window to the top of its offset rectangle.

For Standard Windows, the offset rectangle is the desktop area. For Tool Windows and Dialog Boxes, it is the area occupied by the opener window.

Pixel length is assumed if no unit is specified.

See Window Placement for more information.

Description: Affects how other window positioning directives are interpreted
Syntax: VerticalAlign Top|Middle|Bottom
Default:
VerticalAlign Top StandardWindow

VerticalAlign Top ToolWindow

VerticalAlign Middle DialogBox
Context: window config

The VerticalAlign directive changes the meaning of Top and Bottom. See Window Placement for more information.

Note that the default value for DialogBox is "Middle," while it is "Top" for the other two window types

Description: Width of the window including its border
Syntax: Width length [px|sx|in|%]
Default:
Width (undefined)
Context: window config

The Width directive sets the actual Width of the window, including the thickness of its border. A alternative to this directive is ClientWidth

If not unit is specified, pixel length is assumed.

See Window Placement for more information.