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 }