Java tutorial
/******************************************************************************* * Copyright (c) 2002, 2008 Innoopract Informationssysteme GmbH. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Innoopract Informationssysteme GmbH - initial API and implementation ******************************************************************************/ package org.eclipse.rap.demo; import java.util.ArrayList; import org.eclipse.jface.viewers.*; import org.eclipse.rwt.graphics.Graphics; import org.eclipse.rwt.lifecycle.IEntryPoint; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; // TODO: Do we still need this demo ? public class RWTDemo implements IEntryPoint { private static final int ROWS = 40; private static final int COLUMNS = 10; private Text txtGroupNameSash; private Text txtGroupDescriptionSash; private Text txtGroupNameTab1; private int previousTabSelected = 0; private int tabSelected = 0; class TreeObject { private String name; private TreeParent parent; public TreeObject(String name) { this.name = name; } public String getName() { return name; } public void setParent(TreeParent parent) { this.parent = parent; } public TreeParent getParent() { return parent; } public String toString() { return getName(); } } class TreeParent extends TreeObject { private ArrayList children; public TreeParent(String name) { super(name); children = new ArrayList(); } public void addChild(TreeObject child) { children.add(child); child.setParent(this); } public void removeChild(TreeObject child) { children.remove(child); child.setParent(null); } public TreeObject[] getChildren() { return (TreeObject[]) children.toArray(new TreeObject[children.size()]); } public boolean hasChildren() { return children.size() > 0; } } class TreeViewerContentProvider implements IStructuredContentProvider, ITreeContentProvider { private TreeParent invisibleRoot; public void inputChanged(Viewer v, Object oldInput, Object newInput) { } public void dispose() { } public Object[] getElements(Object parent) { if (parent instanceof IEntryPoint) { if (invisibleRoot == null) initialize(); return getChildren(invisibleRoot); } return getChildren(parent); } public Object getParent(Object child) { if (child instanceof TreeObject) { return ((TreeObject) child).getParent(); } return null; } public Object[] getChildren(Object parent) { if (parent instanceof TreeParent) { return ((TreeParent) parent).getChildren(); } return new Object[0]; } public boolean hasChildren(Object parent) { if (parent instanceof TreeParent) return ((TreeParent) parent).hasChildren(); return false; } /* * We will set up a dummy model to initialize tree heararchy. In a real * code, you will connect to a real model and expose its hierarchy. */ private void initialize() { TreeObject to1 = new TreeObject("Leaf 1"); TreeObject to2 = new TreeObject("Leaf 2"); TreeObject to3 = new TreeObject("Leaf 3"); TreeParent p1 = new TreeParent("Parent 1"); p1.addChild(to1); p1.addChild(to2); p1.addChild(to3); TreeObject to4 = new TreeObject("Leaf 4"); TreeParent p2 = new TreeParent("Parent 2"); p2.addChild(to4); TreeParent root = new TreeParent("Root"); root.addChild(p1); root.addChild(p2); invisibleRoot = new TreeParent(""); invisibleRoot.addChild(root); } } public int createUI() { Display display = new Display(); final Shell shell = new Shell(display, SWT.SHELL_TRIM); shell.setBounds(10, 10, 800, 600); createMenu(shell); final ToolBar toolBar = new ToolBar(shell, SWT.FLAT); ToolItem item1 = new ToolItem(toolBar, SWT.PUSH); item1.setText("new"); ToolItem item2 = new ToolItem(toolBar, SWT.PUSH); item2.setText("open"); item2.addSelectionListener(new SelectionAdapter() { public void widgetSelected(final SelectionEvent event) { createShell2(shell.getDisplay()); } }); ToolItem item3 = new ToolItem(toolBar, SWT.PUSH); item3.setText("save as"); ToolItem item4 = new ToolItem(toolBar, SWT.PUSH); item4.setText("print"); ClassLoader loader = getClass().getClassLoader(); item1.setImage(Graphics.getImage("resources/newfile_wiz.gif", loader)); item2.setImage(Graphics.getImage("resources/newfolder_wiz.gif", loader)); item3.setImage(Graphics.getImage("resources/newprj_wiz.gif", loader)); item4.setImage(Graphics.getImage("resources/search_src.gif", loader)); final Composite content = new Composite(shell, SWT.NONE); content.setLayout(new FillLayout()); layoutShell(shell, toolBar, content); SashForm sashForm = new SashForm(content, SWT.HORIZONTAL); Composite left = new Composite(sashForm, SWT.NONE); Composite right = new Composite(sashForm, SWT.NONE); sashForm.setWeights(new int[] { 25, 75 }); left.setLayout(new FormLayout()); TreeViewer viewer = new TreeViewer(left); viewer.setContentProvider(new TreeViewerContentProvider()); viewer.setInput(this); // Tree tree = new Tree( left, SWT.NONE ); Tree tree = viewer.getTree(); FormData treeData = new FormData(); tree.setLayoutData(treeData); treeData.top = new FormAttachment(0, 2); treeData.left = new FormAttachment(0, 2); treeData.right = new FormAttachment(100, -2); treeData.bottom = new FormAttachment(100, -2); tree.addSelectionListener(new SelectionAdapter() { public void widgetSelected(final SelectionEvent event) { Item item = (Item) event.item; txtGroupNameTab1.setText("treeItem selected: " + item.getText()); } }); // TreeItem item1 = new TreeItem( tree, SWT.NONE ); // item1.setText( "item 1" ); // TreeItem item2 = new TreeItem( tree, SWT.NONE ); // item2.setText( "item 2" ); // TreeItem item2sub1 = new TreeItem( item2, SWT.NONE ); // item2sub1.setText( "subItem1" ); right.setLayout(new FillLayout()); SashForm sashFormVertical = new SashForm(right, SWT.VERTICAL); Composite top = new Composite(sashFormVertical, SWT.NONE); Composite down = new Composite(sashFormVertical, SWT.NONE); sashFormVertical.setWeights(new int[] { 60, 40 }); top.setLayout(new FillLayout()); down.setLayout(new FillLayout()); final TabFolder topFolder = new TabFolder(top, SWT.NONE); TabFolder downFolder = new TabFolder(down, SWT.NONE); createTab1(topFolder); createTab2(topFolder); createTab3(topFolder); createTab4(downFolder); topFolder.setSelection(0); downFolder.setSelection(0); topFolder.addSelectionListener(new SelectionAdapter() { public void widgetSelected(final SelectionEvent event) { previousTabSelected = tabSelected; tabSelected = ((TabFolder) event.getSource()).getSelectionIndex(); TabItem item = topFolder.getItem(previousTabSelected); txtGroupNameSash.setText("The previous tab you visited was: " + item.getText()); } }); content.layout(); shell.addControlListener(new ControlAdapter() { public void controlResized(final ControlEvent event) { layoutShell(shell, toolBar, content); } }); shell.setText("SWT Demo"); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } return 0; } private void layoutShell(final Shell shell, final ToolBar toolBar, final Composite content) { Rectangle clientArea = shell.getClientArea(); int toolBarHeight = 30; toolBar.setBounds(clientArea.x, clientArea.y, clientArea.width, toolBarHeight); content.setBounds(clientArea.x, clientArea.y + toolBarHeight + 1, clientArea.width, clientArea.height - toolBarHeight - 1); content.layout(); } private void createMenu(final Shell shell) { final Menu menuBar = new Menu(shell, SWT.BAR); shell.setMenuBar(menuBar); MenuItem fileMenuItem = new MenuItem(menuBar, SWT.CASCADE); fileMenuItem.setText("File"); Menu fileMenu = new Menu(shell, SWT.DROP_DOWN); fileMenuItem.setMenu(fileMenu); MenuItem openItem = new MenuItem(fileMenu, SWT.PUSH); openItem.setText("Open"); openItem.addSelectionListener(new SelectionAdapter() { public void widgetSelected(final SelectionEvent event) { createShell2(shell.getDisplay()); } }); MenuItem openRecentItem = new MenuItem(fileMenu, SWT.CASCADE); openRecentItem.setText("Open recently used"); Menu recentMenu = new Menu(openRecentItem); MenuItem recentItem1 = new MenuItem(recentMenu, SWT.PUSH); recentItem1.setText("myfile.txt"); openRecentItem.setMenu(recentMenu); new MenuItem(fileMenu, SWT.SEPARATOR); MenuItem exitItem = new MenuItem(fileMenu, SWT.PUSH); exitItem.setText("Exit"); } private void createTab1(final TabFolder folder) { TabItem item = new TabItem(folder, SWT.NONE); item.setText("FormLayoutTab"); Composite composite = new Composite(folder, SWT.NONE); item.setControl(composite); composite.setLayout(new FormLayout()); Label lblName = new Label(composite, SWT.NONE); lblName.setText("Name"); FormData lblNameData = new FormData(); lblName.setLayoutData(lblNameData); lblNameData.top = new FormAttachment(0, 5); lblNameData.left = new FormAttachment(0, 5); lblNameData.right = new FormAttachment(20, 0); lblNameData.bottom = new FormAttachment(0, 25); txtGroupNameTab1 = new Text(composite, SWT.MULTI | SWT.BORDER); txtGroupNameTab1.setText(""); FormData txtGroupNameData = new FormData(); txtGroupNameTab1.setLayoutData(txtGroupNameData); txtGroupNameData.top = new FormAttachment(0, 5); txtGroupNameData.left = new FormAttachment(lblName, 5); txtGroupNameData.right = new FormAttachment(100, -5); txtGroupNameData.bottom = new FormAttachment(0, 25); Label lblDescription = new Label(composite, SWT.NONE); lblDescription.setText("Description"); FormData lblDescriptionData = new FormData(); lblDescription.setLayoutData(lblDescriptionData); lblDescriptionData.top = new FormAttachment(lblName, 10); lblDescriptionData.left = new FormAttachment(0, 5); lblDescriptionData.right = new FormAttachment(20, 0); Text txtGroupDescription = new Text(composite, SWT.MULTI | SWT.BORDER); txtGroupDescription.setText("Select a TreeItem"); FormData txtGroupDescriptionData = new FormData(); txtGroupDescription.setLayoutData(txtGroupDescriptionData); txtGroupDescriptionData.top = new FormAttachment(lblName, 10); txtGroupDescriptionData.left = new FormAttachment(lblDescription, 5); txtGroupDescriptionData.bottom = new FormAttachment(100, -5); txtGroupDescriptionData.right = new FormAttachment(100, -5); } private void createShell2(final Display display) { Shell shell = new Shell(display, SWT.SHELL_TRIM); shell.setLayout(new FillLayout()); Composite composite = new Composite(shell, SWT.SHELL_TRIM); composite.setLayout(new FillLayout()); Label label = new Label(composite, SWT.NONE); label.setText("FillLayout"); final Text text = new Text(composite, SWT.MULTI | SWT.BORDER); text.setText("None ASCII characters: @, select the Sash or press the button"); Sash sash = new Sash(composite, SWT.NONE); sash.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { text.setText("widgetSelected: " + event.getSource() + " bounds: [" + event.x + ", " + event.y + ", " + event.width + ", " + event.height + "]"); } }); Button button = new Button(composite, SWT.NONE); button.setText("Push Me"); button.addSelectionListener(new SelectionAdapter() { public void widgetSelected(final SelectionEvent event) { text.setText("widgetSelected: " + event.getSource() + " bounds: [" + event.x + ", " + event.y + ", " + event.width + ", " + event.height + "]"); } }); shell.setBounds(250, 20, 400, 200); shell.layout(); shell.open(); } private void createTab2(final TabFolder folder) { TabItem item = new TabItem(folder, SWT.NONE); item.setText("SashTab"); Composite composite = new Composite(folder, SWT.NONE); item.setControl(composite); composite.setLayout(new FillLayout()); SashForm sashForm = new SashForm(composite, SWT.NONE); Composite composite1 = new Composite(sashForm, SWT.NONE); Composite composite2 = new Composite(sashForm, SWT.NONE); sashForm.setWeights(new int[] { 25, 75 }); composite1.setLayout(new FormLayout()); Text txtLeft = new Text(composite1, SWT.BORDER); txtLeft.setText("This text is on a SashForm"); FormData txtLeftData = new FormData(); txtLeft.setLayoutData(txtLeftData); txtLeftData.top = new FormAttachment(0, 5); txtLeftData.left = new FormAttachment(0, 5); txtLeftData.right = new FormAttachment(100, -5); txtLeftData.bottom = new FormAttachment(100, -5); composite2.setLayout(new FormLayout()); Label lblName = new Label(composite2, SWT.NONE); lblName.setText("Name"); FormData lblNameData = new FormData(); lblName.setLayoutData(lblNameData); lblNameData.top = new FormAttachment(0, 5); lblNameData.left = new FormAttachment(0, 5); lblNameData.right = new FormAttachment(20, 0); lblNameData.bottom = new FormAttachment(0, 25); txtGroupNameSash = new Text(composite2, SWT.BORDER); txtGroupNameSash.setText("The previous tab you visited was: "); FormData txtGroupNameData = new FormData(); txtGroupNameSash.setLayoutData(txtGroupNameData); txtGroupNameData.top = new FormAttachment(0, 5); txtGroupNameData.left = new FormAttachment(lblName, 5); txtGroupNameData.right = new FormAttachment(100, -5); txtGroupNameData.bottom = new FormAttachment(0, 25); Label lblDescription = new Label(composite2, SWT.NONE); lblDescription.setText("Description"); FormData lblDescriptionData = new FormData(); lblDescription.setLayoutData(lblDescriptionData); lblDescriptionData.top = new FormAttachment(lblName, 10); lblDescriptionData.left = new FormAttachment(0, 5); lblDescriptionData.right = new FormAttachment(20, 0); txtGroupDescriptionSash = new Text(composite2, SWT.BORDER); txtGroupDescriptionSash.setText("try selecting single or multiple table rows"); FormData txtGroupDescriptionData = new FormData(); txtGroupDescriptionSash.setLayoutData(txtGroupDescriptionData); txtGroupDescriptionData.top = new FormAttachment(lblName, 10); txtGroupDescriptionData.left = new FormAttachment(lblDescription, 5); txtGroupDescriptionData.bottom = new FormAttachment(100, -5); txtGroupDescriptionData.right = new FormAttachment(100, -5); } private void createTab3(final TabFolder folder) { TabItem item = new TabItem(folder, SWT.NONE); item.setText("MoreWidgetsTab"); Composite panel = new Composite(folder, SWT.NONE); panel.setLayout(new FormLayout()); item.setControl(panel); Button button = new Button(panel, SWT.NONE); button.setText("Click Me"); FormData buttonData = new FormData(); button.setLayoutData(buttonData); buttonData.top = new FormAttachment(0, 5); buttonData.left = new FormAttachment(0, 5); buttonData.right = new FormAttachment(30, 0); buttonData.height = 24; // buttonData.bottom = new FormAttachment( 15, 0 ); Composite radioComp = new Composite(panel, SWT.NONE); radioComp.setLayout(new FillLayout()); Button radio1 = new Button(radioComp, SWT.RADIO); radio1.setText("choice one"); Button radio2 = new Button(radioComp, SWT.RADIO); radio2.setText("choice two"); FormData radioCompData = new FormData(); radioComp.setLayoutData(radioCompData); radioCompData.top = new FormAttachment(0, 5); radioCompData.left = new FormAttachment(button, 15); radioCompData.right = new FormAttachment(70, -15); radioCompData.height = 24; // radioCompData.bottom = new FormAttachment( 15, 0 ); Button checkButton = new Button(panel, SWT.CHECK); checkButton.setText("check me."); FormData checkButtonData = new FormData(); checkButton.setLayoutData(checkButtonData); checkButtonData.top = new FormAttachment(0, 5); checkButtonData.left = new FormAttachment(radioComp, 5); checkButtonData.right = new FormAttachment(100, -5); checkButtonData.height = 24; Combo combo = new Combo(panel, SWT.NONE); combo.add("selectItem1"); combo.add("selectItem2"); combo.add("selectItem3"); FormData comboData = new FormData(); combo.setLayoutData(comboData); comboData.top = new FormAttachment(button, 15); comboData.left = new FormAttachment(0, 5); comboData.right = new FormAttachment(30, 0); comboData.height = 24; List list = new List(panel, SWT.MULTI | SWT.BORDER); list.add("Selection1"); list.add("Selection2"); list.add("Selection3"); list.add("Selection4"); list.add("Selection5"); list.add("Selection6"); list.setToolTipText("I'm a list"); list.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { List list = (List) e.getSource(); String selected = ""; int[] selectionIndices = list.getSelectionIndices(); for (int i = 0; i < selectionIndices.length; i++) { selected += selectionIndices[i] + " "; } System.out.println(selected); } }); FormData listData = new FormData(); list.setLayoutData(listData); listData.top = new FormAttachment(combo, 15); listData.left = new FormAttachment(0, 5); listData.right = new FormAttachment(30, 0); listData.height = 96; } private void createTab4(final TabFolder folder) { TabItem item = new TabItem(folder, SWT.NONE); item.setText("TableTab"); Composite composite = new Composite(folder, SWT.NONE); item.setControl(composite); composite.setLayout(new FormLayout()); final Table table = new Table(composite, SWT.NONE); FormData formData = new FormData(); table.setLayoutData(formData); formData.top = new FormAttachment(0, 5); formData.left = new FormAttachment(0, 5); formData.right = new FormAttachment(100, -5); formData.bottom = new FormAttachment(100, -5); for (int i = 0; i < COLUMNS; i++) { TableColumn tableColumn = new TableColumn(table, SWT.NONE); tableColumn.setText("Column" + i); if (i == 2) { tableColumn.setWidth(190); } else { tableColumn.setWidth(70); } } for (int i = 0; i < ROWS; i++) { TableItem tableItem = new TableItem(table, SWT.NONE); for (int j = 0; j < COLUMNS; j++) { tableItem.setText(j, "Item" + i + "-" + j); } } table.setSelection(0); table.addSelectionListener(new SelectionAdapter() { public void widgetSelected(final SelectionEvent event) { String selected = ""; int[] selectionIndices = table.getSelectionIndices(); for (int i = 0; i < selectionIndices.length; i++) { selected += selectionIndices[i] + " "; } System.out.println(selected); txtGroupDescriptionSash.setText("Indices of selected tableRows are: " + selected); } }); } }