List of usage examples for org.eclipse.swt.widgets Tree Tree
public Tree(Composite parent, int style)
From source file:MenuFillDynamically.java
public static void main(String[] args) { final Display display = new Display(); Shell shell = new Shell(display); final Tree tree = new Tree(shell, SWT.BORDER | SWT.MULTI); final Menu menu = new Menu(shell, SWT.POP_UP); tree.setMenu(menu);//from w w w . ja v a 2 s .c o m for (int i = 0; i < 12; i++) { TreeItem item = new TreeItem(tree, SWT.NONE); item.setText("Item " + i); } menu.addListener(SWT.Show, new Listener() { public void handleEvent(Event event) { MenuItem[] menuItems = menu.getItems(); for (int i = 0; i < menuItems.length; i++) { menuItems[i].dispose(); } TreeItem[] treeItems = tree.getSelection(); for (int i = 0; i < treeItems.length; i++) { MenuItem menuItem = new MenuItem(menu, SWT.PUSH); menuItem.setText(treeItems[i].getText()); } } }); tree.setSize(200, 200); shell.setSize(300, 300); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }
From source file:org.eclipse.swt.snippets.Snippet80.java
public static void main(String[] args) { final Display display = new Display(); final Shell shell = new Shell(display); shell.setText("Snippet 80"); shell.setLayout(new FillLayout()); final Tree tree = new Tree(shell, SWT.BORDER | SWT.MULTI); for (int i = 0; i < 2; i++) { TreeItem item = new TreeItem(tree, SWT.NONE); item.setText("item " + i); for (int j = 0; j < 2; j++) { TreeItem subItem = new TreeItem(item, SWT.NONE); subItem.setText("item " + j); for (int k = 0; k < 2; k++) { TreeItem subsubItem = new TreeItem(subItem, SWT.NONE); subsubItem.setText("item " + k); }/* w w w. j ava 2 s .c om*/ } } tree.addSelectionListener(widgetSelectedAdapter(e -> { TreeItem[] selection = tree.getSelection(); TreeItem[] revisedSelection = new TreeItem[0]; for (int i = 0; i < selection.length; i++) { String text = selection[i].getText(); if (text.indexOf('1') > 0) { TreeItem[] newSelection = new TreeItem[revisedSelection.length + 1]; System.arraycopy(revisedSelection, 0, newSelection, 0, revisedSelection.length); newSelection[revisedSelection.length] = selection[i]; revisedSelection = newSelection; } } tree.setSelection(revisedSelection); })); shell.setSize(300, 300); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }
From source file:org.eclipse.swt.snippets.Snippet292.java
public static void main(String[] args) { final Display display = new Display(); final Shell shell = new Shell(display); shell.setText("Snippet 292"); final Group group = new Group(shell, SWT.NONE); group.setText("Group"); group.setLayout(new GridLayout()); final Tree tree = new Tree(group, SWT.BORDER); for (int i = 0; i < 5; i++) { TreeItem treeItem = new TreeItem(tree, SWT.NONE); treeItem.setText("TreeItem " + i); for (int j = 0; j < 3; j++) { TreeItem subItem = new TreeItem(treeItem, SWT.NONE); subItem.setText("SubItem " + i + "-" + j); }/* w w w . j a v a 2 s . c o m*/ if (i % 3 == 0) treeItem.setExpanded(true); } new Button(group, SWT.PUSH).setText("Button"); final Label label = new Label(shell, SWT.NONE); label.addListener(SWT.Dispose, e -> { Image image = label.getImage(); if (image != null) image.dispose(); }); Button button = new Button(shell, SWT.PUSH); button.setText("Snapshot"); button.addListener(SWT.Selection, e -> { Image image = label.getImage(); if (image != null) image.dispose(); image = new Image(display, group.getBounds()); GC gc = new GC(image); boolean success = group.print(gc); gc.dispose(); label.setImage(image); if (!success) { MessageBox messageBox = new MessageBox(shell, SWT.OK | SWT.PRIMARY_MODAL); messageBox.setMessage("Sorry, taking a snapshot is not supported on your platform"); messageBox.open(); } }); GridLayout layout = new GridLayout(2, true); shell.setLayout(layout); group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); button.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }
From source file:TreePopulateLazy.java
public static void main(String[] args) { Display display = new Display(); final Shell shell = new Shell(display); shell.setLayout(new FillLayout()); final Tree tree = new Tree(shell, SWT.VIRTUAL | SWT.BORDER); tree.addListener(SWT.SetData, new Listener() { public void handleEvent(Event event) { TreeItem item = (TreeItem) event.item; TreeItem parentItem = item.getParentItem(); String text = null;/*from w w w . j ava 2 s. c o m*/ if (parentItem == null) { text = "node " + tree.indexOf(item); } else { text = parentItem.getText() + " - " + parentItem.indexOf(item); } item.setText(text); item.setItemCount(10); } }); tree.setItemCount(20); shell.setSize(400, 300); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }
From source file:org.eclipse.swt.snippets.Snippet287.java
public static void main(String[] args) { final String SEARCH_STRING = "4b"; Display display = new Display(); Shell shell = new Shell(display); shell.setText("Snippet 287"); shell.setBounds(10, 10, 300, 300);//w w w . j av a 2 s. c o m shell.setLayout(new GridLayout()); /* create the Tree */ tree = new Tree(shell, SWT.FULL_SELECTION); tree.setLinesVisible(true); tree.setLayoutData(new GridData(GridData.FILL_BOTH)); for (int i = 0; i < 3; i++) { new TreeColumn(tree, SWT.NONE).setWidth(90); } int index = 0; for (int i = 0; i < 3; i++) { TreeItem item = createItem(null, index++); for (int j = 0; j < i; j++) { item = createItem(item, index++); } } Button button = new Button(shell, SWT.PUSH); button.setText("Find '" + SEARCH_STRING + "'"); button.addListener(SWT.Selection, event -> { int itemCount = tree.getItemCount(); for (int i = 0; i < itemCount; i++) { TreeItem item = tree.getItem(i); boolean success = find(item, SEARCH_STRING); if (success) { System.out.println("Found it"); return; } } System.out.println("Did not find it"); }); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }
From source file:org.eclipse.swt.snippets.Snippet221.java
public static void main(String[] args) { final Display display = new Display(); Shell shell = new Shell(display); shell.setText("Snippet 221"); shell.setLayout(new FillLayout()); final Tree tree = new Tree(shell, SWT.FULL_SELECTION | SWT.BORDER); tree.setHeaderVisible(true);//w ww . j a v a 2s .c o m TreeColumn column0 = new TreeColumn(tree, SWT.LEFT); column0.setText("Column 0"); TreeColumn column1 = new TreeColumn(tree, SWT.LEFT); column1.setText("Column 1"); TreeColumn column2 = new TreeColumn(tree, SWT.LEFT); column2.setText("Column 2"); for (int i = 0; i < 9; i++) { TreeItem item = new TreeItem(tree, SWT.NONE); item.setText("item " + i); item.setText(1, "column 1 - " + i); item.setText(2, "column 2 - " + i); for (int j = 0; j < 9; j++) { TreeItem subItem = new TreeItem(item, SWT.NONE); subItem.setText("item " + i + " " + j); subItem.setText(1, "column 1 - " + i + " " + j); subItem.setText(2, "column 2 - " + i + " " + j); for (int k = 0; k < 9; k++) { TreeItem subsubItem = new TreeItem(subItem, SWT.NONE); subsubItem.setText("item " + i + " " + j + " " + k); subsubItem.setText(1, "column 1 - " + i + " " + j + " " + k); subsubItem.setText(2, "column 2 - " + i + " " + j + " " + k); } } } column0.pack(); column1.pack(); column2.pack(); Heartbeat = () -> { if (!Tracking || tree.isDisposed()) return; Point cursor = display.getCursorLocation(); cursor = display.map(null, tree, cursor); Scroll(tree, cursor.x, cursor.y); display.timerExec(ScrollSpeed, Heartbeat); }; Listener listener = event -> { switch (event.type) { case SWT.MouseEnter: Tracking = true; display.timerExec(0, Heartbeat); break; case SWT.MouseExit: Tracking = false; break; } }; tree.addListener(SWT.MouseEnter, listener); tree.addListener(SWT.MouseExit, listener); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }
From source file:org.eclipse.swt.snippets.Snippet111.java
public static void main(String[] args) { final Display display = new Display(); final Color black = display.getSystemColor(SWT.COLOR_BLACK); Shell shell = new Shell(display); shell.setText("Snippet 111"); shell.setLayout(new FillLayout()); final Tree tree = new Tree(shell, SWT.BORDER); for (int i = 0; i < 16; i++) { TreeItem itemI = new TreeItem(tree, SWT.NONE); itemI.setText("Item " + i); for (int j = 0; j < 16; j++) { TreeItem itemJ = new TreeItem(itemI, SWT.NONE); itemJ.setText("Item " + j); }/*from w w w . j a va 2s . c om*/ } final TreeItem[] lastItem = new TreeItem[1]; final TreeEditor editor = new TreeEditor(tree); tree.addListener(SWT.Selection, event -> { final TreeItem item = (TreeItem) event.item; if (item != null && item == lastItem[0]) { boolean showBorder = true; final Composite composite = new Composite(tree, SWT.NONE); if (showBorder) composite.setBackground(black); final Text text = new Text(composite, SWT.NONE); final int inset = showBorder ? 1 : 0; composite.addListener(SWT.Resize, e1 -> { Rectangle rect1 = composite.getClientArea(); text.setBounds(rect1.x + inset, rect1.y + inset, rect1.width - inset * 2, rect1.height - inset * 2); }); Listener textListener = e2 -> { switch (e2.type) { case SWT.FocusOut: item.setText(text.getText()); composite.dispose(); break; case SWT.Verify: String newText = text.getText(); String leftText = newText.substring(0, e2.start); String rightText = newText.substring(e2.end, newText.length()); GC gc = new GC(text); Point size = gc.textExtent(leftText + e2.text + rightText); gc.dispose(); size = text.computeSize(size.x, SWT.DEFAULT); editor.horizontalAlignment = SWT.LEFT; Rectangle itemRect = item.getBounds(), rect2 = tree.getClientArea(); editor.minimumWidth = Math.max(size.x, itemRect.width) + inset * 2; int left = itemRect.x, right = rect2.x + rect2.width; editor.minimumWidth = Math.min(editor.minimumWidth, right - left); editor.minimumHeight = size.y + inset * 2; editor.layout(); break; case SWT.Traverse: switch (e2.detail) { case SWT.TRAVERSE_RETURN: item.setText(text.getText()); //FALL THROUGH case SWT.TRAVERSE_ESCAPE: composite.dispose(); e2.doit = false; } break; } }; text.addListener(SWT.FocusOut, textListener); text.addListener(SWT.Traverse, textListener); text.addListener(SWT.Verify, textListener); editor.setEditor(composite, item); text.setText(item.getText()); text.selectAll(); text.setFocus(); } lastItem[0] = item; }); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }
From source file:org.eclipse.swt.snippets.Snippet91.java
public static void main(String[] args) { final Display display = new Display(); final Shell shell = new Shell(display); shell.setText("Snippet 91"); shell.setLayout(new FillLayout()); final Tree tree = new Tree(shell, SWT.BORDER); for (int i = 0; i < 3; i++) { TreeItem item = new TreeItem(tree, SWT.NONE); item.setText("item " + i); for (int j = 0; j < 3; j++) { TreeItem subItem = new TreeItem(item, SWT.NONE); subItem.setText("item " + i + " " + j); for (int k = 0; k < 3; k++) { TreeItem subsubItem = new TreeItem(subItem, SWT.NONE); subsubItem.setText("item " + i + " " + j + " " + k); }// w w w.j av a 2 s .c om } } Transfer[] types = new Transfer[] { TextTransfer.getInstance() }; int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK; final DragSource source = new DragSource(tree, operations); source.setTransfer(types); final TreeItem[] dragSourceItem = new TreeItem[1]; source.addDragListener(new DragSourceListener() { @Override public void dragStart(DragSourceEvent event) { TreeItem[] selection = tree.getSelection(); if (selection.length > 0 && selection[0].getItemCount() == 0) { event.doit = true; dragSourceItem[0] = selection[0]; } else { event.doit = false; } } @Override public void dragSetData(DragSourceEvent event) { event.data = dragSourceItem[0].getText(); } @Override public void dragFinished(DragSourceEvent event) { if (event.detail == DND.DROP_MOVE) dragSourceItem[0].dispose(); dragSourceItem[0] = null; } }); DropTarget target = new DropTarget(tree, operations); target.setTransfer(types); target.addDropListener(new DropTargetAdapter() { @Override public void dragOver(DropTargetEvent event) { event.feedback = DND.FEEDBACK_EXPAND | DND.FEEDBACK_SCROLL; if (event.item != null) { TreeItem item = (TreeItem) event.item; Point pt = display.map(null, tree, event.x, event.y); Rectangle bounds = item.getBounds(); if (pt.y < bounds.y + bounds.height / 3) { event.feedback |= DND.FEEDBACK_INSERT_BEFORE; } else if (pt.y > bounds.y + 2 * bounds.height / 3) { event.feedback |= DND.FEEDBACK_INSERT_AFTER; } else { event.feedback |= DND.FEEDBACK_SELECT; } } } @Override public void drop(DropTargetEvent event) { if (event.data == null) { event.detail = DND.DROP_NONE; return; } String text = (String) event.data; if (event.item == null) { TreeItem item = new TreeItem(tree, SWT.NONE); item.setText(text); } else { TreeItem item = (TreeItem) event.item; Point pt = display.map(null, tree, event.x, event.y); Rectangle bounds = item.getBounds(); TreeItem parent = item.getParentItem(); if (parent != null) { TreeItem[] items = parent.getItems(); int index = 0; for (int i = 0; i < items.length; i++) { if (items[i] == item) { index = i; break; } } if (pt.y < bounds.y + bounds.height / 3) { TreeItem newItem = new TreeItem(parent, SWT.NONE, index); newItem.setText(text); } else if (pt.y > bounds.y + 2 * bounds.height / 3) { TreeItem newItem = new TreeItem(parent, SWT.NONE, index + 1); newItem.setText(text); } else { TreeItem newItem = new TreeItem(item, SWT.NONE); newItem.setText(text); } } else { TreeItem[] items = tree.getItems(); int index = 0; for (int i = 0; i < items.length; i++) { if (items[i] == item) { index = i; break; } } if (pt.y < bounds.y + bounds.height / 3) { TreeItem newItem = new TreeItem(tree, SWT.NONE, index); newItem.setText(text); } else if (pt.y > bounds.y + 2 * bounds.height / 3) { TreeItem newItem = new TreeItem(tree, SWT.NONE, index + 1); newItem.setText(text); } else { TreeItem newItem = new TreeItem(item, SWT.NONE); newItem.setText(text); } } } } }); shell.setSize(400, 400); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }
From source file:org.eclipse.swt.snippets.Snippet240.java
public static void main(String[] args) { final Display display = new Display(); Shell shell = new Shell(display); shell.setText("Text spans two columns in a TreeItem"); shell.setLayout(new FillLayout()); final Tree tree = new Tree(shell, SWT.MULTI | SWT.FULL_SELECTION); tree.setHeaderVisible(true);//from ww w . j av a 2 s . c om int columnCount = 4; for (int i = 0; i < columnCount; i++) { TreeColumn column = new TreeColumn(tree, SWT.NONE); column.setText("Column " + i); } int itemCount = 8; for (int i = 0; i < itemCount; i++) { TreeItem item = new TreeItem(tree, SWT.NONE); item.setText(0, "item " + i + " a"); item.setText(3, "item " + i + " d"); for (int j = 0; j < 3; j++) { TreeItem subItem = new TreeItem(item, SWT.NONE); subItem.setText(0, "subItem " + i + "-" + j + " a"); subItem.setText(3, "subItem " + i + "-" + j + " d"); } } /* * NOTE: MeasureItem, PaintItem and EraseItem are called repeatedly. * Therefore, it is critical for performance that these methods be * as efficient as possible. */ final String string = "text that spans two columns"; GC gc = new GC(tree); final Point extent = gc.stringExtent(string); gc.dispose(); final Color red = display.getSystemColor(SWT.COLOR_RED); Listener paintListener = event -> { switch (event.type) { case SWT.MeasureItem: { if (event.index == 1 || event.index == 2) { event.width = extent.x / 2; event.height = Math.max(event.height, extent.y + 2); } break; } case SWT.PaintItem: { if (event.index == 1 || event.index == 2) { int offset = 0; if (event.index == 2) { TreeColumn column1 = tree.getColumn(1); offset = column1.getWidth(); } event.gc.setForeground(red); int y = event.y + (event.height - extent.y) / 2; event.gc.drawString(string, event.x - offset, y, true); } break; } } }; tree.addListener(SWT.MeasureItem, paintListener); tree.addListener(SWT.PaintItem, paintListener); for (int i = 0; i < columnCount; i++) { tree.getColumn(i).pack(); } shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }
From source file:org.eclipse.swt.snippets.Snippet232.java
public static void main(String[] args) { final Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout()); shell.setText("Show results as a bar chart in Tree"); final Tree tree = new Tree(shell, SWT.BORDER); tree.setHeaderVisible(true);// w w w .ja va2 s . c o m tree.setLinesVisible(true); TreeColumn column1 = new TreeColumn(tree, SWT.NONE); column1.setText("Bug Status"); column1.setWidth(100); final TreeColumn column2 = new TreeColumn(tree, SWT.NONE); column2.setText("Percent"); column2.setWidth(200); String[] states = new String[] { "Resolved", "New", "Won't Fix", "Invalid" }; String[] teams = new String[] { "UI", "SWT", "OSGI" }; for (int i = 0; i < teams.length; i++) { TreeItem item = new TreeItem(tree, SWT.NONE); item.setText(teams[i]); for (int j = 0; j < states.length; j++) { TreeItem subItem = new TreeItem(item, SWT.NONE); subItem.setText(states[j]); } } /* * NOTE: MeasureItem, PaintItem and EraseItem are called repeatedly. * Therefore, it is critical for performance that these methods be * as efficient as possible. */ tree.addListener(SWT.PaintItem, new Listener() { int[] percents = new int[] { 50, 30, 5, 15 }; @Override public void handleEvent(Event event) { if (event.index == 1) { TreeItem item = (TreeItem) event.item; TreeItem parent = item.getParentItem(); if (parent != null) { GC gc = event.gc; int index = parent.indexOf(item); int percent = percents[index]; Color foreground = gc.getForeground(); Color background = gc.getBackground(); gc.setForeground(display.getSystemColor(SWT.COLOR_RED)); gc.setBackground(display.getSystemColor(SWT.COLOR_YELLOW)); int width = (column2.getWidth() - 1) * percent / 100; gc.fillGradientRectangle(event.x, event.y, width, event.height, true); Rectangle rect2 = new Rectangle(event.x, event.y, width - 1, event.height - 1); gc.drawRectangle(rect2); gc.setForeground(display.getSystemColor(SWT.COLOR_LIST_FOREGROUND)); String text = percent + "%"; Point size = event.gc.textExtent(text); int offset = Math.max(0, (event.height - size.y) / 2); gc.drawText(text, event.x + 2, event.y + offset, true); gc.setForeground(background); gc.setBackground(foreground); } } } }); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }