annotate dwtx/novocode/ishell/InternalShell.d @ 188:e3780acbbf80

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