Skip to main content
Version: 8.1

Vision - The Window Object

Window​

Windows are the top-level unit of design for Vision projects. A window is identified by its path, which is the name of all its parent folders plus its name, with forward slashes (/) in between. For example, the path to a window in the top level called MainWindow would simply be its name, whereas the path to a window named UserOptions under a folder called OptionsWindows would be: OptionsWindows/UserOptions.

A window may display a Titlebar and/or a Border. The titlebar allows the user to drag the window around in the client, and houses the window's close and maximize/restore buttons. The border of a window can be used to resize the window in the client when it is floating or docked. Whether on not the titlebar and border are displayed depends on the values of the window's titlebar and border display policy properties, and its current state. Commonly, a window will display both a titlebar and border when it is configured as a popup. It is often desirable to remove titlebars and borders on main windows so they join seamlessly with docked windows.

The user manual describes different Window Types, but technically there is only a single window object in the Vision module: different "types" of windows are simply instances of the window object configured in different ways. See Window Types for more information about changing types.

Root Container​

Inside a window is always the Root Container. The Root Container is where you will place all of your components in the window. This is exactly the same as a normal container component except that it cannot be deleted. When in the designer, "resizing" the window from the main Vision workspace is really changing the size of the Root Container.

Window Opening Event Order​

Window objects have several event handlers that trigger when the window opens. However, each event handler occurs at a separate time. Because of this, it is important to understand the order that these events occur:

Opening a window - When opening a window for the first time in a designer, the following event handlers are called in order:

  1. visionWindowOpened - Important to notice the description on this event: it occurs before any bindings on the window are evaluated.
  2. internalFrameOpened - If the window has been cached, this will not fire on sequential opens.
  3. internalFrameActivated - The last event, but also repeatable while the window is opened, since this event will trigger again if the window loses and then regains focus without being closed in between.

Closing a window - When closing a window, the following event handlers are called in order:

  1. internalFrameClosing - This event would be ideal to "clean up" in the window, since the window is still technically open at this point.
  2. visionWindowClosed - Triggers when the window is closed. Functionally, this is similar to internalFrameClosed, but happens slightly earlier.
  3. internalFrameDeactivated - This triggers when the window is closed, or when the window loses focus, so you may want to avoid this event if your script should only trigger when the window is closed.
  4. internalFrameClosed - Similar to visionWindowClosed. Triggers when the Java windowing system has finished closing the window.

Properties​

NameDescriptionProperty TypeScriptingCategory
Border Display PolicyDetermines if the window's border is shown in various window states.
  • 0 - Always
  • 1 - Never
  • 2 - When Not Maximized
int.borderDisplayPolicyBehavior
Cache PolicyBy default this property is set to Auto, which keeps a window in a memory cache for a while after it is closed, so that if it is opened again it will be quick. The window isn't "active" while it is closed: all of its bindings and scripts are shut down.
Setting this property to Never causes a fresh copy of the window to be deserialized every time it is opened. This is a performance hit, but it also is a convenient way to "clear out" the values of the window from the last time it was opened, which can be helpful in data-entry screens.
Setting the property to Always will trade memory for higher performance, causing the window to always remain cached after the first time it is opened. This means the window will open very fast, but your Client will need lots of memory if you do this to a large amount of windows.
  • 0 - Auto
  • 1 - Never
  • 2 - Always
int.cachePolicyBehavior
CloseableDetermines whether or not to draw the close (X) button in the upper right corner.boolean.closableBehavior
Dock IndexDetermines the order of docked windows if multiple windows are open on the same edge. Lower numbers are on the outside (closest to the edge the window is docked to), and higher numbers are closer to the center.int.dockIndexLayout
Dock PositionDetermines the position this window is docked to, or if it is floating.
  • 0 - Floating
  • 3 - West
  • 4 - South
  • 2 - East
  • 1 - North
int.dockPositionLayout
LayerSets the layer that this window is in. Default layer is 0, which is the bottom layer. Windows in higher layers will always be shown on top of windows in layers beneath them. A common strategy for using the layer property is to set Main Windows and Docked windows to 0, Popups to 1 and very important popups to 2.int.layerLayout
LocationThe starting location that this window will open up at. Only applicable to floating windows that are not set to start maximized. This value will be overridden when an open window script specifies where to open.Point.startingLocationLayout
MaximizableDetermines whether or not to draw the maximize button in the upper right corner.boolean.maximizableBehavior
Maximum SizeThe maximum size that this window will allow itself to be resized to.Dimension.maximumSizeLayout
Minimum SizeThe minimum size that this window will allow itself to be resized to.Dimension.minimumSizeLayout
ResizableDetermines whether or not to let the user resize the window.boolean.resizableBehavior
SizeThe dimensions of the window. This can be manipulated by selecting the window and dragging the resize handles along the windows right and bottom edges.Dimension.sizeLayout
Start MaximizedWhen set to true, the window will become maximized when it is opened.boolean.startMaximizedBehavior
TitleThe title to be displayed in this window's titlebar. The title is also used in the Client's Windows menu.String.titleAppearance
Titlebar Display PolicyDetermines if window's titlebar is shown in various window states.
  • 0 - Always
  • 1 - Never
  • 2 - When Not Maximized
int.titlebarDisplayPolicyAppearance
Titlebar FontThe font of the window title in the titlebar.Font.titlebarFontAppearance
Titlebar HeightThe height of the window's titlebar.int.titlebarHeightAppearance

Scripting​

See the Vision - The Window Object Scripting Functions page for the full list of scripting functions available for this component.

Event Handlers​

Event handlers allow you to run a script based off specific triggers. See the full list of available event handlers on the Component Events page

Examples​

For examples of windows, please see the Vision Windows section.