annotate dwtx/novocode/SizeBorder.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 df4e66472aff
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.SizeBorder;
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.dwthelper.utils;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 import dwt.dwthelper.Runnable;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import dwtx.dwtxhelper.Timer;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwtx.dwtxhelper.TimerTask;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import dwt.DWT;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.graphics.Color;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.graphics.Cursor;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import dwt.graphics.GC;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwt.graphics.Point;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import dwt.graphics.Rectangle;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import dwt.widgets.Canvas;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import dwt.widgets.Composite;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 import dwt.widgets.Display;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import dwt.widgets.Event;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import dwt.widgets.Listener;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 import dwt.widgets.Shell;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32
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 * A border for a resizable container. This border control usually fills the
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 * entire container, with a content pane above it (not covering the actual
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 * border area).
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 * <p>If the style SWT.BORDER ist set, a beveled border (as used on Windows
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * Classic window decorations) will be drawn. Without this style, no drawing
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * is done.</p>
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 *
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 * @author Stefan Zeiger (szeiger@novocode.com)
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 * @since Jan 21, 2005
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 * @version $Id: SizeBorder.java 321 2005-02-26 15:44:24 +0000 (Sat, 26 Feb 2005) szeiger $
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 */
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 class SizeBorder : Canvas
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 private static const long UPDATE_DELAY = 25;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 private static const int AREA_NONE = 0;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 private static const int AREA_N = 1;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 private static const int AREA_S = 2;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 private static const int AREA_E = 4;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 private static const int AREA_W = 8;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 private static const int AREA_NW = 9;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 private static const int AREA_NE = 5;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 private static const int AREA_SE = 6;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 private static const int AREA_SW = 10;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 private Rectangle snapBack;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 private bool cancelled = true;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 private /**volatile*/ long lastUpdate;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 private Timer timer;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 private TimerTask timerTask;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 private Composite resizableParent;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 private Point minSize, mouseDownOffset;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 private int borderWidth = 4, cornerSize = 16;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 private Display display;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 private Cursor cursor, cursorNWSE, cursorNESW, cursorWE, cursorNS;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 private int currentArea;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 private Color highlightShadowColor, lightShadowColor, normalShadowColor,darkShadowColor;
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
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 this(Composite parent, int style)
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 this(parent, parent.getShell(), style);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 }
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 this(Composite parent, Composite resizableParent, int style)
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 super(parent, checkStyle (style));
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 this.timer = new Timer(true);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 this.resizableParent = resizableParent;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 this.display = getDisplay();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 cursorNWSE = new Cursor(getDisplay(), DWT.CURSOR_SIZENWSE);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 cursorNESW = new Cursor(getDisplay(), DWT.CURSOR_SIZENESW);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 cursorWE = new Cursor(getDisplay(), DWT.CURSOR_SIZEWE);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 cursorNS = new Cursor(getDisplay(), DWT.CURSOR_SIZENS);
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 addListener(DWT.Dispose, dgListener(&onDispose));
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 if((style & DWT.BORDER) !is 0)
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 highlightShadowColor = display.getSystemColor(DWT.COLOR_WIDGET_HIGHLIGHT_SHADOW);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 lightShadowColor = display.getSystemColor(DWT.COLOR_WIDGET_LIGHT_SHADOW);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 normalShadowColor = display.getSystemColor(DWT.COLOR_WIDGET_NORMAL_SHADOW);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 darkShadowColor = display.getSystemColor(DWT.COLOR_WIDGET_DARK_SHADOW);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 addListener(DWT.Paint, dgListener(&onPaint));
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 addListener(DWT.MouseDown, dgListener(&onMouseDown));
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 addListener(DWT.MouseMove, dgListener(&onMouseMove));
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 addListener(DWT.MouseUp, dgListener(&onMouseUp));
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 addListener(DWT.Show, dgListener(&onShow));
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 }
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 private void onDispose(Event event)
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 cursorNWSE.dispose();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 cursorNESW.dispose();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 cursorWE.dispose();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 cursorNS.dispose();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 timer.cancel();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 }
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123
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 private void onPaint(Event event)
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 Rectangle r = getClientArea();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 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
129 drawBevelRect(event.gc, r.x, r.y, r.width-1, r.height-1, lightShadowColor, darkShadowColor);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 drawBevelRect(event.gc, r.x+1, r.y+1, r.width-3, r.height-3, highlightShadowColor, normalShadowColor);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 }
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132
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 private void onMouseDown(Event event)
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 if(event.button is 1)
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 currentArea = areaAtPoint(event.x, event.y);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 if(currentArea is AREA_NONE) return;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 if(cast(Shell)resizableParent !is null)
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 mouseDownOffset = toDisplay(event.x, event.y);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 else
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 mouseDownOffset = display.map(/**SizeBorder.this*/getSizeBorder(), resizableParent.getParent(), event.x, event.y);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 snapBack = resizableParent.getBounds();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 cancelled = false;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 }
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 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
148 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 if(snapBack !is null)
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 resizableParent.setBounds(snapBack);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 snapBack = null;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 cancelled = true;
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 }
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
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 private void onMouseMove(Event event)
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 if((event.stateMask & DWT.BUTTON1) is 0) updateCursor(areaAtPoint(event.x, event.y));
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 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
164 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 if(timerTask !is null)
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 timerTask.cancel();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 timerTask = null;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 }
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 long now = System.currentTimeMillis();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 if(lastUpdate + UPDATE_DELAY < now)
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 performResize(event);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 lastUpdate = now;
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 else
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 timerTask = new class() TimerTask
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 public void run()
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 TimerTask executingTask = this;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 event.display.asyncExec(new class() Runnable
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 public void run()
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 if(executingTask !is timerTask) return;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 performResize(event);
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 });
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 };
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 timer.schedule(timerTask, UPDATE_DELAY);
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 }
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
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 private void onMouseUp(Event event)
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 if(timerTask !is null)
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 timerTask.cancel();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 timerTask = null;
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 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
207 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 performResize(event);
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 }
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 private void onShow(Event event)
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 Point p = toControl(display.getCursorLocation());
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 updateCursor(areaAtPoint(p.x, p.y));
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
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 private SizeBorder getSizeBorder()
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 return this;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 }
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 private static int checkStyle(int style)
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 //int mask = DWT.NONE;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 //style &= mask;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 style = DWT.NO_FOCUS;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230 return style;
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
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 private void performResize(Event event)
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 // 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
237 Rectangle ca;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 if(cast(Shell)resizableParent !is null) ca = getDisplay().getClientArea();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 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
240 Point caOffset = toControl(ca.x, ca.y);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 event.x = Math.max(Math.min(event.x, caOffset.x + ca.width - 1), caOffset.x);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 event.y = Math.max(Math.min(event.y, caOffset.y + ca.height - 1), caOffset.y);
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 // Compute movement relative to position at MouseDown event
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 Point movement = (cast(Shell)resizableParent !is null)
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 ? toDisplay(event.x, event.y)
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 : display.map(this, resizableParent.getParent(), event.x, event.y);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 movement.x -= mouseDownOffset.x;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249 movement.y -= mouseDownOffset.y;
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 // Compute new size and position
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 int newW = snapBack.width, newH = snapBack.height, newX = snapBack.x, newY = snapBack.y;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 if((currentArea & AREA_E) !is 0) newW += movement.x;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 else if((currentArea & AREA_W) !is 0) { newW -= movement.x; newX += snapBack.width - newW; }
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 if((currentArea & AREA_S) !is 0) newH += movement.y;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256 else if((currentArea & AREA_N) !is 0) { newH -= movement.y; newY += snapBack.height - newH; }
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 // Do not go below the container's minimum size
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259 int minW, minH;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260 if(minSize !is null) { minW = minSize.x; minH = minSize.y; }
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 else { minW = 0; minH = 0; }
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 int maxX = snapBack.x + snapBack.width - minW;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263 int maxY = snapBack.y + snapBack.height - minH;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 newW = Math.max(minW, newW);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 newH = Math.max(minH, newH);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 newX = Math.min(maxX, newX);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 newY = Math.min(maxY, newY);
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 resizableParent.setBounds(newX, newY, newW, newH);
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
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 private void updateCursor(int area)
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 Cursor c = null;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277 switch(area)
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 case AREA_N: case AREA_S: c = cursorNS; break;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 case AREA_W: case AREA_E: c = cursorWE; break;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 case AREA_NW: case AREA_SE: c = cursorNWSE; break;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 case AREA_NE: case AREA_SW: c = cursorNESW; break;
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 if(cursor is c) return;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285 cursor = c;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286 setCursor(c);
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
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 private int areaAtPoint(int x, int y)
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 Point size = getSize();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
293 if(x < borderWidth) // left edge
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 if(y < cornerSize) return AREA_NW;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
296 else if(y >= size.y-cornerSize) return AREA_SW;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
297 else return AREA_W;
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 else if(x >= size.x-borderWidth) // right edge
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301 if(y >= size.y-cornerSize) return AREA_SE;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 else if(y < cornerSize) return AREA_NE;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303 else return AREA_E;
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 else if(y < borderWidth) // top edge
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 if(x < cornerSize) return AREA_NW;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308 else if(x >= size.x-cornerSize) return AREA_NE;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 else return AREA_N;
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 else if(y >= size.y-borderWidth) // bottom edge
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
312 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313 if(x >= size.x-cornerSize) return AREA_SE;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314 else if(x < cornerSize) return AREA_SW;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315 else return AREA_S;
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 else return AREA_NONE;
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
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
321 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
322 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323 checkWidget();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324 if(wHint == DWT.DEFAULT) wHint = 0;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325 if(hHint == DWT.DEFAULT) hHint = 0;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326 return new Point(wHint, hHint);
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
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
330 public bool setFocus()
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
331 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
332 checkWidget();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
333 return false;
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 public bool isReparentable ()
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
338 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 checkWidget();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340 return false;
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 /**
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345 * 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
346 * 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
347 * <p>
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
348 * 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
349 * 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
350 * the window manager.
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 * </p>
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
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
354 public void setMinimumShellSize(Point p)
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
356 checkWidget();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357 this.minSize = p;
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 /**
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362 * 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
363 * 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
364 * <p>
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
365 * 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
366 * 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
367 * the window manager.
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
368 * </p>
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
369 */
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 public void setMinimumShellSize(int width, int height)
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 checkWidget();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
374 this.minSize = new Point(width, height);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
375 }
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
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
378 public void setBorderWidth(int width)
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
379 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
380 checkWidget();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
381 borderWidth = width;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382 Point p = toControl(display.getCursorLocation());
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
383 updateCursor(areaAtPoint(p.x, p.y));
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
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 public void setCornerSize(int size)
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 checkWidget();
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
390 cornerSize = size;
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
391 Point p = toControl(display.getCursorLocation());
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 updateCursor(areaAtPoint(p.x, p.y));
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
393 }
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
394
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
396 private static void drawBevelRect(GC gc, int x, int y, int w, int h, Color topleft, Color bottomright)
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
397 {
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
398 gc.setForeground(bottomright);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
399 gc.drawLine(x + w, y, x + w, y + h);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
400 gc.drawLine(x, y + h, x + w, y + h);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
401
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402 gc.setForeground(topleft);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
403 gc.drawLine(x, y, x + w - 1, y);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
404 gc.drawLine(x, y, x, y + h - 1);
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 }
e3780acbbf80 Added ported sources from Novocode, thanks to WasserDragoon
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
406 }