Mercurial > projects > dwt-linux
annotate dwt/custom/ScrolledComposite.d @ 259:c0d810de7093
Update SWT 3.4M7 to 3.4
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 29 Jun 2008 14:33:38 +0200 |
parents | ce446666f5a2 |
children |
rev | line source |
---|---|
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
1 /******************************************************************************* |
259 | 2 * Copyright (c) 2000, 2008 IBM Corporation and others. |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3 * All rights reserved. This program and the accompanying materials |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4 * are made available under the terms of the Eclipse Public License v1.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5 * which accompanies this distribution, and is available at |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6 * http://www.eclipse.org/legal/epl-v10.html |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8 * Contributors: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
9 * IBM Corporation - initial API and implementation |
108 | 10 * Port to the D programming language: |
11 * Frank Benoit <benoit@tionex.de> | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 *******************************************************************************/ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
13 module dwt.custom.ScrolledComposite; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
14 |
238 | 15 import dwt.dwthelper.utils; |
16 | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
17 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
18 import dwt.DWT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
19 import dwt.DWTException; |
240 | 20 import dwt.events.DisposeEvent; |
21 import dwt.events.DisposeListener; | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
22 import dwt.graphics.Point; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
23 import dwt.graphics.Rectangle; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
24 import dwt.widgets.Composite; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
25 import dwt.widgets.Control; |
240 | 26 import dwt.widgets.Display; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
27 import dwt.widgets.Event; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
28 import dwt.widgets.Layout; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
29 import dwt.widgets.Listener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
30 import dwt.widgets.ScrollBar; |
240 | 31 import dwt.widgets.Shell; |
103 | 32 import dwt.custom.ScrolledCompositeLayout; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
33 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
34 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
35 * A ScrolledComposite provides scrollbars and will scroll its content when the user |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
36 * uses the scrollbars. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
37 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
38 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
39 * <p>There are two ways to use the ScrolledComposite: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
40 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
41 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
42 * 1) Set the size of the control that is being scrolled and the ScrolledComposite |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
43 * will show scrollbars when the contained control can not be fully seen. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
44 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
45 * 2) The second way imitates the way a browser would work. Set the minimum size of |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
46 * the control and the ScrolledComposite will show scroll bars if the visible area is |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
47 * less than the minimum size of the control and it will expand the size of the control |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
48 * if the visible area is greater than the minimum size. This requires invoking |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
49 * both setMinWidth(), setMinHeight() and setExpandHorizontal(), setExpandVertical(). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
50 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
51 * <code><pre> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
52 * public static void main (String [] args) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
53 * Display display = new Display (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
54 * Color red = display.getSystemColor(DWT.COLOR_RED); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
55 * Color blue = display.getSystemColor(DWT.COLOR_BLUE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
56 * Shell shell = new Shell (display); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
57 * shell.setLayout(new FillLayout()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
58 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
59 * // set the size of the scrolled content - method 1 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
60 * final ScrolledComposite sc1 = new ScrolledComposite(shell, DWT.H_SCROLL | DWT.V_SCROLL | DWT.BORDER); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
61 * final Composite c1 = new Composite(sc1, DWT.NONE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
62 * sc1.setContent(c1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
63 * c1.setBackground(red); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
64 * GridLayout layout = new GridLayout(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
65 * layout.numColumns = 4; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
66 * c1.setLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
67 * Button b1 = new Button (c1, DWT.PUSH); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
68 * b1.setText("first button"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
69 * c1.setSize(c1.computeSize(DWT.DEFAULT, DWT.DEFAULT)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
70 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
71 * // set the minimum width and height of the scrolled content - method 2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
72 * final ScrolledComposite sc2 = new ScrolledComposite(shell, DWT.H_SCROLL | DWT.V_SCROLL | DWT.BORDER); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
73 * sc2.setExpandHorizontal(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
74 * sc2.setExpandVertical(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
75 * final Composite c2 = new Composite(sc2, DWT.NONE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
76 * sc2.setContent(c2); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
77 * c2.setBackground(blue); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
78 * layout = new GridLayout(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
79 * layout.numColumns = 4; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
80 * c2.setLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
81 * Button b2 = new Button (c2, DWT.PUSH); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
82 * b2.setText("first button"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
83 * sc2.setMinSize(c2.computeSize(DWT.DEFAULT, DWT.DEFAULT)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
84 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
85 * Button add = new Button (shell, DWT.PUSH); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
86 * add.setText("add children"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
87 * final int[] index = new int[]{0}; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
88 * add.addListener(DWT.Selection, new Listener() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
89 * public void handleEvent(Event e) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
90 * index[0]++; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
91 * Button button = new Button(c1, DWT.PUSH); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
92 * button.setText("button "+index[0]); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
93 * // reset size of content so children can be seen - method 1 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
94 * c1.setSize(c1.computeSize(DWT.DEFAULT, DWT.DEFAULT)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
95 * c1.layout(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
96 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
97 * button = new Button(c2, DWT.PUSH); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
98 * button.setText("button "+index[0]); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
99 * // reset the minimum width and height so children can be seen - method 2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
100 * sc2.setMinSize(c2.computeSize(DWT.DEFAULT, DWT.DEFAULT)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
101 * c2.layout(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
102 * } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
103 * }); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
104 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
105 * shell.open (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
106 * while (!shell.isDisposed ()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
107 * if (!display.readAndDispatch ()) display.sleep (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
108 * } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
109 * display.dispose (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
110 * } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
111 * </pre></code> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
112 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
113 * <dl> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
114 * <dt><b>Styles:</b><dd>H_SCROLL, V_SCROLL |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
115 * </dl> |
259 | 116 * |
117 * @see <a href="http://www.eclipse.org/swt/snippets/#scrolledcomposite">ScrolledComposite snippets</a> | |
118 * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a> | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
119 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
120 public class ScrolledComposite : Composite { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
121 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
122 Control content; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
123 Listener contentListener; |
240 | 124 Listener filter; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
125 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
126 int minHeight = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
127 int minWidth = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
128 bool expandHorizontal = false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
129 bool expandVertical = false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
130 bool alwaysShowScroll = false; |
240 | 131 bool showFocusedControl = false; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
132 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
133 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
134 * Constructs a new instance of this class given its parent |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
135 * and a style value describing its behavior and appearance. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
136 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
137 * The style value is either one of the style constants defined in |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
138 * class <code>DWT</code> which is applicable to instances of this |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
139 * class, or must be built by <em>bitwise OR</em>'ing together |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
140 * (that is, using the <code>int</code> "|" operator) two or more |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
141 * of those <code>DWT</code> style constants. The class description |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
142 * lists the style constants that are applicable to the class. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
143 * Style bits are also inherited from superclasses. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
144 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
145 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
146 * @param parent a widget which will be the parent of the new instance (cannot be null) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
147 * @param style the style of widget to construct |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
148 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
149 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
150 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
151 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
152 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
153 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
154 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
155 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
156 * @see DWT#H_SCROLL |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
157 * @see DWT#V_SCROLL |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
158 * @see #getStyle() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
159 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
160 public this(Composite parent, int style) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
161 super(parent, checkStyle(style)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
162 super.setLayout(new ScrolledCompositeLayout()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
163 ScrollBar hBar = getHorizontalBar (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
164 if (hBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
165 hBar.setVisible(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
166 hBar.addListener (DWT.Selection, new class() Listener { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
167 public void handleEvent (Event e) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
168 hScroll(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
169 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
170 }); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
171 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
172 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
173 ScrollBar vBar = getVerticalBar (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
174 if (vBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
175 vBar.setVisible(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
176 vBar.addListener (DWT.Selection, new class() Listener { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
177 public void handleEvent (Event e) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
178 vScroll(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
179 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
180 }); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
181 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
182 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
183 contentListener = new class() Listener { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
184 public void handleEvent(Event e) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
185 if (e.type !is DWT.Resize) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
186 layout(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
187 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
188 }; |
240 | 189 |
190 filter = new class() Listener { | |
191 public void handleEvent(Event event) { | |
192 if (auto control = cast(Control)event.widget ) { | |
193 if (contains(control)) showControl(control); | |
194 } | |
195 } | |
196 }; | |
197 | |
198 addDisposeListener(new class() DisposeListener { | |
199 public void widgetDisposed(DisposeEvent e) { | |
200 getDisplay().removeFilter(DWT.FocusIn, filter); | |
201 } | |
202 }); | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
203 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
204 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
205 static int checkStyle (int style) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
206 int mask = DWT.H_SCROLL | DWT.V_SCROLL | DWT.BORDER | DWT.LEFT_TO_RIGHT | DWT.RIGHT_TO_LEFT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
207 return style & mask; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
208 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
209 |
240 | 210 bool contains(Control control) { |
211 if (control is null || control.isDisposed()) return false; | |
212 | |
213 Composite parent = control.getParent(); | |
214 while (parent !is null && !( null !is cast(Shell)parent )) { | |
215 if (this is parent) return true; | |
216 parent = parent.getParent(); | |
217 } | |
218 return false; | |
219 } | |
220 | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
221 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
222 * Returns the Always Show Scrollbars flag. True if the scrollbars are |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
223 * always shown even if they are not required. False if the scrollbars are only |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
224 * visible when some part of the composite needs to be scrolled to be seen. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
225 * The H_SCROLL and V_SCROLL style bits are also required to enable scrollbars in the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
226 * horizontal and vertical directions. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
227 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
228 * @return the Always Show Scrollbars flag value |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
229 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
230 public bool getAlwaysShowScrollBars() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
231 //checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
232 return alwaysShowScroll; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
233 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
234 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
235 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
236 * Returns <code>true</code> if the content control |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
237 * will be expanded to fill available horizontal space. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
238 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
239 * @return the receiver's horizontal expansion state |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
240 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
241 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
242 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
243 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
244 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
245 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
246 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
247 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
248 public bool getExpandHorizontal() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
249 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
250 return expandHorizontal; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
251 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
252 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
253 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
254 * Returns <code>true</code> if the content control |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
255 * will be expanded to fill available vertical space. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
256 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
257 * @return the receiver's vertical expansion state |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
258 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
259 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
260 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
261 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
262 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
263 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
264 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
265 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
266 public bool getExpandVertical() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
267 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
268 return expandVertical; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
269 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
270 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
271 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
272 * Returns the minimum width of the content control. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
273 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
274 * @return the minimum width |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
275 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
276 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
277 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
278 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
279 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
280 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
281 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
282 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
283 public int getMinWidth() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
284 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
285 return minWidth; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
286 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
287 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
288 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
289 * Returns the minimum height of the content control. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
290 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
291 * @return the minimum height |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
292 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
293 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
294 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
295 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
296 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
297 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
298 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
299 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
300 public int getMinHeight() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
301 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
302 return minHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
303 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
304 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
305 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
306 * Get the content that is being scrolled. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
307 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
308 * @return the control displayed in the content area |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
309 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
310 public Control getContent() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
311 //checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
312 return content; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
313 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
314 |
240 | 315 /** |
316 * Returns <code>true</code> if the receiver automatically scrolls to a focused child control | |
317 * to make it visible. Otherwise, returns <code>false</code>. | |
318 * | |
259 | 319 * @return a bool indicating whether focused child controls are automatically scrolled into the viewport |
320 * | |
240 | 321 * @exception DWTException <ul> |
322 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> | |
323 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
324 * </ul> | |
325 * | |
326 * @since 3.4 | |
327 */ | |
328 public bool getShowFocusedControl() { | |
329 checkWidget(); | |
330 return showFocusedControl; | |
331 } | |
332 | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
333 void hScroll() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
334 if (content is null) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
335 Point location = content.getLocation (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
336 ScrollBar hBar = getHorizontalBar (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
337 int hSelection = hBar.getSelection (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
338 content.setLocation (-hSelection, location.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
339 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
340 bool needHScroll(Rectangle contentRect, bool vVisible) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
341 ScrollBar hBar = getHorizontalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
342 if (hBar is null) return false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
343 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
344 Rectangle hostRect = getBounds(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
345 int border = getBorderWidth(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
346 hostRect.width -= 2*border; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
347 ScrollBar vBar = getVerticalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
348 if (vVisible && vBar !is null) hostRect.width -= vBar.getSize().x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
349 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
350 if (!expandHorizontal && contentRect.width > hostRect.width) return true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
351 if (expandHorizontal && minWidth > hostRect.width) return true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
352 return false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
353 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
354 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
355 bool needVScroll(Rectangle contentRect, bool hVisible) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
356 ScrollBar vBar = getVerticalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
357 if (vBar is null) return false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
358 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
359 Rectangle hostRect = getBounds(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
360 int border = getBorderWidth(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
361 hostRect.height -= 2*border; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
362 ScrollBar hBar = getHorizontalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
363 if (hVisible && hBar !is null) hostRect.height -= hBar.getSize().y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
364 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
365 if (!expandVertical && contentRect.height > hostRect.height) return true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
366 if (expandVertical && minHeight > hostRect.height) return true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
367 return false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
368 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
369 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
370 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
371 * Return the point in the content that currently appears in the top left |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
372 * corner of the scrolled composite. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
373 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
374 * @return the point in the content that currently appears in the top left |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
375 * corner of the scrolled composite. If no content has been set, this returns |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
376 * (0, 0). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
377 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
378 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
379 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
380 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
381 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
382 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
383 * @since 2.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
384 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
385 public Point getOrigin() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
386 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
387 if (content is null) return new Point(0, 0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
388 Point location = content.getLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
389 return new Point(-location.x, -location.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
390 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
391 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
392 * Scrolls the content so that the specified point in the content is in the top |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
393 * left corner. If no content has been set, nothing will occur. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
394 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
395 * Negative values will be ignored. Values greater than the maximum scroll |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
396 * distance will result in scrolling to the end of the scrollbar. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
397 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
398 * @param origin the point on the content to appear in the top left corner |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
399 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
400 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
401 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
402 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
403 * <li>ERROR_INVALID_ARGUMENT - value of origin is outside of content |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
404 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
405 * @since 2.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
406 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
407 public void setOrigin(Point origin) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
408 setOrigin(origin.x, origin.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
409 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
410 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
411 * Scrolls the content so that the specified point in the content is in the top |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
412 * left corner. If no content has been set, nothing will occur. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
413 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
414 * Negative values will be ignored. Values greater than the maximum scroll |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
415 * distance will result in scrolling to the end of the scrollbar. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
416 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
417 * @param x the x coordinate of the content to appear in the top left corner |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
418 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
419 * @param y the y coordinate of the content to appear in the top left corner |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
420 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
421 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
422 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
423 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
424 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
425 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
426 * @since 2.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
427 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
428 public void setOrigin(int x, int y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
429 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
430 if (content is null) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
431 ScrollBar hBar = getHorizontalBar (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
432 if (hBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
433 hBar.setSelection(x); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
434 x = -hBar.getSelection (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
435 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
436 x = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
437 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
438 ScrollBar vBar = getVerticalBar (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
439 if (vBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
440 vBar.setSelection(y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
441 y = -vBar.getSelection (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
442 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
443 y = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
444 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
445 content.setLocation(x, y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
446 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
447 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
448 * Set the Always Show Scrollbars flag. True if the scrollbars are |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
449 * always shown even if they are not required. False if the scrollbars are only |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
450 * visible when some part of the composite needs to be scrolled to be seen. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
451 * The H_SCROLL and V_SCROLL style bits are also required to enable scrollbars in the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
452 * horizontal and vertical directions. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
453 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
454 * @param show true to show the scrollbars even when not required, false to show scrollbars only when required |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
455 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
456 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
457 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
458 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
459 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
460 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
461 public void setAlwaysShowScrollBars(bool show) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
462 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
463 if (show is alwaysShowScroll) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
464 alwaysShowScroll = show; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
465 ScrollBar hBar = getHorizontalBar (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
466 if (hBar !is null && alwaysShowScroll) hBar.setVisible(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
467 ScrollBar vBar = getVerticalBar (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
468 if (vBar !is null && alwaysShowScroll) vBar.setVisible(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
469 layout(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
470 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
471 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
472 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
473 * Set the content that will be scrolled. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
474 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
475 * @param content the control to be displayed in the content area |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
476 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
477 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
478 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
479 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
480 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
481 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
482 public void setContent(Control content) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
483 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
484 if (this.content !is null && !this.content.isDisposed()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
485 this.content.removeListener(DWT.Resize, contentListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
486 this.content.setBounds(new Rectangle(-200, -200, 0, 0)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
487 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
488 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
489 this.content = content; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
490 ScrollBar vBar = getVerticalBar (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
491 ScrollBar hBar = getHorizontalBar (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
492 if (this.content !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
493 if (vBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
494 vBar.setMaximum (0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
495 vBar.setThumb (0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
496 vBar.setSelection(0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
497 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
498 if (hBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
499 hBar.setMaximum (0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
500 hBar.setThumb (0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
501 hBar.setSelection(0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
502 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
503 content.setLocation(0, 0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
504 layout(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
505 this.content.addListener(DWT.Resize, contentListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
506 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
507 if (hBar !is null) hBar.setVisible(alwaysShowScroll); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
508 if (vBar !is null) vBar.setVisible(alwaysShowScroll); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
509 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
510 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
511 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
512 * Configure the ScrolledComposite to resize the content object to be as wide as the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
513 * ScrolledComposite when the width of the ScrolledComposite is greater than the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
514 * minimum width specified in setMinWidth. If the ScrolledComposite is less than the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
515 * minimum width, the content will not be resized and instead the horizontal scroll bar will be |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
516 * used to view the entire width. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
517 * If expand is false, this behaviour is turned off. By default, this behaviour is turned off. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
518 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
519 * @param expand true to expand the content control to fill available horizontal space |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
520 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
521 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
522 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
523 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
524 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
525 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
526 public void setExpandHorizontal(bool expand) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
527 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
528 if (expand is expandHorizontal) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
529 expandHorizontal = expand; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
530 layout(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
531 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
532 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
533 * Configure the ScrolledComposite to resize the content object to be as tall as the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
534 * ScrolledComposite when the height of the ScrolledComposite is greater than the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
535 * minimum height specified in setMinHeight. If the ScrolledComposite is less than the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
536 * minimum height, the content will not be resized and instead the vertical scroll bar will be |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
537 * used to view the entire height. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
538 * If expand is false, this behaviour is turned off. By default, this behaviour is turned off. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
539 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
540 * @param expand true to expand the content control to fill available vertical space |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
541 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
542 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
543 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
544 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
545 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
546 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
547 public void setExpandVertical(bool expand) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
548 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
549 if (expand is expandVertical) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
550 expandVertical = expand; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
551 layout(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
552 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
553 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
554 * Sets the layout which is associated with the receiver to be |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
555 * the argument which may be null. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
556 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
557 * Note: No Layout can be set on this Control because it already |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
558 * manages the size and position of its children. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
559 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
560 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
561 * @param layout the receiver's new layout or null |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
562 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
563 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
564 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
565 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
566 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
567 */ |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
568 public override void setLayout (Layout layout) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
569 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
570 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
571 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
572 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
573 * Specify the minimum height at which the ScrolledComposite will begin scrolling the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
574 * content with the vertical scroll bar. This value is only relevant if |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
575 * setExpandVertical(true) has been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
576 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
577 * @param height the minimum height or 0 for default height |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
578 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
579 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
580 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
581 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
582 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
583 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
584 public void setMinHeight(int height) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
585 setMinSize(minWidth, height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
586 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
587 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
588 * Specify the minimum width and height at which the ScrolledComposite will begin scrolling the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
589 * content with the horizontal scroll bar. This value is only relevant if |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
590 * setExpandHorizontal(true) and setExpandVertical(true) have been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
591 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
592 * @param size the minimum size or null for the default size |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
593 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
594 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
595 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
596 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
597 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
598 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
599 public void setMinSize(Point size) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
600 if (size is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
601 setMinSize(0, 0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
602 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
603 setMinSize(size.x, size.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
604 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
605 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
606 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
607 * Specify the minimum width and height at which the ScrolledComposite will begin scrolling the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
608 * content with the horizontal scroll bar. This value is only relevant if |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
609 * setExpandHorizontal(true) and setExpandVertical(true) have been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
610 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
611 * @param width the minimum width or 0 for default width |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
612 * @param height the minimum height or 0 for default height |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
613 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
614 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
615 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
616 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
617 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
618 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
619 public void setMinSize(int width, int height) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
620 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
621 if (width is minWidth && height is minHeight) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
622 minWidth = Math.max(0, width); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
623 minHeight = Math.max(0, height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
624 layout(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
625 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
626 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
627 * Specify the minimum width at which the ScrolledComposite will begin scrolling the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
628 * content with the horizontal scroll bar. This value is only relevant if |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
629 * setExpandHorizontal(true) has been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
630 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
631 * @param width the minimum width or 0 for default width |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
632 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
633 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
634 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
635 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
636 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
637 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
638 public void setMinWidth(int width) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
639 setMinSize(width, minHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
640 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
641 |
240 | 642 /** |
643 * Configure the receiver to automatically scroll to a focused child control | |
644 * to make it visible. | |
645 * | |
646 * If show is <code>false</code>, show a focused control is off. | |
647 * By default, show a focused control is off. | |
648 * | |
649 * @param show <code>true</code> to show a focused control. | |
650 * | |
651 * @exception DWTException <ul> | |
652 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> | |
653 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
654 * </ul> | |
655 * | |
259 | 656 * @since 3.4 |
240 | 657 */ |
658 public void setShowFocusedControl(bool show) { | |
659 checkWidget(); | |
660 if (showFocusedControl is show) return; | |
661 Display display = getDisplay(); | |
662 display.removeFilter(DWT.FocusIn, filter); | |
663 showFocusedControl = show; | |
664 if (!showFocusedControl) return; | |
665 display.addFilter(DWT.FocusIn, filter); | |
666 Control control = display.getFocusControl(); | |
667 if (contains(control)) showControl(control); | |
668 } | |
669 | |
670 /** | |
671 * Scrolls the content of the receiver so that the control is visible. | |
672 * | |
673 * @param control the control to be shown | |
674 * | |
675 * @exception IllegalArgumentException <ul> | |
676 * <li>ERROR_NULL_ARGUMENT - if the control is null</li> | |
677 * <li>ERROR_INVALID_ARGUMENT - if the control has been disposed</li> | |
678 * </ul> | |
679 * @exception DWTException <ul> | |
680 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> | |
681 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
682 * </ul> | |
683 * | |
684 * @since 3.4 | |
685 */ | |
686 public void showControl(Control control) { | |
687 checkWidget (); | |
688 if (control is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); | |
689 if (control.isDisposed ()) DWT.error(DWT.ERROR_INVALID_ARGUMENT); | |
690 if (!contains(control)) DWT.error(DWT.ERROR_INVALID_ARGUMENT); | |
691 | |
692 Rectangle itemRect = getDisplay().map(control.getParent(), this, control.getBounds()); | |
693 Rectangle area = getClientArea(); | |
694 Point origin = getOrigin(); | |
695 if (itemRect.x < 0) origin.x = Math.max(0, origin.x + itemRect.x); | |
696 if (itemRect.y < 0) origin.y = Math.max(0, origin.y + itemRect.y); | |
697 if (area.width < itemRect.x + itemRect.width) origin.x = Math.max(0, origin.x + itemRect.x + itemRect.width - area.width); | |
698 if (area.height < itemRect.y + itemRect.height) origin.y = Math.max(0, origin.y + itemRect.y + itemRect.height - area.height); | |
699 setOrigin(origin); | |
700 } | |
701 | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
702 void vScroll() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
703 if (content is null) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
704 Point location = content.getLocation (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
705 ScrollBar vBar = getVerticalBar (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
706 int vSelection = vBar.getSelection (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
707 content.setLocation (location.x, -vSelection); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
708 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
709 } |