Mercurial > projects > dwt-addons
annotate dwtx/novocode/ishell/InternalShell.d @ 200:eb3414669eb0 default tip
fix for dmd 1.041 and tango 0.99.8
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 28 Mar 2009 03:09:57 +0100 |
parents | df4e66472aff |
children |
rev | line source |
---|---|
190
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
1 /******************************************************************************* |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
2 * Copyright (c) 2005 Stefan Zeiger and others. |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
3 * All rights reserved. This program and the accompanying materials |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
4 * are made available under the terms of the Eclipse Public License v1.0 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
5 * which accompanies this distribution, and is available at |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
6 * http://www.novocode.com/legal/epl-v10.html |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
7 * |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
8 * Contributors: |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
9 * Stefan Zeiger (szeiger@novocode.com) - initial API and implementation |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
10 *******************************************************************************/ |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
11 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
12 module dwtx.novocode.ishell.InternalShell; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
13 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
14 import dwt.dwthelper.utils; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
15 import dwt.DWT; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
16 import dwt.DWTException; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
17 import dwt.graphics.Image; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
18 import dwt.graphics.Point; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
19 import dwt.graphics.Rectangle; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
20 import dwt.layout.FormAttachment; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
21 import dwt.layout.FormData; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
22 import dwt.layout.FormLayout; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
23 import dwt.widgets.Composite; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
24 import dwt.widgets.Control; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
25 import dwt.widgets.Event; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
26 import dwt.widgets.Listener; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
27 import dwt.widgets.Menu; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
28 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
29 import dwtx.novocode.SizeBorder; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
30 import dwtx.novocode.SizeGrip; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
31 import dwtx.novocode.ishell.DesktopForm; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
32 import dwtx.novocode.ishell.internal.TitleBar; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
33 import dwtx.novocode.ishell.internal.TitleBarButton; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
34 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
35 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
36 /** |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
37 * An internal shell which can be placed on a DesktopForm. |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
38 * <p> |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
39 * <dl> |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
40 * <dt><b>Styles:</b></dt> |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
41 * <dd>RESIZE, CLOSE, MAX, ON_TOP, TOOL, NO_RADIO_GROUP</dd> |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
42 * <dt><b>Events:</b></dt> |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
43 * <dd>(none)</dd> |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
44 * </dl> |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
45 * </p> |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
46 * |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
47 * @author Stefan Zeiger (szeiger@novocode.com) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
48 * @since Jan 21, 2005 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
49 * @version $Id: InternalShell.java 344 2005-07-09 22:37:51 +0000 (Sat, 09 Jul 2005) szeiger $ |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
50 */ |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
51 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
52 // [TODO] Support styles NO_TRIM, BORDER, TITLE |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
53 // [TODO] Separate "minimized" from "not visible" |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
54 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
55 class InternalShell : Composite |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
56 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
57 private static const int BORDER_SIZE = 4; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
58 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
59 private Composite contentPane; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
60 private TitleBar titleBar; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
61 private SizeGrip sizeGrip; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
62 private SizeBorder sizeBorder; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
63 private int minWidth = 112; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
64 private int minHeight; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
65 private DesktopForm desktop; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
66 private bool maximized; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
67 private Rectangle pluralizedBounds; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
68 private int titleHeight; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
69 private int style; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
70 private TitleBarButton closeButton, maxButton, minButton; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
71 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
72 Control focusControl; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
73 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
74 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
75 this(DesktopForm parent, int style) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
76 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
77 super(parent, checkStyle(style)); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
78 this.desktop = parent; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
79 this.style = style; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
80 setBackground(getDisplay().getSystemColor(DWT.COLOR_WIDGET_BACKGROUND)); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
81 FormLayout layout = new FormLayout(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
82 setLayout(layout); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
83 FormData fd; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
84 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
85 titleBar = new TitleBar(this, style & (DWT.CLOSE | DWT.RESIZE | DWT.MAX | DWT.TOOL | DWT.MIN)); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
86 titleHeight = titleBar.computeSize(DWT.DEFAULT, DWT.DEFAULT, true).y; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
87 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
88 Control leftButton = null; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
89 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
90 if((style & (DWT.CLOSE | DWT.MAX | DWT.MIN)) !is 0) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
91 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
92 closeButton = new TitleBarButton(this, DWT.CLOSE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
93 if((style & DWT.CLOSE) is 0) closeButton.setEnabled(false); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
94 closeButton.addListener(DWT.Selection, dgListener(&closeListener)); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
95 fd = new FormData(titleHeight, titleHeight); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
96 if(leftButton !is null) fd.right = new FormAttachment(leftButton); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
97 else fd.right = new FormAttachment(100, -BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
98 fd.top = new FormAttachment(0, BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
99 closeButton.setLayoutData(fd); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
100 leftButton = closeButton; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
101 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
102 if((style & (DWT.MAX|DWT.MIN)) !is 0) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
103 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
104 maxButton = new TitleBarButton(this, DWT.MAX); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
105 if((style & DWT.MAX) is 0) maxButton.setEnabled(false); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
106 maxButton.addListener(DWT.Selection, dgListener(&maximizeListener)); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
107 fd = new FormData(titleHeight, titleHeight); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
108 if(leftButton !is null) fd.right = new FormAttachment(leftButton); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
109 else fd.right = new FormAttachment(100, -BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
110 fd.top = new FormAttachment(0, BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
111 maxButton.setLayoutData(fd); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
112 leftButton = maxButton; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
113 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
114 minButton = new TitleBarButton(this, DWT.MIN); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
115 if((style & DWT.MIN) is 0) minButton.setEnabled(false); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
116 minButton.addListener(DWT.Selection, dgListener(&minimizeListener)); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
117 fd = new FormData(titleHeight, titleHeight); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
118 if(leftButton !is null) fd.right = new FormAttachment(leftButton); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
119 else fd.right = new FormAttachment(100, -BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
120 fd.top = new FormAttachment(0, BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
121 minButton.setLayoutData(fd); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
122 leftButton = minButton; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
123 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
124 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
125 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
126 fd = new FormData(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
127 fd.left = new FormAttachment(0, BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
128 if(leftButton !is null) fd.right = new FormAttachment(leftButton); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
129 else fd.right = new FormAttachment(100, -BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
130 fd.top = new FormAttachment(0, BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
131 titleBar.setLayoutData(fd); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
132 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
133 contentPane = new Composite(this, DWT.NONE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
134 fd = new FormData(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
135 fd.left = new FormAttachment(0, BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
136 fd.right = new FormAttachment(100, -BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
137 fd.top = new FormAttachment(titleBar, 1); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
138 fd.bottom = new FormAttachment(100, -BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
139 contentPane.setLayoutData(fd); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
140 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
141 sizeBorder = new SizeBorder(this, this, DWT.BORDER); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
142 sizeBorder.setBorderWidth(BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
143 fd = new FormData(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
144 fd.left = new FormAttachment(0); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
145 fd.right = new FormAttachment(100); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
146 fd.top = new FormAttachment(0); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
147 fd.bottom = new FormAttachment(100); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
148 sizeBorder.setLayoutData(fd); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
149 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
150 minHeight = titleHeight + 2*BORDER_SIZE; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
151 sizeBorder.setMinimumShellSize(minWidth, minHeight); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
152 sizeBorder.setCornerSize(titleHeight + BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
153 if((style & DWT.RESIZE) is 0) sizeBorder.setEnabled(false); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
154 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
155 setSize(320, 240); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
156 setVisible(false); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
157 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
158 desktop.manage(this); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
159 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
160 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
161 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
162 private void closeListener(Event event) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
163 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
164 close(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
165 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
166 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
167 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
168 private void maximizeListener(Event event) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
169 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
170 setMaximized(!maximized); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
171 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
172 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
173 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
174 private void minimizeListener(Event event) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
175 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
176 setMinimized(true); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
177 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
178 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
179 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
180 private static int checkStyle(int style) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
181 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
182 int mask = DWT.NO_RADIO_GROUP; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
183 style &= mask; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
184 return style; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
185 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
186 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
187 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
188 public int getStyle() |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
189 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
190 return style; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
191 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
192 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
193 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
194 public Composite getContentPane() { return contentPane; } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
195 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
196 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
197 public void setText(String s) { titleBar.setText(s); } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
198 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
199 public String getText() { return titleBar.getText(); } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
200 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
201 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
202 public void setCustomMenu(Menu menu) { titleBar.setMenu(menu); } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
203 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
204 public Menu getCustomMenu() { return titleBar.getMenu(); } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
205 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
206 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
207 public void setImage(Image image) { titleBar.setImage(image); } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
208 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
209 public Image getImage() { return titleBar.getImage(); } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
210 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
211 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
212 public void createSizeGrip(int style) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
213 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
214 checkWidget(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
215 if(sizeGrip !is null) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
216 throw new DWTException("SizeGrip was already created"); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
217 if((this.style & DWT.RESIZE) is 0) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
218 throw new DWTException("Cannot create SizeGrip for InternalShell without style RESIZE"); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
219 sizeGrip = new SizeGrip(this, this, style); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
220 sizeGrip.setBackground(contentPane.getBackground()); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
221 sizeGrip.moveAbove(contentPane); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
222 FormData fd = new FormData(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
223 fd.right = new FormAttachment(100, -BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
224 fd.bottom = new FormAttachment(100, -BORDER_SIZE); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
225 sizeGrip.setLayoutData(fd); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
226 sizeGrip.setMinimumShellSize(minWidth, minHeight); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
227 if(isVisible()) layout(true); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
228 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
229 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
230 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
231 public Point computeSize(int wHint, int hHint, bool changed) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
232 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
233 Point p = super.computeSize(wHint, hHint, changed); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
234 if(p.x < minWidth) p.x = minWidth; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
235 if(p.y < minHeight) p.y = minHeight; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
236 return p; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
237 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
238 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
239 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
240 public void setSize(int width, int height) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
241 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
242 if(width < minWidth) width = minWidth; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
243 if(height < minHeight) height = minHeight; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
244 super.setSize(width, height); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
245 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
246 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
247 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
248 public void setBounds(int x, int y, int width, int height) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
249 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
250 if(width < minWidth) width = minWidth; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
251 if(height < minHeight) height = minHeight; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
252 super.setBounds(x, y, width, height); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
253 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
254 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
255 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
256 public void setMinimumSize(int width, int height) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
257 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
258 checkWidget(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
259 minWidth = width; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
260 minHeight = height; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
261 sizeGrip.setMinimumShellSize(minWidth, minHeight); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
262 sizeBorder.setMinimumShellSize(minWidth, minHeight); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
263 Point size = getSize(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
264 if(size.x < minWidth || size.y < minHeight) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
265 setSize(Math.max(minWidth, size.x), Math.max(minHeight, size.y)); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
266 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
267 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
268 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
269 public void close() |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
270 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
271 Event event = new Event(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
272 notifyListeners(DWT.Close, event); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
273 if(event.doit && !isDisposed()) dispose(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
274 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
275 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
276 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
277 public void open() |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
278 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
279 desktop.activate(this); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
280 setVisible(true); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
281 setFocus(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
282 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
283 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
284 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
285 public void setVisible(bool visible) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
286 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
287 if(!visible) desktop.shellVisibilityChanged(this, false); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
288 super.setVisible(visible); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
289 if(visible) desktop.shellVisibilityChanged(this, true); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
290 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
291 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
292 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
293 public void setActive() |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
294 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
295 desktop.activate(this); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
296 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
297 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
298 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
299 public void setMaximized(bool maximized) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
300 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
301 checkWidget(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
302 if(this.maximized is maximized) return; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
303 setMaximizedWithoutNotification(maximized); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
304 desktop.shellMaximizedOrRestored(this, maximized); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
305 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
306 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
307 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
308 public void setMinimized(bool minimized) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
309 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
310 checkWidget(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
311 bool wasMaximized = maximized; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
312 setVisible(!minimized); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
313 maximized = wasMaximized; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
314 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
315 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
316 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
317 public bool getMinimized() |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
318 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
319 return getVisible(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
320 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
321 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
322 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
323 void setMaximizedWithoutNotification(bool maximized) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
324 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
325 if(this.maximized is maximized) return; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
326 this.maximized = maximized; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
327 if(maximized) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
328 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
329 pluralizedBounds = getBounds(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
330 desktopResized(desktop.getClientArea()); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
331 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
332 else |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
333 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
334 setBounds(pluralizedBounds.x,pluralizedBounds.y,pluralizedBounds.width,pluralizedBounds.height); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
335 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
336 // Note: This method may be called in a Dispose event for this object |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
337 if(sizeGrip !is null && !sizeGrip.isDisposed()) sizeGrip.setVisible(!maximized); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
338 if(!sizeBorder.isDisposed()) sizeBorder.setEnabled(!maximized && (style & DWT.RESIZE) !is 0); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
339 if(maxButton !is null && !maxButton.isDisposed()) maxButton.redraw(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
340 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
341 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
342 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
343 public bool getMaximized() |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
344 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
345 checkWidget(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
346 return maximized; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
347 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
348 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
349 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
350 void redrawDecorationsAfterActivityChange() |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
351 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
352 // Note: This method may be called in a Dispose event for this object |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
353 if(!titleBar.isDisposed()) titleBar.redraw(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
354 if(closeButton !is null && !closeButton.isDisposed()) closeButton.redraw(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
355 if(maxButton !is null && !maxButton.isDisposed()) maxButton.redraw(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
356 if(minButton !is null && !minButton.isDisposed()) minButton.redraw(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
357 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
358 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
359 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
360 void desktopResized(Rectangle deskCA) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
361 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
362 if(maximized) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
363 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
364 int hideTitle = desktop.getShowMaximizedTitle() ? 0 : (titleHeight+1); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
365 setBounds(deskCA.x - BORDER_SIZE, |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
366 deskCA.y - BORDER_SIZE - hideTitle, |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
367 deskCA.width + 2*BORDER_SIZE, |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
368 deskCA.height + 2*BORDER_SIZE + hideTitle); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
369 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
370 else forceVisibleLocation(deskCA); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
371 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
372 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
373 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
374 public bool setFocus() |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
375 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
376 if(focusControl !is null && focusControl !is this && !focusControl.isDisposed()) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
377 return focusControl.setFocus(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
378 return super.setFocus(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
379 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
380 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
381 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
382 public bool isActiveShell() |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
383 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
384 return desktop.getActiveShell() is this; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
385 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
386 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
387 |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
388 private void forceVisibleLocation(Rectangle deskCA) |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
389 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
390 Point p = getLocation(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
391 Point minGrabSize = titleBar.getMinGrabSize(); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
392 int x = p.x, y = p.y; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
393 int minX = minGrabSize.x + BORDER_SIZE, minY = minGrabSize.y + BORDER_SIZE; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
394 x = Math.min(Math.max(x, deskCA.x+minY), deskCA.x+deskCA.width-minX); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
395 y = Math.min(Math.max(y, deskCA.y+minY), deskCA.y+deskCA.height-minY); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
396 if(x != p.x || y != p.y) setLocation(x, y); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
397 } |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
398 } |