annotate dwtexamples/controlexample/CoolBarTab.d @ 0:052c3aebd1d3

initial import
author Frank Benoit <benoit@tionex.de>
date Fri, 01 Feb 2008 21:46:26 +0100
parents
children d4f131a310ae
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2000, 2007 IBM Corporation and others.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Port to the D programming language:
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 * Frank Benoit <benoit@tionex.de>
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwtexamples.controlexample.CoolBarTab;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwt.DWT;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwt.events.MenuAdapter;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import dwt.events.MenuEvent;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.events.SelectionAdapter;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.events.SelectionEvent;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import dwt.graphics.Image;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwt.graphics.Point;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import dwt.graphics.Rectangle;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import dwt.layout.GridData;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import dwt.layout.GridLayout;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 import dwt.widgets.Button;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import dwt.widgets.Control;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import dwt.widgets.CoolBar;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 import dwt.widgets.CoolItem;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 import dwt.widgets.Event;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 import dwt.widgets.Group;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 import dwt.widgets.Item;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 import dwt.widgets.Listener;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 import dwt.widgets.Menu;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 import dwt.widgets.MenuItem;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 import dwt.widgets.Text;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 import dwt.widgets.ToolBar;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 import dwt.widgets.ToolItem;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 import dwt.widgets.Widget;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 import dwtexamples.controlexample.Tab;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 import dwtexamples.controlexample.ControlExample;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 import tango.util.Convert;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 class CoolBarTab : Tab {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 /* Example widgets and group that contains them */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 CoolBar coolBar;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 CoolItem pushItem, dropDownItem, radioItem, checkItem, textItem;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 Group coolBarGroup;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 /* Style widgets added to the "Style" group */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 Button horizontalButton, verticalButton;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 Button dropDownButton, flatButton;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 /* Other widgets added to the "Other" group */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 Button lockedButton;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 Point[] sizes;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 int[] wrapIndices;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 int[] order;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 * Creates the Tab within a given instance of ControlExample.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 this(ControlExample instance) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 super(instance);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 * Creates the "Other" group.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 void createOtherGroup () {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 super.createOtherGroup ();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 /* Create display controls specific to this example */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 lockedButton = new Button (otherGroup, DWT.CHECK);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 lockedButton.setText (ControlExample.getResourceString("Locked"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 /* Add the listeners */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 lockedButton.addSelectionListener (new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 public void widgetSelected (SelectionEvent event) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 setWidgetLocked ();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 * Creates the "Example" group.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 void createExampleGroup () {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 super.createExampleGroup ();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 coolBarGroup = new Group (exampleGroup, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 coolBarGroup.setLayout (new GridLayout ());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 coolBarGroup.setLayoutData (new GridData (DWT.FILL, DWT.FILL, true, true));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 coolBarGroup.setText ("CoolBar");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 * Creates the "Example" widgets.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 void createExampleWidgets () {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 int style = getDefaultStyle(), itemStyle = 0;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 /* Compute the widget, item, and item toolBar styles */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 int toolBarStyle = DWT.FLAT;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 bool vertical = false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 if (horizontalButton.getSelection ()) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 style |= DWT.HORIZONTAL;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 toolBarStyle |= DWT.HORIZONTAL;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 if (verticalButton.getSelection ()) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 style |= DWT.VERTICAL;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 toolBarStyle |= DWT.VERTICAL;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 vertical = true;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 if (borderButton.getSelection()) style |= DWT.BORDER;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 if (flatButton.getSelection()) style |= DWT.FLAT;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 if (dropDownButton.getSelection()) itemStyle |= DWT.DROP_DOWN;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 /*
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 * Create the example widgets.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 coolBar = new CoolBar (coolBarGroup, style);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 /* Create the push button toolbar cool item */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 ToolBar toolBar = new ToolBar (coolBar, toolBarStyle);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 ToolItem item = new ToolItem (toolBar, DWT.PUSH);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 item.setImage (instance.images[ControlExample.ciClosedFolder]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 item.setToolTipText ("DWT.PUSH");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 item = new ToolItem (toolBar, DWT.PUSH);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 item.setImage (instance.images[ControlExample.ciOpenFolder]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 item.setToolTipText ("DWT.PUSH");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 item = new ToolItem (toolBar, DWT.PUSH);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 item.setImage (instance.images[ControlExample.ciTarget]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 item.setToolTipText ("DWT.PUSH");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 item = new ToolItem (toolBar, DWT.SEPARATOR);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 item = new ToolItem (toolBar, DWT.PUSH);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 item.setImage (instance.images[ControlExample.ciClosedFolder]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 item.setToolTipText ("DWT.PUSH");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 item = new ToolItem (toolBar, DWT.PUSH);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 item.setImage (instance.images[ControlExample.ciOpenFolder]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 item.setToolTipText ("DWT.PUSH");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 pushItem = new CoolItem (coolBar, itemStyle);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 pushItem.setControl (toolBar);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 pushItem.addSelectionListener (new CoolItemSelectionListener());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 /* Create the dropdown toolbar cool item */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 toolBar = new ToolBar (coolBar, toolBarStyle);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 item = new ToolItem (toolBar, DWT.DROP_DOWN);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 item.setImage (instance.images[ControlExample.ciOpenFolder]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 item.setToolTipText ("DWT.DROP_DOWN");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 item.addSelectionListener (new DropDownSelectionListener());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 item = new ToolItem (toolBar, DWT.DROP_DOWN);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 item.setImage (instance.images[ControlExample.ciClosedFolder]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 item.setToolTipText ("DWT.DROP_DOWN");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 item.addSelectionListener (new DropDownSelectionListener());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 dropDownItem = new CoolItem (coolBar, itemStyle);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 dropDownItem.setControl (toolBar);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 dropDownItem.addSelectionListener (new CoolItemSelectionListener());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 /* Create the radio button toolbar cool item */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 toolBar = new ToolBar (coolBar, toolBarStyle);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 item = new ToolItem (toolBar, DWT.RADIO);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 item.setImage (instance.images[ControlExample.ciClosedFolder]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 item.setToolTipText ("DWT.RADIO");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 item = new ToolItem (toolBar, DWT.RADIO);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 item.setImage (instance.images[ControlExample.ciClosedFolder]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 item.setToolTipText ("DWT.RADIO");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 item = new ToolItem (toolBar, DWT.RADIO);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 item.setImage (instance.images[ControlExample.ciClosedFolder]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 item.setToolTipText ("DWT.RADIO");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 radioItem = new CoolItem (coolBar, itemStyle);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 radioItem.setControl (toolBar);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 radioItem.addSelectionListener (new CoolItemSelectionListener());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 /* Create the check button toolbar cool item */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 toolBar = new ToolBar (coolBar, toolBarStyle);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 item = new ToolItem (toolBar, DWT.CHECK);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 item.setImage (instance.images[ControlExample.ciClosedFolder]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 item.setToolTipText ("DWT.CHECK");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 item = new ToolItem (toolBar, DWT.CHECK);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 item.setImage (instance.images[ControlExample.ciTarget]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 item.setToolTipText ("DWT.CHECK");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 item = new ToolItem (toolBar, DWT.CHECK);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 item.setImage (instance.images[ControlExample.ciOpenFolder]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 item.setToolTipText ("DWT.CHECK");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 item = new ToolItem (toolBar, DWT.CHECK);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 item.setImage (instance.images[ControlExample.ciTarget]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 item.setToolTipText ("DWT.CHECK");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 checkItem = new CoolItem (coolBar, itemStyle);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 checkItem.setControl (toolBar);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 checkItem.addSelectionListener (new CoolItemSelectionListener());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 /* Create the text cool item */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 if (!vertical) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 Text text = new Text (coolBar, DWT.BORDER | DWT.SINGLE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 textItem = new CoolItem (coolBar, itemStyle);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 textItem.setControl (text);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 textItem.addSelectionListener (new CoolItemSelectionListener());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 Point textSize = text.computeSize(DWT.DEFAULT, DWT.DEFAULT);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 textSize = textItem.computeSize(textSize.x, textSize.y);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 textItem.setMinimumSize(textSize);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 textItem.setPreferredSize(textSize);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 textItem.setSize(textSize);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 /* Set the sizes after adding all cool items */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 CoolItem[] coolItems = coolBar.getItems();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 for (int i = 0; i < coolItems.length; i++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 CoolItem coolItem = coolItems[i];
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 Control control = coolItem.getControl();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 Point size = control.computeSize(DWT.DEFAULT, DWT.DEFAULT);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 Point coolSize = coolItem.computeSize(size.x, size.y);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 if ( auto bar = cast(ToolBar)control ) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 if (bar.getItemCount() > 0) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 if (vertical) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 size.y = bar.getItem(0).getBounds().height;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 } else {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 size.x = bar.getItem(0).getWidth();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 coolItem.setMinimumSize(size);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 coolItem.setPreferredSize(coolSize);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 coolItem.setSize(coolSize);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 /* If we have saved state, restore it */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230 if (order !is null && order.length is coolBar.getItemCount()) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231 coolBar.setItemLayout(order, wrapIndices, sizes);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232 } else {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 coolBar.setWrapIndices([1, 3]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 /* Add a listener to resize the group box to match the coolbar */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 coolBar.addListener(DWT.Resize, new class() Listener {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 public void handleEvent(Event event) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 exampleGroup.layout();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 * Creates the "Style" group.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 void createStyleGroup() {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 super.createStyleGroup();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 /* Create the extra widgets */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251 horizontalButton = new Button (styleGroup, DWT.RADIO);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 horizontalButton.setText ("DWT.HORIZONTAL");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 verticalButton = new Button (styleGroup, DWT.RADIO);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 verticalButton.setText ("DWT.VERTICAL");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 borderButton = new Button (styleGroup, DWT.CHECK);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256 borderButton.setText ("DWT.BORDER");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257 flatButton = new Button (styleGroup, DWT.CHECK);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 flatButton.setText ("DWT.FLAT");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259 Group itemGroup = new Group(styleGroup, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260 itemGroup.setLayout (new GridLayout ());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 itemGroup.setLayoutData (new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 itemGroup.setText(ControlExample.getResourceString("Item_Styles"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263 dropDownButton = new Button (itemGroup, DWT.CHECK);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264 dropDownButton.setText ("DWT.DROP_DOWN");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 * Disposes the "Example" widgets.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270 void disposeExampleWidgets () {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271 /* store the state of the toolbar if applicable */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272 if (coolBar !is null) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 sizes = coolBar.getItemSizes();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274 wrapIndices = coolBar.getWrapIndices();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 order = coolBar.getItemOrder();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277 super.disposeExampleWidgets();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 * Gets the "Example" widget children's items, if any.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 *
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 * @return an array containing the example widget children's items
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285 Item [] getExampleWidgetItems () {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286 return coolBar.getItems();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
289 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290 * Gets the "Example" widget children.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
291 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
292 Widget [] getExampleWidgets () {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
293 return [ cast(Widget) coolBar];
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
294 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
295
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
296 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
297 * Returns a list of set/get API method names (without the set/get prefix)
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
298 * that can be used to set/get values in the example control(s).
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
299 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300 char[][] getMethodNames() {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301 return ["ToolTipText"];
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
305 * Gets the short text for the tab folder item.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
306 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307 public char[] getShortTabText() {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308 return "CB";
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
311 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
312 * Gets the text for the tab folder item.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314 char[] getTabText () {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315 return "CoolBar";
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
316 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
317
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
318 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
319 * Sets the state of the "Example" widgets.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
320 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
321 void setExampleWidgetState () {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
322 super.setExampleWidgetState ();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323 horizontalButton.setSelection ((coolBar.getStyle () & DWT.HORIZONTAL) !is 0);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324 verticalButton.setSelection ((coolBar.getStyle () & DWT.VERTICAL) !is 0);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325 borderButton.setSelection ((coolBar.getStyle () & DWT.BORDER) !is 0);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326 flatButton.setSelection ((coolBar.getStyle () & DWT.FLAT) !is 0);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
327 dropDownButton.setSelection ((coolBar.getItem(0).getStyle () & DWT.DROP_DOWN) !is 0);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
328 lockedButton.setSelection(coolBar.getLocked());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
329 if (!instance.startup) setWidgetLocked ();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
330 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
331
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
332 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
333 * Sets the header visible state of the "Example" widgets.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
334 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
335 void setWidgetLocked () {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
336 coolBar.setLocked (lockedButton.getSelection ());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
337 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
338
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340 * Listens to widgetSelected() events on DWT.DROP_DOWN type ToolItems
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
341 * and opens/closes a menu when appropriate.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
342 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
343 class DropDownSelectionListener : SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
344 private Menu menu = null;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345 private bool visible = false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
346
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347 public void widgetSelected(SelectionEvent event) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
348 // Create the menu if it has not already been created
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
349 if (menu is null) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
350 // Lazy create the menu.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 menu = new Menu(shell);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
352 menu.addMenuListener(new class() MenuAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
353 public void menuHidden(MenuEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
354 visible = false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
356 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357 for (int i = 0; i < 9; ++i) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
358 final char[] text = ControlExample.getResourceString("DropDownData_" ~ to!(char[])(i));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
359 if (text.length !is 0) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
360 MenuItem menuItem = new MenuItem(menu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
361 menuItem.setText(text);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362 /*
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
363 * Add a menu selection listener so that the menu is hidden
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
364 * when the user selects an item from the drop down menu.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
365 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
366 menuItem.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
367 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
368 setMenuVisible(false);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
369 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
371 } else {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
372 new MenuItem(menu, DWT.SEPARATOR);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
373 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
374 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
375 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
376
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
377 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
378 * A selection event will be fired when a drop down tool
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
379 * item is selected in the main area and in the drop
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
380 * down arrow. Examine the event detail to determine
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
381 * where the widget was selected.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
383 if (event.detail is DWT.ARROW) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
384 /*
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
385 * The drop down arrow was selected.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
386 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
387 if (visible) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
388 // Hide the menu to give the Arrow the appearance of being a toggle button.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
389 setMenuVisible(false);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
390 } else {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
391 // Position the menu below and vertically aligned with the the drop down tool button.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 ToolItem toolItem = cast(ToolItem) event.widget;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
393 ToolBar toolBar = toolItem.getParent();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
394
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395 Rectangle toolItemBounds = toolItem.getBounds();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
396 Point point = toolBar.toDisplay(new Point(toolItemBounds.x, toolItemBounds.y));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
397 menu.setLocation(point.x, point.y + toolItemBounds.height);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
398 setMenuVisible(true);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
399 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
400 } else {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
401 /*
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402 * Main area of drop down tool item selected.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
403 * An application would invoke the code to perform the action for the tool item.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
404 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
406 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
407 private void setMenuVisible(bool visible) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
408 menu.setVisible(visible);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
409 this.visible = visible;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
410 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
411 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
412
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
413 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
414 * Listens to widgetSelected() events on DWT.DROP_DOWN type CoolItems
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
415 * and opens/closes a menu when appropriate.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
416 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
417 class CoolItemSelectionListener : SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
418 private Menu menu = null;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
419
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
420 public void widgetSelected(SelectionEvent event) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
421 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
422 * A selection event will be fired when the cool item
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
423 * is selected by its gripper or if the drop down arrow
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
424 * (or 'chevron') is selected. Examine the event detail
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
425 * to determine where the widget was selected.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
426 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
427 if (event.detail is DWT.ARROW) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
428 /* If the popup menu is already up (i.e. user pressed arrow twice),
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
429 * then dispose it.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
430 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
431 if (menu !is null) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
432 menu.dispose();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
433 menu = null;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
434 return;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
435 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
436
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
437 /* Get the cool item and convert its bounds to display coordinates. */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
438 CoolItem coolItem = cast(CoolItem) event.widget;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
439 Rectangle itemBounds = coolItem.getBounds ();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
440 itemBounds.width = event.x - itemBounds.x;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
441 Point pt = coolBar.toDisplay(new Point (itemBounds.x, itemBounds.y));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
442 itemBounds.x = pt.x;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
443 itemBounds.y = pt.y;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
444
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
445 /* Get the toolbar from the cool item. */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
446 ToolBar toolBar = cast(ToolBar) coolItem.getControl ();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
447 ToolItem[] tools = toolBar.getItems ();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
448 int toolCount = tools.length;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
449
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
450 /* Convert the bounds of each tool item to display coordinates,
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
451 * and determine which ones are past the bounds of the cool item.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
452 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
453 int i = 0;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
454 while (i < toolCount) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
455 Rectangle toolBounds = tools[i].getBounds ();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
456 pt = toolBar.toDisplay(new Point(toolBounds.x, toolBounds.y));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
457 toolBounds.x = pt.x;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
458 toolBounds.y = pt.y;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
459 Rectangle intersection = itemBounds.intersection (toolBounds);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
460 if (intersection!=toolBounds) break;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
461 i++;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
462 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
463
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
464 /* Create a pop-up menu with items for each of the hidden buttons. */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
465 menu = new Menu (coolBar);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
466 for (int j = i; j < toolCount; j++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
467 ToolItem tool = tools[j];
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
468 Image image = tool.getImage();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
469 if (image is null) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
470 new MenuItem (menu, DWT.SEPARATOR);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
471 } else {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
472 if ((tool.getStyle() & DWT.DROP_DOWN) !is 0) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
473 MenuItem menuItem = new MenuItem (menu, DWT.CASCADE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
474 menuItem.setImage(image);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
475 char[] text = tool.getToolTipText();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
476 if (text !is null) menuItem.setText(text);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
477 Menu m = new Menu(menu);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
478 menuItem.setMenu(m);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
479 for (int k = 0; k < 9; ++k) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
480 text = ControlExample.getResourceString("DropDownData_" ~ to!(char[])(k));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
481 if (text.length !is 0) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
482 MenuItem mi = new MenuItem(m, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
483 mi.setText(text);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
484 /* Application code to perform the action for the submenu item would go here. */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
485 } else {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
486 new MenuItem(m, DWT.SEPARATOR);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
487 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
488 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
489 } else {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
490 MenuItem menuItem = new MenuItem (menu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
491 menuItem.setImage(image);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
492 char[] text = tool.getToolTipText();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
493 if (text !is null) menuItem.setText(text);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
494 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
495 /* Application code to perform the action for the menu item would go here. */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
496 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
497 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
498
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
499 /* Display the pop-up menu at the lower left corner of the arrow button.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
500 * Dispose the menu when the user is done with it.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
501 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
502 pt = coolBar.toDisplay(new Point(event.x, event.y));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
503 menu.setLocation (pt.x, pt.y);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
504 menu.setVisible (true);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
505 while (menu !is null && !menu.isDisposed() && menu.isVisible ()) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
506 if (!display.readAndDispatch ()) display.sleep ();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
507 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
508 if (menu !is null) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
509 menu.dispose ();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
510 menu = null;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
511 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
512 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
513 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
514 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
515 }