Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Schindl2008-01-13 17:44:06 +0000
committerThomas Schindl2008-01-13 17:44:06 +0000
commit2abee1f06794988a718a3fe27922432b1092ad7e (patch)
tree5536620f8f431e15117a8ddf3d483039cd28b910 /examples/org.eclipse.jface.snippets
parent0db3b92d562040e5b0dbbf18fc820b1be267f34c (diff)
downloadeclipse.platform.ui-2abee1f06794988a718a3fe27922432b1092ad7e.tar.gz
eclipse.platform.ui-2abee1f06794988a718a3fe27922432b1092ad7e.tar.xz
eclipse.platform.ui-2abee1f06794988a718a3fe27922432b1092ad7e.zip
Bug 215145: [Snippet] Cell editor in tree viewer on menu selection
Diffstat (limited to 'examples/org.eclipse.jface.snippets')
-rw-r--r--examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet053StartEditorWithContextMenu.java204
1 files changed, 204 insertions, 0 deletions
diff --git a/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet053StartEditorWithContextMenu.java b/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet053StartEditorWithContextMenu.java
new file mode 100644
index 00000000000..bb550aa1ee1
--- /dev/null
+++ b/examples/org.eclipse.jface.snippets/Eclipse JFace Snippets/org/eclipse/jface/snippets/viewers/Snippet053StartEditorWithContextMenu.java
@@ -0,0 +1,204 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Marcel and others.
+ * 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:
+ * Marcel <emmpeegee@gmail.com> - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jface.snippets.viewers;
+
+import java.util.ArrayList;
+
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ColumnViewerEditor;
+import org.eclipse.jface.viewers.ColumnViewerEditorActivationEvent;
+import org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy;
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.TreeViewerEditor;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.TreeItem;
+
+/**
+ *
+ */
+public class Snippet053StartEditorWithContextMenu implements SelectionListener {
+
+ private TreeViewer viewer;
+
+ private class MyContentProvider implements ITreeContentProvider {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements(Object inputElement) {
+ return ((MyModel)inputElement).child.toArray();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose() {
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+ */
+ public Object[] getChildren(Object parentElement) {
+ return getElements(parentElement);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+ */
+ public Object getParent(Object element) {
+ if( element == null) {
+ return null;
+ }
+
+ return ((MyModel)element).parent;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+ */
+ public boolean hasChildren(Object element) {
+ return ((MyModel)element).child.size() > 0;
+ }
+
+ }
+
+ public class MyModel {
+ public MyModel parent;
+ public ArrayList child = new ArrayList();
+ public int counter;
+
+ public MyModel(int counter, MyModel parent) {
+ this.parent = parent;
+ this.counter = counter;
+ }
+
+ public String toString() {
+ String rv = "Item ";
+ if( parent != null ) {
+ rv = parent.toString() + ".";
+ }
+
+ rv += counter;
+
+ return rv;
+ }
+ }
+
+ public Snippet053StartEditorWithContextMenu(Shell shell) {
+ viewer = new TreeViewer(shell, SWT.BORDER);
+ viewer.setContentProvider(new MyContentProvider());
+ viewer.setCellEditors(new CellEditor[] {new TextCellEditor(viewer.getTree())});
+ viewer.setColumnProperties(new String[] { "name" });
+ viewer.setCellModifier(new ICellModifier() {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object, java.lang.String)
+ */
+ public boolean canModify(Object element, String property) {
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object, java.lang.String)
+ */
+ public Object getValue(Object element, String property) {
+ return ((MyModel)element).counter + "";
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object, java.lang.String, java.lang.Object)
+ */
+ public void modify(Object element, String property, Object value) {
+ TreeItem item = (TreeItem)element;
+ ((MyModel)item.getData()).counter = Integer.parseInt(value.toString());
+ viewer.update(item.getData(), null);
+ }
+
+ });
+
+ TreeViewerEditor.create(viewer, new ColumnViewerEditorActivationStrategy(viewer) {
+ protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
+ return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
+ }
+ }, ColumnViewerEditor.DEFAULT);
+
+ Menu menu = new Menu(viewer.getControl());
+ MenuItem renameItem = new MenuItem(menu, SWT.PUSH);
+ renameItem.addSelectionListener(this);
+ renameItem.setText("Rename");
+ viewer.getTree().setMenu(menu);
+
+ viewer.setInput(createModel());
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+ if (selection != null) {
+ viewer.editElement(selection.getFirstElement(), 0);
+ }
+ }
+
+ private MyModel createModel() {
+
+ MyModel root = new MyModel(0,null);
+ root.counter = 0;
+
+ MyModel tmp;
+ for( int i = 1; i < 10; i++ ) {
+ tmp = new MyModel(i, root);
+ root.child.add(tmp);
+ for( int j = 1; j < i; j++ ) {
+ tmp.child.add(new MyModel(j,tmp));
+ }
+ }
+
+ return root;
+ }
+
+ public static void main(String[] args) {
+ Display display = new Display ();
+ Shell shell = new Shell(display);
+ shell.setLayout(new FillLayout());
+ new Snippet053StartEditorWithContextMenu(shell);
+ shell.open ();
+
+ while (!shell.isDisposed ()) {
+ if (!display.readAndDispatch ()) display.sleep ();
+ }
+
+ display.dispose ();
+ }
+}
+
+

Back to the top