Mercurial > projects > dwt-mac
diff dwt/DWT.d @ 0:380af2bdd8e5
Upload of whole dwt tree
author | Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com> |
---|---|
date | Sat, 09 Aug 2008 17:00:02 +0200 |
parents | |
children | 8b48be5454ce |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dwt/DWT.d Sat Aug 09 17:00:02 2008 +0200 @@ -0,0 +1,3893 @@ +/******************************************************************************* + * Copyright (c) 2000, 2007 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + * + * Port to the D Programming language: + * Jacob Carlborg <jacob.carlborg@gmail.com> + *******************************************************************************/ +module dwt.DWT; + +import tango.core.Exception; + +import dwt.DWTError; +import dwt.DWTException; +import dwt.dwthelper.utils; +import dwt.internal.Platform; +import dwt.internal.Compatibility; +import dwt.internal.Library; + +/** + * This class provides access to a small number of DWT system-wide + * methods, and in addition defines the public constants provided + * by DWT. + * <p> + * By defining constants like UP and DOWN in a single class, DWT + * can share common names and concepts at the same time minimizing + * the number of classes, names and constants for the application + * programmer. + * </p><p> + * Note that some of the constants provided by this class represent + * optional, appearance related aspects of widgets which are available + * either only on some window systems, or for a differing set of + * widgets on each window system. These constants are marked + * as <em>HINT</em>s. The set of widgets which support a particular + * <em>HINT</em> may change from release to release, although we typically + * will not withdraw support for a <em>HINT</em> once it is made available. + * </p> + */ + +/* NOTE: + * Good javadoc coding style is to put the values of static final + * constants in the comments. This reinforces the fact that + * consumers are allowed to rely on the value (and they must + * since the values are compiled inline in their code). We + * can <em>not</em> change the values of these constants between + * releases. + */ +public class DWT { + + /* Widget Event Constants */ + + /** + * The null event type (value is 0). + * + * @since 3.0 + */ + public static const int None = 0; + + /** + * The key down event type (value is 1). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addKeyListener + * @see dwt.widgets.Tracker#addKeyListener + * @see dwt.events.KeyListener#keyPressed + * @see dwt.events.KeyEvent + */ + public static const int KeyDown = 1; + + /** + * The key up event type (value is 2). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addKeyListener + * @see dwt.widgets.Tracker#addKeyListener + * @see dwt.events.KeyListener#keyReleased + * @see dwt.events.KeyEvent + */ + public static const int KeyUp = 2; + + /** + * The mouse down event type (value is 3). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addMouseListener + * @see dwt.events.MouseListener#mouseDown + * @see dwt.events.MouseEvent + */ + public static const int MouseDown = 3; + + /** + * The mouse up event type (value is 4). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addMouseListener + * @see dwt.events.MouseListener#mouseUp + * @see dwt.events.MouseEvent + */ + public static const int MouseUp = 4; + + /** + * The mouse move event type (value is 5). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addMouseMoveListener + * @see dwt.events.MouseMoveListener#mouseMove + * @see dwt.events.MouseEvent + */ + public static const int MouseMove = 5; + + /** + * The mouse enter event type (value is 6). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addMouseTrackListener + * @see dwt.events.MouseTrackListener#mouseEnter + * @see dwt.events.MouseEvent + */ + public static const int MouseEnter = 6; + + /** + * The mouse exit event type (value is 7). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addMouseTrackListener + * @see dwt.events.MouseTrackListener#mouseExit + * @see dwt.events.MouseEvent + */ + public static const int MouseExit = 7; + + /** + * The mouse double click event type (value is 8). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addMouseListener + * @see dwt.events.MouseListener#mouseDoubleClick + * @see dwt.events.MouseEvent + */ + public static const int MouseDoubleClick = 8; + + /** + * The paint event type (value is 9). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addPaintListener + * @see dwt.events.PaintListener#paintControl + * @see dwt.events.PaintEvent + */ + public static const int Paint = 9; + + /** + * The move event type (value is 10). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addControlListener + * @see dwt.widgets.TableColumn#addControlListener + * @see dwt.widgets.Tracker#addControlListener + * @see dwt.widgets.TreeColumn#addControlListener + * @see dwt.events.ControlListener#controlMoved + * @see dwt.events.ControlEvent + */ + public static const int Move = 10; + + /** + * The resize event type (value is 11). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addControlListener + * @see dwt.widgets.TableColumn#addControlListener + * @see dwt.widgets.Tracker#addControlListener + * @see dwt.widgets.TreeColumn#addControlListener + * @see dwt.events.ControlListener#controlResized + * @see dwt.events.ControlEvent + */ + public static const int Resize = 11; + + /** + * The dispose event type (value is 12). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Widget#addDisposeListener + * @see dwt.events.DisposeListener#widgetDisposed + * @see dwt.events.DisposeEvent + */ + public static const int Dispose = 12; + + /** + * The selection event type (value is 13). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Button#addSelectionListener + * @see dwt.widgets.Combo#addSelectionListener + * @see dwt.widgets.CoolItem#addSelectionListener + * @see dwt.widgets.Link#addSelectionListener + * @see dwt.widgets.List#addSelectionListener + * @see dwt.widgets.MenuItem#addSelectionListener + * @see dwt.widgets.Sash#addSelectionListener + * @see dwt.widgets.Scale#addSelectionListener + * @see dwt.widgets.ScrollBar#addSelectionListener + * @see dwt.widgets.Slider#addSelectionListener + * @see dwt.widgets.TabFolder#addSelectionListener + * @see dwt.widgets.Table#addSelectionListener + * @see dwt.widgets.TableColumn#addSelectionListener + * @see dwt.widgets.ToolItem#addSelectionListener + * @see dwt.widgets.TrayItem#addSelectionListener + * @see dwt.widgets.Tree#addSelectionListener + * @see dwt.widgets.TreeColumn#addSelectionListener + * @see dwt.events.SelectionListener#widgetSelected + * @see dwt.events.SelectionEvent + */ + public static const int Selection = 13; + + /** + * The default selection event type (value is 14). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Combo#addSelectionListener + * @see dwt.widgets.List#addSelectionListener + * @see dwt.widgets.Spinner#addSelectionListener + * @see dwt.widgets.Table#addSelectionListener + * @see dwt.widgets.Text#addSelectionListener + * @see dwt.widgets.TrayItem#addSelectionListener + * @see dwt.widgets.Tree#addSelectionListener + * @see dwt.events.SelectionListener#widgetDefaultSelected + * @see dwt.events.SelectionEvent + */ + public static const int DefaultSelection = 14; + + /** + * The focus in event type (value is 15). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addFocusListener + * @see dwt.events.FocusListener#focusGained + * @see dwt.events.FocusEvent + */ + public static const int FocusIn = 15; + + /** + * The focus out event type (value is 16). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addFocusListener + * @see dwt.events.FocusListener#focusLost + * @see dwt.events.FocusEvent + */ + public static const int FocusOut = 16; + + /** + * The expand event type (value is 17). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Tree#addTreeListener + * @see dwt.events.TreeListener#treeExpanded + * @see dwt.events.TreeEvent + */ + public static const int Expand = 17; + + /** + * The collapse event type (value is 18). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Tree#addTreeListener + * @see dwt.events.TreeListener#treeCollapsed + * @see dwt.events.TreeEvent + */ + public static const int Collapse = 18; + + /** + * The iconify event type (value is 19). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Shell#addShellListener + * @see dwt.events.ShellListener#shellIconified + * @see dwt.events.ShellEvent + */ + public static const int Iconify = 19; + + /** + * The de-iconify event type (value is 20). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Shell#addShellListener + * @see dwt.events.ShellListener#shellDeiconified + * @see dwt.events.ShellEvent + */ + public static const int Deiconify = 20; + + /** + * The close event type (value is 21). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Shell#addShellListener + * @see dwt.events.ShellListener#shellClosed + * @see dwt.events.ShellEvent + */ + public static const int Close = 21; + + /** + * The show event type (value is 22). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Menu#addMenuListener + * @see dwt.events.MenuListener#menuShown + * @see dwt.events.MenuEvent + */ + public static const int Show = 22; + + /** + * The hide event type (value is 23). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Menu#addMenuListener + * @see dwt.events.MenuListener#menuHidden + * @see dwt.events.MenuEvent + */ + public static const int Hide = 23; + + /** + * The modify event type (value is 24). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Combo#addModifyListener + * @see dwt.widgets.Spinner#addModifyListener + * @see dwt.widgets.Text#addModifyListener + * @see dwt.events.ModifyListener#modifyText + * @see dwt.events.ModifyEvent + */ + public static const int Modify = 24; + + /** + * The verify event type (value is 25). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Combo#addVerifyListener + * @see dwt.widgets.Text#addVerifyListener + * @see dwt.events.VerifyListener#verifyText + * @see dwt.events.VerifyEvent + */ + public static const int Verify = 25; + + /** + * The activate event type (value is 26). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Shell#addShellListener + * @see dwt.events.ShellListener#shellActivated + * @see dwt.events.ShellEvent + */ + public static const int Activate = 26; + + /** + * The deactivate event type (value is 27). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Shell#addShellListener + * @see dwt.events.ShellListener#shellDeactivated + * @see dwt.events.ShellEvent + */ + public static const int Deactivate = 27; + + /** + * The help event type (value is 28). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addHelpListener + * @see dwt.widgets.Menu#addHelpListener + * @see dwt.widgets.MenuItem#addHelpListener + * @see dwt.events.HelpListener#helpRequested + * @see dwt.events.HelpEvent + */ + public static const int Help = 28; + + /** + * The drag detect event type (value is 29). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.dnd.DragSource + */ + public static const int DragDetect = 29; + + /** + * The arm event type (value is 30). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.MenuItem#addArmListener + * @see dwt.events.ArmListener#widgetArmed + * @see dwt.events.ArmEvent + */ + public static const int Arm = 30; + + /** + * The traverse event type (value is 31). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addTraverseListener + * @see dwt.events.TraverseListener#keyTraversed + * @see dwt.events.TraverseEvent + */ + public static const int Traverse = 31; + + /** + * The mouse hover event type (value is 32). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Control#addMouseTrackListener + * @see dwt.events.MouseTrackListener#mouseHover + * @see dwt.events.MouseEvent + */ + public static const int MouseHover = 32; + + /** + * The hardware key down event type (value is 33). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + */ + public static const int HardKeyDown = 33; + + /** + * The hardware key up event type (value is 34). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + */ + public static const int HardKeyUp = 34; + + /** + * The menu detect event type (value is 35). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @since 3.0 + */ + public static const int MenuDetect = 35; + + /** + * The set data event type (value is 36). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @see dwt.widgets.Table + * @see dwt.widgets.Tree + * + * @since 3.0 + */ + public static const int SetData = 36; + + /** + * The mouse wheel event type (value is 37). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @since 3.1 + */ + public static const int MouseWheel = 37; + + /** + * The settings changed event type (value is 39). + * <p> + * The settings changed event is sent when an operating system + * property, such as a system font or color, has been changed. + * The event occurs after the property has been changed, but + * before any widget is redrawn. Applications that cache operating + * system properties can use this event to update their caches. + * A specific property change can be detected by querying the + * new value of a property and comparing it with the equivalent + * cached value. The operating system automatically redraws and + * lays out all widgets after this event is sent. + * </p> + * + * @see dwt.widgets.Display#addListener + * @see dwt.widgets.Event + * + * @since 3.2 + */ + public static const int Settings = 39; + + /** + * The erase item event type (value is 40). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @since 3.2 + */ + public static const int EraseItem = 40; + + /** + * The measure item event type (value is 41). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @since 3.2 + */ + public static const int MeasureItem = 41; + + /** + * The paint item event type (value is 42). + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @since 3.2 + */ + public static const int PaintItem = 42; + + /** + * The IME composition event type (value is 43). + * <p> + * The IME composition event is sent to allow + * custom text editors to implement in-line + * editing of international text. + * </p> + * + * The detail field indicates the action to be taken: + * <p><ul> + * <li>{@link DWT#COMPOSITION_CHANGED}</li> + * <li>{@link DWT#COMPOSITION_OFFSET}</li> + * <li>{@link DWT#COMPOSITION_SELECTION}</li> + * </ul></p> + * + * @see dwt.widgets.Widget#addListener + * @see dwt.widgets.Display#addFilter + * @see dwt.widgets.Event + * + * @since 3.4 + */ + public static const int ImeComposition = 43; + + /* Event Details */ + + /** + * The IME composition event detail that indicates + * a change in the IME composition. The text field + * of the event is the new composition text. + * The start and end indicate the offsets where the + * composition text should be inserted. + * The styles and ranges are stored in the IME + * object (value is 1). + * + * @see DWT#ImeComposition + * + * @since 3.4 + */ + public static const int COMPOSITION_CHANGED = 1; + + /** + * The IME composition event detail that indicates + * that the IME needs the offset for a given location. + * The x and y fields of the event are used by the + * application to determine the offset. + * + * The index field of the event should be set to the + * text offset at that location. The count field should + * be set to indicate whether the location is closer to + * the leading edge (0) or the trailing edge (1) (value is 2). + * + * @see DWT#ImeComposition + * @see dwt.graphics.TextLayout#getOffset(int, int, int[]) + * + * @since 3.4 + */ + public static const int COMPOSITION_OFFSET = 2; + + /** + * The IME composition event detail that indicates + * that IME needs the selected text and its start + * and end offsets (value is 3). + * + * @see DWT#ImeComposition + * + * @since 3.4 + */ + public static const int COMPOSITION_SELECTION = 3; + + /** + * Indicates that a user-interface component is being dragged, + * for example dragging the thumb of a scroll bar (value is 1). + */ + public static const int DRAG = 1; + + /** + * Event detail field that indicates a user-interface component + * state is selected (value is 1<<1). + * + * @since 3.2 + */ + public static const int SELECTED = 1 << 1; + + /** + * Event detail field that indicates a user-interface component + * state is focused (value is 1<<2). + * + * @since 3.2 + */ + public static const int FOCUSED = 1 << 2; + + /** + * Event detail field that indicates a user-interface component + * draws the background (value is 1<<3). + * + * @since 3.2 + */ + public static const int BACKGROUND = 1 << 3; + + /** + * Event detail field that indicates a user-interface component + * draws the foreground (value is 1<<4). + * + * @since 3.2 + */ + public static const int FOREGROUND = 1 << 4; + + /** + * Event detail field that indicates a user-interface component + * state is hot (value is 1<<5). + * + * @since 3.3 + */ + public static const int HOT = 1 << 5; + + /* This code is intentionally commented */ + //public static const int PRESSED = 1 << 3; + //public static const int ACTIVE = 1 << 4; + //public static const int DISABLED = 1 << 5; + //public static const int HOT = 1 << 6; + //public static const int DEFAULTED = 1 << 7; + /** + * Traversal event detail field value indicating that no + * traversal action should be taken + * (value is 0). + */ + public static const int TRAVERSE_NONE = 0; + + /** + * Traversal event detail field value indicating that the + * key which designates that a dialog should be cancelled was + * pressed; typically, this is the ESC key + * (value is 1<<1). + */ + public static const int TRAVERSE_ESCAPE = 1 << 1; + + /** + * Traversal event detail field value indicating that the + * key which activates the default button in a dialog was + * pressed; typically, this is the ENTER key + * (value is 1<<2). + */ + public static const int TRAVERSE_RETURN = 1 << 2; + + /** + * Traversal event detail field value indicating that the + * key which designates that focus should be given to the + * previous tab group was pressed; typically, this is the + * SHIFT-TAB key sequence + * (value is 1<<3). + */ + public static const int TRAVERSE_TAB_PREVIOUS = 1 << 3; + + /** + * Traversal event detail field value indicating that the + * key which designates that focus should be given to the + * next tab group was pressed; typically, this is the + * TAB key + * (value is 1<<4). + */ + public static const int TRAVERSE_TAB_NEXT = 1 << 4; + + /** + * Traversal event detail field value indicating that the + * key which designates that focus should be given to the + * previous tab item was pressed; typically, this is either + * the LEFT-ARROW or UP-ARROW keys + * (value is 1<<5). + */ + public static const int TRAVERSE_ARROW_PREVIOUS = 1 << 5; + + /** + * Traversal event detail field value indicating that the + * key which designates that focus should be given to the + * previous tab item was pressed; typically, this is either + * the RIGHT-ARROW or DOWN-ARROW keys + * (value is 1<<6). + */ + public static const int TRAVERSE_ARROW_NEXT = 1 << 6; + + /** + * Traversal event detail field value indicating that a + * mnemonic key sequence was pressed + * (value is 1<<7). + */ + public static const int TRAVERSE_MNEMONIC = 1 << 7; + + /** + * Traversal event detail field value indicating that the + * key which designates that the previous page of a multi-page + * window should be shown was pressed; typically, this + * is the CTRL-PAGEUP key sequence + * (value is 1<<8). + */ + public static const int TRAVERSE_PAGE_PREVIOUS = 1 << 8; + + /** + * Traversal event detail field value indicating that the + * key which designates that the next page of a multi-page + * window should be shown was pressed; typically, this + * is the CTRL-PAGEDOWN key sequence + * (value is 1<<9). + */ + public static const int TRAVERSE_PAGE_NEXT = 1 << 9; + + /** + * A constant known to be zero (0), typically used in operations + * which take bit flags to indicate that "no bits are set". + */ + public static const int NONE = 0; + + /** + * A constant known to be zero (0), used in operations which + * take pointers to indicate a null argument. + */ + public static const int NULL = 0; + + /** + * Indicates that a default should be used (value is -1). + */ + public static const int DEFAULT = -1; + + /** + * Indicates that a property is off (value is 0). + * + * @since 3.1 + */ + public static const int OFF = 0; + + /** + * Indicates that a property is on (value is 1). + * + * @since 3.1 + */ + public static const int ON = 1; + + /** + * Indicates low quality (value is 1). + * + * @since 3.1 + */ + public static const int LOW = 1; + + /** + * Indicates high quality (value is 2). + * + * @since 3.1 + */ + public static const int HIGH = 2; + + /** + * Style constant for menu bar behavior (value is 1<<1). + * <p><b>Used By:</b><ul> + * <li><code>Menu</code></li> + * </ul></p> + */ + public static const int BAR = 1 << 1; + + /** + * Style constant for drop down menu/list behavior (value is 1<<2). + * <p><b>Used By:</b><ul> + * <li><code>Menu</code></li> + * <li><code>ToolItem</code></li> + * <li><code>CoolItem</code></li> + * <li><code>Combo</code></li> + * </ul></p> + */ + public static const int DROP_DOWN = 1 << 2; + + /** + * Style constant for pop up menu behavior (value is 1<<3). + * <p><b>Used By:</b><ul> + * <li><code>Menu</code></li> + * </ul></p> + */ + public static const int POP_UP = 1 << 3; + + /** + * Style constant for line separator behavior (value is 1<<1). + * <p><b>Used By:</b><ul> + * <li><code>Label</code></li> + * <li><code>MenuItem</code></li> + * <li><code>ToolItem</code></li> + * </ul></p> + */ + public static const int SEPARATOR = 1 << 1; + + /** + * Style constant for toggle button behavior (value is 1<<1). + * <p><b>Used By:</b><ul> + * <li><code>Button</code></li> + * </ul></p> + */ + public static const int TOGGLE = 1 << 1; + + /** + * Style constant for arrow button behavior (value is 1<<2). + * <p><b>Used By:</b><ul> + * <li><code>Button</code></li> + * </ul></p> + */ + public static const int ARROW = 1 << 2; + + /** + * Style constant for push button behavior (value is 1<<3). + * <p><b>Used By:</b><ul> + * <li><code>Button</code></li> + * <li><code>MenuItem</code></li> + * <li><code>ToolItem</code></li> + * </ul></p> + */ + public static const int PUSH = 1 << 3; + + /** + * Style constant for radio button behavior (value is 1<<4). + * <p><b>Used By:</b><ul> + * <li><code>Button</code></li> + * <li><code>MenuItem</code></li> + * <li><code>ToolItem</code></li> + * </ul></p> + */ + public static const int RADIO = 1 << 4; + + /** + * Style constant for check box behavior (value is 1<<5). + * <p><b>Used By:</b><ul> + * <li><code>Button</code></li> + * <li><code>MenuItem</code></li> + * <li><code>ToolItem</code></li> + * <li><code>Table</code></li> + * <li><code>Tree</code></li> + * </ul></p> + */ + public static const int CHECK = 1 << 5; + + /** + * Style constant for cascade behavior (value is 1<<6). + * <p><b>Used By:</b><ul> + * <li><code>MenuItem</code></li> + * </ul></p> + */ + public static const int CASCADE = 1 << 6; + + /** + * Style constant for multi-selection behavior in lists + * and multiple line support on text fields (value is 1<<1). + * <p><b>Used By:</b><ul> + * <li><code>Text</code></li> + * <li><code>List</code></li> + * <li><code>FileDialog</code></li> + * </ul></p> + */ + public static const int MULTI = 1 << 1; + + /** + * Style constant for single selection behavior in lists + * and single line support on text fields (value is 1<<2). + * <p><b>Used By:</b><ul> + * <li><code>Text</code></li> + * <li><code>List</code></li> + * <li><code>Table</code></li> + * <li><code>Tree</code></li> + * </ul></p> + */ + public static const int SINGLE = 1 << 2; + + /** + * Style constant for read-only behavior (value is 1<<3). + * <p><b>Used By:</b><ul> + * <li><code>Combo</code></li> + * <li><code>Text</code></li> + * </ul></p> + */ + public static const int READ_ONLY = 1 << 3; + + /** + * Style constant for automatic line wrap behavior (value is 1<<6). + * <p><b>Used By:</b><ul> + * <li><code>Label</code></li> + * <li><code>Text</code></li> + * <li><code>ToolBar</code></li> + * <li><code>Spinner</code></li> + * </ul></p> + */ + public static const int WRAP = 1 << 6; + + /** + * Style constant for search behavior (value is 1<<7). + * <p><b>Used By:</b><ul> + * <li><code>Text</code></li> + * </ul></p> + * + * @since 3.3 + */ + public static const int SEARCH = 1 << 7; + + /** + * Style constant for simple (not drop down) behavior (value is 1<<6). + * <p><b>Used By:</b><ul> + * <li><code>Combo</code></li> + * </ul></p> + */ + public static const int SIMPLE = 1 << 6; + + /** + * Style constant for password behavior (value is 1<<22). + * <p><b>Used By:</b><ul> + * <li><code>Text</code></li> + * </ul></p> + * + * @since 3.0 + */ + public static const int PASSWORD = 1 << 22; + + /** + * Style constant for shadow in behavior (value is 1<<2). + * <br>Note that this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>Label</code></li> + * <li><code>Group</code></li> + * </ul></p> + */ + public static const int SHADOW_IN = 1 << 2; + + /** + * Style constant for shadow out behavior (value is 1<<3). + * <br>Note that this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>Label</code></li> + * <li><code>Group</code></li> + * <li><code>ToolBar</code></li> + * </ul></p> + */ + public static const int SHADOW_OUT = 1 << 3; + + /** + * Style constant for shadow etched in behavior (value is 1<<4). + * <br>Note that this is a <em>HINT</em>. It is ignored on all platforms except Motif. + * <p><b>Used By:</b><ul> + * <li><code>Group</code></li> + * </ul></p> + */ + public static const int SHADOW_ETCHED_IN = 1 << 4; + + /** + * Style constant for shadow etched out behavior (value is 1<<6). + * <br>Note that this is a <em>HINT</em>. It is ignored on all platforms except Motif. + * <p><b>Used By:</b><ul> + * <li><code>Group</code></li> + * </ul></p> + */ + public static const int SHADOW_ETCHED_OUT = 1 << 6; + + /** + * Style constant for no shadow behavior (value is 1<<5). + * <br>Note that this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>Label</code></li> + * <li><code>Group</code></li> + * </ul></p> + */ + public static const int SHADOW_NONE = 1 << 5; + + /** + * Style constant for progress bar behavior (value is 1<<1). + * <p><b>Used By:</b><ul> + * <li><code>ProgressBar</code></li> + * </ul></p> + */ + public static const int INDETERMINATE = 1 << 1; + + /** + * Style constant for tool window behavior (value is 1<<2). + * <p> + * A tool window is a window intended to be used as a floating toolbar. + * It typically has a title bar that is shorter than a normal title bar, + * and the window title is typically drawn using a smaller font. + * <br>Note that this is a <em>HINT</em>. + * </p><p><b>Used By:</b><ul> + * <li><code>Decorations</code> and subclasses</li> + * </ul></p> + */ + public static const int TOOL = 1 << 2; + + /** + * Style constant to ensure no trimmings are used (value is 1<<3). + * <br>Note that this overrides all other trim styles. + * <p><b>Used By:</b><ul> + * <li><code>Decorations</code> and subclasses</li> + * </ul></p> + */ + public static const int NO_TRIM = 1 << 3; + + /** + * Style constant for resize box trim (value is 1<<4). + * <p><b>Used By:</b><ul> + * <li><code>Decorations</code> and subclasses</li> + * <li><code>Tracker</code></li> + * </ul></p> + */ + public static const int RESIZE = 1 << 4; + + /** + * Style constant for title area trim (value is 1<<5). + * <p><b>Used By:</b><ul> + * <li><code>Decorations</code> and subclasses</li> + * </ul></p> + */ + public static const int TITLE = 1 << 5; + + /** + * Style constant for close box trim (value is 1<<6, + * since we do not distinguish between CLOSE style and MENU style). + * <p><b>Used By:</b><ul> + * <li><code>Decorations</code> and subclasses</li> + * </ul></p> + */ + public static const int CLOSE = 1 << 6; + + /** + * Style constant for shell menu trim (value is 1<<6, + * since we do not distinguish between CLOSE style and MENU style). + * <p><b>Used By:</b><ul> + * <li><code>Decorations</code> and subclasses</li> + * </ul></p> + */ + public static const int MENU = CLOSE; + + /** + * Style constant for minimize box trim (value is 1<<7). + * <p><b>Used By:</b><ul> + * <li><code>Decorations</code> and subclasses</li> + * </ul></p> + */ + public static const int MIN = 1 << 7; + + /** + * Style constant for maximize box trim (value is 1<<10). + * <p><b>Used By:</b><ul> + * <li><code>Decorations</code> and subclasses</li> + * </ul></p> + */ + public static const int MAX = 1 << 10; + + /** + * Style constant for horizontal scrollbar behavior (value is 1<<8). + * <p><b>Used By:</b><ul> + * <li><code>Scrollable</code> and subclasses</li> + * </ul></p> + */ + public static const int H_SCROLL = 1 << 8; + + /** + * Style constant for vertical scrollbar behavior (value is 1<<9). + * <p><b>Used By:</b><ul> + * <li><code>Scrollable</code> and subclasses</li> + * </ul></p> + */ + public static const int V_SCROLL = 1 << 9; + + /** + * Style constant for no scrollbar behavior (value is 1<<4). + * <p> + * When neither H_SCROLL or V_SCROLL are specified, controls + * are free to create the default scroll bars for the control. + * Using NO_SCROLL overrides the default and forces the control + * to have no scroll bars. + * + * <b>Used By:</b><ul> + * <li><code>Tree</code></li> + * <li><code>Table</code></li> + * </ul></p> + * + * @since 3.4 + */ + public static const int NO_SCROLL = 1 << 4; + + /** + * Style constant for bordered behavior (value is 1<<11). + * <br>Note that this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>Control</code> and subclasses</li> + * </ul></p> + */ + public static const int BORDER = 1 << 11; + + /** + * Style constant indicating that the window manager should clip + * a widget's children with respect to its viewable area. (value is 1<<12). + * <br>Note that this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>Control</code> and subclasses</li> + * </ul></p> + */ + public static const int CLIP_CHILDREN = 1 << 12; + + /** + * Style constant indicating that the window manager should clip + * a widget's siblings with respect to its viewable area. (value is 1<<13). + * <br>Note that this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>Control</code> and subclasses</li> + * </ul></p> + */ + public static const int CLIP_SIBLINGS = 1 << 13; + + /** + * Style constant for always on top behavior (value is 1<<14). + * <br>Note that this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>Shell</code> and subclasses</li> + * </ul></p> + */ + public static const int ON_TOP = 1 << 14; + + /** + * Trim style convenience constant for the most common top level shell appearance + * (value is CLOSE|TITLE|MIN|MAX|RESIZE). + * <p><b>Used By:</b><ul> + * <li><code>Shell</code></li> + * </ul></p> + */ + public static const int SHELL_TRIM = CLOSE | TITLE | MIN | MAX | RESIZE; + + /** + * Trim style convenience constant for the most common dialog shell appearance + * (value is CLOSE|TITLE|BORDER). + * <p><b>Used By:</b><ul> + * <li><code>Shell</code></li> + * </ul></p> + */ + public static const int DIALOG_TRIM = TITLE | CLOSE | BORDER; + + /** + * Style constant for modeless behavior (value is 0). + * <br>Note that this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>Dialog</code></li> + * <li><code>Shell</code></li> + * </ul></p> + */ + public static const int MODELESS = 0; + + /** + * Style constant for primary modal behavior (value is 1<<15). + * <br>Note that this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>Dialog</code></li> + * <li><code>Shell</code></li> + * </ul></p> + */ + public static const int PRIMARY_MODAL = 1 << 15; + + /** + * Style constant for application modal behavior (value is 1<<16). + * <br>Note that this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>Dialog</code></li> + * <li><code>Shell</code></li> + * </ul></p> + */ + public static const int APPLICATION_MODAL = 1 << 16; + + /** + * Style constant for system modal behavior (value is 1<<17). + * <br>Note that this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>Dialog</code></li> + * <li><code>Shell</code></li> + * </ul></p> + */ + public static const int SYSTEM_MODAL = 1 << 17; + + /** + * Style constant for selection hiding behavior when the widget loses focus (value is 1<<15). + * <br>Note that this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>Table</code></li> + * </ul></p> + */ + public static const int HIDE_SELECTION = 1 << 15; + + /** + * Style constant for full row selection behavior and + * selection constant indicating that a full line should be + * drawn. (value is 1<<16). + * <br>Note that for some widgets this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>Table</code></li> + * <li><code>Tree</code></li> + * <li><code>StyledText</code></li> + * <li><code>TextLayout</code></li> + * </ul></p> + */ + public static const int FULL_SELECTION = 1 << 16; + + /** + * Style constant for flat appearance. (value is 1<<23). + * <br>Note that this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>Button</code></li> + * <li><code>ToolBar</code></li> + * </ul></p> + */ + public static const int FLAT = 1 << 23; + + /** + * Style constant for smooth appearance. (value is 1<<16). + * <br>Note that this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>ProgressBar</code></li> + * <li><code>Sash</code></li> + * </ul></p> + */ + public static const int SMOOTH = 1 << 16; + + /** + * Style constant for no background behavior (value is 1<<18). + * <p> + * By default, before a widget paints, the client area is filled with the current background. + * When this style is specified, the background is not filled, and the application is responsible + * for filling every pixel of the client area. + * This style might be used as an alternative to "double-buffering" in order to reduce flicker. + * This style does not mean "transparent" - widgets that are obscured will not draw through. + * </p><p><b>Used By:</b><ul> + * <li><code>Composite</code></li> + * </ul></p> + */ + public static const int NO_BACKGROUND = 1 << 18; + + /** + * Style constant for no focus from the mouse behavior (value is 1<<19). + * <p> + * Normally, when the user clicks on a control, focus is assigned to that + * control, providing the control has no children. Some controls, such as + * tool bars and sashes, don't normally take focus when the mouse is clicked + * or accept focus when assigned from within the program. This style allows + * Composites to implement "no focus" mouse behavior. + * + * <br>Note that this is a <em>HINT</em>. + * </p> + * <p><b>Used By:</b><ul> + * <li><code>Composite</code></li> + * </ul></p> + */ + public static const int NO_FOCUS = 1 << 19; + + /** + * Style constant for no redraw on resize behavior (value is 1<<20). + * <p> + * This style stops the entire client area from being invalidated when the size + * of the Canvas changes. Specifically, when the size of the Canvas gets smaller, + * the DWT.Paint event is not sent. When it gets bigger, an DWT.Paint event is + * sent with a GC clipped to only the new areas to be painted. Without this + * style, the entire client area will be repainted. + * + * <br>Note that this is a <em>HINT</em>. + * </p><p><b>Used By:</b><ul> + * <li><code>Composite</code></li> + * </ul></p> + */ + public static const int NO_REDRAW_RESIZE = 1 << 20; + + /** + * Style constant for no paint event merging behavior (value is 1<<21). + * + * <br>Note that this is a <em>HINT</em>. + * <p><b>Used By:</b><ul> + * <li><code>Composite</code></li> + * </ul></p> + */ + public static const int NO_MERGE_PAINTS = 1 << 21; + + /** + * Style constant for preventing child radio group behavior (value is 1<<22). + * <p><b>Used By:</b><ul> + * <li><code>Composite</code></li> + * </ul></p> + */ + public static const int NO_RADIO_GROUP = 1 << 22; + + /** + * Style constant for left to right orientation (value is 1<<25). + * <p> + * When orientation is not explicitly specified, orientation is + * inherited. This means that children will be assigned the + * orientation of their parent. To override this behavior and + * force an orientation for a child, explicitly set the orientation + * of the child when that child is created. + * <br>Note that this is a <em>HINT</em>. + * </p> + * <p><b>Used By:</b><ul> + * <li><code>Control</code></li> + * <li><code>Menu</code></li> + * <li><code>GC</code></li> + * </ul></p> + * + * @since 2.1.2 + */ + public static const int LEFT_TO_RIGHT = 1 << 25; + + /** + * Style constant for right to left orientation (value is 1<<26). + * <p> + * When orientation is not explicitly specified, orientation is + * inherited. This means that children will be assigned the + * orientation of their parent. To override this behavior and + * force an orientation for a child, explicitly set the orientation + * of the child when that child is created. + * <br>Note that this is a <em>HINT</em>. + * </p> + * <p><b>Used By:</b><ul> + * <li><code>Control</code></li> + * <li><code>Menu</code></li> + * <li><code>GC</code></li> + * </ul></p> + * + * @since 2.1.2 + */ + public static const int RIGHT_TO_LEFT = 1 << 26; + + /** + * Style constant to indicate coordinate mirroring (value is 1<<27). + * <p><b>Used By:</b><ul> + * <li><code>Control</code></li> + * <li><code>Menu</code></li> + * </ul></p> + * + * @since 2.1.2 + */ + public static const int MIRRORED = 1 << 27; + + /** + * Style constant to allow embedding (value is 1<<24). + * <p><b>Used By:</b><ul> + * <li><code>Composite</code></li> + * </ul></p> + * + * @since 3.0 + */ + public static const int EMBEDDED = 1 << 24; + + /** + * Style constant to allow virtual data (value is 1<<28). + * <p><b>Used By:</b><ul> + * <li><code>Table</code></li> + * <li><code>Tree</code></li> + * </ul></p> + * + * @since 3.0 + */ + public static const int VIRTUAL = 1 << 28; + + /** + * Style constant to indicate double buffering (value is 1<<29). + * <p><b>Used By:</b><ul> + * <li><code>Control</code></li> + * </ul></p> + * + * @since 3.1 + */ + public static const int DOUBLE_BUFFERED = 1 << 29; + + /** + * Style constant for transparent behavior (value is 1<<30). + * <p> + * By default, before a widget paints, the client area is filled with the current background. + * When this style is specified, the background is not filled and widgets that are obscured + * will draw through. + * </p><p><b>Used By:</b><ul> + * <li><code>Composite</code></li> + * </ul></p> + * + * @since 3.4 + * + * WARNING: THIS API IS UNDER CONSTRUCTION AND SHOULD NOT BE USED + */ + public static const int TRANSPARENT = 1 << 30; + + /** + * Style constant for align up behavior (value is 1<<7, + * since align UP and align TOP are considered the same). + * <p><b>Used By:</b><ul> + * <li><code>Button</code> with <code>ARROW</code> style</li> + * <li><code>Tracker</code></li> + * <li><code>Table</code></li> + * <li><code>Tree</code></li> + * </ul></p> + */ + public static const int UP = 1 << 7; + + /** + * Style constant to indicate single underline (value is 0). + * <p><b>Used By:</b><ul> + * <li><code>TextStyle</code></li> + * </ul></p> + * + * @since 3.4 + */ + public static const int UNDERLINE_SINGLE = 0; + + /** + * Style constant to indicate double underline (value is 1). + * <p><b>Used By:</b><ul> + * <li><code>TextStyle</code></li> + * </ul></p> + * + * @since 3.4 + */ + public static const int UNDERLINE_DOUBLE = 1; + + /** + * Style constant to indicate error underline (value is 2). + * <p><b>Used By:</b><ul> + * <li><code>TextStyle</code></li> + * </ul></p> + * + * @since 3.4 + */ + public static const int UNDERLINE_ERROR = 2; + + /** + * Style constant to indicate squiggle underline (value is 3). + * <p><b>Used By:</b><ul> + * <li><code>TextStyle</code></li> + * </ul></p> + * + * @since 3.4 + */ + public static const int UNDERLINE_SQUIGGLE = 3; + + /** + * Style constant to indicate solid border (value is 1). + * <p><b>Used By:</b><ul> + * <li><code>TextStyle</code></li> + * </ul></p> + * + * @since 3.4 + */ + public static const int BORDER_SOLID = 1; + + /** + * Style constant to indicate dashed border (value is 2). + * <p><b>Used By:</b><ul> + * <li><code>TextStyle</code></li> + * </ul></p> + * + * @since 3.4 + */ + public static const int BORDER_DASH = 2; + + /** + * Style constant to indicate dotted border (value is 4). + * <p><b>Used By:</b><ul> + * <li><code>TextStyle</code></li> + * </ul></p> + * + * @since 3.4 + */ + public static const int BORDER_DOT = 4; + + /** + * Style constant for align top behavior (value is 1<<7, + * since align UP and align TOP are considered the same). + * <p><b>Used By:</b><ul> + * <li><code>FormAttachment</code> in a <code>FormLayout</code></li> + * </ul></p> + */ + public static const int TOP = UP; + + /** + * Style constant for align down behavior (value is 1<<10, + * since align DOWN and align BOTTOM are considered the same). + * <p><b>Used By:</b><ul> + * <li><code>Button</code> with <code>ARROW</code> style</li> + * <li><code>Tracker</code></li> + * <li><code>Table</code></li> + * <li><code>Tree</code></li> + * </ul></p> + */ + public static const int DOWN = 1 << 10; + + /** + * Style constant for align bottom behavior (value is 1<<10, + * since align DOWN and align BOTTOM are considered the same). + * <p><b>Used By:</b><ul> + * <li><code>FormAttachment</code> in a <code>FormLayout</code></li> + * </ul></p> + */ + public static const int BOTTOM = DOWN; + + /** + * Style constant for leading alignment (value is 1<<14). + * <p><b>Used By:</b><ul> + * <li><code>Button</code></li> + * <li><code>Label</code></li> + * <li><code>TableColumn</code></li> + * <li><code>Tracker</code></li> + * <li><code>FormAttachment</code> in a <code>FormLayout</code></li> + * </ul></p> + * + * @since 2.1.2 + */ + public static const int LEAD = 1 << 14; + + /** + * Style constant for align left behavior (value is 1<<14). + * This is a synonym for LEAD (value is 1<<14). Newer + * applications should use LEAD instead of LEFT to make code more + * understandable on right-to-left platforms. + */ + public static const int LEFT = LEAD; + + /** + * Style constant for trailing alignment (value is 1<<17). + * <p><b>Used By:</b><ul> + * <li><code>Button</code></li> + * <li><code>Label</code></li> + * <li><code>TableColumn</code></li> + * <li><code>Tracker</code></li> + * <li><code>FormAttachment</code> in a <code>FormLayout</code></li> + * </ul></p> + * + * @since 2.1.2 + */ + public static const int TRAIL = 1 << 17; + + /** + * Style constant for align right behavior (value is 1<<17). + * This is a synonym for TRAIL (value is 1<<17). Newer + * applications should use TRAIL instead of RIGHT to make code more + * understandable on right-to-left platforms. + */ + public static const int RIGHT = TRAIL; + + /** + * Style constant for align center behavior (value is 1<<24). + * <p><b>Used By:</b><ul> + * <li><code>Button</code></li> + * <li><code>Label</code></li> + * <li><code>TableColumn</code></li> + * <li><code>FormAttachment</code> in a <code>FormLayout</code></li> + * </ul></p> + */ + public static const int CENTER = 1 << 24; + + /** + * Style constant for horizontal alignment or orientation behavior (value is 1<<8). + * <p><b>Used By:</b><ul> + * <li><code>Label</code></li> + * <li><code>ProgressBar</code></li> + * <li><code>Sash</code></li> + * <li><code>Scale</code></li> + * <li><code>ScrollBar</code></li> + * <li><code>Slider</code></li> + * <li><code>ToolBar</code></li> + * <li><code>FillLayout</code> type</li> + * <li><code>RowLayout</code> type</li> + * </ul></p> + */ + public static const int HORIZONTAL = 1 << 8; + + /** + * Style constant for vertical alignment or orientation behavior (value is 1<<9). + * <p><b>Used By:</b><ul> + * <li><code>Label</code></li> + * <li><code>ProgressBar</code></li> + * <li><code>Sash</code></li> + * <li><code>Scale</code></li> + * <li><code>ScrollBar</code></li> + * <li><code>Slider</code></li> + * <li><code>ToolBar</code></li> + * <li><code>CoolBar</code></li> + * <li><code>FillLayout</code> type</li> + * <li><code>RowLayout</code> type</li> + * </ul></p> + */ + public static const int VERTICAL = 1 << 9; + + /** + * Style constant for date display (value is 1<<5). + * <p><b>Used By:</b><ul> + * <li><code>DateTime</code></li> + * </ul></p> + * + * @since 3.3 + */ + public static const int DATE = 1 << 5; + + /** + * Style constant for time display (value is 1<<7). + * <p><b>Used By:</b><ul> + * <li><code>DateTime</code></li> + * </ul></p> + * + * @since 3.3 + */ + public static const int TIME = 1 << 7; + + /** + * Style constant for calendar display (value is 1<<10). + * <p><b>Used By:</b><ul> + * <li><code>DateTime</code></li> + * </ul></p> + * + * @since 3.3 + */ + public static const int CALENDAR = 1 << 10; + + /** + * Style constant for short date/time format (value is 1<<15). + * <p> + * A short date displays the month and year. + * A short time displays hours and minutes. + * <br>Note that this is a <em>HINT</em>. + * </p> + * <p><b>Used By:</b><ul> + * <li><code>DateTime</code></li> + * </ul></p> + * + * @since 3.3 + */ + public static const int SHORT = 1 << 15; + + /** + * Style constant for medium date/time format (value is 1<<16). + * <p> + * A medium date displays the day, month and year. + * A medium time displays hours, minutes, and seconds. + * <br>Note that this is a <em>HINT</em>. + * </p> + * <p><b>Used By:</b><ul> + * <li><code>DateTime</code></li> + * </ul></p> + * + * @since 3.3 + */ + public static const int MEDIUM = 1 << 16; + + /** + * Style constant for long date/time format (value is 1<<28). + * <p> + * A long date displays the day, month and year. + * A long time displays hours, minutes, and seconds. + * The day and month names may be displayed. + * <br>Note that this is a <em>HINT</em>. + * </p> + * <p><b>Used By:</b><ul> + * <li><code>DateTime</code></li> + * </ul></p> + * + * @since 3.3 + */ + public static const int LONG = 1 << 28; + + /** + * Style constant specifying that a Browser should use a Mozilla GRE + * for rendering its content (value is 1<<15). + * <p> + * <p><b>Used By:</b><ul> + * <li><code>Browser</code></li> + * </ul></p> + * + * @since 3.3 + */ + public static const int MOZILLA = 1 << 15; + + /** + * Style constant for balloon behavior (value is 1<<12). + * <p><b>Used By:</b><ul> + * <li><code>ToolTip</code></li> + * </ul></p> + * + * @since 3.2 + */ + public static const int BALLOON = 1 << 12; + + /** + * Style constant for vertical alignment or orientation behavior (value is 1). + * <p><b>Used By:</b><ul> + * <li><code>GridLayout</code> type</li> + * </ul></p> + */ + public static const int BEGINNING = 1; + + /** + * Style constant for vertical alignment or orientation behavior (value is 4). + * <p><b>Used By:</b><ul> + * <li><code>GridLayout</code> type</li> + * </ul></p> + */ + public static const int FILL = 4; + + /** + * Input Method Editor style constant for double byte + * input behavior (value is 1<<1). + */ + public static const int DBCS = 1 << 1; + + /** + * Input Method Editor style constant for alpha + * input behavior (value is 1<<2). + */ + public static const int ALPHA = 1 << 2; + + /** + * Input Method Editor style constant for native + * input behavior (value is 1<<3). + */ + public static const int NATIVE = 1 << 3; + + /** + * Input Method Editor style constant for phonetic + * input behavior (value is 1<<4). + */ + public static const int PHONETIC = 1 << 4; + + /** + * Input Method Editor style constant for romanicized + * input behavior (value is 1<<5). + */ + public static const int ROMAN = 1 << 5; + + /** + * ASCII character convenience constant for the backspace character + * (value is the <code>char</code> '\b'). + */ + public static final char BS = '\b'; + + /** + * ASCII character convenience constant for the carriage return character + * (value is the <code>char</code> '\r'). + */ + public static final char CR = '\r'; + + /** + * ASCII character convenience constant for the delete character + * (value is the <code>char</code> with value 127). + */ + public static final char DEL = 0x7F; + + /** + * ASCII character convenience constant for the escape character + * (value is the <code>char</code> with value 27). + */ + public static final char ESC = 0x1B; + + /** + * ASCII character convenience constant for the line feed character + * (value is the <code>char</code> '\n'). + */ + public static final char LF = '\n'; + + /** + * ASCII character convenience constant for the tab character + * (value is the <code>char</code> '\t'). + * + * @since 2.1 + */ + public static final char TAB = '\t'; + + /** + * keyboard and/or mouse event mask indicating that the ALT key + * was pushed on the keyboard when the event was generated + * (value is 1<<16). + */ + public static const int ALT = 1 << 16; + + /** + * Keyboard and/or mouse event mask indicating that the SHIFT key + * was pushed on the keyboard when the event was generated + * (value is 1<<17). + */ + public static const int SHIFT = 1 << 17; + + /** + * Keyboard and/or mouse event mask indicating that the CTRL key + * was pushed on the keyboard when the event was generated + * (value is 1<<18). + */ + public static const int CTRL = 1 << 18; + + /** + * Keyboard and/or mouse event mask indicating that the CTRL key + * was pushed on the keyboard when the event was generated. This + * is a synonym for CTRL (value is 1<<18). + */ + public static const int CONTROL = CTRL; + + /** + * Keyboard and/or mouse event mask indicating that the COMMAND key + * was pushed on the keyboard when the event was generated + * (value is 1<<22). + * + * @since 2.1 + */ + public static const int COMMAND = 1 << 22; + + /** + * Keyboard and/or mouse event mask indicating all possible + * keyboard modifiers. + * + * To allow for the future, this mask is intended to be used in + * place of code that references each individual keyboard mask. + * For example, the following expression will determine whether + * any modifier is pressed and will continue to work as new modifier + * masks are added. + * + * <code>(stateMask & DWT.MODIFIER_MASK) !is 0</code>. + * + * @since 2.1 + */ + public static const int MODIFIER_MASK; + + /** + * Keyboard and/or mouse event mask indicating that mouse button one + * was pushed when the event was generated. (value is 1<<19). + */ + public static const int BUTTON1 = 1 << 19; + + /** + * Keyboard and/or mouse event mask indicating that mouse button two + * was pushed when the event was generated. (value is 1<<20). + */ + public static const int BUTTON2 = 1 << 20; + + /** + * Keyboard and/or mouse event mask indicating that mouse button three + * was pushed when the event was generated. (value is 1<<21). + */ + public static const int BUTTON3 = 1 << 21; + + /** + * Keyboard and/or mouse event mask indicating that mouse button four + * was pushed when the event was generated. (value is 1<<23). + * + * @since 3.1 + */ + public static const int BUTTON4 = 1 << 23; + + /** + * Keyboard and/or mouse event mask indicating that mouse button five + * was pushed when the event was generated. (value is 1<<25). + * + * @since 3.1 + */ + public static const int BUTTON5 = 1 << 25; + + /** + * Keyboard and/or mouse event mask indicating all possible + * mouse buttons. + * + * To allow for the future, this mask is intended to be used + * in place of code that references each individual button mask. + * For example, the following expression will determine whether + * any button is pressed and will continue to work as new button + * masks are added. + * + * <code>(stateMask & DWT.BUTTON_MASK) !is 0</code>. + * + * @since 2.1 + */ + public static const int BUTTON_MASK; + + /** + * Keyboard and/or mouse event mask indicating that the MOD1 key + * was pushed on the keyboard when the event was generated. + * + * This is the primary keyboard modifier for the platform. + * + * @since 2.1 + */ + public static const int MOD1; + + /** + * Keyboard and/or mouse event mask indicating that the MOD2 key + * was pushed on the keyboard when the event was generated. + * + * This is the secondary keyboard modifier for the platform. + * + * @since 2.1 + */ + public static const int MOD2; + + /** + * Keyboard and/or mouse event mask indicating that the MOD3 key + * was pushed on the keyboard when the event was generated. + * + * @since 2.1 + */ + public static const int MOD3; + + /** + * Keyboard and/or mouse event mask indicating that the MOD4 key + * was pushed on the keyboard when the event was generated. + * + * @since 2.1 + */ + public static const int MOD4; + + /** + * Constants to indicate line scrolling (value is 1). + * <p><b>Used By:</b><ul> + * <li><code>Control</code></li> + * </ul></p> + * + * @since 3.1 + */ + public static const int SCROLL_LINE = 1; + + /** + * Constants to indicate page scrolling (value is 2). + * <p><b>Used By:</b><ul> + * <li><code>Control</code></li> + * </ul></p> + * + * @since 3.1 + */ + public static const int SCROLL_PAGE = 2; + + /** + * Accelerator constant used to differentiate a key code from a + * unicode character. + * + * If this bit is set, then the key stroke + * portion of an accelerator represents a key code. If this bit + * is not set, then the key stroke portion of an accelerator is + * a unicode character. + * + * The following expression is false: + * + * <code>((DWT.MOD1 | DWT.MOD2 | 'T') & DWT.KEYCODE_BIT) !is 0</code>. + * + * The following expression is true: + * + * <code>((DWT.MOD3 | DWT.F2) & DWT.KEYCODE_BIT) !is 0</code>. + * + * (value is (1<<24)) + * + * @since 2.1 + */ + public static const int KEYCODE_BIT = (1 << 24); + + /** + * Accelerator constant used to extract the key stroke portion of + * an accelerator. + * + * The key stroke may be a key code or a unicode + * value. If the key stroke is a key code <code>KEYCODE_BIT</code> + * will be set. + * + * @since 2.1 + */ + public static const int KEY_MASK = KEYCODE_BIT + 0xFFFF; + + /** + * Keyboard event constant representing the UP ARROW key + * (value is (1<<24)+1). + */ + public static const int ARROW_UP = KEYCODE_BIT + 1; + + /** + * Keyboard event constant representing the DOWN ARROW key + * (value is (1<<24)+2). + */ + public static const int ARROW_DOWN = KEYCODE_BIT + 2; + + /** + * Keyboard event constant representing the LEFT ARROW key + * (value is (1<<24)+3). + */ + public static const int ARROW_LEFT = KEYCODE_BIT + 3; + + /** + * Keyboard event constant representing the RIGHT ARROW key + * (value is (1<<24)+4). + */ + public static const int ARROW_RIGHT = KEYCODE_BIT + 4; + + /** + * Keyboard event constant representing the PAGE UP key + * (value is (1<<24)+5). + */ + public static const int PAGE_UP = KEYCODE_BIT + 5; + + /** + * Keyboard event constant representing the PAGE DOWN key + * (value is (1<<24)+6). + */ + public static const int PAGE_DOWN = KEYCODE_BIT + 6; + + /** + * Keyboard event constant representing the HOME key + * (value is (1<<24)+7). + */ + public static const int HOME = KEYCODE_BIT + 7; + + /** + * Keyboard event constant representing the END key + * (value is (1<<24)+8). + */ + public static const int END = KEYCODE_BIT + 8; + + /** + * Keyboard event constant representing the INSERT key + * (value is (1<<24)+9). + */ + public static const int INSERT = KEYCODE_BIT + 9; + + /** + * Keyboard event constant representing the F1 key + * (value is (1<<24)+10). + */ + public static const int F1 = KEYCODE_BIT + 10; + + /** + * Keyboard event constant representing the F2 key + * (value is (1<<24)+11). + */ + public static const int F2 = KEYCODE_BIT + 11; + + /** + * Keyboard event constant representing the F3 key + * (value is (1<<24)+12). + */ + public static const int F3 = KEYCODE_BIT + 12; + + /** + * Keyboard event constant representing the F4 key + * (value is (1<<24)+13). + */ + public static const int F4 = KEYCODE_BIT + 13; + + /** + * Keyboard event constant representing the F5 key + * (value is (1<<24)+14). + */ + public static const int F5 = KEYCODE_BIT + 14; + + /** + * Keyboard event constant representing the F6 key + * (value is (1<<24)+15). + */ + public static const int F6 = KEYCODE_BIT + 15; + + /** + * Keyboard event constant representing the F7 key + * (value is (1<<24)+16). + */ + public static const int F7 = KEYCODE_BIT + 16; + + /** + * Keyboard event constant representing the F8 key + * (value is (1<<24)+17). + */ + public static const int F8 = KEYCODE_BIT + 17; + + /** + * Keyboard event constant representing the F9 key + * (value is (1<<24)+18). + */ + public static const int F9 = KEYCODE_BIT + 18; + + /** + * Keyboard event constant representing the F10 key + * (value is (1<<24)+19). + */ + public static const int F10 = KEYCODE_BIT + 19; + + /** + * Keyboard event constant representing the F11 key + * (value is (1<<24)+20). + */ + public static const int F11 = KEYCODE_BIT + 20; + + /** + * Keyboard event constant representing the F12 key + * (value is (1<<24)+21). + */ + public static const int F12 = KEYCODE_BIT + 21; + + /** + * Keyboard event constant representing the F13 key + * (value is (1<<24)+22). + * + * @since 3.0 + */ + public static const int F13 = KEYCODE_BIT + 22; + + /** + * Keyboard event constant representing the F14 key + * (value is (1<<24)+23). + * + * @since 3.0 + */ + public static const int F14 = KEYCODE_BIT + 23; + + /** + * Keyboard event constant representing the F15 key + * (value is (1<<24)+24). + * + * @since 3.0 + */ + public static const int F15 = KEYCODE_BIT + 24; + + /** + * Keyboard event constant representing the numeric key + * pad multiply key (value is (1<<24)+42). + * + * @since 3.0 + */ + public static const int KEYPAD_MULTIPLY = KEYCODE_BIT + 42; + + /** + * Keyboard event constant representing the numeric key + * pad add key (value is (1<<24)+43). + * + * @since 3.0 + */ + public static const int KEYPAD_ADD = KEYCODE_BIT + 43; + + /** + * Keyboard event constant representing the numeric key + * pad subtract key (value is (1<<24)+45). + * + * @since 3.0 + */ + public static const int KEYPAD_SUBTRACT = KEYCODE_BIT + 45; + + /** + * Keyboard event constant representing the numeric key + * pad decimal key (value is (1<<24)+46). + * + * @since 3.0 + */ + public static const int KEYPAD_DECIMAL = KEYCODE_BIT + 46; + + /** + * Keyboard event constant representing the numeric key + * pad divide key (value is (1<<24)+47). + * + * @since 3.0 + */ + public static const int KEYPAD_DIVIDE = KEYCODE_BIT + 47; + + /** + * Keyboard event constant representing the numeric key + * pad zero key (value is (1<<24)+48). + * + * @since 3.0 + */ + public static const int KEYPAD_0 = KEYCODE_BIT + 48; + + /** + * Keyboard event constant representing the numeric key + * pad one key (value is (1<<24)+49). + * + * @since 3.0 + */ + public static const int KEYPAD_1 = KEYCODE_BIT + 49; + + /** + * Keyboard event constant representing the numeric key + * pad two key (value is (1<<24)+50). + * + * @since 3.0 + */ + public static const int KEYPAD_2 = KEYCODE_BIT + 50; + + /** + * Keyboard event constant representing the numeric key + * pad three key (value is (1<<24)+51). + * + * @since 3.0 + */ + public static const int KEYPAD_3 = KEYCODE_BIT + 51; + + /** + * Keyboard event constant representing the numeric key + * pad four key (value is (1<<24)+52). + * + * @since 3.0 + */ + public static const int KEYPAD_4 = KEYCODE_BIT + 52; + + /** + * Keyboard event constant representing the numeric key + * pad five key (value is (1<<24)+53). + * + * @since 3.0 + */ + public static const int KEYPAD_5 = KEYCODE_BIT + 53; + + /** + * Keyboard event constant representing the numeric key + * pad six key (value is (1<<24)+54). + * + * @since 3.0 + */ + public static const int KEYPAD_6 = KEYCODE_BIT + 54; + + /** + * Keyboard event constant representing the numeric key + * pad seven key (value is (1<<24)+55). + * + * @since 3.0 + */ + public static const int KEYPAD_7 = KEYCODE_BIT + 55; + + /** + * Keyboard event constant representing the numeric key + * pad eight key (value is (1<<24)+56). + * + * @since 3.0 + */ + public static const int KEYPAD_8 = KEYCODE_BIT + 56; + + /** + * Keyboard event constant representing the numeric key + * pad nine key (value is (1<<24)+57). + * + * @since 3.0 + */ + public static const int KEYPAD_9 = KEYCODE_BIT + 57; + + /** + * Keyboard event constant representing the numeric key + * pad equal key (value is (1<<24)+61). + * + * @since 3.0 + */ + public static const int KEYPAD_EQUAL = KEYCODE_BIT + 61; + + /** + * Keyboard event constant representing the numeric key + * pad enter key (value is (1<<24)+80). + * + * @since 3.0 + */ + public static const int KEYPAD_CR = KEYCODE_BIT + 80; + + /** + * Keyboard event constant representing the help + * key (value is (1<<24)+81). + * + * NOTE: The HELP key maps to the key labeled "help", + * not "F1". If your keyboard does not have a HELP key, + * you will never see this key press. To listen for + * help on a control, use DWT.Help. + * + * @since 3.0 + * + * @see DWT#Help + */ + public static const int HELP = KEYCODE_BIT + 81; + + /** + * Keyboard event constant representing the caps + * lock key (value is (1<<24)+82). + * + * @since 3.0 + */ + public static const int CAPS_LOCK = KEYCODE_BIT + 82; + + /** + * Keyboard event constant representing the num + * lock key (value is (1<<24)+83). + * + * @since 3.0 + */ + public static const int NUM_LOCK = KEYCODE_BIT + 83; + + /** + * Keyboard event constant representing the scroll + * lock key (value is (1<<24)+84). + * + * @since 3.0 + */ + public static const int SCROLL_LOCK = KEYCODE_BIT + 84; + + /** + * Keyboard event constant representing the pause + * key (value is (1<<24)+85). + * + * @since 3.0 + */ + public static const int PAUSE = KEYCODE_BIT + 85; + + /** + * Keyboard event constant representing the break + * key (value is (1<<24)+86). + * + * @since 3.0 + */ + public static const int BREAK = KEYCODE_BIT + 86; + + /** + * Keyboard event constant representing the print screen + * key (value is (1<<24)+87). + * + * @since 3.0 + */ + public static const int PRINT_SCREEN = KEYCODE_BIT + 87; + + /** + * The <code>MessageBox</code> style constant for error icon + * behavior (value is 1). + */ + public static const int ICON_ERROR = 1; + + /** + * The <code>MessageBox</code> style constant for information icon + * behavior (value is 1<<1). + */ + public static const int ICON_INFORMATION = 1 << 1; + + /** + * The <code>MessageBox</code> style constant for question icon + * behavior (value is 1<<2). + */ + public static const int ICON_QUESTION = 1 << 2; + + /** + * The <code>MessageBox</code> style constant for warning icon + * behavior (value is 1<<3). + */ + public static const int ICON_WARNING = 1 << 3; + + /** + * The <code>MessageBox</code> style constant for "working" icon + * behavior (value is 1<<4). + */ + public static const int ICON_WORKING = 1 << 4; + + /** + * The <code>MessageBox</code> style constant for an OK button; + * valid combinations are OK, OK|CANCEL + * (value is 1<<5). + */ + public static const int OK = 1 << 5; + + /** + * The <code>MessageBox</code> style constant for YES button; + * valid combinations are YES|NO, YES|NO|CANCEL + * (value is 1<<6). + */ + public static const int YES = 1 << 6; + + /** + * The <code>MessageBox</code> style constant for NO button; + * valid combinations are YES|NO, YES|NO|CANCEL + * (value is 1<<7). + */ + public static const int NO = 1 << 7; + + /** + * The <code>MessageBox</code> style constant for a CANCEL button; + * valid combinations are OK|CANCEL, YES|NO|CANCEL, RETRY|CANCEL + * (value is 1<<8). This style constant is also used with + * <code>Text</code> in combination with SEARCH. + * + * <p><b>Used By:</b><ul> + * <li><code>MessageBox</code></li> + * <li><code>Text</code></li> + * </ul></p> + */ + public static const int CANCEL = 1 << 8; + + /** + * The <code>MessageBox</code> style constant for an ABORT button; + * the only valid combination is ABORT|RETRY|IGNORE + * (value is 1<<9). + */ + public static const int ABORT = 1 << 9; + + /** + * The <code>MessageBox</code> style constant for a RETRY button; + * valid combinations are ABORT|RETRY|IGNORE, RETRY|CANCEL + * (value is 1<<10). + */ + public static const int RETRY = 1 << 10; + + /** + * The <code>MessageBox</code> style constant for an IGNORE button; + * the only valid combination is ABORT|RETRY|IGNORE + * (value is 1<<11). + */ + public static const int IGNORE = 1 << 11; + + /** + * The <code>FileDialog</code> style constant for open file dialog behavior + * (value is 1<<12). + */ + public static const int OPEN = 1 << 12; + + /** + * The <code>FileDialog</code> style constant for save file dialog behavior + * (value is 1<<13). + */ + public static const int SAVE = 1 << 13; + + /** + * The <code>Composite</code> constant to indicate that + * an attribute (such as background) is not inherited + * by the children (value is 0). + * + * @since 3.2 + */ + public static const int INHERIT_NONE = 0; + + /** + * The <code>Composite</code> constant to indicate that + * an attribute (such as background) is inherited by + * children who choose this value as their "default" + * (value is 1). For example, a label child will + * typically choose to inherit the background color + * of a composite while a list or table will not. + * + * @since 3.2 + */ + public static const int INHERIT_DEFAULT = 1; + + /** + * The <code>Composite</code> constant to indicate that + * an attribute (such as background) is inherited by + * all children. + * + * @since 3.2 + */ + public static const int INHERIT_FORCE = 2; + + /** + * Default color white (value is 1). + */ + public static const int COLOR_WHITE = 1; + + /** + * Default color black (value is 2). + */ + public static const int COLOR_BLACK = 2; + + /** + * Default color red (value is 3). + */ + public static const int COLOR_RED = 3; + + /** + * Default color dark red (value is 4). + */ + public static const int COLOR_DARK_RED = 4; + + /** + * Default color green (value is 5). + */ + public static const int COLOR_GREEN = 5; + + /** + * Default color dark green (value is 6). + */ + public static const int COLOR_DARK_GREEN = 6; + + /** + * Default color yellow (value is 7). + */ + public static const int COLOR_YELLOW = 7; + + /** + * Default color dark yellow (value is 8). + */ + public static const int COLOR_DARK_YELLOW = 8; + + /** + * Default color blue (value is 9). + */ + public static const int COLOR_BLUE = 9; + + /** + * Default color dark blue (value is 10). + */ + public static const int COLOR_DARK_BLUE = 10; + + /** + * Default color magenta (value is 11). + */ + public static const int COLOR_MAGENTA = 11; + + /** + * Default color dark magenta (value is 12). + */ + public static const int COLOR_DARK_MAGENTA = 12; + + /** + * Default color cyan (value is 13). + */ + public static const int COLOR_CYAN = 13; + + /** + * Default color dark cyan (value is 14). + */ + public static const int COLOR_DARK_CYAN = 14; + + /** + * Default color gray (value is 15). + */ + public static const int COLOR_GRAY = 15; + + /** + * Default color dark gray (value is 16). + */ + public static const int COLOR_DARK_GRAY = 16; + + /* + * System Colors + * + * Dealing with system colors is an area where there are + * many platform differences. On some platforms, system + * colors can change dynamically while the program is + * running. On other platforms, system colors can be + * changed for all instances of a particular widget. + * Therefore, the only truly portable method to obtain + * a widget color query is to query the color from an + * instance of the widget. + * + * It is expected that the list of supported colors + * will grow over time. + */ + + /** + * System color used to paint dark shadow areas (value is 17). + */ + public static const int COLOR_WIDGET_DARK_SHADOW = 17; + + /** + * System color used to paint normal shadow areas (value is 18). + */ + public static const int COLOR_WIDGET_NORMAL_SHADOW = 18; + + /** + * System color used to paint light shadow areas (value is 19). + */ + public static const int COLOR_WIDGET_LIGHT_SHADOW = 19; + + /** + * System color used to paint highlight shadow areas (value is 20). + */ + public static const int COLOR_WIDGET_HIGHLIGHT_SHADOW = 20; + + /** + * System color used to paint foreground areas (value is 21). + */ + public static const int COLOR_WIDGET_FOREGROUND = 21; + + /** + * System color used to paint background areas (value is 22). + */ + public static const int COLOR_WIDGET_BACKGROUND = 22; + + /** + * System color used to paint border areas (value is 23). + */ + public static const int COLOR_WIDGET_BORDER = 23; + + /** + * System color used to paint list foreground areas (value is 24). + */ + public static const int COLOR_LIST_FOREGROUND = 24; + + /** + * System color used to paint list background areas (value is 25). + */ + public static const int COLOR_LIST_BACKGROUND = 25; + + /** + * System color used to paint list selection background areas (value is 26). + */ + public static const int COLOR_LIST_SELECTION = 26; + + /** + * System color used to paint list selected text (value is 27). + */ + public static const int COLOR_LIST_SELECTION_TEXT = 27; + + /** + * System color used to paint tooltip text (value is 28). + */ + public static const int COLOR_INFO_FOREGROUND = 28; + + /** + * System color used to paint tooltip background areas (value is 29). + */ + public static const int COLOR_INFO_BACKGROUND = 29; + + /** + * System color used to paint title text (value is 30). + */ + public static const int COLOR_TITLE_FOREGROUND = 30; + + /** + * System color used to paint title background areas (value is 31). + */ + public static const int COLOR_TITLE_BACKGROUND = 31; + + /** + * System color used to paint title background gradient (value is 32). + */ + public static const int COLOR_TITLE_BACKGROUND_GRADIENT = 32; + + /** + * System color used to paint inactive title text (value is 33). + */ + public static const int COLOR_TITLE_INACTIVE_FOREGROUND = 33; + + /** + * System color used to paint inactive title background areas (value is 34). + */ + public static const int COLOR_TITLE_INACTIVE_BACKGROUND = 34; + + /** + * System color used to paint inactive title background gradient (value is 35). + */ + public static const int COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT = 35; + + /** + * Draw constant indicating whether the drawing operation + * should fill the background (value is 1<<0). + */ + public static const int DRAW_TRANSPARENT = 1 << 0; + + /** + * Draw constant indicating whether the String drawing operation + * should handle line-delimiters (value is 1<<1). + */ + public static const int DRAW_DELIMITER = 1 << 1; + + /** + * Draw constant indicating whether the String drawing operation + * should expand TAB characters (value is 1<<2). + */ + public static const int DRAW_TAB = 1 << 2; + + /** + * Draw constant indicating whether the String drawing operation + * should handle mnemonics (value is 1<<3). + */ + public static const int DRAW_MNEMONIC = 1 << 3; + + /** + * Selection constant indicating that a line delimiter should be + * drawn (value is 1<<17). + * + * <p><b>Used By:</b><ul> + * <li><code>TextLayout</code></li> + * </ul></p> + * + * @see #FULL_SELECTION + * @see #LAST_LINE_SELECTION + * + * @since 3.3 + */ + public static const int DELIMITER_SELECTION = 1 << 17; + + /** + * Selection constant indicating that the last line is selected + * to the end and should be drawn using either a line delimiter + * or full line selection (value is 1<<20). + * + * <p><b>Used By:</b><ul> + * <li><code>TextLayout</code></li> + * </ul></p> + * + * @see #DELIMITER_SELECTION + * @see #FULL_SELECTION + * + * @since 3.3 + */ + public static const int LAST_LINE_SELECTION = 1 << 20; + + /** + * DWT error constant indicating that no error number was specified + * (value is 1). + */ + public static const int ERROR_UNSPECIFIED = 1; + + /** + * DWT error constant indicating that no more handles for an + * operating system resource are available + * (value is 2). + */ + public static const int ERROR_NO_HANDLES = 2; + + /** + * DWT error constant indicating that no more callback resources are available + * (value is 3). + */ + public static const int ERROR_NO_MORE_CALLBACKS = 3; + + /** + * DWT error constant indicating that a null argument was passed in + * (value is 4). + */ + public static const int ERROR_NULL_ARGUMENT = 4; + + /** + * DWT error constant indicating that an invalid argument was passed in + * (value is 5). + */ + public static const int ERROR_INVALID_ARGUMENT = 5; + + /** + * DWT error constant indicating that a value was found to be + * outside the allowable range + * (value is 6). + */ + public static const int ERROR_INVALID_RANGE = 6; + + /** + * DWT error constant indicating that a value which can not be + * zero was found to be + * (value is 7). + */ + public static const int ERROR_CANNOT_BE_ZERO = 7; + + /** + * DWT error constant indicating that the underlying operating + * system was unable to provide the value of an item + * (value is 8). + */ + public static const int ERROR_CANNOT_GET_ITEM = 8; + + /** + * DWT error constant indicating that the underlying operating + * system was unable to provide the selection + * (value is 9). + */ + public static const int ERROR_CANNOT_GET_SELECTION = 9; + + /** + * DWT error constant indicating that the matrix is not invertible + * (value is 10). + * + * @since 3.1 + */ + public static const int ERROR_CANNOT_INVERT_MATRIX = 10; + + /** + * DWT error constant indicating that the underlying operating + * system was unable to provide the height of an item + * (value is 11). + */ + public static const int ERROR_CANNOT_GET_ITEM_HEIGHT = 11; + + /** + * DWT error constant indicating that the underlying operating + * system was unable to provide the text of a widget + * (value is 12). + */ + public static const int ERROR_CANNOT_GET_TEXT = 12; + + /** + * DWT error constant indicating that the underlying operating + * system was unable to set the text of a widget + * (value is 13). + */ + public static const int ERROR_CANNOT_SET_TEXT = 13; + + /** + * DWT error constant indicating that the underlying operating + * system was unable to add an item + * (value is 14). + */ + public static const int ERROR_ITEM_NOT_ADDED = 14; + + /** + * DWT error constant indicating that the underlying operating + * system was unable to remove an item + * (value is 15). + */ + public static const int ERROR_ITEM_NOT_REMOVED = 15; + + /** + * DWT error constant indicating that the graphics library + * is not available + * (value is 16). + */ + public static const int ERROR_NO_GRAPHICS_LIBRARY = 16; + + /** + * DWT error constant indicating that a particular feature has + * not been implemented on this platform + * (value is 20). + */ + public static const int ERROR_NOT_IMPLEMENTED = 20; + + /** + * DWT error constant indicating that a menu which needed + * to have the drop down style had some other style instead + * (value is 21). + */ + public static const int ERROR_MENU_NOT_DROP_DOWN = 21; + + /** + * DWT error constant indicating that an attempt was made to + * invoke an DWT operation which can only be executed by the + * user-interface thread from some other thread + * (value is 22). + */ + public static const int ERROR_THREAD_INVALID_ACCESS = 22; + + /** + * DWT error constant indicating that an attempt was made to + * invoke an DWT operation using a widget which had already + * been disposed + * (value is 24). + */ + public static const int ERROR_WIDGET_DISPOSED = 24; + + /** + * DWT error constant indicating that a menu item which needed + * to have the cascade style had some other style instead + * (value is 27). + */ + public static const int ERROR_MENUITEM_NOT_CASCADE = 27; + + /** + * DWT error constant indicating that the underlying operating + * system was unable to set the selection of a widget + * (value is 28). + */ + public static const int ERROR_CANNOT_SET_SELECTION = 28; + + /** + * DWT error constant indicating that the underlying operating + * system was unable to set the menu + * (value is 29). + */ + public static const int ERROR_CANNOT_SET_MENU = 29; + + /** + * DWT error constant indicating that the underlying operating + * system was unable to set the enabled state + * (value is 30). + */ + public static const int ERROR_CANNOT_SET_ENABLED = 30; + + /** + * DWT error constant indicating that the underlying operating + * system was unable to provide enabled/disabled state information + * (value is 31). + */ + public static const int ERROR_CANNOT_GET_ENABLED = 31; + + /** + * DWT error constant indicating that a provided widget can + * not be used as a parent in the current operation + * (value is 32). + */ + public static const int ERROR_INVALID_PARENT = 32; + + /** + * DWT error constant indicating that a menu which needed + * to have the menu bar style had some other style instead + * (value is 33). + */ + public static const int ERROR_MENU_NOT_BAR = 33; + + /** + * DWT error constant indicating that the underlying operating + * system was unable to provide count information + * (value is 36). + */ + public static const int ERROR_CANNOT_GET_COUNT = 36; + + /** + * DWT error constant indicating that a menu which needed + * to have the pop up menu style had some other style instead + * (value is 37). + */ + public static const int ERROR_MENU_NOT_POP_UP = 37; + + /** + * DWT error constant indicating that a graphics operation + * was attempted with an image of an unsupported depth + * (value is 38). + */ + public static const int ERROR_UNSUPPORTED_DEPTH = 38; + + /** + * DWT error constant indicating that an input/output operation + * failed during the execution of an DWT operation + * (value is 39). + */ + public static const int ERROR_IO = 39; + + /** + * DWT error constant indicating that a graphics operation + * was attempted with an image having an invalid format + * (value is 40). + */ + public static const int ERROR_INVALID_IMAGE = 40; + + /** + * DWT error constant indicating that a graphics operation + * was attempted with an image having a valid but unsupported + * format + * (value is 42). + */ + public static const int ERROR_UNSUPPORTED_FORMAT = 42; + + /** + * DWT error constant indicating that an attempt was made + * to subclass an DWT widget class without implementing the + * <code>checkSubclass()</code> method + * (value is 43). + * + * For additional information see the comment in + * <code>Widget.checkSubclass()</code>. + * + * @see dwt.widgets.Widget#checkSubclass + */ + public static const int ERROR_INVALID_SUBCLASS = 43; + + /** + * DWT error constant indicating that an attempt was made to + * invoke an DWT operation using a graphics object which had + * already been disposed + * (value is 44). + */ + public static const int ERROR_GRAPHIC_DISPOSED = 44; + + /** + * DWT error constant indicating that an attempt was made to + * invoke an DWT operation using a device which had already + * been disposed + * (value is 45). + */ + public static const int ERROR_DEVICE_DISPOSED = 45; + + /** + * DWT error constant indicating that an exception happened + * when executing a runnable + * (value is 46). + */ + public static const int ERROR_FAILED_EXEC = 46; + + /** + * DWT error constant indicating that an unsatisfied link + * error occurred while attempting to load a library + * (value is 47). + * + * @since 3.1 + */ + public static const int ERROR_FAILED_LOAD_LIBRARY = 47; + + /** + * DWT error constant indicating that a font is not valid + * (value is 48). + * + * @since 3.1 + */ + public static const int ERROR_INVALID_FONT = 48; + + /** + * Constant indicating that an image or operation is of type bitmap (value is 0). + */ + public static const int BITMAP = 0; + + /** + * Constant indicating that an image or operation is of type icon (value is 1). + */ + public static const int ICON = 1; + + /** + * The <code>Image</code> constructor argument indicating that + * the new image should be a copy of the image provided as + * an argument (value is 0). + */ + public static const int IMAGE_COPY = 0; + + /** + * The <code>Image</code> constructor argument indicating that + * the new image should have the appearance of a "disabled" + * (using the platform's rules for how this should look) + * copy of the image provided as an argument (value is 1). + */ + public static const int IMAGE_DISABLE = 1; + + /** + * The <code>Image</code> constructor argument indicating that + * the new image should have the appearance of a "gray scaled" + * copy of the image provided as an argument (value is 2). + */ + public static const int IMAGE_GRAY = 2; + + /** + * Constant to indicate an error state (value is 1). + * <p><b>Used By:</b><ul> + * <li><code>ProgressBar</code></li> + * </ul></p> + * + * @since 3.4 + */ + public static const int ERROR = 1; + + /** + * Constant to a indicate a paused state (value is 4). + * <p><b>Used By:</b><ul> + * <li><code>ProgressBar</code></li> + * </ul></p> + * + * @since 3.4 + */ + public static const int PAUSED = 1 << 2; + + /** + * The font style constant indicating a normal weight, non-italic font + * (value is 0). This constant is also used with <code>ProgressBar</code> + * to indicate a normal state. + * <p><b>Used By:</b><ul> + * <li><code>ProgressBar</code></li> + * </ul></p> + */ + public static const int NORMAL = 0; + + /** + * The font style constant indicating a bold weight font + * (value is 1<<0). + */ + public static const int BOLD = 1 << 0; + + /** + * The font style constant indicating an italic font + * (value is 1<<1). + */ + public static const int ITALIC = 1 << 1; + + /** + * System arrow cursor (value is 0). + */ + public static const int CURSOR_ARROW = 0; + + /** + * System wait cursor (value is 1). + */ + public static const int CURSOR_WAIT = 1; + + /** + * System cross hair cursor (value is 2). + */ + public static const int CURSOR_CROSS = 2; + + /** + * System app startup cursor (value is 3). + */ + public static const int CURSOR_APPSTARTING = 3; + + /** + * System help cursor (value is 4). + */ + public static const int CURSOR_HELP = 4; + + /** + * System resize all directions cursor (value is 5). + */ + public static const int CURSOR_SIZEALL = 5; + + /** + * System resize north-east-south-west cursor (value is 6). + */ + public static const int CURSOR_SIZENESW = 6; + + /** + * System resize north-south cursor (value is 7). + */ + public static const int CURSOR_SIZENS = 7; + + /** + * System resize north-west-south-east cursor (value is 8). + */ + public static const int CURSOR_SIZENWSE = 8; + + /** + * System resize west-east cursor (value is 9). + */ + public static const int CURSOR_SIZEWE = 9; + + /** + * System resize north cursor (value is 10). + */ + public static const int CURSOR_SIZEN = 10; + + /** + * System resize south cursor (value is 11). + */ + public static const int CURSOR_SIZES = 11; + + /** + * System resize east cursor (value is 12). + */ + public static const int CURSOR_SIZEE = 12; + + /** + * System resize west cursor (value is 13). + */ + public static const int CURSOR_SIZEW = 13; + + /** + * System resize north-east cursor (value is 14). + */ + public static const int CURSOR_SIZENE = 14; + + /** + * System resize south-east cursor (value is 15). + */ + public static const int CURSOR_SIZESE = 15; + + /** + * System resize south-west cursor (value is 16). + */ + public static const int CURSOR_SIZESW = 16; + + /** + * System resize north-west cursor (value is 17). + */ + public static const int CURSOR_SIZENW = 17; + + /** + * System up arrow cursor (value is 18). + */ + public static const int CURSOR_UPARROW = 18; + + /** + * System i-beam cursor (value is 19). + */ + public static const int CURSOR_IBEAM = 19; + + /** + * System "not allowed" cursor (value is 20). + */ + public static const int CURSOR_NO = 20; + + /** + * System hand cursor (value is 21). + */ + public static const int CURSOR_HAND = 21; + + /** + * Line drawing style for flat end caps (value is 1). + * + * @see dwt.graphics.GC#setLineCap(int) + * @see dwt.graphics.GC#getLineCap() + * + * @since 3.1 + */ + public static const int CAP_FLAT = 1; + + /** + * Line drawing style for rounded end caps (value is 2). + * + * @see dwt.graphics.GC#setLineCap(int) + * @see dwt.graphics.GC#getLineCap() + * + * @since 3.1 + */ + public static const int CAP_ROUND = 2; + + /** + * Line drawing style for square end caps (value is 3). + * + * @see dwt.graphics.GC#setLineCap(int) + * @see dwt.graphics.GC#getLineCap() + * + * @since 3.1 + */ + public static const int CAP_SQUARE = 3; + + /** + * Line drawing style for miter joins (value is 1). + * + * @see dwt.graphics.GC#setLineJoin(int) + * @see dwt.graphics.GC#getLineJoin() + * + * @since 3.1 + */ + public static const int JOIN_MITER = 1; + + /** + * Line drawing style for rounded joins (value is 2). + * + * @see dwt.graphics.GC#setLineJoin(int) + * @see dwt.graphics.GC#getLineJoin() + * + * @since 3.1 + */ + public static const int JOIN_ROUND = 2; + + /** + * Line drawing style for bevel joins (value is 3). + * + * @see dwt.graphics.GC#setLineJoin(int) + * @see dwt.graphics.GC#getLineJoin() + * + * @since 3.1 + */ + public static const int JOIN_BEVEL = 3; + + /** + * Line drawing style for solid lines (value is 1). + */ + public static const int LINE_SOLID = 1; + + /** + * Line drawing style for dashed lines (value is 2). + */ + public static const int LINE_DASH = 2; + + /** + * Line drawing style for dotted lines (value is 3). + */ + public static const int LINE_DOT = 3; + + /** + * Line drawing style for alternating dash-dot lines (value is 4). + */ + public static const int LINE_DASHDOT = 4; + + /** + * Line drawing style for dash-dot-dot lines (value is 5). + */ + public static const int LINE_DASHDOTDOT = 5; + + /** + * Line drawing style for custom dashed lines (value is 6). + * + * @see dwt.graphics.GC#setLineDash(int[]) + * @see dwt.graphics.GC#getLineDash() + * + * @since 3.1 + */ + public static const int LINE_CUSTOM = 6; + + /** + * Path constant that represents a "move to" operation (value is 1). + * + * @since 3.1 + */ + public static const int PATH_MOVE_TO = 1; + + /** + * Path constant that represents a "line to" operation (value is 2). + * + * @since 3.1 + */ + public static const int PATH_LINE_TO = 2; + + /** + * Path constant that represents a "quadratic curve to" operation (value is 3). + * + * @since 3.1 + */ + public static const int PATH_QUAD_TO = 3; + + /** + * Path constant that represents a "cubic curve to" operation (value is 4). + * + * @since 3.1 + */ + public static const int PATH_CUBIC_TO = 4; + + /** + * Path constant that represents a "close" operation (value is 5). + * + * @since 3.1 + */ + public static const int PATH_CLOSE = 5; + + /** + * Even odd rule for filling operations (value is 1). + * + * @since 3.1 + */ + public static const int FILL_EVEN_ODD = 1; + + /** + * Winding rule for filling operations (value is 2). + * + * @since 3.1 + */ + public static const int FILL_WINDING = 2; + + /** + * Image format constant indicating an unknown image type (value is -1). + */ + public static const int IMAGE_UNDEFINED = -1; + + /** + * Image format constant indicating a Windows BMP format image (value is 0). + */ + public static const int IMAGE_BMP = 0; + + /** + * Image format constant indicating a run-length encoded + * Windows BMP format image (value is 1). + */ + public static const int IMAGE_BMP_RLE = 1; + + /** + * Image format constant indicating a GIF format image (value is 2). + */ + public static const int IMAGE_GIF = 2; + + /** + * Image format constant indicating a ICO format image (value is 3). + */ + public static const int IMAGE_ICO = 3; + + /** + * Image format constant indicating a JPEG format image (value is 4). + */ + public static const int IMAGE_JPEG = 4; + + /** + * Image format constant indicating a PNG format image (value is 5). + */ + public static const int IMAGE_PNG = 5; + + /** + * Image format constant indicating a TIFF format image (value is 6). + */ + public static const int IMAGE_TIFF = 6; + + /** + * Image format constant indicating an OS/2 BMP format image (value is 7). + */ + public static const int IMAGE_OS2_BMP = 7; + + /** + * GIF image disposal method constants indicating that the + * disposal method is unspecified (value is 0). + */ + public static const int DM_UNSPECIFIED = 0x0; + + /** + * GIF image disposal method constants indicating that the + * disposal method is to do nothing; that is, to leave the + * previous image in place (value is 1). + */ + public static const int DM_FILL_NONE = 0x1; + + /** + * GIF image disposal method constants indicating that the + * the previous images should be covered with the background + * color before displaying the next image (value is 2). + */ + public static const int DM_FILL_BACKGROUND = 0x2; + + /** + * GIF image disposal method constants indicating that the + * disposal method is to restore the previous picture + * (value is 3). + */ + public static const int DM_FILL_PREVIOUS = 0x3; + + /** + * Image transparency constant indicating that the image + * contains no transparency information (value is 0). + */ + public static const int TRANSPARENCY_NONE = 0x0; + + /** + * Image transparency constant indicating that the image + * contains alpha transparency information (value is 1<<0). + */ + public static const int TRANSPARENCY_ALPHA = 1 << 0; + + /** + * Image transparency constant indicating that the image + * contains a transparency mask (value is 1<<1). + */ + public static const int TRANSPARENCY_MASK = 1 << 1; + + /** + * Image transparency constant indicating that the image + * contains a transparent pixel (value is 1<<2). + */ + public static const int TRANSPARENCY_PIXEL = 1 << 2; + + /** + * The character movement type (value is 1<<0). + * This constant is used to move a text offset over a character. + * + * @see dwt.graphics.TextLayout#getNextOffset(int, int) + * @see dwt.graphics.TextLayout#getPreviousOffset(int, int) + * + * @since 3.0 + */ + public static const int MOVEMENT_CHAR = 1 << 0; + + /** + * The cluster movement type (value is 1<<1). + * This constant is used to move a text offset over a cluster. + * A cluster groups one or more characters. A cluster is + * undivisible, this means that a caret offset can not be placed in the + * middle of a cluster. + * + * @see dwt.graphics.TextLayout#getNextOffset(int, int) + * @see dwt.graphics.TextLayout#getPreviousOffset(int, int) + * + * @since 3.0 + */ + public static const int MOVEMENT_CLUSTER = 1 << 1; + + /** + * The word movement type (value is 1<<2). + * This constant is used to move a text offset over a word. + * The behavior of this constant depends on the platform and on the + * direction of the movement. For example, on Windows the stop is + * always at the start of the word. On GTK and Mac the stop is at the end + * of the word if the direction is next and at the start of the word if the + * direction is previous. + * + * @see dwt.graphics.TextLayout#getNextOffset(int, int) + * @see dwt.graphics.TextLayout#getPreviousOffset(int, int) + * + * @since 3.0 + */ + public static const int MOVEMENT_WORD = 1 << 2; + + /** + * The word end movement type (value is 1<<3). + * This constant is used to move a text offset to the next or previous + * word end. The behavior of this constant does not depend on the platform. + * + * + * @see dwt.graphics.TextLayout#getNextOffset(int, int) + * @see dwt.graphics.TextLayout#getPreviousOffset(int, int) + * + * @since 3.3 + */ + public static const int MOVEMENT_WORD_END = 1 << 3; + + /** + * The word start movement type (value is 1<<4). + * This constant is used to move a text offset to the next or previous + * word start. The behavior of this constant does not depend on the platform. + * + * @see dwt.graphics.TextLayout#getNextOffset(int, int) + * @see dwt.graphics.TextLayout#getPreviousOffset(int, int) + * + * @since 3.3 + */ + public static const int MOVEMENT_WORD_START = 1 << 4; + + /** + * Answers a concise, human readable description of the error code. + * + * @param code the DWT error code. + * @return a description of the error code. + * + * @see DWT + */ + static String findErrorText (int code) { + switch (code) { + case ERROR_UNSPECIFIED: + return "Unspecified error"; //$NON-NLS-1$ + case ERROR_NO_HANDLES: + return "No more handles"; //$NON-NLS-1$ + case ERROR_NO_MORE_CALLBACKS: + return "No more callbacks"; //$NON-NLS-1$ + case ERROR_NULL_ARGUMENT: + return "Argument cannot be null"; //$NON-NLS-1$ + case ERROR_INVALID_ARGUMENT: + return "Argument not valid"; //$NON-NLS-1$ + case ERROR_INVALID_RANGE: + return "Index out of bounds"; //$NON-NLS-1$ + case ERROR_CANNOT_BE_ZERO: + return "Argument cannot be zero"; //$NON-NLS-1$ + case ERROR_CANNOT_GET_ITEM: + return "Cannot get item"; //$NON-NLS-1$ + case ERROR_CANNOT_GET_SELECTION: + return "Cannot get selection"; //$NON-NLS-1$ + case ERROR_CANNOT_GET_ITEM_HEIGHT: + return "Cannot get item height"; //$NON-NLS-1$ + case ERROR_CANNOT_GET_TEXT: + return "Cannot get text"; //$NON-NLS-1$ + case ERROR_CANNOT_SET_TEXT: + return "Cannot set text"; //$NON-NLS-1$ + case ERROR_ITEM_NOT_ADDED: + return "Item not added"; //$NON-NLS-1$ + case ERROR_ITEM_NOT_REMOVED: + return "Item not removed"; //$NON-NLS-1$ + case ERROR_NOT_IMPLEMENTED: + return "Not implemented"; //$NON-NLS-1$ + case ERROR_MENU_NOT_DROP_DOWN: + return "Menu must be a drop down"; //$NON-NLS-1$ + case ERROR_THREAD_INVALID_ACCESS: + return "Invalid thread access"; //$NON-NLS-1$ + case ERROR_WIDGET_DISPOSED: + return "Widget is disposed"; //$NON-NLS-1$ + case ERROR_MENUITEM_NOT_CASCADE: + return "Menu item is not a CASCADE"; //$NON-NLS-1$ + case ERROR_CANNOT_SET_SELECTION: + return "Cannot set selection"; //$NON-NLS-1$ + case ERROR_CANNOT_SET_MENU: + return "Cannot set menu"; //$NON-NLS-1$ + case ERROR_CANNOT_SET_ENABLED: + return "Cannot set the enabled state"; //$NON-NLS-1$ + case ERROR_CANNOT_GET_ENABLED: + return "Cannot get the enabled state"; //$NON-NLS-1$ + case ERROR_INVALID_PARENT: + return "Widget has the wrong parent"; //$NON-NLS-1$ + case ERROR_MENU_NOT_BAR: + return "Menu is not a BAR"; //$NON-NLS-1$ + case ERROR_CANNOT_GET_COUNT: + return "Cannot get count"; //$NON-NLS-1$ + case ERROR_MENU_NOT_POP_UP: + return "Menu is not a POP_UP"; //$NON-NLS-1$ + case ERROR_UNSUPPORTED_DEPTH: + return "Unsupported color depth"; //$NON-NLS-1$ + case ERROR_IO: + return "i/o error"; //$NON-NLS-1$ + case ERROR_INVALID_IMAGE: + return "Invalid image"; //$NON-NLS-1$ + case ERROR_UNSUPPORTED_FORMAT: + return "Unsupported or unrecognized format"; //$NON-NLS-1$ + case ERROR_INVALID_SUBCLASS: + return "Subclassing not allowed"; //$NON-NLS-1$ + case ERROR_GRAPHIC_DISPOSED: + return "Graphic is disposed"; //$NON-NLS-1$ + case ERROR_DEVICE_DISPOSED: + return "Device is disposed"; //$NON-NLS-1$ + case ERROR_FAILED_EXEC: + return "Failed to execute runnable"; //$NON-NLS-1$ + case ERROR_FAILED_LOAD_LIBRARY: + return "Unable to load library"; //$NON-NLS-1$ + case ERROR_CANNOT_INVERT_MATRIX: + return "Cannot invert matrix"; //$NON-NLS-1$ + case ERROR_NO_GRAPHICS_LIBRARY: + return "Unable to load graphics library"; //$NON-NLS-1$ + case ERROR_INVALID_FONT: + return "Font not valid"; //$NON-NLS-1$ + default: + break; + } + return "Unknown error"; //$NON-NLS-1$ + } + + /** + * Returns the NLS'ed message for the given argument. + * + * @param key the key to look up + * @return the message for the given key + * + * @exception IllegalArgumentException <ul> + * <li>ERROR_NULL_ARGUMENT - if the key is null</li> + * </ul> + */ + public static String getMessage (String key) { + return Compatibility.getMessage(key); + } + + /** + * Returns the DWT platform name. + * Examples: "win32", "motif", "gtk", "photon", "carbon" + * + * @return the DWT platform name + */ + public static String getPlatform () { + return Platform.PLATFORM; + } + + /** + * Returns the DWT version number as an integer. + * Example: "DWT051" is 51 + * + * @return the DWT version number + */ + public static int getVersion () { + return Library.DWT_VERSION; + } + + /** + * Throws an appropriate exception based on the passed in error code. + * + * @param code the DWT error code + */ + public static void error (int code) { + error(code, null); + } + + /** + * Throws an appropriate exception based on the passed in error code. + * The <code>throwable</code> argument should be either null, or the + * throwable which caused DWT to throw an exception. + * <p> + * In DWT, errors are reported by throwing one of three exceptions: + * <dl> + * <dd>java.lang.IllegalArgumentException</dd> + * <dt>thrown whenever one of the API methods is invoked with an illegal argument</dt> + * <dd>dwt.DWTException (: java.lang.RuntimeException)</dd> + * <dt>thrown whenever a recoverable error happens internally in DWT</dt> + * <dd>dwt.DWTError (: java.lang.Error)</dd> + * <dt>thrown whenever a <b>non-recoverable</b> error happens internally in DWT</dt> + * </dl> + * This method provides the logic which maps between error codes + * and one of the above exceptions. + * </p> + * + * @param code the DWT error code. + * @param throwable the exception which caused the error to occur. + * + * @see DWTError + * @see DWTException + * @see IllegalArgumentException + */ + public static void error (int code, Exception throwable) { + error(code, throwable, null); + } + + /** + * Throws an appropriate exception based on the passed in error code. + * The <code>throwable</code> argument should be either null, or the + * throwable which caused DWT to throw an exception. + * <p> + * In DWT, errors are reported by throwing one of three exceptions: + * <dl> + * <dd>java.lang.IllegalArgumentException</dd> + * <dt>thrown whenever one of the API methods is invoked with an illegal argument</dt> + * <dd>dwt.DWTException (: java.lang.RuntimeException)</dd> + * <dt>thrown whenever a recoverable error happens internally in DWT</dt> + * <dd>dwt.DWTError (: java.lang.Error)</dd> + * <dt>thrown whenever a <b>non-recoverable</b> error happens internally in DWT</dt> + * </dl> + * This method provides the logic which maps between error codes + * and one of the above exceptions. + * </p> + * + * @param code the DWT error code. + * @param throwable the exception which caused the error to occur. + * @param detail more information about error. + * + * @see DWTError + * @see DWTException + * @see IllegalArgumentException + * + * @since 3.0 + */ + public static void error (int code, Exception throwable, String detail) { + + /* + * This code prevents the creation of "chains" of DWTErrors and + * DWTExceptions which in turn contain other DWTErrors and + * DWTExceptions as their throwable. This can occur when low level + * code throws an exception past a point where a higher layer is + * being "safe" and catching all exceptions. (Note that, this is + * _a_bad_thing_ which we always try to avoid.) + * + * On the theory that the low level code is closest to the + * original problem, we simply re-throw the original exception here. + * + * NOTE: Exceptions thrown in syncExec and asyncExec must be + * wrapped. + */ + if (code !is DWT.ERROR_FAILED_EXEC) { + if (cast(DWTError) throwable) + throw cast(DWTError) throwable; + + if (cast(DWTException) throwable) + throw cast(DWTException) throwable; + } + + String message = findErrorText(code); + if (detail !is null) + message += detail; + switch (code) { + + /* Illegal Arguments (non-fatal) */ + case ERROR_NULL_ARGUMENT: + case ERROR_CANNOT_BE_ZERO: + case ERROR_INVALID_ARGUMENT: + case ERROR_MENU_NOT_BAR: + case ERROR_MENU_NOT_DROP_DOWN: + case ERROR_MENU_NOT_POP_UP: + case ERROR_MENUITEM_NOT_CASCADE: + case ERROR_INVALID_PARENT: + case ERROR_INVALID_RANGE: { + throw new IllegalArgumentException(message); + } + + /* DWT Exceptions (non-fatal) */ + case ERROR_INVALID_SUBCLASS: + case ERROR_THREAD_INVALID_ACCESS: + case ERROR_WIDGET_DISPOSED: + case ERROR_GRAPHIC_DISPOSED: + case ERROR_DEVICE_DISPOSED: + case ERROR_INVALID_IMAGE: + case ERROR_UNSUPPORTED_DEPTH: + case ERROR_UNSUPPORTED_FORMAT: + case ERROR_FAILED_EXEC: + case ERROR_CANNOT_INVERT_MATRIX: + case ERROR_NO_GRAPHICS_LIBRARY: + case ERROR_IO: { + DWTException exception = new DWTException(code, message); + exception.throwable = throwable; + throw exception; + } + + /* Operation System Errors (fatal, may occur only on some platforms) */ + case ERROR_CANNOT_GET_COUNT: + case ERROR_CANNOT_GET_ENABLED: + case ERROR_CANNOT_GET_ITEM: + case ERROR_CANNOT_GET_ITEM_HEIGHT: + case ERROR_CANNOT_GET_SELECTION: + case ERROR_CANNOT_GET_TEXT: + case ERROR_CANNOT_SET_ENABLED: + case ERROR_CANNOT_SET_MENU: + case ERROR_CANNOT_SET_SELECTION: + case ERROR_CANNOT_SET_TEXT: + case ERROR_ITEM_NOT_ADDED: + case ERROR_ITEM_NOT_REMOVED: + case ERROR_NO_HANDLES: + //FALL THROUGH + + /* DWT Errors (fatal, may occur only on some platforms) */ + case ERROR_FAILED_LOAD_LIBRARY: + case ERROR_NO_MORE_CALLBACKS: + case ERROR_NOT_IMPLEMENTED: + case ERROR_UNSPECIFIED: { + DWTError error = new DWTError(code, message); + error.throwable = throwable; + throw error; + } + + default: + break; + } + + /* Unknown/Undefined Error */ + DWTError error = new DWTError(code, message); + error.throwable = throwable; + throw error; + } + + static this () { + /* + * These values represent bit masks that may need to + * expand in the future. Therefore they are not initialized + * in the declaration to stop the compiler from inlining. + */ + BUTTON_MASK = BUTTON1 | BUTTON2 | BUTTON3 | BUTTON4 | BUTTON5; + MODIFIER_MASK = ALT | SHIFT | CTRL | COMMAND; + + /* + * These values can be different on different platforms. + * Therefore they are not initialized in the declaration + * to stop the compiler from inlining. + */ + String platform = getPlatform(); + if ("carbon".opEquals(platform)) { //$NON-NLS-1$ + MOD1 = COMMAND; + MOD2 = SHIFT; + MOD3 = ALT; + MOD4 = CONTROL; + } + else { + MOD1 = CONTROL; + MOD2 = SHIFT; + MOD3 = ALT; + MOD4 = 0; + } + } +}