1 /* 2 * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 package org.jemmy.swt; 24 25 import org.eclipse.swt.SWT; 26 import org.eclipse.swt.events.SelectionEvent; 27 import org.eclipse.swt.events.SelectionListener; 28 import org.eclipse.swt.layout.GridData; 29 import org.eclipse.swt.layout.GridLayout; 30 import org.eclipse.swt.layout.RowLayout; 31 import org.eclipse.swt.widgets.Button; 32 import org.eclipse.swt.widgets.Combo; 33 import org.eclipse.swt.widgets.Composite; 34 import org.eclipse.swt.widgets.Display; 35 import org.eclipse.swt.widgets.Event; 36 import org.eclipse.swt.widgets.List; 37 import org.eclipse.swt.widgets.Listener; 38 import org.eclipse.swt.widgets.Menu; 39 import org.eclipse.swt.widgets.MenuItem; 40 import org.eclipse.swt.widgets.Shell; 41 import org.eclipse.swt.widgets.TabFolder; 42 import org.eclipse.swt.widgets.TabItem; 43 import org.eclipse.swt.widgets.Table; 44 import org.eclipse.swt.widgets.TableColumn; 45 import org.eclipse.swt.widgets.TableItem; 46 import org.eclipse.swt.widgets.Text; 47 import org.eclipse.swt.widgets.ToolBar; 48 import org.eclipse.swt.widgets.ToolItem; 49 import org.eclipse.swt.widgets.Tree; 50 import org.eclipse.swt.widgets.TreeColumn; 51 import org.eclipse.swt.widgets.TreeItem; 52 53 /** 54 * 55 * @author shura 56 */ 57 public class Items { 58 59 static Shell shell; 60 61 public static void main(String[] args) { 62 Display d = Display.getDefault(); 63 shell = new Shell(d); 64 shell.setText("lala"); 65 GridLayout gridLayout = new GridLayout(); 66 gridLayout.numColumns = 1; 67 shell.setLayout(gridLayout); 68 69 final TabFolder tabFolder = new TabFolder(shell, SWT.BORDER); 70 71 //toolbar 72 TabItem tab = new TabItem(tabFolder, SWT.NONE); 73 tab.setText("Toolbar"); 74 Composite itemsPanel = new Composite(tabFolder, SWT.BORDER); 75 ToolBar bar = new ToolBar(itemsPanel, SWT.BORDER); 76 for (int i = 0; i < 3; i++) { 77 final ToolItem item = new ToolItem(bar, SWT.PUSH); 78 item.setText("" + i); 79 item.addSelectionListener(new SelectionListener() { 80 81 @Override 82 public void widgetSelected(SelectionEvent arg0) { 83 shell.setText("ToolItem " + item.getText()); 84 } 85 86 @Override 87 public void widgetDefaultSelected(SelectionEvent arg0) { 88 System.out.println("default selected " + arg0); 89 } 90 }); 91 } 92 bar.pack(); 93 tab.setControl(itemsPanel); 94 95 Menu popup = new Menu(bar); 96 createMenu(popup); 97 bar.setMenu(popup); 98 99 //table 100 TabItem tableTab = new TabItem(tabFolder, SWT.NONE); 101 tableTab.setText("Table"); 102 Composite tablePanel = new Composite(tabFolder, SWT.BORDER); 103 tablePanel.setLayout(new GridLayout()); 104 setupTable(tablePanel, "A"); 105 setupTable(tablePanel, "B"); 106 tableTab.setControl(tablePanel); 107 108 //tree 109 TabItem treeTab = new TabItem(tabFolder, SWT.NONE); 110 treeTab.setText("Tree"); 111 Tree tree = new Tree(tabFolder, SWT.MULTI | SWT.BORDER); 112 tree.setHeaderVisible(true); 113 TreeColumn column1 = new TreeColumn(tree, SWT.LEFT); 114 column1.setText("Name"); 115 column1.setWidth(200); 116 TreeColumn column2 = new TreeColumn(tree, SWT.CENTER); 117 column2.setText("Description"); 118 column2.setWidth(200); 119 TreeColumn column3 = new TreeColumn(tree, SWT.RIGHT); 120 column3.setText("Value"); 121 column3.setWidth(200); 122 TreeItem item0 = new TreeItem(tree, SWT.NULL); 123 item0.setText(0, "0"); 124 item0.setText(1, "TreeItem 0"); 125 item0.setText(2, "zero"); 126 TreeItem item00 = new TreeItem(item0, SWT.NULL); 127 item00.setText(0, "00"); 128 item00.setText(1, "TreeItem 00"); 129 item00.setText(2, "zerozero"); 130 TreeItem item01 = new TreeItem(item0, SWT.NULL); 131 item01.setText(0, "01"); 132 item01.setText(1, "TreeItem 01"); 133 item01.setText(2, "zeroone"); 134 TreeItem item010 = new TreeItem(item01, SWT.NULL); 135 item010.setText(0, "010"); 136 item010.setText(1, "TreeItem 010"); 137 item010.setText(2, "zeroonezero"); 138 TreeItem item1 = new TreeItem(tree, SWT.NULL); 139 item1.setText(0, "1"); 140 item1.setText(1, "TreeItem 1"); 141 item1.setText(2, "one"); 142 TreeItem item10 = new TreeItem(item1, SWT.NULL); 143 item10.setText(0, "10"); 144 item10.setText(1, "TreeItem 10"); 145 item10.setText(2, "onezero"); 146 TreeItem item11 = new TreeItem(item1, SWT.NULL); 147 item11.setText(0, "11"); 148 item11.setText(1, "TreeItem 11"); 149 item11.setText(2, "oneone"); 150 tree.addSelectionListener(new SelectionListener() { 151 152 public void widgetSelected(SelectionEvent se) { 153 shell.setText("" + se.item); 154 } 155 156 public void widgetDefaultSelected(SelectionEvent se) { 157 } 158 }); 159 treeTab.setControl(tree); 160 161 //buttons 162 TabItem buttonsTab = new TabItem(tabFolder, SWT.NONE); 163 Composite buttonsParent = new Composite(tabFolder, SWT.NONE); 164 buttonsParent.setData("name", "buttonsParent"); 165 buttonsParent.setLayout(new RowLayout()); 166 final Text lbl = new Text(buttonsParent, SWT.DEFAULT); 167 lbl.setText("click the button, please."); 168 lbl.setBounds(0, 0, 100, 30); 169 lbl.setEditable(true); 170 Button btn = new Button(buttonsParent, SWT.DEFAULT); 171 btn.setText("Click me!"); 172 btn.addSelectionListener(new SelectionListener() { 173 174 public void widgetSelected(SelectionEvent arg0) { 175 lbl.setText("Now type some new text"); 176 } 177 178 public void widgetDefaultSelected(SelectionEvent arg0) { 179 //System.out.println(arg0); 180 } 181 }); 182 Combo combo = new Combo(buttonsParent, SWT.DEFAULT); 183 combo.add("one"); 184 combo.add("two"); 185 combo.add("three"); 186 combo.add("four"); 187 combo.select(0); 188 List list = new List(buttonsParent, SWT.DEFAULT); 189 list.add("one"); 190 list.add("two"); 191 list.add("three"); 192 list.add("four"); 193 list.select(0); 194 buttonsTab.setText("Buttons"); 195 buttonsTab.setControl(buttonsParent); 196 197 tabFolder.pack(); 198 199 Menu menuBar = new Menu(shell, SWT.BAR); 200 createMenu(menuBar); 201 202 shell.setMenuBar(menuBar); 203 shell.pack(); 204 shell.open(); 205 while (!shell.isDisposed()) { 206 if (!d.readAndDispatch()) { 207 d.sleep(); 208 } 209 } 210 d.dispose(); 211 } 212 213 private static void setupTable(Composite tablePanel, final String tableId) { 214 Table table = new Table(tablePanel, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION); 215 table.setLinesVisible(true); 216 table.setHeaderVisible(true); 217 GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); 218 data.heightHint = 200; 219 table.setLayoutData(data); 220 String[] titles = {"0", "1", "2"}; 221 for (int i = 0; i < titles.length; i++) { 222 TableColumn column = new TableColumn(table, SWT.NONE); 223 column.setText(titles[i]); 224 } 225 int count = 3; 226 for (int i = 0; i < count; i++) { 227 TableItem item = new TableItem(table, SWT.NONE); 228 item.setText(0, "" + tableId + ":" + (count * i + 0)); 229 item.setText(1, "" + tableId + ":" + (count * i + 1)); 230 item.setText(2, "" + tableId + ":" + (count * i + 2)); 231 } 232 for (int i = 0; i < titles.length; i++) { 233 table.getColumn(i).pack(); 234 } 235 table.addListener(SWT.Selection, new Listener() { 236 237 public void handleEvent(Event event) { 238 shell.setText("" + event.item); 239 } 240 }); 241 } 242 243 private static void createMenu(Menu menu) { 244 MenuItem menu0Item = new MenuItem(menu, SWT.CASCADE); 245 menu0Item.setText("menu0"); 246 Menu menu0 = new Menu(menu); 247 menu0Item.setMenu(menu0); 248 MenuItem item00 = new MenuItem(menu0, SWT.DEFAULT); 249 item00.setText("item00"); 250 new MenuSelectionListener(item00); 251 MenuItem itemDisabled = new MenuItem(menu0, SWT.DEFAULT); 252 itemDisabled.setText("disabled"); 253 itemDisabled.setEnabled(false); 254 MenuItem item01 = new MenuItem(menu0, SWT.DEFAULT); 255 item01.setText("item01"); 256 new MenuSelectionListener(item01); 257 MenuItem menu00Item = new MenuItem(menu0, SWT.CASCADE); 258 menu00Item.setText("menu00"); 259 Menu menu00 = new Menu(menu); 260 menu00Item.setMenu(menu00); 261 MenuItem item000 = new MenuItem(menu00, SWT.DEFAULT); 262 item000.setText("item000"); 263 new MenuSelectionListener(item000); 264 265 MenuItem menu1Item = new MenuItem(menu, SWT.CASCADE); 266 menu1Item.setText("menu1"); 267 Menu menu1 = new Menu(menu); 268 menu1Item.setMenu(menu1); 269 MenuItem item10 = new MenuItem(menu1, SWT.DEFAULT); 270 item10.setText("item10"); 271 new MenuSelectionListener(item10); 272 MenuItem item11 = new MenuItem(menu1, SWT.DEFAULT); 273 item11.setText("item11"); 274 new MenuSelectionListener(item11); 275 MenuItem item12 = new MenuItem(menu1, SWT.DEFAULT); 276 item12.setText("item12"); 277 new MenuSelectionListener(item12); 278 } 279 280 static class MenuSelectionListener implements SelectionListener { 281 282 public MenuSelectionListener(MenuItem item) { 283 this.item = item; 284 item.addSelectionListener(this); 285 } 286 MenuItem item; 287 288 public void widgetSelected(SelectionEvent se) { 289 shell.setText(item.getText() + " selected"); 290 } 291 292 public void widgetDefaultSelected(SelectionEvent se) { 293 } 294 } 295 296 static class TreeSelectionListener implements Listener { 297 298 public TreeSelectionListener(TreeItem item) { 299 this.item = item; 300 item.addListener(SWT.Selection, this); 301 } 302 TreeItem item; 303 304 public void handleEvent(Event event) { 305 shell.setText(item.getText() + " selected"); 306 } 307 } 308 }