Mercurial > projects > dwt-addons
annotate dwtx/novocode/SizeGrip.d @ 191:1ef729510ed6
Fix compile error
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Tue, 28 Oct 2008 23:59:57 +0100 |
parents | df4e66472aff |
children |
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) 2004 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 * Port to the D programming language: |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
11 * Frank Benoit <benoit@tionex.de> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 *******************************************************************************/ |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
13 /++ |
190
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
188
diff
changeset
|
14 + This code was take from http://www.novocode.com/swt/ |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
188
diff
changeset
|
15 +/ |
188
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
16 module dwtx.novocode.SizeGrip; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
17 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
18 import dwt.dwthelper.utils; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
19 import dwt.dwthelper.Runnable; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
20 import dwtx.dwtxhelper.Timer; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
21 import dwtx.dwtxhelper.TimerTask; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
22 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
23 import dwt.DWT; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
24 import dwt.graphics.Color; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
25 import dwt.graphics.Cursor; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
26 import dwt.graphics.Point; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
27 import dwt.graphics.Rectangle; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
28 import dwt.widgets.Canvas; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
29 import dwt.widgets.Composite; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
30 import dwt.widgets.Display; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
31 import dwt.widgets.Event; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
32 import dwt.widgets.Listener; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
33 import dwt.widgets.Shell; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
34 |
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 * A non-native size grip which looks (and almost feels) like the native Win32 size grip. |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
38 * <p> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
39 * The SHADOW_IN style causes highlight lines to be drawn at the right and bottom border. |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
40 * This style should be used when placing the size grip on top of the bottom right corner |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
41 * of a FramedComposite with style SHADOW_IN. If the FLAT style is set, the size grip is |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
42 * drawn in a Windows XP style instead of the normal Windows Classic style. |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
43 * </p><p> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
44 * <dl> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
45 * <dt><b>Styles:</b></dt> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
46 * <dd>SHADOW_IN, FLAT</dd> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
47 * <dt><b>Events:</b></dt> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
48 * <dd>(none)</dd> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
49 * </dl> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
50 * </p><p> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
51 * NOTE: The visibility of this widget is controlled by the "maximized" state of the |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
52 * shell. The size grip is hidden when the shell is maximized, even if it has been made |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
53 * visible by calling <code>setVisible(true)</code>. getVisible() always returns |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
54 * the value set with setVisible(). isVisible() returns the true visibility, as usual. |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
55 * </p> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
56 * |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
57 * <p>New in 1.6: Smoother resizing for a more native look & feel. The window size is |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
58 * not updated more than once every 25ms to reduce the number of unnecessary repaints.</p> |
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 * <p>New in 1.8: You can specify a parent Composite other than the shell which will be |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
61 * resized by the SizeGrip.</p> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
62 * |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
63 * @author Stefan Zeiger (szeiger@novocode.com) |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
64 * @since Mar 8, 2004 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
65 * @version $Id: SizeGrip.java,v 1.9 2005/01/24 21:52:14 szeiger Exp $ |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
66 */ |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
67 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
68 public final class SizeGrip : Canvas |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
69 { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
70 private static const int WIDTH = 13; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
71 private static const int HEIGHT = 13; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
72 private static const long UPDATE_DELAY = 25; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
73 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
74 private int mouseDownOffsetX, mouseDownOffsetY, snapBackX, snapBackY; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
75 private bool cancelled; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
76 private Cursor sizeCursor; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
77 private Point minSize; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
78 private bool userVisible = true; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
79 private /+volatile+/ long lastUpdate; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
80 private Timer timer; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
81 private TimerTask timerTask; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
82 private Composite resizableParent; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
83 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
84 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
85 public this(Composite parent, int style) |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
86 { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
87 this(parent, parent.getShell(), style); |
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 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
90 private void onDispose( Event e ){ |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
91 if(sizeCursor !is null) { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
92 sizeCursor.dispose(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
93 sizeCursor = null; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
94 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
95 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
96 private void onPaint( Event event ){ |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
97 Rectangle r = getClientArea(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
98 if(r.width is 0 || r.height is 0) return; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
99 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
100 Display disp = getDisplay(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
101 Color shadow = disp.getSystemColor(DWT.COLOR_WIDGET_NORMAL_SHADOW); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
102 Color highlight = disp.getSystemColor(DWT.COLOR_WIDGET_HIGHLIGHT_SHADOW); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
103 |
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 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
106 event.gc.setLineWidth(1); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
107 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
108 if((getStyle() & DWT.FLAT) !is 0) { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
109 event.gc.setBackground(highlight); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
110 event.gc.fillRectangle(r.width-3, r.height-3, 2, 2); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
111 event.gc.fillRectangle(r.width-7, r.height-3, 2, 2); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
112 event.gc.fillRectangle(r.width-11, r.height-3, 2, 2); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
113 event.gc.fillRectangle(r.width-3, r.height-7, 2, 2); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
114 event.gc.fillRectangle(r.width-7, r.height-7, 2, 2); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
115 event.gc.fillRectangle(r.width-3, r.height-11, 2, 2); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
116 event.gc.setBackground(shadow); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
117 event.gc.fillRectangle(r.width-4, r.height-4, 2, 2); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
118 event.gc.fillRectangle(r.width-8, r.height-4, 2, 2); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
119 event.gc.fillRectangle(r.width-12, r.height-4, 2, 2); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
120 event.gc.fillRectangle(r.width-4, r.height-8, 2, 2); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
121 event.gc.fillRectangle(r.width-8, r.height-8, 2, 2); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
122 event.gc.fillRectangle(r.width-4, r.height-12, 2, 2); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
123 event.gc.setForeground(highlight); |
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 else { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
126 event.gc.setForeground(shadow); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
127 event.gc.drawLine(r.width-3, r.height-2, r.width-2, r.height-3); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
128 event.gc.drawLine(r.width-4, r.height-2, r.width-2, r.height-4); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
129 event.gc.drawLine(r.width-7, r.height-2, r.width-2, r.height-7); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
130 event.gc.drawLine(r.width-8, r.height-2, r.width-2, r.height-8); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
131 event.gc.drawLine(r.width-11, r.height-2, r.width-2, r.height-11); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
132 event.gc.drawLine(r.width-12, r.height-2, r.width-2, r.height-12); |
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 event.gc.setForeground(highlight); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
135 event.gc.drawLine(r.width-5, r.height-2, r.width-2, r.height-5); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
136 event.gc.drawLine(r.width-9, r.height-2, r.width-2, r.height-9); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
137 event.gc.drawLine(r.width-13, r.height-2, r.width-2, r.height-13); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
138 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
139 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
140 if((getStyle() & DWT.SHADOW_IN) !is 0) { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
141 if(event.width > WIDTH) event.gc.drawLine(0, r.height-1, r.width-14, r.height-1); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
142 if(event.height > HEIGHT) event.gc.drawLine(r.width-1, 0, r.width-1, r.height-14); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
143 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
144 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
145 private void onMouseDown( Event event ){ |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
146 if(event.button is 1) { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
147 mouseDownOffsetX = event.x; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
148 mouseDownOffsetY = event.y; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
149 Point p = resizableParent.getSize(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
150 snapBackX = p.x; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
151 snapBackY = p.y; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
152 cancelled = false; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
153 //System.out.println("x="+mouseDownOffsetX+", y="+mouseDownOffsetY); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
154 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
155 else if(event.button is 3 && (event.stateMask & DWT.BUTTON1) !is 0) // chord click |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
156 { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
157 if(snapBackX > 0 && snapBackY > 0) |
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 resizableParent.setSize(snapBackX, snapBackY); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
160 snapBackX = 0; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
161 snapBackY = 0; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
162 cancelled = true; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
163 } |
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 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
166 private void onMouseMove( Event event ){ |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
167 if(!cancelled && (event.stateMask & DWT.BUTTON1) !is 0) |
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 if(timerTask !is null) |
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 timerTask.cancel(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
172 timerTask = null; |
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 long now = System.currentTimeMillis(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
175 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
176 long lastUpdate_; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
177 synchronized(this){ |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
178 lastUpdate_ = lastUpdate; |
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 if(lastUpdate_ + UPDATE_DELAY < now) |
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 performResize(event); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
184 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
185 synchronized(this){ |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
186 lastUpdate = now; |
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 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
190 else |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
191 { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
192 timerTask = new class() TimerTask |
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 public void run() |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
195 { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
196 TimerTask executingTask = this; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
197 event.display.asyncExec( dgRunnable( (Event event_, TimerTask executingTask_ ) |
190
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
188
diff
changeset
|
198 { |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
188
diff
changeset
|
199 if(executingTask_ !is timerTask) return; |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
188
diff
changeset
|
200 performResize(event_); |
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
188
diff
changeset
|
201 }, event, executingTask )); |
188
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 }; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
204 timer.schedule(timerTask, UPDATE_DELAY); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
205 } |
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 private void onMouseUp( Event event ){ |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
209 if(timerTask !is null) |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
210 { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
211 timerTask.cancel(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
212 timerTask = null; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
213 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
214 if(!cancelled && (event.stateMask & DWT.BUTTON1) !is 0) |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
215 { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
216 performResize(event); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
217 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
218 } |
190
df4e66472aff
novocode line endings, indention
Frank Benoit <benoit@tionex.de>
parents:
188
diff
changeset
|
219 |
188
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
220 public this(Composite parent, Composite resizableParent_, int style) |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
221 { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
222 super(parent, style = checkStyle (style)); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
223 this.timer = new Timer(true); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
224 this.resizableParent = resizableParent_; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
225 setSize(WIDTH, HEIGHT); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
226 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
227 sizeCursor = new Cursor(getDisplay(), DWT.CURSOR_SIZENWSE); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
228 setCursor(sizeCursor); |
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 addListener(DWT.Dispose, dgListener( &onDispose )); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
231 addListener(DWT.Paint, dgListener( &onPaint )); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
232 addListener(DWT.MouseDown, dgListener( &onMouseDown )); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
233 addListener(DWT.MouseMove, dgListener( &onMouseMove )); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
234 addListener(DWT.MouseUp, dgListener( &onMouseUp )); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
235 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
236 Listener resizeListener = ( null !is cast(Shell)resizableParent) ? dgListener( &onResize ) : null; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
237 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
238 if(resizeListener !is null) resizableParent.addListener(DWT.Resize, resizeListener); |
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 addListener(DWT.Dispose, dgListener( &onDisposeResizeListener, resizeListener )); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
241 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
242 updateVisibility(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
243 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
244 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
245 private void onDisposeResizeListener(Event event, Listener resizeListener ) { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
246 timer.cancel(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
247 if(resizeListener !is null) resizableParent.removeListener(DWT.Resize, resizeListener); |
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 private void onResize( Event event ){ |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
250 updateVisibility(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
251 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
252 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
253 private void performResize(Event event) |
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 // Make sure we stay within the container parent's client area |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
256 Rectangle ca; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
257 if(cast(Shell)resizableParent ) ca = getDisplay().getClientArea(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
258 else ca = getDisplay().map(resizableParent.getParent(), null, resizableParent.getParent().getClientArea()); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
259 Point limit = toControl(ca.x + ca.width - 1, ca.y + ca.height - 1); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
260 event.x = Math.min(event.x, limit.x); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
261 event.y = Math.min(event.y, limit.y); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
262 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
263 Point p = resizableParent.getSize(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
264 int newX = p.x + event.x - mouseDownOffsetX; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
265 int newY = p.y + event.y - mouseDownOffsetY; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
266 if(minSize !is null) |
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 newX = Math.max(minSize.x, newX); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
269 newY = Math.max(minSize.y, newY); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
270 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
271 if(newX !is p.x || newY !is p.y) resizableParent.setSize(newX, newY); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
272 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
273 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
274 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
275 private void updateVisibility() |
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 if( auto shell = cast(Shell)resizableParent ) |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
278 { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
279 bool vis = super.getVisible(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
280 bool max = shell.getMaximized(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
281 bool newVis = userVisible && !max; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
282 if(vis !is newVis) super.setVisible(newVis); |
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 else if(userVisible !is super.getVisible()) super.setVisible(userVisible); |
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 |
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 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
|
289 { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
290 checkWidget(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
291 if(wHint is DWT.DEFAULT) wHint = WIDTH; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
292 if(hHint is DWT.DEFAULT) hHint = HEIGHT; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
293 return new Point(wHint, hHint); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
294 } |
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 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
297 private static int checkStyle(int style) |
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 int mask = DWT.SHADOW_IN | DWT.FLAT; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
300 style &= mask; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
301 return style; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
302 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
303 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
304 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
305 public bool setFocus() |
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 checkWidget(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
308 return false; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
309 } |
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 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
312 public bool isReparentable () |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
313 { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
314 checkWidget(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
315 return false; |
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 |
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 * Set the allowed minimum size for the shell. The SizeGrip will |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
321 * not resize the shell to a smaller size. |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
322 * <p> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
323 * Note: This does <em>not</em> affect other ways of resizing the shell, |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
324 * like using the size controls which are placed on the trimmings by |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
325 * the window manager. |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
326 * </p> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
327 */ |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
328 |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
329 public void setMinimumShellSize(Point p) |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
330 { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
331 checkWidget(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
332 this.minSize = p; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
333 } |
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 |
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 * Set the allowed minimum size for the shell. The SizeGrip will |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
338 * not resize the shell to a smaller size. |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
339 * <p> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
340 * Note: This does <em>not</em> affect other ways of resizing the shell, |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
341 * like using the size controls which are placed on the trimmings by |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
342 * the window manager. |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
343 * </p> |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
344 */ |
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 public void setMinimumShellSize(int width, int height) |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
347 { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
348 checkWidget(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
349 this.minSize = new Point(width, height); |
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 |
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 public bool getVisible() |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
354 { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
355 checkWidget(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
356 return userVisible; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
357 } |
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 public void setVisible(bool visible) |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
361 { |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
362 checkWidget(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
363 userVisible = visible; |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
364 updateVisibility(); |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
365 } |
e3780acbbf80
Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
366 } |