changeset 0:c8ad75f8819e

first import
author Frank Benoit <benoit@tionex.de>
date Sat, 05 Jan 2008 00:29:12 +0100
parents
children 088b30eabff3
files dsss.conf org/eclipse/swt/SWT.d org/eclipse/swt/SWTError.d org/eclipse/swt/SWTException.d org/eclipse/swt/internal/Compatibility.d org/eclipse/swt/internal/Converter.d org/eclipse/swt/internal/LONG.d org/eclipse/swt/internal/Library.d org/eclipse/swt/internal/Lock.d org/eclipse/swt/internal/Platform.d org/eclipse/swt/internal/SWTMessages.properties
diffstat 11 files changed, 4815 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dsss.conf	Sat Jan 05 00:29:12 2008 +0100
@@ -0,0 +1,3 @@
+[org/eclipse/swt]
+type=library
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org/eclipse/swt/SWT.d	Sat Jan 05 00:29:12 2008 +0100
@@ -0,0 +1,3636 @@
+/*******************************************************************************
+ * 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
+ *******************************************************************************/
+module org.eclipse.swt.SWT;
+
+
+import org.eclipse.swt.internal.Compatibility;
+import org.eclipse.swt.internal.Library;
+import org.eclipse.swt.internal.Platform;
+import org.eclipse.swt.SWTError;
+import org.eclipse.swt.SWTException;
+
+import tango.core.Exception;
+
+/**
+ * This class provides access to a small number of SWT system-wide
+ * methods, and in addition defines the public constants provided
+ * by SWT.
+ * <p>
+ * By defining constants like UP and DOWN in a single class, SWT
+ * 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 const
+ *   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 SWT {
+
+	/* 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 org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addKeyListener
+	 * @see org.eclipse.swt.widgets.Tracker#addKeyListener
+	 * @see org.eclipse.swt.events.KeyListener#keyPressed
+	 * @see org.eclipse.swt.events.KeyEvent
+	 */
+	public static const int KeyDown = 1;
+
+	/**
+	 * The key up event type (value is 2).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addKeyListener
+	 * @see org.eclipse.swt.widgets.Tracker#addKeyListener
+	 * @see org.eclipse.swt.events.KeyListener#keyReleased
+	 * @see org.eclipse.swt.events.KeyEvent
+	 */
+	public static const int KeyUp = 2;
+
+	/**
+	 * The mouse down event type (value is 3).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addMouseListener
+	 * @see org.eclipse.swt.events.MouseListener#mouseDown
+	 * @see org.eclipse.swt.events.MouseEvent
+	 */
+	public static const int MouseDown = 3;
+
+	/**
+	 * The mouse up event type (value is 4).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addMouseListener
+	 * @see org.eclipse.swt.events.MouseListener#mouseUp
+	 * @see org.eclipse.swt.events.MouseEvent
+	 */
+	public static const int MouseUp = 4;
+
+	/**
+	 * The mouse move event type (value is 5).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addMouseMoveListener
+	 * @see org.eclipse.swt.events.MouseMoveListener#mouseMove
+	 * @see org.eclipse.swt.events.MouseEvent
+	 */
+	public static const int MouseMove = 5;
+
+	/**
+	 * The mouse enter event type (value is 6).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addMouseTrackListener
+	 * @see org.eclipse.swt.events.MouseTrackListener#mouseEnter
+	 * @see org.eclipse.swt.events.MouseEvent
+	 */
+	public static const int MouseEnter = 6;
+
+	/**
+	 * The mouse exit event type (value is 7).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addMouseTrackListener
+	 * @see org.eclipse.swt.events.MouseTrackListener#mouseExit
+	 * @see org.eclipse.swt.events.MouseEvent
+	 */
+	public static const int MouseExit = 7;
+
+	/**
+	 * The mouse double click event type (value is 8).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addMouseListener
+	 * @see org.eclipse.swt.events.MouseListener#mouseDoubleClick
+	 * @see org.eclipse.swt.events.MouseEvent
+	 */
+	public static const int MouseDoubleClick = 8;
+
+	/**
+	 * The paint event type (value is 9).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addPaintListener
+	 * @see org.eclipse.swt.events.PaintListener#paintControl
+	 * @see org.eclipse.swt.events.PaintEvent
+	 */
+	public static const int Paint = 9;
+
+	/**
+	 * The move event type (value is 10).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addControlListener
+	 * @see org.eclipse.swt.widgets.TableColumn#addControlListener
+	 * @see org.eclipse.swt.widgets.Tracker#addControlListener
+	 * @see org.eclipse.swt.widgets.TreeColumn#addControlListener
+	 * @see org.eclipse.swt.events.ControlListener#controlMoved
+	 * @see org.eclipse.swt.events.ControlEvent
+	 */
+	public static const int Move = 10;
+
+	/**
+	 * The resize event type (value is 11).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addControlListener
+	 * @see org.eclipse.swt.widgets.TableColumn#addControlListener
+	 * @see org.eclipse.swt.widgets.Tracker#addControlListener
+	 * @see org.eclipse.swt.widgets.TreeColumn#addControlListener
+	 * @see org.eclipse.swt.events.ControlListener#controlResized
+	 * @see org.eclipse.swt.events.ControlEvent
+	 */
+	public static const int Resize = 11;
+
+	/**
+	 * The dispose event type (value is 12).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addDisposeListener
+	 * @see org.eclipse.swt.events.DisposeListener#widgetDisposed
+	 * @see org.eclipse.swt.events.DisposeEvent
+	 */
+	public static const int Dispose = 12;
+
+	/**
+	 * The selection event type (value is 13).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Button#addSelectionListener
+	 * @see org.eclipse.swt.widgets.Combo#addSelectionListener
+	 * @see org.eclipse.swt.widgets.CoolItem#addSelectionListener
+	 * @see org.eclipse.swt.widgets.Link#addSelectionListener
+	 * @see org.eclipse.swt.widgets.List#addSelectionListener
+	 * @see org.eclipse.swt.widgets.MenuItem#addSelectionListener
+	 * @see org.eclipse.swt.widgets.Sash#addSelectionListener
+	 * @see org.eclipse.swt.widgets.Scale#addSelectionListener
+	 * @see org.eclipse.swt.widgets.ScrollBar#addSelectionListener
+	 * @see org.eclipse.swt.widgets.Slider#addSelectionListener
+	 * @see org.eclipse.swt.widgets.TabFolder#addSelectionListener
+	 * @see org.eclipse.swt.widgets.Table#addSelectionListener
+	 * @see org.eclipse.swt.widgets.TableColumn#addSelectionListener
+	 * @see org.eclipse.swt.widgets.ToolItem#addSelectionListener
+	 * @see org.eclipse.swt.widgets.TrayItem#addSelectionListener
+	 * @see org.eclipse.swt.widgets.Tree#addSelectionListener
+	 * @see org.eclipse.swt.widgets.TreeColumn#addSelectionListener
+	 * @see org.eclipse.swt.events.SelectionListener#widgetSelected
+	 * @see org.eclipse.swt.events.SelectionEvent
+	 */
+	public static const int Selection = 13;
+
+	/**
+	 * The default selection event type (value is 14).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Combo#addSelectionListener
+	 * @see org.eclipse.swt.widgets.List#addSelectionListener
+	 * @see org.eclipse.swt.widgets.Spinner#addSelectionListener
+	 * @see org.eclipse.swt.widgets.Table#addSelectionListener
+	 * @see org.eclipse.swt.widgets.Text#addSelectionListener
+	 * @see org.eclipse.swt.widgets.TrayItem#addSelectionListener
+	 * @see org.eclipse.swt.widgets.Tree#addSelectionListener
+	 * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected
+	 * @see org.eclipse.swt.events.SelectionEvent
+	 */
+	public static const int DefaultSelection = 14;
+
+	/**
+	 * The focus in event type (value is 15).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addFocusListener
+	 * @see org.eclipse.swt.events.FocusListener#focusGained
+	 * @see org.eclipse.swt.events.FocusEvent
+	 */
+	public static const int FocusIn = 15;
+
+	/**
+	 * The focus out event type (value is 16).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addFocusListener
+	 * @see org.eclipse.swt.events.FocusListener#focusLost
+	 * @see org.eclipse.swt.events.FocusEvent
+	 */
+	public static const int FocusOut = 16;
+
+	/**
+	 * The expand event type (value is 17).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Tree#addTreeListener
+	 * @see org.eclipse.swt.events.TreeListener#treeExpanded
+	 * @see org.eclipse.swt.events.TreeEvent
+	 */
+	public static const int Expand = 17;
+
+	/**
+	 * The collapse event type (value is 18).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Tree#addTreeListener
+	 * @see org.eclipse.swt.events.TreeListener#treeCollapsed
+	 * @see org.eclipse.swt.events.TreeEvent
+	 */
+	public static const int Collapse = 18;
+
+	/**
+	 * The iconify event type (value is 19).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Shell#addShellListener
+	 * @see org.eclipse.swt.events.ShellListener#shellIconified
+	 * @see org.eclipse.swt.events.ShellEvent
+	 */
+	public static const int Iconify = 19;
+
+	/**
+	 * The de-iconify event type (value is 20).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Shell#addShellListener
+	 * @see org.eclipse.swt.events.ShellListener#shellDeiconified
+	 * @see org.eclipse.swt.events.ShellEvent
+	 */
+	public static const int Deiconify = 20;
+
+	/**
+	 * The close event type (value is 21).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Shell#addShellListener
+	 * @see org.eclipse.swt.events.ShellListener#shellClosed
+	 * @see org.eclipse.swt.events.ShellEvent
+	 */
+	public static const int Close = 21;
+
+	/**
+	 * The show event type (value is 22).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Menu#addMenuListener
+	 * @see org.eclipse.swt.events.MenuListener#menuShown
+	 * @see org.eclipse.swt.events.MenuEvent
+	 */
+	public static const int Show = 22;
+
+	/**
+	 * The hide event type (value is 23).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Menu#addMenuListener
+	 * @see org.eclipse.swt.events.MenuListener#menuHidden
+	 * @see org.eclipse.swt.events.MenuEvent
+	 */
+	public static const int Hide = 23;
+
+	/**
+	 * The modify event type (value is 24).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Combo#addModifyListener
+	 * @see org.eclipse.swt.widgets.Spinner#addModifyListener
+	 * @see org.eclipse.swt.widgets.Text#addModifyListener
+	 * @see org.eclipse.swt.events.ModifyListener#modifyText
+	 * @see org.eclipse.swt.events.ModifyEvent
+	 */
+	public static const int Modify = 24;
+
+	/**
+	 * The verify event type (value is 25).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Combo#addVerifyListener
+	 * @see org.eclipse.swt.widgets.Text#addVerifyListener
+	 * @see org.eclipse.swt.events.VerifyListener#verifyText
+	 * @see org.eclipse.swt.events.VerifyEvent
+	 */
+	public static const int Verify = 25;
+
+	/**
+	 * The activate event type (value is 26).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Shell#addShellListener
+	 * @see org.eclipse.swt.events.ShellListener#shellActivated
+	 * @see org.eclipse.swt.events.ShellEvent
+	 */
+	public static const int Activate = 26;
+
+	/**
+	 * The deactivate event type (value is 27).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Shell#addShellListener
+	 * @see org.eclipse.swt.events.ShellListener#shellDeactivated
+	 * @see org.eclipse.swt.events.ShellEvent
+	 */
+	public static const int Deactivate = 27;
+
+	/**
+	 * The help event type (value is 28).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addHelpListener
+	 * @see org.eclipse.swt.widgets.Menu#addHelpListener
+	 * @see org.eclipse.swt.widgets.MenuItem#addHelpListener
+	 * @see org.eclipse.swt.events.HelpListener#helpRequested
+	 * @see org.eclipse.swt.events.HelpEvent
+	 */
+	public static const int Help = 28;
+
+	/**
+	 * The drag detect event type (value is 29).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.dnd.DragSource
+	 */
+	public static const int DragDetect = 29;
+
+	/**
+	 * The arm event type (value is 30).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.MenuItem#addArmListener
+	 * @see org.eclipse.swt.events.ArmListener#widgetArmed
+	 * @see org.eclipse.swt.events.ArmEvent
+	 */
+	public static const int Arm = 30;
+
+	/**
+	 * The traverse event type (value is 31).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addTraverseListener
+	 * @see org.eclipse.swt.events.TraverseListener#keyTraversed
+	 * @see org.eclipse.swt.events.TraverseEvent
+	 */
+	public static const int Traverse = 31;
+
+	/**
+	 * The mouse hover event type (value is 32).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Control#addMouseTrackListener
+	 * @see org.eclipse.swt.events.MouseTrackListener#mouseHover
+	 * @see org.eclipse.swt.events.MouseEvent
+	 */
+	public static const int MouseHover = 32;
+
+	/**
+	 * The hardware key down event type (value is 33).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 */
+	public static const int HardKeyDown = 33;
+
+	/**
+	 * The hardware key up event type (value is 34).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 */
+	public static const int HardKeyUp = 34;
+
+	/**
+	 * The menu detect event type (value is 35).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @since 3.0
+	 */
+	public static const int MenuDetect = 35;
+
+	/**
+	 * The set data event type (value is 36).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @see org.eclipse.swt.widgets.Table
+	 * @see org.eclipse.swt.widgets.Tree
+	 *
+	 * @since 3.0
+	 */
+	public static const int SetData = 36;
+
+	/**
+	 * The mouse wheel event type (value is 37).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.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 org.eclipse.swt.widgets.Display#addListener
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @since 3.2
+	 */
+	public static const int Settings = 39;
+
+	/**
+	 * The erase item event type (value is 40).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @since 3.2
+	 */
+	public static const int EraseItem = 40;
+
+	/**
+	 * The measure item event type (value is 41).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @since 3.2
+	 */
+	public static const int MeasureItem = 41;
+
+	/**
+	 * The paint item event type (value is 42).
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#addListener
+	 * @see org.eclipse.swt.widgets.Display#addFilter
+	 * @see org.eclipse.swt.widgets.Event
+	 *
+	 * @since 3.2
+	 */
+	public static const int PaintItem = 42;
+
+	/* Event Details */
+
+	/**
+	 * 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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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 bordered behavior (value is 1&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;19).
+	 * <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_FOCUS = 1 << 19;
+
+	/**
+	 * Style constant for no redraw on resize behavior (value is 1&lt;&lt;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 SWT.Paint event is not sent. When it gets bigger, an SWT.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.
+	 * </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&lt;&lt;21).
+	 * <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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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 align up behavior (value is 1&lt;&lt;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>
+	 * </ul></p>
+	 */
+	public static const int UP = 1 << 7;
+
+	/**
+	 * Style constant for align top behavior (value is 1&lt;&lt;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&lt;&lt;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>
+	 * </ul></p>
+	 */
+	public static const int DOWN               = 1 << 10;
+
+	/**
+	 * Style constant for align bottom behavior (value is 1&lt;&lt;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&lt;&lt;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&lt;&lt;14).
+	 * This is a synonym for LEAD (value is 1&lt;&lt;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&lt;&lt;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&lt;&lt;17).
+	 * This is a synonym for TRAIL (value is 1&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;1).
+	 */
+	public static const int DBCS = 1 << 1;
+
+	/**
+	 * Input Method Editor style constant for alpha
+	 * input behavior (value is 1&lt;&lt;2).
+	 */
+	public static const int ALPHA = 1 << 2;
+
+	/**
+	 * Input Method Editor style constant for native
+	 * input behavior (value is 1&lt;&lt;3).
+	 */
+	public static const int NATIVE = 1 << 3;
+
+	/**
+	 * Input Method Editor style constant for phonetic
+	 * input behavior (value is 1&lt;&lt;4).
+	 */
+	public static const int PHONETIC = 1 << 4;
+
+	/**
+	 * Input Method Editor style constant for romanicized
+	 * input behavior (value is 1&lt;&lt;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 const char BS = '\b';
+
+	/**
+	 * ASCII character convenience constant for the carriage return character
+	 * (value is the <code>char</code> '\r').
+	 */
+	public static const char CR = '\r';
+
+	/**
+	 * ASCII character convenience constant for the delete character
+	 * (value is the <code>char</code> with value 127).
+	 */
+	public static const char DEL = 0x7F;
+
+	/**
+	 * ASCII character convenience constant for the escape character
+	 * (value is the <code>char</code> with value 27).
+	 */
+	public static const char ESC = 0x1B;
+
+	/**
+	 * ASCII character convenience constant for the line feed character
+	 * (value is the <code>char</code> '\n').
+	 */
+	public static const char LF = '\n';
+
+	/**
+	 * ASCII character convenience constant for the tab character
+	 * (value is the <code>char</code> '\t').
+	 *
+	 * @since 2.1
+	 */
+	public static const 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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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 & SWT.MODIFIER_MASK) != 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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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 & SWT.BUTTON_MASK) != 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>((SWT.MOD1 | SWT.MOD2 | 'T') & SWT.KEYCODE_BIT) != 0</code>.
+	 *
+	 * The following expression is true:
+	 *
+	 * <code>((SWT.MOD3 | SWT.F2) & SWT.KEYCODE_BIT) != 0</code>.
+	 *
+	 * (value is (1&lt;&lt;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&lt;&lt;24)+1).
+	 */
+	public static const int ARROW_UP = KEYCODE_BIT + 1;
+
+	/**
+	 * Keyboard event constant representing the DOWN ARROW key
+	 * (value is (1&lt;&lt;24)+2).
+	 */
+	public static const int ARROW_DOWN = KEYCODE_BIT + 2;
+
+	/**
+	 * Keyboard event constant representing the LEFT ARROW key
+	 * (value is (1&lt;&lt;24)+3).
+	 */
+	public static const int ARROW_LEFT = KEYCODE_BIT + 3;
+
+	/**
+	 * Keyboard event constant representing the RIGHT ARROW key
+	 * (value is (1&lt;&lt;24)+4).
+	 */
+	public static const int ARROW_RIGHT = KEYCODE_BIT + 4;
+
+	/**
+	 * Keyboard event constant representing the PAGE UP key
+	 * (value is (1&lt;&lt;24)+5).
+	 */
+	public static const int PAGE_UP = KEYCODE_BIT + 5;
+
+	/**
+	 * Keyboard event constant representing the PAGE DOWN key
+	 * (value is (1&lt;&lt;24)+6).
+	 */
+	public static const int PAGE_DOWN = KEYCODE_BIT + 6;
+
+	/**
+	 * Keyboard event constant representing the HOME key
+	 * (value is (1&lt;&lt;24)+7).
+	 */
+	public static const int HOME = KEYCODE_BIT + 7;
+
+	/**
+	 * Keyboard event constant representing the END key
+	 * (value is (1&lt;&lt;24)+8).
+	 */
+	public static const int END = KEYCODE_BIT + 8;
+
+	/**
+	 * Keyboard event constant representing the INSERT key
+	 * (value is (1&lt;&lt;24)+9).
+	 */
+	public static const int INSERT = KEYCODE_BIT + 9;
+
+	/**
+	 * Keyboard event constant representing the F1 key
+	 * (value is (1&lt;&lt;24)+10).
+	 */
+	public static const int F1 = KEYCODE_BIT + 10;
+
+	/**
+	 * Keyboard event constant representing the F2 key
+	 * (value is (1&lt;&lt;24)+11).
+	 */
+	public static const int F2 = KEYCODE_BIT + 11;
+
+	/**
+	 * Keyboard event constant representing the F3 key
+	 * (value is (1&lt;&lt;24)+12).
+	 */
+	public static const int F3 = KEYCODE_BIT + 12;
+
+	/**
+	 * Keyboard event constant representing the F4 key
+	 * (value is (1&lt;&lt;24)+13).
+	 */
+	public static const int F4 = KEYCODE_BIT + 13;
+
+	/**
+	 * Keyboard event constant representing the F5 key
+	 * (value is (1&lt;&lt;24)+14).
+	 */
+	public static const int F5 = KEYCODE_BIT + 14;
+
+	/**
+	 * Keyboard event constant representing the F6 key
+	 * (value is (1&lt;&lt;24)+15).
+	 */
+	public static const int F6 = KEYCODE_BIT + 15;
+
+	/**
+	 * Keyboard event constant representing the F7 key
+	 * (value is (1&lt;&lt;24)+16).
+	 */
+	public static const int F7 = KEYCODE_BIT + 16;
+
+	/**
+	 * Keyboard event constant representing the F8 key
+	 * (value is (1&lt;&lt;24)+17).
+	 */
+	public static const int F8 = KEYCODE_BIT + 17;
+
+	/**
+	 * Keyboard event constant representing the F9 key
+	 * (value is (1&lt;&lt;24)+18).
+	 */
+	public static const int F9 = KEYCODE_BIT + 18;
+
+	/**
+	 * Keyboard event constant representing the F10 key
+	 * (value is (1&lt;&lt;24)+19).
+	 */
+	public static const int F10 = KEYCODE_BIT + 19;
+
+	/**
+	 * Keyboard event constant representing the F11 key
+	 * (value is (1&lt;&lt;24)+20).
+	 */
+	public static const int F11 = KEYCODE_BIT + 20;
+
+	/**
+	 * Keyboard event constant representing the F12 key
+	 * (value is (1&lt;&lt;24)+21).
+	 */
+	public static const int F12 = KEYCODE_BIT + 21;
+
+	/**
+	 * Keyboard event constant representing the F13 key
+	 * (value is (1&lt;&lt;24)+22).
+	 *
+	 * @since 3.0
+	 */
+	public static const int F13 = KEYCODE_BIT + 22;
+
+	/**
+	 * Keyboard event constant representing the F14 key
+	 * (value is (1&lt;&lt;24)+23).
+	 *
+	 * @since 3.0
+	 */
+	public static const int F14 = KEYCODE_BIT + 23;
+
+	/**
+	 * Keyboard event constant representing the F15 key
+	 * (value is (1&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;24)+80).
+	 *
+	 * @since 3.0
+	 */
+	public static const int KEYPAD_CR = KEYCODE_BIT + 80;
+
+	/**
+	 * Keyboard event constant representing the help
+	 * key (value is (1&lt;&lt;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 SWT.Help.
+	 *
+	 * @since 3.0
+	 *
+	 * @see SWT#Help
+	 */
+	public static const int HELP = KEYCODE_BIT + 81;
+
+	/**
+	 * Keyboard event constant representing the caps
+	 * lock key (value is (1&lt;&lt;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&lt;&lt;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&lt;&lt;24)+84).
+	 *
+	 * @since 3.0
+	 */
+	public static const int SCROLL_LOCK = KEYCODE_BIT + 84;
+
+	/**
+	 * Keyboard event constant representing the pause
+	 * key (value is (1&lt;&lt;24)+85).
+	 *
+	 * @since 3.0
+	 */
+	public static const int PAUSE = KEYCODE_BIT + 85;
+
+	/**
+	 * Keyboard event constant representing the break
+	 * key (value is (1&lt;&lt;24)+86).
+	 *
+	 * @since 3.0
+	 */
+	public static const int BREAK = KEYCODE_BIT + 86;
+
+	/**
+	 * Keyboard event constant representing the print screen
+	 * key (value is (1&lt;&lt;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&lt;&lt;1).
+	 */
+	public static const int ICON_INFORMATION = 1 << 1;
+
+	/**
+	 * The <code>MessageBox</code> style constant for question icon
+	 * behavior (value is 1&lt;&lt;2).
+	 */
+	public static const int ICON_QUESTION = 1 << 2;
+
+	/**
+	 * The <code>MessageBox</code> style constant for warning icon
+	 * behavior (value is 1&lt;&lt;3).
+	 */
+	public static const int ICON_WARNING = 1 << 3;
+
+	/**
+	 * The <code>MessageBox</code> style constant for "working" icon
+	 * behavior (value is 1&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;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&lt;&lt;11).
+	 */
+	public static const int	IGNORE = 1 << 11;
+
+	/**
+	 * The <code>FileDialog</code> style constant for open file dialog behavior
+	 * (value is 1&lt;&lt;12).
+	 */
+	public static const int OPEN = 1 << 12;
+
+	/**
+	 * The <code>FileDialog</code> style constant for save file dialog behavior
+	 * (value is 1&lt;&lt;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&lt;&lt;0).
+	 */
+	public static const int DRAW_TRANSPARENT = 1 << 0;
+
+	/**
+	 * Draw constant indicating whether the string drawing operation
+	 * should handle line-delimiters (value is 1&lt;&lt;1).
+	 */
+	public static const int DRAW_DELIMITER = 1 << 1;
+
+	/**
+	 * Draw constant indicating whether the string drawing operation
+	 * should expand TAB characters (value is 1&lt;&lt;2).
+	 */
+	public static const int DRAW_TAB = 1 << 2;
+
+	/**
+	 * Draw constant indicating whether the string drawing operation
+	 * should handle mnemonics (value is 1&lt;&lt;3).
+	 */
+	public static const int DRAW_MNEMONIC = 1 << 3;
+
+
+	/**
+	 * Selection constant indicating that a line delimiter should be
+	 * drawn (value is 1&lt;&lt;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&lt;&lt;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;
+
+	/**
+	 * SWT error constant indicating that no error number was specified
+	 * (value is 1).
+	 */
+	public static const int ERROR_UNSPECIFIED = 1;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT error constant indicating that no more callback resources are available
+	 * (value is 3).
+	 */
+	public static const int ERROR_NO_MORE_CALLBACKS = 3;
+
+	/**
+	 * SWT error constant indicating that a null argument was passed in
+	 * (value is 4).
+	 */
+	public static const int ERROR_NULL_ARGUMENT = 4;
+
+	/**
+	 * SWT error constant indicating that an invalid argument was passed in
+	 * (value is 5).
+	 */
+	public static const int ERROR_INVALID_ARGUMENT = 5;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT error constant indicating that the matrix is not invertible
+	 * (value is 10).
+	 *
+	 * @since 3.1
+	 */
+	public static const int ERROR_CANNOT_INVERT_MATRIX = 10;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT error constant indicating that the graphics library
+	 * is not available
+	 * (value is 16).
+	 */
+	public static const int ERROR_NO_GRAPHICS_LIBRARY = 16;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT error constant indicating that an attempt was made to
+	 * invoke an SWT 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;
+
+	/**
+	 * SWT error constant indicating that an attempt was made to
+	 * invoke an SWT operation using a widget which had already
+	 * been disposed
+	 * (value is 24).
+	 */
+	public static const int ERROR_WIDGET_DISPOSED = 24;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT error constant indicating that an input/output operation
+	 * failed during the execution of an SWT operation
+	 * (value is 39).
+	 */
+	public static const int ERROR_IO = 39;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT error constant indicating that an attempt was made
+	 * to subclass an SWT widget class without implementing the
+	 * <code>checkSubclass()</code> method
+	 * (value is 43).
+	 *
+	 * For additional information see the comment in
+	 * <code>Widget.checkSubclass()</code>.
+	 *
+	 * @see org.eclipse.swt.widgets.Widget#checkSubclass
+	 */
+	public static const int ERROR_INVALID_SUBCLASS = 43;
+
+	/**
+	 * SWT error constant indicating that an attempt was made to
+	 * invoke an SWT operation using a graphics object which had
+	 * already been disposed
+	 * (value is 44).
+	 */
+	public static const int ERROR_GRAPHIC_DISPOSED = 44;
+
+	/**
+	 * SWT error constant indicating that an attempt was made to
+	 * invoke an SWT operation using a device which had already
+	 * been disposed
+	 * (value is 45).
+	 */
+	public static const int ERROR_DEVICE_DISPOSED = 45;
+
+	/**
+	 * SWT error constant indicating that an exception happened
+	 * when executing a runnable
+	 * (value is 46).
+	 */
+	public static const int ERROR_FAILED_EXEC = 46;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * SWT 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;
+
+	/**
+	 * The font style constant indicating a normal weight, non-italic font
+	 * (value is 0).
+	 */
+	public static const int NORMAL = 0;
+
+	/**
+	 * The font style constant indicating a bold weight font
+	 * (value is 1&lt;&lt;0).
+	 */
+	public static const int BOLD = 1 << 0;
+
+	/**
+	 * The font style constant indicating an italic font
+	 * (value is 1&lt;&lt;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 org.eclipse.swt.graphics.GC#setLineCap(int)
+	 * @see org.eclipse.swt.graphics.GC#getLineCap()
+	 *
+	 * @since 3.1
+	 */
+	public static const int CAP_FLAT = 1;
+
+	/**
+	 * Line drawing style for rounded end caps (value is 2).
+	 *
+	 * @see org.eclipse.swt.graphics.GC#setLineCap(int)
+	 * @see org.eclipse.swt.graphics.GC#getLineCap()
+	 *
+	 * @since 3.1
+	 */
+	public static const int CAP_ROUND = 2;
+
+	/**
+	 * Line drawing style for square end caps (value is 3).
+	 *
+	 * @see org.eclipse.swt.graphics.GC#setLineCap(int)
+	 * @see org.eclipse.swt.graphics.GC#getLineCap()
+	 *
+	 * @since 3.1
+	 */
+	public static const int CAP_SQUARE = 3;
+
+	/**
+	 * Line drawing style for miter joins (value is 1).
+	 *
+	 * @see org.eclipse.swt.graphics.GC#setLineJoin(int)
+	 * @see org.eclipse.swt.graphics.GC#getLineJoin()
+	 *
+	 * @since 3.1
+	 */
+	public static const int JOIN_MITER = 1;
+
+	/**
+	 * Line drawing  style for rounded joins (value is 2).
+	 *
+	 * @see org.eclipse.swt.graphics.GC#setLineJoin(int)
+	 * @see org.eclipse.swt.graphics.GC#getLineJoin()
+	 *
+	 * @since 3.1
+	 */
+	public static const int JOIN_ROUND = 2;
+
+	/**
+	 * Line drawing style for bevel joins (value is 3).
+	 *
+	 * @see org.eclipse.swt.graphics.GC#setLineJoin(int)
+	 * @see org.eclipse.swt.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 org.eclipse.swt.graphics.GC#setLineDash(int[])
+	 * @see org.eclipse.swt.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&lt;&lt;0).
+	 */
+	public static const int TRANSPARENCY_ALPHA = 1 << 0;
+
+	/**
+	 * Image transparency constant indicating that the image
+	 * contains a transparency mask (value is 1&lt;&lt;1).
+	 */
+	public static const int TRANSPARENCY_MASK = 1 << 1;
+
+	/**
+	 * Image transparency constant indicating that the image
+	 * contains a transparent pixel (value is 1&lt;&lt;2).
+	 */
+	public static const int TRANSPARENCY_PIXEL = 1 << 2;
+
+	/**
+	 * The character movement type (value is 1&lt;&lt;0).
+	 * This constant is used to move a text offset over a character.
+	 *
+	 * @see org.eclipse.swt.graphics.TextLayout#getNextOffset(int, int)
+	 * @see org.eclipse.swt.graphics.TextLayout#getPreviousOffset(int, int)
+	 *
+	 * @since 3.0
+	 */
+	public static const int MOVEMENT_CHAR = 1 << 0;
+
+	/**
+	 * The cluster movement type (value is 1&lt;&lt;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 org.eclipse.swt.graphics.TextLayout#getNextOffset(int, int)
+	 * @see org.eclipse.swt.graphics.TextLayout#getPreviousOffset(int, int)
+	 *
+	 * @since 3.0
+	 */
+	public static const int MOVEMENT_CLUSTER = 1 << 1;
+
+	/**
+	 * The word movement type (value is 1&lt;&lt;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 org.eclipse.swt.graphics.TextLayout#getNextOffset(int, int)
+	 * @see org.eclipse.swt.graphics.TextLayout#getPreviousOffset(int, int)
+	 *
+	 * @since 3.0
+	 */
+	public static const int MOVEMENT_WORD = 1 << 2;
+
+	/**
+	 * The word end movement type (value is 1&lt;&lt;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 org.eclipse.swt.graphics.TextLayout#getNextOffset(int, int)
+	 * @see org.eclipse.swt.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&lt;&lt;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 org.eclipse.swt.graphics.TextLayout#getNextOffset(int, int)
+	 * @see org.eclipse.swt.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 SWT error code.
+ * @return a description of the error code.
+ *
+ * @see SWT
+ */
+static char[] 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$
+	}
+	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 char[] getMessage(char[] key) {
+	return Compatibility.getMessage(key);
+}
+++/
+/**
+ * Returns the SWT platform name.
+ * Examples: "win32", "motif", "gtk", "photon", "carbon"
+ *
+ * @return the SWT platform name
+ */
+public static char[] getPlatform () {
+	return Platform.PLATFORM;
+}
+
+/**
+ * Returns the SWT version number as an integer.
+ * Example: "SWT051" == 51
+ *
+ * @return the SWT version number
+ */
+public static int getVersion () {
+	return Library.SWT_VERSION;
+}
+
+/**
+ * Throws an appropriate exception based on the passed in error code.
+ *
+ * @param code the SWT 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 SWT to throw an exception.
+ * <p>
+ * In SWT, 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>org.eclipse.swt.SWTException (extends java.lang.RuntimeException)</dd>
+ * <dt>thrown whenever a recoverable error happens internally in SWT</dt>
+ * <dd>org.eclipse.swt.SWTError (extends java.lang.Error)</dd>
+ * <dt>thrown whenever a <b>non-recoverable</b> error happens internally in SWT</dt>
+ * </dl>
+ * This method provides the logic which maps between error codes
+ * and one of the above exceptions.
+ * </p>
+ *
+ * @param code the SWT error code.
+ * @param throwable the exception which caused the error to occur.
+ *
+ * @see SWTError
+ * @see SWTException
+ * @see IllegalArgumentException
+ */
+public static void error (int code, TracedException 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 SWT to throw an exception.
+ * <p>
+ * In SWT, 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>org.eclipse.swt.SWTException (extends java.lang.RuntimeException)</dd>
+ * <dt>thrown whenever a recoverable error happens internally in SWT</dt>
+ * <dd>org.eclipse.swt.SWTError (extends java.lang.Error)</dd>
+ * <dt>thrown whenever a <b>non-recoverable</b> error happens internally in SWT</dt>
+ * </dl>
+ * This method provides the logic which maps between error codes
+ * and one of the above exceptions.
+ * </p>
+ *
+ * @param code the SWT error code.
+ * @param throwable the exception which caused the error to occur.
+ * @param detail more information about error.
+ *
+ * @see SWTError
+ * @see SWTException
+ * @see IllegalArgumentException
+ *
+ * @since 3.0
+ */
+public static void error (int code, TracedException throwable, char[] detail) {
+
+	/*
+	* This code prevents the creation of "chains" of SWTErrors and
+	* SWTExceptions which in turn contain other SWTErrors and
+	* SWTExceptions 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 != SWT.ERROR_FAILED_EXEC) {
+		if (auto t = cast(SWTError)throwable) throw t;
+		if (auto t = cast(SWTException)throwable) throw t;
+	}
+
+	char[] message = findErrorText (code);
+	if (detail != 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);
+		}
+
+		/* SWT 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: {
+			SWTException exception = new SWTException (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
+
+		/* SWT 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: {
+			SWTError error = new SWTError (code, message);
+			error.throwable = throwable;
+			throw error;
+		}
+	}
+
+	/* Unknown/Undefined Error */
+	SWTError error = new SWTError (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.
+	*/
+	char[] platform = getPlatform ();
+	if ("carbon" == platform ) { //$NON-NLS-1$
+		MOD1 = COMMAND;
+		MOD2 = SHIFT;
+		MOD3 = ALT;
+		MOD4 = CONTROL;
+	} else {
+		MOD1 = CONTROL;
+		MOD2 = SHIFT;
+		MOD3 = ALT;
+		MOD4 = 0;
+	}
+}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org/eclipse/swt/SWTError.d	Sat Jan 05 00:29:12 2008 +0100
@@ -0,0 +1,154 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2005 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
+ *******************************************************************************/
+module org.eclipse.swt.SWTError;
+
+import org.eclipse.swt.SWT;
+
+import tango.core.Exception;
+import tango.io.Stdout;
+
+/**
+ * This error is thrown whenever an unrecoverable error
+ * occurs internally in SWT. The message text and error code
+ * provide a further description of the problem. The exception
+ * has a <code>throwable</code> field which holds the underlying
+ * throwable that caused the problem (if this information is
+ * available (i.e. it may be null)).
+ * <p>
+ * SWTErrors are thrown when something fails internally which
+ * either leaves SWT in an unknown state (eg. the o/s call to
+ * remove an item from a list returns an error code) or when SWT
+ * is left in a known-to-be-unrecoverable state (eg. it runs out
+ * of callback resources). SWTErrors should not occur in typical
+ * programs, although "high reliability" applications should
+ * still catch them.
+ * </p><p>
+ * This class also provides support methods used by SWT to match
+ * error codes to the appropriate exception class (SWTError,
+ * SWTException, or IllegalArgumentException) and to provide
+ * human readable strings for SWT error codes.
+ * </p>
+ *
+ * @see SWTException
+ * @see SWT#error(int)
+ */
+
+public class SWTError : PlatformException {
+    /**
+     * The SWT error code, one of SWT.ERROR_*.
+     */
+	public int code;
+
+	/**
+	 * The underlying throwable that caused the problem,
+	 * or null if this information is not available.
+	 */
+	public TracedException throwable;
+
+    //static final long serialVersionUID = 3833467327105808433L;
+
+/**
+ * Constructs a new instance of this class with its
+ * stack trace filled in. The error code is set to an
+ * unspecified value.
+ */
+public this () {
+	this (SWT.ERROR_UNSPECIFIED);
+}
+
+/**
+ * Constructs a new instance of this class with its
+ * stack trace and message filled in. The error code is
+ * set to an unspecified value.  Specifying <code>null</code>
+ * as the message is equivalent to specifying an empty string.
+ *
+ * @param message the detail message for the exception
+ */
+public this (char[] message) {
+	this (SWT.ERROR_UNSPECIFIED, message);
+}
+
+/**
+ * Constructs a new instance of this class with its
+ * stack trace and error code filled in.
+ *
+ * @param code the SWT error code
+ */
+public this (int code) {
+	this (code, SWT.findErrorText (code));
+}
+
+/**
+ * Constructs a new instance of this class with its
+ * stack trace, error code and message filled in.
+ * Specifying <code>null</code> as the message is
+ * equivalent to specifying an empty string.
+ *
+ * @param code the SWT error code
+ * @param message the detail message for the exception
+ */
+public this (int code, char[] message) {
+	super (message);
+	this.code = code;
+}
+
+/**
+ * Returns the underlying throwable that caused the problem,
+ * or null if this information is not available.
+ * <p>
+ * NOTE: This method overrides Throwable.getCause() that was
+ * added to JDK1.4. It is necessary to override this method
+ * in order for inherited printStackTrace() methods to work.
+ * </p>
+ * @return the underlying throwable
+ *
+ * @since 3.1
+ */
+public Exception getCause() {
+	return throwable;
+}
+
+/**
+ *  Returns the string describing this SWTError object.
+ *  <p>
+ *  It is combined with the message string of the Throwable
+ *  which caused this SWTError (if this information is available).
+ *  </p>
+ *  @return the error message string of this SWTError object
+ */
+public char[] getMessage () {
+	if (throwable is null)
+        return super.toString();
+	return super.toString () ~ " (" ~ throwable.toString () ~ ")"; //$NON-NLS-1$ //$NON-NLS-2$
+}
+
+/**
+ * Outputs a printable representation of this error's
+ * stack trace on the standard error stream.
+ * <p>
+ * Note: printStackTrace(PrintStream) and printStackTrace(PrintWriter)
+ * are not provided in order to maintain compatibility with CLDC.
+ * </p>
+ */
+public void printStackTrace () {
+    Stderr.formatln( "stacktrace follows (if feature compiled in)" );
+    foreach( msg; this ){
+        Stderr.formatln( "{}", msg );
+    }
+	if ( throwable !is null) {
+		Stderr.formatln ("*** Stack trace of contained error ***"); //$NON-NLS-1$
+        foreach( msg; throwable ){
+            Stderr.formatln( "{}", msg );
+        }
+	}
+}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org/eclipse/swt/SWTException.d	Sat Jan 05 00:29:12 2008 +0100
@@ -0,0 +1,146 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2005 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
+ *******************************************************************************/
+module org.eclipse.swt.SWTException;
+
+import org.eclipse.swt.SWT;
+
+import tango.core.Exception;
+import tango.io.Stdout;
+
+/**
+ * This runtime exception is thrown whenever a recoverable error
+ * occurs internally in SWT. The message text and error code
+ * provide a further description of the problem. The exception
+ * has a <code>throwable</code> field which holds the underlying
+ * exception that caused the problem (if this information is
+ * available (i.e. it may be null)).
+ * <p>
+ * SWTExceptions are thrown when something fails internally,
+ * but SWT is left in a known stable state (eg. a widget call
+ * was made from a non-u/i thread, or there is failure while
+ * reading an Image because the source file was corrupt).
+ * </p>
+ *
+ * @see SWTError
+ */
+
+public class SWTException : TracedException {
+	/**
+	 * The SWT error code, one of SWT.ERROR_*.
+	 */
+	public int code;
+
+	/**
+	 * The underlying throwable that caused the problem,
+	 * or null if this information is not available.
+	 */
+	public TracedException throwable;
+
+	//static final long serialVersionUID = 3257282552304842547L;
+
+/**
+ * Constructs a new instance of this class with its
+ * stack trace filled in. The error code is set to an
+ * unspecified value.
+ */
+public this () {
+	this (SWT.ERROR_UNSPECIFIED);
+}
+
+/**
+ * Constructs a new instance of this class with its
+ * stack trace and message filled in. The error code is
+ * set to an unspecified value.  Specifying <code>null</code>
+ * as the message is equivalent to specifying an empty string.
+ *
+ * @param message the detail message for the exception
+ */
+public this (char[] message) {
+	this (SWT.ERROR_UNSPECIFIED, message);
+}
+
+/**
+ * Constructs a new instance of this class with its
+ * stack trace and error code filled in.
+ *
+ * @param code the SWT error code
+ */
+public this (int code) {
+	this (code, SWT.findErrorText (code));
+}
+
+/**
+ * Constructs a new instance of this class with its
+ * stack trace, error code and message filled in.
+ * Specifying <code>null</code> as the message is
+ * equivalent to specifying an empty string.
+ *
+ * @param code the SWT error code
+ * @param message the detail message for the exception
+ */
+public this (int code, char[] message) {
+	super (message);
+	this.code = code;
+}
+
+/**
+ * Returns the underlying throwable that caused the problem,
+ * or null if this information is not available.
+ * <p>
+ * NOTE: This method overrides Throwable.getCause() that was
+ * added to JDK1.4. It is necessary to override this method
+ * in order for inherited printStackTrace() methods to work.
+ * </p>
+ * @return the underlying throwable
+ *
+ * @since 3.1
+ */
+public TracedException getCause() {
+	return throwable;
+}
+
+/**
+ *  Returns the string describing this SWTException object.
+ *  <p>
+ *  It is combined with the message string of the Throwable
+ *  which caused this SWTException (if this information is available).
+ *  </p>
+ *  @return the error message string of this SWTException object
+ */
+public char[] getMessage () {
+	if (throwable is null) return super.toString ();
+	return super.toString () ~ " (" ~ throwable.toString () ~ ")"; //$NON-NLS-1$ //$NON-NLS-2$
+}
+
+/**
+ * Outputs a printable representation of this exception's
+ * stack trace on the standard error stream.
+ * <p>
+ * Note: printStackTrace(PrintStream) and printStackTrace(PrintWriter)
+ * are not provided in order to maintain compatibility with CLDC.
+ * </p>
+ */
+public void printStackTrace () {
+    Stderr.formatln( "stacktrace follows (if feature compiled in)" );
+    foreach( msg; this ){
+        Stderr.formatln( "{}", msg );
+    }
+    if ( throwable !is null) {
+		Stderr.formatln ("*** Stack trace of contained exception ***"); //$NON-NLS-1$
+        foreach( msg; throwable ){
+            Stderr.formatln( "{}", msg );
+        }
+	}
+}
+
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org/eclipse/swt/internal/Compatibility.d	Sat Jan 05 00:29:12 2008 +0100
@@ -0,0 +1,348 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 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
+ *******************************************************************************/
+module org.eclipse.swt.internal.Compatibility;
+
+/+
+import java.io.*;
+import java.text.MessageFormat;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.zip.InflaterInputStream;
++/
+
+import Math = tango.math.Math;
+import Unicode = tango.text.Unicode;
+import tango.sys.Process;
+
+import org.eclipse.swt.SWT;
+
+/**
+ * This class is a placeholder for utility methods commonly
+ * used on J2SE platforms but not supported on some J2ME
+ * profiles.
+ * <p>
+ * It is part of our effort to provide support for both J2SE
+ * and J2ME platforms.
+ * </p>
+ * <p>
+ * IMPORTANT: some of the methods have been modified from their
+ * J2SE parents. Refer to the description of each method for
+ * specific changes.
+ * </p>
+ * <ul>
+ * <li>Exceptions thrown may differ since J2ME's set of
+ * exceptions is a subset of J2SE's one.
+ * </li>
+ * <li>The range of the mathematic functions is subject to
+ * change.
+ * </li>
+ * </ul>
+ */
+public final class Compatibility {
+
+/**
+ * Returns the PI constant as a double.
+ */
+public static const real PI = Math.PI;
+
+static const real toRadians = PI / 180;
+
+/**
+ * Answers the length of the side adjacent to the given angle
+ * of a right triangle. In other words, it returns the integer
+ * conversion of length * cos (angle).
+ * <p>
+ * IMPORTANT: the j2me version has an additional restriction on
+ * the argument. length must be between -32767 and 32767 (inclusive).
+ * </p>
+ *
+ * @param angle the angle in degrees
+ * @param length the length of the triangle's hypotenuse
+ * @return the integer conversion of length * cos (angle)
+ */
+public static int cos(int angle, int length) {
+	return cast(int)(Math.cos(angle * toRadians) * length);
+}
+
+/**
+ * Answers the length of the side opposite to the given angle
+ * of a right triangle. In other words, it returns the integer
+ * conversion of length * sin (angle).
+ * <p>
+ * IMPORTANT: the j2me version has an additional restriction on
+ * the argument. length must be between -32767 and 32767 (inclusive).
+ * </p>
+ *
+ * @param angle the angle in degrees
+ * @param length the length of the triangle's hypotenuse
+ * @return the integer conversion of length * sin (angle)
+ */
+public static int sin(int angle, int length) {
+	return cast(int)(Math.sin(angle * toRadians) * length);
+}
+
+/**
+ * Answers the most negative (i.e. closest to negative infinity)
+ * integer value which is greater than the number obtained by dividing
+ * the first argument p by the second argument q.
+ *
+ * @param p numerator
+ * @param q denominator (must be different from zero)
+ * @return the ceiling of the rational number p / q.
+ */
+public static int ceil(int p, int q) {
+	return cast(int)Math.ceil(cast(float)p / q);
+}
+
+/**
+ * Answers the most positive (i.e. closest to positive infinity)
+ * integer value which is less than the number obtained by dividing
+ * the first argument p by the second argument q.
+ *
+ * @param p numerator
+ * @param q denominator (must be different from zero)
+ * @return the floor of the rational number p / q.
+ */
+public static int floor(int p, int q) {
+	return cast(int)Math.floor(cast(double)p / q);
+}
+
+/**
+ * Answers the result of rounding to the closest integer the number obtained
+ * by dividing the first argument p by the second argument q.
+ * <p>
+ * IMPORTANT: the j2me version has an additional restriction on
+ * the arguments. p must be within the range 0 - 32767 (inclusive).
+ * q must be within the range 1 - 32767 (inclusive).
+ * </p>
+ *
+ * @param p numerator
+ * @param q denominator (must be different from zero)
+ * @return the closest integer to the rational number p / q
+ */
+public static int round(int p, int q) {
+	return cast(int)Math.round(cast(float)p / q);
+}
+
+/**
+ * Returns 2 raised to the power of the argument.
+ *
+ * @param n an int value between 0 and 30 (inclusive)
+ * @return 2 raised to the power of the argument
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_INVALID_RANGE - if the argument is not between 0 and 30 (inclusive)</li>
+ * </ul>
+ */
+public static int pow2(int n) {
+	if (n >= 1 && n <= 30)
+		return 2 << (n - 1);
+	else if (n != 0) {
+		SWT.error(SWT.ERROR_INVALID_RANGE);
+	}
+	return 1;
+}
+/++
+/**
+ * Open a file if such things are supported.
+ *
+ * @param filename the name of the file to open
+ * @return a stream on the file if it could be opened.
+ * @exception IOException
+ */
+public static InputStream newFileInputStream(String filename) throws IOException {
+	return new FileInputStream(filename);
+}
+
+/**
+ * Open a file if such things are supported.
+ *
+ * @param filename the name of the file to open
+ * @return a stream on the file if it could be opened.
+ * @exception IOException
+ */
+public static OutputStream newFileOutputStream(String filename) throws IOException {
+	return new FileOutputStream(filename);
+}
+
+/**
+ * Create an InflaterInputStream if such things are supported.
+ *
+ * @param stream the input stream
+ * @return a inflater stream or <code>null</code>
+ * @exception IOException
+ *
+ * @since 3.3
+ */
+public static InputStream newInflaterInputStream(InputStream stream) throws IOException {
+	return new InflaterInputStream(stream);
+}
+++/
+/**
+ * Answers whether the character is a letter.
+ *
+ * @param c the character
+ * @return true when the character is a letter
+ */
+public static bool isLetter(dchar c) {
+	return Unicode.isLetter(c);
+}
+
+/**
+ * Answers whether the character is a letter or a digit.
+ *
+ * @param c the character
+ * @return true when the character is a letter or a digit
+ */
+public static bool isLetterOrDigit(dchar c) {
+	return Unicode.isLetterOrDigit(c);
+}
+
+/**
+ * Answers whether the character is a Unicode space character.
+ *
+ * @param c	 the character
+ * @return true when the character is a Unicode space character
+ */
+public static bool isSpaceChar(dchar c) {
+	return Unicode.isSpace(c);
+}
+
+/**
+ * Answers whether the character is a whitespace character.
+ *
+ * @param c the character to test
+ * @return true if the character is whitespace
+ */
+public static bool isWhitespace(dchar c) {
+	return Unicode.isWhitespace(c);
+}
+
+/**
+ * Execute a program in a separate platform process if the
+ * underlying platform support this.
+ * <p>
+ * The new process inherits the environment of the caller.
+ * </p>
+ *
+ * @param prog the name of the program to execute
+ *
+ * @exception ProcessException
+ *  if the program cannot be executed
+ */
+public static void exec(char[] prog) {
+    auto proc = new Process( prog );
+    proc.execute;
+}
+
+/**
+ * Execute progArray[0] in a separate platform process if the
+ * underlying platform support this.
+ * <p>
+ * The new process inherits the environment of the caller.
+ * <p>
+ *
+ * @param progArray array containing the program to execute and its arguments
+ *
+ * @exception ProcessException
+ *  if the program cannot be executed
+ */
+public static void exec(char[][] progArray) {
+    auto proc = new Process( progArray );
+    proc.execute;
+}
+/++ PORTING_LEFT
+private static ResourceBundle msgs = null;
+
+/**
+ * Returns the NLS'ed message for the given argument. This is only being
+ * called from SWT.
+ *
+ * @param key the key to look up
+ * @return the message for the given key
+ *
+ * @see SWT#getMessage(String)
+ */
+public static String getMessage(String key) {
+	String answer = key;
+
+	if (key == null) {
+		SWT.error (SWT.ERROR_NULL_ARGUMENT);
+	}
+	if (msgs == null) {
+		try {
+			msgs = ResourceBundle.getBundle("org.eclipse.swt.internal.SWTMessages"); //$NON-NLS-1$
+		} catch (MissingResourceException ex) {
+			answer = key + " (no resource bundle)"; //$NON-NLS-1$
+		}
+	}
+	if (msgs != null) {
+		try {
+			answer = msgs.getString(key);
+		} catch (MissingResourceException ex2) {}
+	}
+	return answer;
+}
+
+public static String getMessage(String key, Object[] args) {
+	String answer = key;
+
+	if (key == null || args == null) {
+		SWT.error (SWT.ERROR_NULL_ARGUMENT);
+	}
+	if (msgs == null) {
+		try {
+			msgs = ResourceBundle.getBundle("org.eclipse.swt.internal.SWTMessages"); //$NON-NLS-1$
+		} catch (MissingResourceException ex) {
+			answer = key + " (no resource bundle)"; //$NON-NLS-1$
+		}
+	}
+	if (msgs != null) {
+		try {
+			MessageFormat formatter = new MessageFormat("");
+			formatter.applyPattern(msgs.getString(key));
+			answer = formatter.format(args);
+		} catch (MissingResourceException ex2) {}
+	}
+	return answer;
+}
+
+/**
+ * Interrupt the current thread.
+ * <p>
+ * Note that this is not available on CLDC.
+ * </p>
+ */
+public static void interrupt() {
+	Thread.currentThread().interrupt();
+}
+++/
+/**
+ * Compares two instances of class String ignoring the case of the
+ * characters and answers if they are equal.
+ *
+ * @param s1 string
+ * @param s2 string
+ * @return true if the two instances of class String are equal
+ */
+public static bool equalsIgnoreCase(char[] s1, char[] s2) {
+    char[] s1b = new char[ s1.length ];
+    char[] s2b = new char[ s1.length ];
+    scope(exit){
+        delete s1b;
+        delete s2b;
+    }
+    char[] s1c = Unicode.toFold( s1, s1b );
+    char[] s2c = Unicode.toFold( s2, s2b );
+	return s1c == s2c;
+}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org/eclipse/swt/internal/Converter.d	Sat Jan 05 00:29:12 2008 +0100
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2004 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
+ *******************************************************************************/
+module org.eclipse.swt.internal.Converter;
+
+
+//import org.eclipse.swt.internal.gtk.OS;
+import tango.stdc.stringz;
+
+extern(C) {
+    struct GError{};
+    char*     g_utf16_to_utf8     ( wchar  *str,
+                    int             len,
+                    int             *items_read,
+                    int             *items_written,
+                    GError          **error);
+    wchar* g_utf8_to_utf16     ( char      *str,
+                    int              len,
+                    int             *items_read,
+                    int             *items_written,
+                    GError          **error);
+    void g_free (void* ptr );
+}
+
+/**
+ * This class implements the conversions between unicode characters
+ * and the <em>platform supported</em> representation for characters.
+ * <p>
+ * Note that, unicode characters which can not be found in the platform
+ * encoding will be converted to an arbitrary platform specific character.
+ * </p>
+ */
+public final class Converter {
+	public static const char  [] NullByteArray = "\0";
+	public static const char  [] EmptyByteArray = "";
+	public static const wchar [] EmptyCharArray = "";
+
+/**
+ * Returns the default code page for the platform where the
+ * application is currently running.
+ *
+ * @return the default code page
+ */
+public static char[] defaultCodePage () {
+	return "UTF8";
+}
+
+public static wchar [] mbcsToWcs (char[] codePage, char [] buffer) {
+	int items_written;
+	wchar* ptr = g_utf8_to_utf16 (toStringz(buffer), buffer.length, null, &items_written, null);
+	if (!ptr){
+        return EmptyCharArray;
+    }
+    wchar[] chars = ptr[ 0 .. items_written].dup;
+	g_free (ptr);
+	return chars;
+}
+
+/+
+public static char [] wcsToMbcs (char[] codePage, String str, bool terminate) {
+	int length = str.length ();
+	wchar [] buffer = new wchar [length];
+	string.getChars (0, length, buffer, 0);
+	return wcsToMbcs (codePage, buffer, terminate);
+}
++/
+
+public static char [] wcsToMbcs (char[] codePage, wchar [] buffer, bool terminate) {
+	int items_read, items_written;
+	/*
+	* Note that g_utf16_to_utf8()  stops converting
+	* when it finds the first NULL.
+	*/
+	char* ptr = g_utf16_to_utf8 (toString16z(buffer), buffer.length, & items_read, & items_written, null);
+	if (!ptr) {
+        return terminate ? NullByteArray : EmptyByteArray;
+    }
+	char [] bytes = new char [items_written + (terminate ? 1 : 0)];
+    bytes[ 0 .. items_written ] = ptr[ 0 .. items_written ];
+    if( terminate ){
+        bytes[ items_written ] = 0;
+    }
+	g_free (ptr);
+	return bytes;
+}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org/eclipse/swt/internal/LONG.d	Sat Jan 05 00:29:12 2008 +0100
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * 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
+ *******************************************************************************/
+module org.eclipse.swt.internal.LONG;
+
+public class LONG {
+	public int /*long*/ value;
+
+	public this (int /*long*/ value) {
+		this.value = value;
+	}
+
+	public int opEquals (Object object) {
+		if (object is this){
+            return true;
+        }
+		if ( auto obj = cast(LONG)object ) {
+            return obj.value == this.value;
+        }
+        return false;
+	}
+
+	public int hashCode () {
+		return /*64*/value;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org/eclipse/swt/internal/Library.d	Sat Jan 05 00:29:12 2008 +0100
@@ -0,0 +1,232 @@
+/*******************************************************************************
+ * 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
+ *******************************************************************************/
+module org.eclipse.swt.internal.Library;
+
+import tango.util.Convert;
+
+public class Library {
+
+	/* SWT Version - Mmmm (M=major, mmm=minor) */
+
+	/**
+	 * SWT Major version number (must be >= 0)
+	 */
+    static const int MAJOR_VERSION = 3;
+
+	/**
+	 * SWT Minor version number (must be in the range 0..999)
+	 */
+    static const int MINOR_VERSION = 346;
+
+	/**
+	 * SWT revision number (must be >= 0)
+	 */
+	static const int REVISION = 0;
+
+	/**
+	 * The JAVA and SWT versions
+	 */
+	//public static const int JAVA_VERSION;
+    public static const int SWT_VERSION;
+
+    version( linux ){
+        static const char[] SEPARATOR = "\n";
+    }
+    else {
+        static assert( false, "only linux supported for this port" );
+    }
+
+
+static this(){
+	//SEPARATOR = System.getProperty("file.separator");
+	//JAVA_VERSION = parseVersion(System.getProperty("java.version"));
+	SWT_VERSION = buildSWT_VERSION(MAJOR_VERSION, MINOR_VERSION);
+}
+
+static int parseVersion(char[] aVersion) {
+	if (aVersion == null) return 0;
+	int major = 0, minor = 0, micro = 0;
+	int length = aVersion.length, index = 0, start = 0;
+    bool isDigit( char c ){
+        return c >= '0' && c <= '9';
+    }
+	while (index < length && isDigit(aVersion[index])) index++;
+	try {
+		if (start < length) major = to!(int)( aVersion[start .. index] );
+	} catch (ConversionException e) {}
+	start = ++index;
+	while (index < length && isDigit(aVersion[index])) index++;
+	try {
+		if (start < length) minor = to!(int)(aVersion[start .. index]);
+	} catch (ConversionException e) {}
+	start = ++index;
+	while (index < length && isDigit(aVersion[index])) index++;
+	try {
+		if (start < length) micro = to!(int)(aVersion[start .. index]);
+	} catch (ConversionException e) {}
+	return buildJAVA_VERSION(major, minor, micro);
+}
+
+/**
+ * Returns the Java version number as an integer.
+ *
+ * @param major
+ * @param minor
+ * @param micro
+ * @return the version
+ */
+public static int buildJAVA_VERSION (int major, int minor, int micro) {
+	return (major << 16) + (minor << 8) + micro;
+}
+
+/**
+ * Returns the SWT version number as an integer.
+ *
+ * @param major
+ * @param minor
+ * @return the version
+ */
+public static int buildSWT_VERSION (int major, int minor) {
+	return major * 1000 + minor;
+}
+/+ PORTING_LEFT
+static bool extract (char[] fileName, char[] mappedName) {
+	FileOutputStream os = null;
+	InputStream is = null;
+	File file = new File(fileName);
+	try {
+		if (!file.exists ()) {
+			is = Library.class.getResourceAsStream ("/" + mappedName); //$NON-NLS-1$
+			if (is != null) {
+				int read;
+				byte [] buffer = new byte [4096];
+				os = new FileOutputStream (fileName);
+				while ((read = is.read (buffer)) != -1) {
+					os.write(buffer, 0, read);
+				}
+				os.close ();
+				is.close ();
+				if (!Platform.PLATFORM.equals ("win32")) { //$NON-NLS-1$
+					try {
+						Runtime.getRuntime ().exec (new String []{"chmod", "755", fileName}).waitFor(); //$NON-NLS-1$ //$NON-NLS-2$
+					} catch (Throwable e) {}
+				}
+				if (load (fileName)) return true;
+			}
+		}
+	} catch (Throwable e) {
+		try {
+			if (os != null) os.close ();
+		} catch (IOException e1) {}
+		try {
+			if (is != null) is.close ();
+		} catch (IOException e1) {}
+	}
+	if (file.exists ()) file.delete ();
+	return false;
+}
+
+static bool load (char[] libName) {
+	try {
+		if (libName.indexOf (SEPARATOR) != -1) {
+			System.load (libName);
+		} else {
+			System.loadLibrary (libName);
+		}
+		return true;
+	} catch (UnsatisfiedLinkError e) {}
+	return false;
+}
+
+/**
+ * Loads the shared library that matches the version of the
+ * Java code which is currently running.  SWT shared libraries
+ * follow an encoding scheme where the major, minor and revision
+ * numbers are embedded in the library name and this along with
+ * <code>name</code> is used to load the library.  If this fails,
+ * <code>name</code> is used in another attempt to load the library,
+ * this time ignoring the SWT version encoding scheme.
+ *
+ * @param name the name of the library to load
+ */
+public static void loadLibrary (char[] name) {
+	loadLibrary (name, true);
+}
+
+/**
+ * Loads the shared library that matches the version of the
+ * Java code which is currently running.  SWT shared libraries
+ * follow an encoding scheme where the major, minor and revision
+ * numbers are embedded in the library name and this along with
+ * <code>name</code> is used to load the library.  If this fails,
+ * <code>name</code> is used in another attempt to load the library,
+ * this time ignoring the SWT version encoding scheme.
+ *
+ * @param name the name of the library to load
+ * @param mapName true if the name should be mapped, false otherwise
+ */
+public static void loadLibrary (char[] name, boolean mapName) {
+
+	/* Compute the library name and mapped name */
+	String libName1, libName2, mappedName1, mappedName2;
+	if (mapName) {
+		String version = System.getProperty ("swt.version"); //$NON-NLS-1$
+		if (version == null) {
+			version = "" + MAJOR_VERSION; //$NON-NLS-1$
+			/* Force 3 digits in minor version number */
+			if (MINOR_VERSION < 10) {
+				version += "00"; //$NON-NLS-1$
+			} else {
+				if (MINOR_VERSION < 100) version += "0"; //$NON-NLS-1$
+			}
+			version += MINOR_VERSION;
+			/* No "r" until first revision */
+			if (REVISION > 0) version += "r" + REVISION; //$NON-NLS-1$
+		}
+		libName1 = name + "-" + Platform.PLATFORM + "-" + version;  //$NON-NLS-1$ //$NON-NLS-2$
+		libName2 = name + "-" + Platform.PLATFORM;  //$NON-NLS-1$
+		mappedName1 = System.mapLibraryName (libName1);
+		mappedName2 = System.mapLibraryName (libName2);
+	} else {
+		libName1 = libName2 = mappedName1 = mappedName2 = name;
+	}
+
+	/* Try loading library from swt library path */
+	String path = System.getProperty ("swt.library.path"); //$NON-NLS-1$
+	if (path != null) {
+		path = new File (path).getAbsolutePath ();
+		if (load (path + SEPARATOR + mappedName1)) return;
+		if (mapName && load (path + SEPARATOR + mappedName2)) return;
+	}
+
+	/* Try loading library from java library path */
+	if (load (libName1)) return;
+	if (mapName && load (libName2)) return;
+
+	/* Try loading library from the tmp directory if swt library path is not specified */
+	if (path == null) {
+		path = System.getProperty ("java.io.tmpdir"); //$NON-NLS-1$
+		path = new File (path).getAbsolutePath ();
+		if (load (path + SEPARATOR + mappedName1)) return;
+		if (mapName && load (path + SEPARATOR + mappedName2)) return;
+	}
+
+	/* Try extracting and loading library from jar */
+	if (path != null) {
+		if (extract (path + SEPARATOR + mappedName1, mappedName1)) return;
+		if (mapName && extract (path + SEPARATOR + mappedName2, mappedName2)) return;
+	}
+
+	/* Failed to find the library */
+	throw new UnsatisfiedLinkError ("no " + libName1 + " or " + libName2 + " in swt.library.path, java.library.path or the jar file"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+}
++/
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org/eclipse/swt/internal/Lock.d	Sat Jan 05 00:29:12 2008 +0100
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2005 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
+ *******************************************************************************/
+module org.eclipse.swt.internal.Lock;
+
+import tango.core.Thread;
+import tango.core.sync.Mutex;
+import tango.core.sync.Condition;
+
+/**
+ * Instance of this represent a recursive monitor.
+ */
+public class Lock {
+	int count, waitCount;
+	Thread owner;
+    Mutex mutex;
+    Condition cond;
+
+    public this(){
+        mutex = new Mutex;
+        cond = new Condition(mutex);
+    }
+/**
+ * Locks the monitor and returns the lock count. If
+ * the lock is owned by another thread, wait until
+ * the lock is released.
+ *
+ * @return the lock count
+ */
+public int lock() {
+	synchronized (mutex) {
+		Thread current = Thread.getThis();
+		if (owner != current) {
+			waitCount++;
+			while (count > 0) {
+				try {
+					cond.wait();
+				} catch (SyncException e) {
+					/* Wait forever, just like synchronized blocks */
+				}
+			}
+			--waitCount;
+			owner = current;
+		}
+		return ++count;
+	}
+}
+
+/**
+ * Unlocks the monitor. If the current thread is not
+ * the monitor owner, do nothing.
+ */
+public void unlock() {
+	synchronized (mutex) {
+		Thread current = Thread.getThis();
+		if (owner == current) {
+			if (--count == 0) {
+				owner = null;
+				if (waitCount > 0) cond.notifyAll();
+			}
+		}
+	}
+}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org/eclipse/swt/internal/Platform.d	Sat Jan 05 00:29:12 2008 +0100
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2007 IBM Corporation and others. All rights reserved.
+ * The contents of this file are made available under the terms
+ * of the GNU Lesser General Public License (LGPL) Version 2.1 that
+ * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
+ * available at http://www.gnu.org/licenses/lgpl.html.  If the version
+ * of the LGPL at http://www.gnu.org is different to the version of
+ * the LGPL accompanying this distribution and there is any conflict
+ * between the two license versions, the terms of the LGPL accompanying
+ * this distribution shall govern.
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+module org.eclipse.swt.internal.Platform;
+
+import org.eclipse.swt.internal.Lock;
+
+public class Platform {
+	public static const char[] PLATFORM = "gtk"; //$NON-NLS-1$
+	public static const Lock lock;
+    static this(){
+        lock = new Lock();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org/eclipse/swt/internal/SWTMessages.properties	Sat Jan 05 00:29:12 2008 +0100
@@ -0,0 +1,73 @@
+###############################################################################
+# Copyright (c) 2000, 2006 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
+###############################################################################
+SWT_Yes=Yes
+SWT_No=No
+SWT_OK=OK
+SWT_Cancel=Cancel
+SWT_Abort=Abort
+SWT_Retry=Retry
+SWT_Ignore=Ignore
+SWT_Sample=Sample
+SWT_A_Sample_Text=A Sample Text
+SWT_Selection=Selection
+SWT_Current_Selection=Current Selection
+SWT_Font=Font
+SWT_Color=Color
+SWT_Extended_style=Extended style
+SWT_Size=Size
+SWT_Style=Style
+SWT_Save=Save
+SWT_Character_set=Character set
+SWT_ColorDialog_Title=Colors
+SWT_FontDialog_Title=Fonts
+SWT_FontSet=Font Set
+SWT_NewFont=New Font
+SWT_Remove=Remove
+SWT_Up=Up
+SWT_Down=Down
+SWT_Selection=Selection
+SWT_Charset_Western=western
+SWT_Charset_EastEuropean=eastern
+SWT_Charset_SouthEuropean=southern
+SWT_Charset_NorthEuropean=northern
+SWT_Charset_Cyrillic=cyrillic
+SWT_Charset_Arabic=arabic
+SWT_Charset_Greek=greek
+SWT_Charset_Hebrew=hebrew
+SWT_Charset_Turkish=turkish
+SWT_Charset_Nordic=nordic
+SWT_Charset_Thai=thai
+SWT_Charset_BalticRim=baltic rim
+SWT_Charset_Celtic=celtic
+SWT_Charset_Euro=euro
+SWT_Charset_Romanian=romanian
+SWT_Charset_SimplifiedChinese=simp. chinese
+SWT_Charset_TraditionalChinese=trad. chinese
+SWT_Charset_Japanese=japanese
+SWT_Charset_Korean=korean
+SWT_Charset_Unicode=unicode
+SWT_Charset_ASCII=ASCII
+SWT_InputMethods=Input Methods
+SWT_Password=Password:
+SWT_Username=User Name:
+SWT_Switch=Switch
+SWT_Press=Press
+SWT_Open=Open
+SWT_Close=Close
+SWT_Minimize=Minimize
+SWT_Maximize=Maximize
+SWT_Restore=Restore
+SWT_ShowList=Show List
+SWT_FileDownload=File Download
+SWT_Download_File=Download: {0}
+SWT_Download_Location=Saving {0} from {1}
+SWT_Download_Started=Downloading...
+SWT_Download_Status=Download: {0,number,integer} KB of {1,number,integer} KB