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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }