annotate dwt/custom/ViewFormLayout.d @ 102:12e3e0e477cd

package custom, module and imports ok
author Frank Benoit <benoit@tionex.de>
date Fri, 18 Jan 2008 11:45:54 +0100
parents
children 0179b2e17eb2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
102
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2000, 2005 IBM Corporation and others.
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
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 *******************************************************************************/
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 module dwt.custom.ViewFormLayout;
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
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14 import dwt.DWT;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 import dwt.graphics.Point;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import dwt.graphics.Rectangle;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwt.widgets.Composite;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwt.widgets.Control;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import dwt.widgets.Layout;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.widgets.Scrollable;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 /**
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 * This class provides the layout for ViewForm
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 *
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 * @see ViewForm
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 */
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 class ViewFormLayout : Layout {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 protected Point computeSize(Composite composite, int wHint, int hHint, bool flushCache) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 ViewForm form = cast(ViewForm)composite;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 Control left = form.topLeft;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 Control center = form.topCenter;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 Control right = form.topRight;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 Control content = form.content;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 Point leftSize = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 if (left !is null) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 leftSize = computeChildSize(left, DWT.DEFAULT, DWT.DEFAULT, flushCache);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 Point centerSize = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 if (center !is null) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 centerSize = computeChildSize(center, DWT.DEFAULT, DWT.DEFAULT, flushCache);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 Point rightSize = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 if (right !is null) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 rightSize = computeChildSize(right, DWT.DEFAULT, DWT.DEFAULT, flushCache);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 Point size = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 // calculate width of title bar
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 if (form.separateTopCenter ||
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 (wHint !is DWT.DEFAULT && leftSize.x + centerSize.x + rightSize.x > wHint)) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 size.x = leftSize.x + rightSize.x;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 if (leftSize.x > 0 && rightSize.x > 0) size.x += form.horizontalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 size.x = Math.max(centerSize.x, size.x);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 size.y = Math.max(leftSize.y, rightSize.y);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 if (center !is null){
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 size.y += centerSize.y;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 if (left !is null ||right !is null)size.y += form.verticalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 } else {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 size.x = leftSize.x + centerSize.x + rightSize.x;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 int count = -1;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 if (leftSize.x > 0) count++;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 if (centerSize.x > 0) count++;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 if (rightSize.x > 0) count++;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 if (count > 0) size.x += count * form.horizontalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 size.y = Math.max(leftSize.y, Math.max(centerSize.y, rightSize.y));
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 if (content !is null) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 if (left !is null || right !is null || center !is null) size.y += 1; // allow space for a vertical separator
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 Point contentSize = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 contentSize = computeChildSize(content, DWT.DEFAULT, DWT.DEFAULT, flushCache);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 size.x = Math.max (size.x, contentSize.x);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 size.y += contentSize.y;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 if (size.y > contentSize.y) size.y += form.verticalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 size.x += 2*form.marginWidth;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 size.y += 2*form.marginHeight;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 if (wHint !is DWT.DEFAULT) size.x = wHint;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 if (hHint !is DWT.DEFAULT) size.y = hHint;
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 return size;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 Point computeChildSize(Control control, int wHint, int hHint, bool flushCache) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 Object data = control.getLayoutData();
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 if (data is null || !( null !is cast(CLayoutData)data )) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 data = new CLayoutData();
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 control.setLayoutData(data);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 return (cast(CLayoutData)data).computeSize(control, wHint, hHint, flushCache);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 }
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 int computeTrim(Control c) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 if ( auto sa = cast(Scrollable)c) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 Rectangle rect = sa.computeTrim (0, 0, 0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 return rect.width;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 return c.getBorderWidth () * 2;
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 protected bool flushCache(Control control) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 Object data = control.getLayoutData();
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 if ( auto ld = cast(CLayoutData)data ) ld.flushCache();
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 return true;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 }
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 protected void layout(Composite composite, bool flushCache) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 ViewForm form = cast(ViewForm)composite;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 Control left = form.topLeft;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 Control center = form.topCenter;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 Control right = form.topRight;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 Control content = form.content;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 Rectangle rect = composite.getClientArea();
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 Point leftSize = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 if (left !is null && !left.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 leftSize = computeChildSize(left, DWT.DEFAULT, DWT.DEFAULT, flushCache);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 Point centerSize = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 if (center !is null && !center.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 centerSize = computeChildSize(center, DWT.DEFAULT, DWT.DEFAULT, flushCache);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 Point rightSize = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 if (right !is null && !right.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 rightSize = computeChildSize(right, DWT.DEFAULT, DWT.DEFAULT, flushCache);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 }
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 int minTopWidth = leftSize.x + centerSize.x + rightSize.x + 2*form.marginWidth + 2*form.highlight;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 int count = -1;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 if (leftSize.x > 0) count++;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 if (centerSize.x > 0) count++;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 if (rightSize.x > 0) count++;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 if (count > 0) minTopWidth += count * form.horizontalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 int x = rect.x + rect.width - form.marginWidth - form.highlight;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 int y = rect.y + form.marginHeight + form.highlight;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 bool top = false;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 if (form.separateTopCenter || minTopWidth > rect.width) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 int topHeight = Math.max(rightSize.y, leftSize.y);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 if (right !is null && !right.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 top = true;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 x -= rightSize.x;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 right.setBounds(x, y, rightSize.x, topHeight);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 x -= form.horizontalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 if (left !is null && !left.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 top = true;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 int trim = computeTrim(left);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 int leftW = x - rect.x - form.marginWidth - form.highlight - trim;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 leftSize = computeChildSize(left, leftW, DWT.DEFAULT, false);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 left.setBounds(rect.x + form.marginWidth + form.highlight, y, leftSize.x, topHeight);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 if (top) y += topHeight + form.verticalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 if (center !is null && !center.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 top = true;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 int trim = computeTrim(center);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 int w = rect.width - 2*form.marginWidth - 2*form.highlight - trim;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 centerSize = computeChildSize(center, w, DWT.DEFAULT, false);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 center.setBounds(rect.x + rect.width - form.marginWidth - form.highlight - centerSize.x, y, centerSize.x, centerSize.y);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 y += centerSize.y + form.verticalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 } else {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 int topHeight = Math.max(rightSize.y, Math.max(centerSize.y, leftSize.y));
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 if (right !is null && !right.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 top = true;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 x -= rightSize.x;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 right.setBounds(x, y, rightSize.x, topHeight);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 x -= form.horizontalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 if (center !is null && !center.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 top = true;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 x -= centerSize.x;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 center.setBounds(x, y, centerSize.x, topHeight);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 x -= form.horizontalSpacing;
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 if (left !is null && !left.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 top = true;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 Rectangle trim = ( null !is cast(Composite)left ) ? (cast(Composite)left).computeTrim(0, 0, 0, 0) : new Rectangle(0, 0, 0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 int w = x - rect.x - form.marginWidth - form.highlight - trim.width;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 int h = topHeight - trim.height;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 leftSize = computeChildSize(left, w, h, false);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 left.setBounds(rect.x + form.marginWidth + form.highlight, y, leftSize.x, topHeight);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 if (top)y += topHeight + form.verticalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 int oldSeperator = form.separator;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 form.separator = -1;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 if (content !is null && !content.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 if (left !is null || right!is null || center !is null){
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 form.separator = y;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 y++;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 content.setBounds(rect.x + form.marginWidth + form.highlight, y, rect.width - 2 * form.marginWidth - 2*form.highlight, rect.y + rect.height - y - form.marginHeight - form.highlight);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 if (oldSeperator !is -1 && form.separator !is -1) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 int t = Math.min(form.separator, oldSeperator);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 int b = Math.max(form.separator, oldSeperator);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 form.redraw(form.borderLeft, t, form.getSize().x - form.borderLeft - form.borderRight, b - t, false);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 }