diff options
author | Thomas Schindl | 2008-01-13 17:44:06 +0000 |
---|---|---|
committer | Thomas Schindl | 2008-01-13 17:44:06 +0000 |
commit | 2abee1f06794988a718a3fe27922432b1092ad7e (patch) | |
tree | 5536620f8f431e15117a8ddf3d483039cd28b910 /examples/org.eclipse.jface.snippets | |
parent | 0db3b92d562040e5b0dbbf18fc820b1be267f34c (diff) | |
download | eclipse.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.java | 204 |
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 (); + } +} + + |