annotate dwt/custom/ViewFormLayout.d @ 322:96b14a31d9b3

Added missing dwthelper.utils imports. (catched by llvmdc)
author Frank Benoit <benoit@tionex.de>
date Mon, 06 Oct 2008 21:02:12 +0200
parents 17f8449522fd
children 964972e7fa4d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
1 /*******************************************************************************
102
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
108
0f12f6bb9739 author notice
Frank Benoit <benoit@tionex.de>
parents: 103
diff changeset
10 * Port to the D programming language:
0f12f6bb9739 author notice
Frank Benoit <benoit@tionex.de>
parents: 103
diff changeset
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.ViewFormLayout;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
322
96b14a31d9b3 Added missing dwthelper.utils imports. (catched by llvmdc)
Frank Benoit <benoit@tionex.de>
parents: 152
diff changeset
15 import dwt.dwthelper.utils;
102
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwt.DWT;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwt.graphics.Point;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import dwt.graphics.Rectangle;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.widgets.Composite;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.widgets.Control;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import dwt.widgets.Layout;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwt.widgets.Scrollable;
103
0179b2e17eb2 Package custom compiles
Frank Benoit <benoit@tionex.de>
parents: 102
diff changeset
24 import dwt.custom.ViewForm;
0179b2e17eb2 Package custom compiles
Frank Benoit <benoit@tionex.de>
parents: 102
diff changeset
25 import dwt.custom.CLayoutData;
102
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 /**
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 * This class provides the layout for ViewForm
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 *
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 * @see ViewForm
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 */
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 class ViewFormLayout : Layout {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
34 protected override Point computeSize(Composite composite, int wHint, int hHint, bool flushCache) {
102
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 ViewForm form = cast(ViewForm)composite;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 Control left = form.topLeft;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 Control center = form.topCenter;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 Control right = form.topRight;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 Control content = form.content;
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 Point leftSize = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 if (left !is null) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 leftSize = computeChildSize(left, DWT.DEFAULT, DWT.DEFAULT, flushCache);
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 Point centerSize = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 if (center !is null) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 centerSize = computeChildSize(center, DWT.DEFAULT, DWT.DEFAULT, flushCache);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 Point rightSize = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 if (right !is null) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 rightSize = computeChildSize(right, DWT.DEFAULT, DWT.DEFAULT, flushCache);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 Point size = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 // calculate width of title bar
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 if (form.separateTopCenter ||
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 (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
57 size.x = leftSize.x + rightSize.x;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 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
59 size.x = Math.max(centerSize.x, size.x);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 size.y = Math.max(leftSize.y, rightSize.y);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 if (center !is null){
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 size.y += centerSize.y;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 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
64 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 } else {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 size.x = leftSize.x + centerSize.x + rightSize.x;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 int count = -1;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 if (leftSize.x > 0) count++;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 if (centerSize.x > 0) count++;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 if (rightSize.x > 0) count++;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 if (count > 0) size.x += count * form.horizontalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 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
73 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 if (content !is null) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 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
77 Point contentSize = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 contentSize = computeChildSize(content, DWT.DEFAULT, DWT.DEFAULT, flushCache);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 size.x = Math.max (size.x, contentSize.x);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 size.y += contentSize.y;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 if (size.y > contentSize.y) size.y += form.verticalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 size.x += 2*form.marginWidth;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 size.y += 2*form.marginHeight;
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 if (wHint !is DWT.DEFAULT) size.x = wHint;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 if (hHint !is DWT.DEFAULT) size.y = hHint;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 return size;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 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
94 Object data = control.getLayoutData();
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 if (data is null || !( null !is cast(CLayoutData)data )) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 data = new CLayoutData();
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 control.setLayoutData(data);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 return (cast(CLayoutData)data).computeSize(control, wHint, hHint, flushCache);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 }
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 int computeTrim(Control c) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 if ( auto sa = cast(Scrollable)c) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 Rectangle rect = sa.computeTrim (0, 0, 0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 return rect.width;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 return c.getBorderWidth () * 2;
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
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
110 protected override bool flushCache(Control control) {
102
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 Object data = control.getLayoutData();
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 if ( auto ld = cast(CLayoutData)data ) ld.flushCache();
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 return true;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
116 protected override void layout(Composite composite, bool flushCache) {
102
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 ViewForm form = cast(ViewForm)composite;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 Control left = form.topLeft;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 Control center = form.topCenter;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 Control right = form.topRight;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 Control content = form.content;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 Rectangle rect = composite.getClientArea();
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 Point leftSize = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 if (left !is null && !left.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 leftSize = computeChildSize(left, DWT.DEFAULT, DWT.DEFAULT, flushCache);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 Point centerSize = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 if (center !is null && !center.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 centerSize = computeChildSize(center, DWT.DEFAULT, DWT.DEFAULT, flushCache);
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 Point rightSize = new Point(0, 0);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 if (right !is null && !right.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 rightSize = computeChildSize(right, DWT.DEFAULT, DWT.DEFAULT, flushCache);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 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
139 int count = -1;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 if (leftSize.x > 0) count++;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 if (centerSize.x > 0) count++;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 if (rightSize.x > 0) count++;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 if (count > 0) minTopWidth += count * form.horizontalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 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
146 int y = rect.y + form.marginHeight + form.highlight;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 bool top = false;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 if (form.separateTopCenter || minTopWidth > rect.width) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 int topHeight = Math.max(rightSize.y, leftSize.y);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 if (right !is null && !right.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 top = true;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 x -= rightSize.x;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 right.setBounds(x, y, rightSize.x, topHeight);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 x -= form.horizontalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 if (left !is null && !left.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 top = true;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 int trim = computeTrim(left);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 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
161 leftSize = computeChildSize(left, leftW, DWT.DEFAULT, false);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 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
163 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 if (top) y += topHeight + form.verticalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 if (center !is null && !center.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 top = true;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 int trim = computeTrim(center);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 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
169 centerSize = computeChildSize(center, w, DWT.DEFAULT, false);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 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
171 y += centerSize.y + form.verticalSpacing;
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 } else {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 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
175 if (right !is null && !right.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 top = true;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 x -= rightSize.x;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 right.setBounds(x, y, rightSize.x, topHeight);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 x -= form.horizontalSpacing;
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 if (center !is null && !center.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 top = true;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 x -= centerSize.x;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 center.setBounds(x, y, centerSize.x, topHeight);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 x -= form.horizontalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 if (left !is null && !left.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 top = true;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 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
190 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
191 int h = topHeight - trim.height;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 leftSize = computeChildSize(left, w, h, false);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 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
194 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 if (top)y += topHeight + form.verticalSpacing;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 int oldSeperator = form.separator;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 form.separator = -1;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 if (content !is null && !content.isDisposed()) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 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
201 form.separator = y;
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 y++;
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 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
205 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 if (oldSeperator !is -1 && form.separator !is -1) {
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 int t = Math.min(form.separator, oldSeperator);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 int b = Math.max(form.separator, oldSeperator);
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 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
210 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 }
12e3e0e477cd package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 }