Mercurial > projects > dwt-addons
annotate dwtx/jface/window/Window.d @ 40:da5ad8eedf5d
debug prints, dwt.dwthelper restructure, ...
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Thu, 10 Apr 2008 08:59:39 +0200 |
parents | e10d9c2648be |
children | 46a6e0e6ccd4 |
rev | line source |
---|---|
7
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1 /******************************************************************************* |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2 * Copyright (c) 2000, 2006 IBM Corporation and others. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3 * All rights reserved. This program and the accompanying materials |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4 * are made available under the terms of the Eclipse Public License v1.0 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5 * which accompanies this distribution, and is available at |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6 * http://www.eclipse.org/legal/epl-v10.html |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8 * Contributors: |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
9 * IBM Corporation - initial API and implementation |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
10 * Port to the D programming language: |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
11 * Frank Benoit <benoit@tionex.de> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 *******************************************************************************/ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
13 module dwtx.jface.window.Window; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
14 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
15 import dwtx.jface.window.IShellProvider; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
16 import dwtx.jface.window.WindowManager; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
17 import dwtx.jface.window.SameShellProvider; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
18 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
19 import tango.util.collection.ArraySeq; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
20 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
21 import dwt.DWT; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
22 import dwt.events.ShellAdapter; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
23 import dwt.events.ShellEvent; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
24 import dwt.events.ShellListener; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
25 import dwt.graphics.Image; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
26 import dwt.graphics.Point; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
27 import dwt.graphics.Rectangle; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
28 import dwt.layout.GridLayout; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
29 import dwt.widgets.Composite; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
30 import dwt.widgets.Control; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
31 import dwt.widgets.Display; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
32 import dwt.widgets.Event; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
33 import dwt.widgets.Layout; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
34 import dwt.widgets.Listener; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
35 import dwt.widgets.Monitor; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
36 import dwt.widgets.Shell; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
37 import dwtx.core.runtime.Assert; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
38 import dwtx.jface.resource.JFaceResources; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
39 import dwtx.jface.util.Geometry; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
40 import dwtx.jface.util.IPropertyChangeListener; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
41 import dwtx.jface.util.PropertyChangeEvent; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
42 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
43 import dwt.dwthelper.utils; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
44 import tango.io.Stdout; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
45 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
46 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
47 * A JFace window is an object that has no visual representation (no widgets) |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
48 * until it is told to open. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
49 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
50 * Creating a window involves the following steps: |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
51 * <ul> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
52 * <li>creating an instance of a concrete subclass of <code>Window</code> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
53 * </li> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
54 * <li>creating the window's shell and widget tree by calling |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
55 * <code>create</code> (optional)</li> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
56 * <li>assigning the window to a window manager using |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
57 * <code>WindowManager.add</code> (optional)</li> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
58 * <li>opening the window by calling <code>open</code></li> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
59 * </ul> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
60 * Opening the window will create its shell and widget tree if they have not |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
61 * already been created. When the window is closed, the shell and widget tree |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
62 * are disposed of and are no longer referenced, and the window is automatically |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
63 * removed from its window manager. A window may be reopened. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
64 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
65 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
66 * The JFace window framework (this package) consists of this class, |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
67 * <code>Window</code>, the abstract base of all windows, and one concrete |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
68 * window classes (<code>ApplicationWindow</code>) which may also be |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
69 * subclassed. Clients may define additional window subclasses as required. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
70 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
71 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
72 * The <code>Window</code> class provides methods that subclasses may |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
73 * override to configure the window, including: |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
74 * <ul> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
75 * <li><code>close</code>- extend to free other DWT resources</li> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
76 * <li><code>configureShell</code>- extend or reimplement to set shell |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
77 * properties before window opens</li> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
78 * <li><code>createContents</code>- extend or reimplement to create controls |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
79 * before window opens</li> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
80 * <li><code>getInitialSize</code>- reimplement to give the initial size for |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
81 * the shell</li> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
82 * <li><code>getInitialLocation</code>- reimplement to give the initial |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
83 * location for the shell</li> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
84 * <li><code>getShellListener</code>- extend or reimplement to receive shell |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
85 * events</li> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
86 * <li><code>handleFontChange</code>- reimplement to respond to font changes |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
87 * </li> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
88 * <li><code>handleShellCloseEvent</code>- extend or reimplement to handle |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
89 * shell closings</li> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
90 * </ul> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
91 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
92 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
93 public abstract class Window : IShellProvider { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
94 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
95 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
96 * Standard return code constant (value 0) indicating that the window was |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
97 * opened. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
98 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
99 * @see #open |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
100 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
101 public static const int OK = 0; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
102 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
103 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
104 * Standard return code constant (value 1) indicating that the window was |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
105 * canceled. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
106 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
107 * @see #open |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
108 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
109 public static const int CANCEL = 1; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
110 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
111 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
112 * An array of images to be used for the window. It is expected that the |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
113 * array will contain the same icon rendered at different resolutions. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
114 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
115 private static Image[] defaultImages; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
116 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
117 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
118 * This interface defines a Exception Handler which can be set as a global |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
119 * handler and will be called if an exception happens in the event loop. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
120 */ |
37
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
121 public interface IExceptionHandler { |
7
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
122 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
123 * Handle the exception. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
124 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
125 * @param t |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
126 * The exception that occured. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
127 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
128 public void handleException(Exception t); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
129 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
130 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
131 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
132 * Defines a default exception handler. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
133 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
134 private static class DefaultExceptionHandler : IExceptionHandler { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
135 /* |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
136 * (non-Javadoc) |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
137 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
138 * @see dwtx.jface.window.Window.IExceptionHandler#handleException(java.lang.Throwable) |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
139 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
140 public void handleException(Exception t) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
141 /+ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
142 if (t instanceof ThreadDeath) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
143 // Don't catch ThreadDeath as this is a normal occurrence when |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
144 // the thread dies |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
145 throw (ThreadDeath) t; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
146 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
147 +/ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
148 // Try to keep running. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
149 ExceptionPrintStackTrace(t); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
150 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
151 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
152 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
153 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
154 * The exception handler for this application. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
155 */ |
37
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
156 private static IExceptionHandler exceptionHandler_; |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
157 private static IExceptionHandler exceptionHandler(){ |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
158 if( exceptionHandler_ is null ){ |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
159 synchronized if( exceptionHandler_ is null ){ |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
160 exceptionHandler_ = new DefaultExceptionHandler(); |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
161 } |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
162 } |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
163 return exceptionHandler_; |
7
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
164 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
165 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
166 * The default orientation of the window. By default |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
167 * it is DWT#NONE but it can also be DWT#LEFT_TO_RIGHT |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
168 * or DWT#RIGHT_TO_LEFT |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
169 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
170 private static int orientation = DWT.NONE; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
171 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
172 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
173 * Object used to locate the default parent for modal shells |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
174 */ |
37
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
175 private static IShellProvider defaultModalParent_; |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
176 private static IShellProvider defaultModalParent(){ |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
177 if( defaultModalParent_ is null ){ |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
178 synchronized if( defaultModalParent_ is null ){ |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
179 defaultModalParent_ = new class IShellProvider { |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
180 public Shell getShell() { |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
181 Display d = Display.getCurrent(); |
7
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
182 |
37
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
183 if (d is null) { |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
184 return null; |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
185 } |
7
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
186 |
37
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
187 Shell parent = d.getActiveShell(); |
7
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
188 |
37
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
189 // Make sure we don't pick a parent that has a modal child (this can lock the app) |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
190 if (parent is null) { |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
191 // If this is a top-level window, then there must not be any open modal windows. |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
192 parent = getModalChild(Display.getCurrent().getShells()); |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
193 } else { |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
194 // If we picked a parent with a modal child, use the modal child instead |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
195 Shell modalChild = getModalChild(parent.getShells()); |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
196 if (modalChild !is null) { |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
197 parent = modalChild; |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
198 } |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
199 } |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
200 |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
201 return parent; |
7
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
202 } |
37
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
203 }; |
7
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
204 } |
37
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
205 } |
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
206 return defaultModalParent_; |
7
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
207 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
208 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
209 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
210 * Object that returns the parent shell. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
211 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
212 private IShellProvider parentShell; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
213 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
214 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
215 * Shell style bits. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
216 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
217 * @see #setShellStyle |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
218 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
219 private int shellStyle = DWT.SHELL_TRIM; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
220 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
221 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
222 * Window manager, or <code>null</code> if none. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
223 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
224 * @see #setWindowManager |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
225 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
226 private WindowManager windowManager; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
227 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
228 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
229 * Window shell, or <code>null</code> if none. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
230 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
231 private Shell shell; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
232 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
233 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
234 * Top level DWT control, or <code>null</code> if none |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
235 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
236 private Control contents; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
237 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
238 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
239 * Window return code; initially <code>OK</code>. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
240 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
241 * @see #setReturnCode |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
242 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
243 private int returnCode = OK; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
244 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
245 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
246 * <code>true</code> if the <code>open</code> method should not return |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
247 * until the window closes, and <code>false</code> if the |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
248 * <code>open</code> method should return immediately; initially |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
249 * <code>false</code> (non-blocking). |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
250 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
251 * @see #setBlockOnOpen |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
252 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
253 private bool block = false; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
254 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
255 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
256 * Internal class for informing this window when fonts change. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
257 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
258 private class FontChangeListener : IPropertyChangeListener { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
259 public void propertyChange(PropertyChangeEvent event) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
260 handleFontChange(event); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
261 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
262 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
263 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
264 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
265 * Internal font change listener. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
266 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
267 private FontChangeListener fontChangeListener; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
268 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
269 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
270 * Internal fields to detect if shell size has been set |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
271 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
272 private bool resizeHasOccurred = false; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
273 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
274 private Listener resizeListener; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
275 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
276 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
277 * Creates a window instance, whose shell will be created under the given |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
278 * parent shell. Note that the window will have no visual representation |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
279 * until it is told to open. By default, <code>open</code> does not block. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
280 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
281 * @param parentShell |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
282 * the parent shell, or <code>null</code> to create a top-level |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
283 * shell. Try passing "(Shell)null" to this method instead of "null" |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
284 * if your compiler complains about an ambiguity error. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
285 * @see #setBlockOnOpen |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
286 * @see #getDefaultOrientation() |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
287 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
288 protected this(Shell parentShell) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
289 this(new SameShellProvider(parentShell)); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
290 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
291 if(parentShell is null) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
292 setShellStyle(getShellStyle() | getDefaultOrientation()); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
293 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
294 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
295 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
296 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
297 * Creates a new window which will create its shell as a child of whatever |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
298 * the given shellProvider returns. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
299 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
300 * @param shellProvider object that will return the current parent shell. Not null. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
301 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
302 * @since 3.1 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
303 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
304 protected this(IShellProvider shellProvider) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
305 Assert.isNotNull(cast(Object)shellProvider); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
306 this.parentShell = shellProvider; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
307 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
308 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
309 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
310 * Determines if the window should handle the close event or do nothing. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
311 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
312 * The default implementation of this framework method returns |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
313 * <code>true</code>, which will allow the |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
314 * <code>handleShellCloseEvent</code> method to be called. Subclasses may |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
315 * extend or reimplement. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
316 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
317 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
318 * @return whether the window should handle the close event. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
319 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
320 protected bool canHandleShellCloseEvent() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
321 return true; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
322 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
323 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
324 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
325 * Closes this window, disposes its shell, and removes this window from its |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
326 * window manager (if it has one). |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
327 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
328 * This framework method may be extended (<code>super.close</code> must |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
329 * be called). |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
330 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
331 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
332 * @return <code>true</code> if the window is (or was already) closed, and |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
333 * <code>false</code> if it is still open |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
334 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
335 public bool close() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
336 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
337 // stop listening for font changes |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
338 if (fontChangeListener !is null) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
339 JFaceResources.getFontRegistry().removeListener(fontChangeListener); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
340 fontChangeListener = null; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
341 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
342 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
343 // remove this window from a window manager if it has one |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
344 if (windowManager !is null) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
345 windowManager.remove(this); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
346 windowManager = null; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
347 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
348 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
349 if (shell is null || shell.isDisposed()) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
350 return true; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
351 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
352 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
353 // If we "close" the shell recursion will occur. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
354 // Instead, we need to "dispose" the shell to remove it from the |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
355 // display. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
356 shell.dispose(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
357 shell = null; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
358 contents = null; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
359 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
360 return true; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
361 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
362 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
363 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
364 * Configures the given shell in preparation for opening this window in it. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
365 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
366 * The default implementation of this framework method sets the shell's |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
367 * image and gives it a grid layout. Subclasses may extend or reimplement. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
368 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
369 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
370 * @param newShell |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
371 * the shell |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
372 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
373 protected void configureShell(Shell newShell) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
374 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
375 // The single image version of this code had a comment related to bug |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
376 // 46624, |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
377 // and some code that did nothing if the stored image was already |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
378 // disposed. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
379 // The equivalent in the multi-image version seems to be to remove the |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
380 // disposed images from the array passed to the shell. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
381 if (defaultImages !is null && defaultImages.length > 0) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
382 auto nonDisposedImages = new ArraySeq!(Image); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
383 nonDisposedImages.capacity(defaultImages.length); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
384 for (int i = 0; i < defaultImages.length; ++i) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
385 if (defaultImages[i] !is null && !defaultImages[i].isDisposed()) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
386 nonDisposedImages.append(defaultImages[i]); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
387 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
388 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
389 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
390 if (nonDisposedImages.size() <= 0) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
391 Stderr.formatln("Window.configureShell: images disposed"); //$NON-NLS-1$ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
392 } else { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
393 newShell.setImages(nonDisposedImages.toArray()); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
394 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
395 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
396 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
397 Layout layout = getLayout(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
398 if (layout !is null) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
399 newShell.setLayout(layout); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
400 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
401 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
402 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
403 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
404 * Creates the layout for the shell. The layout created here will be |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
405 * attached to the composite passed into createContents. The default |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
406 * implementation returns a GridLayout with no margins. Subclasses that |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
407 * change the layout type by overriding this method should also override |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
408 * createContents. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
409 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
410 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
411 * A return value of null indicates that no layout should be attached to the |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
412 * composite. In this case, the layout may be attached within |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
413 * createContents. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
414 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
415 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
416 * @return a newly created Layout or null if no layout should be attached. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
417 * @since 3.0 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
418 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
419 protected Layout getLayout() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
420 GridLayout layout = new GridLayout(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
421 layout.marginHeight = 0; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
422 layout.marginWidth = 0; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
423 return layout; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
424 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
425 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
426 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
427 * Constrain the shell size to be no larger than the display bounds. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
428 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
429 * @since 2.0 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
430 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
431 protected void constrainShellSize() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
432 // limit the shell size to the display size |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
433 Rectangle bounds = shell.getBounds(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
434 Rectangle constrained = getConstrainedShellBounds(bounds); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
435 if (!bounds.opEquals(constrained)) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
436 shell.setBounds(constrained); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
437 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
438 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
439 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
440 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
441 * Creates this window's widgetry in a new top-level shell. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
442 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
443 * The default implementation of this framework method creates this window's |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
444 * shell (by calling <code>createShell</code>), and its controls (by |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
445 * calling <code>createContents</code>), then initializes this window's |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
446 * shell bounds (by calling <code>initializeBounds</code>). |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
447 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
448 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
449 public void create() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
450 shell = createShell(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
451 contents = createContents(shell); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
452 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
453 //initialize the bounds of the shell to that appropriate for the |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
454 // contents |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
455 initializeBounds(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
456 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
457 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
458 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
459 * Creates and returns this window's contents. Subclasses may attach any |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
460 * number of children to the parent. As a convenience, the return value of |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
461 * this method will be remembered and returned by subsequent calls to |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
462 * getContents(). Subclasses may modify the parent's layout if they overload |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
463 * getLayout() to return null. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
464 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
465 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
466 * It is common practise to create and return a single composite that |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
467 * contains the entire window contents. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
468 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
469 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
470 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
471 * The default implementation of this framework method creates an instance |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
472 * of <code>Composite</code>. Subclasses may override. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
473 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
474 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
475 * @param parent |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
476 * the parent composite for the controls in this window. The type |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
477 * of layout used is determined by getLayout() |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
478 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
479 * @return the control that will be returned by subsequent calls to |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
480 * getContents() |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
481 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
482 protected Control createContents(Composite parent) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
483 // by default, just create a composite |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
484 return new Composite(parent, DWT.NONE); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
485 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
486 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
487 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
488 * Creates and returns this window's shell. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
489 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
490 * The default implementation of this framework method creates a new shell |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
491 * and configures it using <code/>configureShell</code>. Rather than |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
492 * override this method, subclasses should instead override |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
493 * <code/>configureShell</code>. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
494 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
495 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
496 * @return the shell |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
497 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
498 protected final Shell createShell() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
499 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
500 Shell newParent = getParentShell(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
501 if(newParent !is null && newParent.isDisposed()){ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
502 parentShell = new SameShellProvider(null); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
503 newParent = getParentShell();//Find a better parent |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
504 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
505 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
506 //Create the shell |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
507 Shell newShell = new Shell(newParent, getShellStyle()); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
508 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
509 resizeListener = new class Listener { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
510 public void handleEvent(Event e) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
511 resizeHasOccurred = true; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
512 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
513 }; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
514 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
515 newShell.addListener(DWT.Resize, resizeListener); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
516 newShell.setData(this); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
517 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
518 //Add a listener |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
519 newShell.addShellListener(getShellListener()); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
520 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
521 //Set the layout |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
522 configureShell(newShell); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
523 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
524 //Register for font changes |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
525 if (fontChangeListener is null) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
526 fontChangeListener = new FontChangeListener(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
527 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
528 JFaceResources.getFontRegistry().addListener(fontChangeListener); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
529 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
530 return newShell; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
531 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
532 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
533 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
534 * Returns the top level control for this window. The parent of this control |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
535 * is the shell. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
536 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
537 * @return the top level control, or <code>null</code> if this window's |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
538 * control has not been created yet |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
539 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
540 protected Control getContents() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
541 return contents; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
542 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
543 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
544 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
545 * Returns the default image. This is the image that will be used for |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
546 * windows that have no shell image at the time they are opened. There is no |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
547 * default image unless one is installed via <code>setDefaultImage</code>. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
548 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
549 * @return the default image, or <code>null</code> if none |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
550 * @see #setDefaultImage |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
551 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
552 public static Image getDefaultImage() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
553 return (defaultImages is null || defaultImages.length < 1) ? null |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
554 : defaultImages[0]; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
555 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
556 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
557 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
558 * Returns the array of default images to use for newly opened windows. It |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
559 * is expected that the array will contain the same icon rendered at |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
560 * different resolutions. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
561 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
562 * @see dwt.widgets.Decorations#setImages(dwt.graphics.Image[]) |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
563 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
564 * @return the array of images to be used when a new window is opened |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
565 * @see #setDefaultImages |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
566 * @since 3.0 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
567 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
568 public static Image[] getDefaultImages() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
569 return (defaultImages is null ? new Image[0] : defaultImages); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
570 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
571 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
572 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
573 * Returns the initial location to use for the shell. The default |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
574 * implementation centers the shell horizontally (1/2 of the difference to |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
575 * the left and 1/2 to the right) and vertically (1/3 above and 2/3 below) |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
576 * relative to the parent shell, or display bounds if there is no parent |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
577 * shell. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
578 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
579 * @param initialSize |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
580 * the initial size of the shell, as returned by |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
581 * <code>getInitialSize</code>. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
582 * @return the initial location of the shell |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
583 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
584 protected Point getInitialLocation(Point initialSize) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
585 Composite parent = shell.getParent(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
586 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
587 dwt.widgets.Monitor.Monitor monitor = shell.getDisplay().getPrimaryMonitor(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
588 if (parent !is null) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
589 monitor = parent.getMonitor(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
590 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
591 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
592 Rectangle monitorBounds = monitor.getClientArea(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
593 Point centerPoint; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
594 if (parent !is null) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
595 centerPoint = Geometry.centerPoint(parent.getBounds()); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
596 } else { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
597 centerPoint = Geometry.centerPoint(monitorBounds); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
598 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
599 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
600 return new Point(centerPoint.x - (initialSize.x / 2), Math.max( |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
601 monitorBounds.y, Math.min(centerPoint.y |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
602 - (initialSize.y * 2 / 3), monitorBounds.y |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
603 + monitorBounds.height - initialSize.y))); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
604 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
605 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
606 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
607 * Returns the initial size to use for the shell. The default implementation |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
608 * returns the preferred size of the shell, using |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
609 * <code>Shell.computeSize(DWT.DEFAULT, DWT.DEFAULT, true)</code>. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
610 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
611 * @return the initial size of the shell |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
612 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
613 protected Point getInitialSize() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
614 return shell.computeSize(DWT.DEFAULT, DWT.DEFAULT, true); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
615 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
616 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
617 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
618 * Returns the most specific modal child from the given list of Shells. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
619 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
620 * @param toSearch shells to search for modal children |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
621 * @return the most specific modal child, or null if none |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
622 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
623 * @since 3.1 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
624 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
625 private static Shell getModalChild(Shell[] toSearch) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
626 int modal = DWT.APPLICATION_MODAL | DWT.SYSTEM_MODAL | DWT.PRIMARY_MODAL; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
627 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
628 for (int i = toSearch.length - 1; i >= 0; i--) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
629 Shell shell = toSearch[i]; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
630 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
631 // Check if this shell has a modal child |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
632 Shell[] children = shell.getShells(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
633 Shell modalChild = getModalChild(children); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
634 if (modalChild !is null) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
635 return modalChild; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
636 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
637 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
638 // If not, check if this shell is modal itself |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
639 if (shell.isVisible() && (shell.getStyle() & modal) !is 0) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
640 return shell; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
641 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
642 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
643 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
644 return null; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
645 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
646 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
647 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
648 * Returns parent shell, under which this window's shell is created. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
649 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
650 * @return the parent shell, or <code>null</code> if there is no parent |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
651 * shell |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
652 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
653 protected Shell getParentShell() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
654 Shell parent = parentShell.getShell(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
655 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
656 int modal = DWT.APPLICATION_MODAL | DWT.SYSTEM_MODAL | DWT.PRIMARY_MODAL; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
657 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
658 if ((getShellStyle() & modal) !is 0) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
659 // If this is a modal shell with no parent, pick a shell using defaultModalParent. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
660 if (parent is null) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
661 parent = defaultModalParent.getShell(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
662 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
663 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
664 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
665 return parent; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
666 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
667 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
668 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
669 * Returns this window's return code. A window's return codes are |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
670 * window-specific, although two standard return codes are predefined: |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
671 * <code>OK</code> and <code>CANCEL</code>. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
672 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
673 * @return the return code |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
674 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
675 public int getReturnCode() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
676 return returnCode; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
677 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
678 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
679 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
680 * Returns this window's shell. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
681 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
682 * @return this window's shell, or <code>null</code> if this window's |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
683 * shell has not been created yet |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
684 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
685 public Shell getShell() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
686 return shell; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
687 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
688 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
689 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
690 * Returns a shell listener. This shell listener gets registered with this |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
691 * window's shell. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
692 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
693 * The default implementation of this framework method returns a new |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
694 * listener that makes this window the active window for its window manager |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
695 * (if it has one) when the shell is activated, and calls the framework |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
696 * method <code>handleShellCloseEvent</code> when the shell is closed. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
697 * Subclasses may extend or reimplement. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
698 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
699 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
700 * @return a shell listener |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
701 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
702 protected ShellListener getShellListener() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
703 return new class ShellAdapter { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
704 public void shellClosed(ShellEvent event) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
705 event.doit = false; // don't close now |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
706 if (canHandleShellCloseEvent()) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
707 handleShellCloseEvent(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
708 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
709 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
710 }; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
711 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
712 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
713 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
714 * Returns the shell style bits. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
715 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
716 * The default value is <code>DWT.CLOSE|DWT.MIN|DWT.MAX|DWT.RESIZE</code>. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
717 * Subclassers should call <code>setShellStyle</code> to change this |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
718 * value, rather than overriding this method. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
719 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
720 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
721 * @return the shell style bits |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
722 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
723 protected int getShellStyle() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
724 return shellStyle; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
725 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
726 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
727 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
728 * Returns the window manager of this window. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
729 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
730 * @return the WindowManager, or <code>null</code> if none |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
731 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
732 public WindowManager getWindowManager() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
733 return windowManager; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
734 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
735 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
736 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
737 * Notifies of a font property change. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
738 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
739 * The default implementation of this framework method does nothing. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
740 * Subclasses may reimplement. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
741 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
742 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
743 * @param event |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
744 * the property change event detailing what changed |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
745 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
746 protected void handleFontChange(PropertyChangeEvent event) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
747 // do nothing |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
748 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
749 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
750 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
751 * Notifies that the window's close button was pressed, the close menu was |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
752 * selected, or the ESCAPE key pressed. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
753 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
754 * The default implementation of this framework method sets the window's |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
755 * return code to <code>CANCEL</code> and closes the window using |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
756 * <code>close</code>. Subclasses may extend or reimplement. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
757 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
758 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
759 protected void handleShellCloseEvent() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
760 setReturnCode(CANCEL); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
761 close(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
762 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
763 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
764 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
765 * Initializes the location and size of this window's DWT shell after it has |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
766 * been created. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
767 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
768 * This framework method is called by the <code>create</code> framework |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
769 * method. The default implementation calls <code>getInitialSize</code> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
770 * and <code>getInitialLocation</code> and passes the results to |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
771 * <code>Shell.setBounds</code>. This is only done if the bounds of the |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
772 * shell have not already been modified. Subclasses may extend or |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
773 * reimplement. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
774 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
775 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
776 protected void initializeBounds() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
777 if (resizeListener !is null) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
778 shell.removeListener(DWT.Resize, resizeListener); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
779 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
780 if (resizeHasOccurred) { // Check if shell size has been set already. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
781 return; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
782 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
783 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
784 Point size = getInitialSize(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
785 Point location = getInitialLocation(size); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
786 shell.setBounds(getConstrainedShellBounds(new Rectangle(location.x, |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
787 location.y, size.x, size.y))); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
788 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
789 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
790 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
791 * Opens this window, creating it first if it has not yet been created. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
792 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
793 * If this window has been configured to block on open ( |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
794 * <code>setBlockOnOpen</code>), this method waits until the window is |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
795 * closed by the end user, and then it returns the window's return code; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
796 * otherwise, this method returns immediately. A window's return codes are |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
797 * window-specific, although two standard return codes are predefined: |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
798 * <code>OK</code> and <code>CANCEL</code>. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
799 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
800 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
801 * @return the return code |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
802 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
803 * @see #create() |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
804 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
805 public int open() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
806 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
807 if (shell is null || shell.isDisposed()) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
808 shell = null; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
809 // create the window |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
810 create(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
811 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
812 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
813 // limit the shell size to the display size |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
814 constrainShellSize(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
815 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
816 // open the window |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
817 shell.open(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
818 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
819 // run the event loop if specified |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
820 if (block) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
821 runEventLoop(shell); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
822 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
823 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
824 return returnCode; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
825 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
826 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
827 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
828 * Runs the event loop for the given shell. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
829 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
830 * @param loopShell |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
831 * the shell |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
832 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
833 private void runEventLoop(Shell loopShell) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
834 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
835 //Use the display provided by the shell if possible |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
836 Display display; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
837 if (shell is null) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
838 display = Display.getCurrent(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
839 } else { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
840 display = loopShell.getDisplay(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
841 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
842 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
843 while (loopShell !is null && !loopShell.isDisposed()) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
844 try { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
845 if (!display.readAndDispatch()) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
846 display.sleep(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
847 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
848 } catch (Exception e) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
849 exceptionHandler.handleException(e); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
850 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
851 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
852 display.update(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
853 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
854 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
855 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
856 * Sets whether the <code>open</code> method should block until the window |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
857 * closes. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
858 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
859 * @param shouldBlock |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
860 * <code>true</code> if the <code>open</code> method should |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
861 * not return until the window closes, and <code>false</code> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
862 * if the <code>open</code> method should return immediately |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
863 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
864 public void setBlockOnOpen(bool shouldBlock) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
865 block = shouldBlock; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
866 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
867 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
868 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
869 * Sets the default image. This is the image that will be used for windows |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
870 * that have no shell image at the time they are opened. There is no default |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
871 * image unless one is installed via this method. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
872 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
873 * @param image |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
874 * the default image, or <code>null</code> if none |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
875 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
876 public static void setDefaultImage(Image image) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
877 defaultImages = image is null ? null : [ image ]; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
878 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
879 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
880 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
881 * Sets the array of default images to use for newly opened windows. It is |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
882 * expected that the array will contain the same icon rendered at different |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
883 * resolutions. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
884 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
885 * @see dwt.widgets.Decorations#setImages(dwt.graphics.Image[]) |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
886 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
887 * @param images |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
888 * the array of images to be used when this window is opened |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
889 * @since 3.0 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
890 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
891 public static void setDefaultImages(Image[] images) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
892 Image[] newArray = new Image[images.length]; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
893 System.arraycopy(images, 0, newArray, 0, newArray.length); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
894 defaultImages = newArray; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
895 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
896 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
897 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
898 * Changes the parent shell. This is only safe to use when the shell is not |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
899 * yet realized (i.e., created). Once the shell is created, it must be |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
900 * disposed (i.e., closed) before this method can be called. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
901 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
902 * @param newParentShell |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
903 * The new parent shell; this value may be <code>null</code> if |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
904 * there is to be no parent. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
905 * @since 3.1 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
906 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
907 protected void setParentShell(Shell newParentShell) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
908 Assert.isTrue((shell is null), "There must not be an existing shell."); //$NON-NLS-1$ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
909 parentShell = new SameShellProvider(newParentShell); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
910 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
911 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
912 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
913 * Sets this window's return code. The return code is automatically returned |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
914 * by <code>open</code> if block on open is enabled. For non-blocking |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
915 * opens, the return code needs to be retrieved manually using |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
916 * <code>getReturnCode</code>. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
917 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
918 * @param code |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
919 * the return code |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
920 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
921 protected void setReturnCode(int code) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
922 returnCode = code; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
923 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
924 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
925 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
926 * Returns the monitor whose client area contains the given point. If no |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
927 * monitor contains the point, returns the monitor that is closest to the |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
928 * point. If this is ever made public, it should be moved into a separate |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
929 * utility class. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
930 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
931 * @param toSearch |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
932 * point to find (display coordinates) |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
933 * @param toFind |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
934 * point to find (display coordinates) |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
935 * @return the montor closest to the given point |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
936 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
937 private static dwt.widgets.Monitor.Monitor getClosestMonitor(Display toSearch, Point toFind) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
938 int closest = Integer.MAX_VALUE; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
939 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
940 dwt.widgets.Monitor.Monitor[] monitors = toSearch.getMonitors(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
941 dwt.widgets.Monitor.Monitor result = monitors[0]; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
942 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
943 for (int idx = 0; idx < monitors.length; idx++) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
944 dwt.widgets.Monitor.Monitor current = monitors[idx]; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
945 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
946 Rectangle clientArea = current.getClientArea(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
947 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
948 if (clientArea.contains(toFind)) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
949 return current; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
950 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
951 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
952 int distance = Geometry.distanceSquared(Geometry |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
953 .centerPoint(clientArea), toFind); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
954 if (distance < closest) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
955 closest = distance; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
956 result = current; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
957 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
958 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
959 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
960 return result; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
961 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
962 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
963 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
964 * Given the desired position of the window, this method returns an adjusted |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
965 * position such that the window is no larger than its monitor, and does not |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
966 * extend beyond the edge of the monitor. This is used for computing the |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
967 * initial window position, and subclasses can use this as a utility method |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
968 * if they want to limit the region in which the window may be moved. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
969 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
970 * @param preferredSize |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
971 * the preferred position of the window |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
972 * @return a rectangle as close as possible to preferredSize that does not |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
973 * extend outside the monitor |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
974 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
975 * @since 3.0 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
976 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
977 protected Rectangle getConstrainedShellBounds(Rectangle preferredSize) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
978 Rectangle result = new Rectangle(preferredSize.x, preferredSize.y, |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
979 preferredSize.width, preferredSize.height); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
980 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
981 dwt.widgets.Monitor.Monitor mon = getClosestMonitor(getShell().getDisplay(), Geometry |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
982 .centerPoint(result)); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
983 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
984 Rectangle bounds = mon.getClientArea(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
985 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
986 if (result.height > bounds.height) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
987 result.height = bounds.height; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
988 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
989 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
990 if (result.width > bounds.width) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
991 result.width = bounds.width; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
992 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
993 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
994 result.x = Math.max(bounds.x, Math.min(result.x, bounds.x |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
995 + bounds.width - result.width)); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
996 result.y = Math.max(bounds.y, Math.min(result.y, bounds.y |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
997 + bounds.height - result.height)); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
998 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
999 return result; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1000 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1001 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1002 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1003 * Sets the shell style bits. This method has no effect after the shell is |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1004 * created. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1005 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1006 * The shell style bits are used by the framework method |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1007 * <code>createShell</code> when creating this window's shell. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1008 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1009 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1010 * @param newShellStyle |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1011 * the new shell style bits |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1012 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1013 protected void setShellStyle(int newShellStyle) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1014 shellStyle = newShellStyle; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1015 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1016 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1017 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1018 * Sets the window manager of this window. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1019 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1020 * Note that this method is used by <code>WindowManager</code> to maintain |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1021 * a backpointer. Clients must not call the method directly. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1022 * </p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1023 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1024 * @param manager |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1025 * the window manager, or <code>null</code> if none |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1026 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1027 public void setWindowManager(WindowManager manager) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1028 windowManager = manager; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1029 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1030 // Code to detect invalid usage |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1031 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1032 if (manager !is null) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1033 Window[] windows = manager.getWindows(); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1034 for (int i = 0; i < windows.length; i++) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1035 if (windows[i] is this) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1036 return; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1037 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1038 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1039 manager.add(this); |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1040 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1041 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1042 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1043 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1044 * Sets the exception handler for this application. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1045 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1046 * Note that the handler may only be set once. Subsequent calls to this method will be |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1047 * ignored. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1048 * <p> |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1049 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1050 * @param handler |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1051 * the exception handler for the application. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1052 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1053 public static void setExceptionHandler(IExceptionHandler handler) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1054 if ( cast(DefaultExceptionHandler)exceptionHandler ) { |
37
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
1055 exceptionHandler_ = handler; |
7
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1056 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1057 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1058 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1059 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1060 * Sets the default parent for modal Windows. This will be used to locate |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1061 * the parent for any modal Window constructed with a null parent. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1062 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1063 * @param provider shell provider that will be used to locate the parent shell |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1064 * whenever a Window is created with a null parent |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1065 * @since 3.1 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1066 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1067 public static void setDefaultModalParent(IShellProvider provider) { |
37
e10d9c2648be
fix static interface and static this
Frank Benoit <benoit@tionex.de>
parents:
7
diff
changeset
|
1068 defaultModalParent_ = provider; |
7
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1069 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1070 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1071 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1072 * Gets the default orientation for windows. If it is not |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1073 * set the default value will be unspecified (DWT#NONE). |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1074 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1075 * |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1076 * @return DWT#NONE, DWT.RIGHT_TO_LEFT or DWT.LEFT_TO_RIGHT |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1077 * @see DWT#RIGHT_TO_LEFT |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1078 * @see DWT#LEFT_TO_RIGHT |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1079 * @see DWT#NONE |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1080 * @since 3.1 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1081 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1082 public static int getDefaultOrientation() { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1083 return orientation; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1084 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1085 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1086 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1087 /** |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1088 * Sets the default orientation of windows. |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1089 * @param defaultOrientation one of |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1090 * DWT#RIGHT_TO_LEFT, DWT#LEFT_TO_RIGHT ,DWT#NONE |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1091 * @see DWT#RIGHT_TO_LEFT |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1092 * @see DWT#LEFT_TO_RIGHT |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1093 * @see DWT#NONE |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1094 * @since 3.1 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1095 */ |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1096 public static void setDefaultOrientation(int defaultOrientation) { |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1097 orientation = defaultOrientation; |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1098 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1099 } |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1100 |
8a302fdb4140
Jface some window and resource classes
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1101 } |