diff options
author | Anton Tanasenko | 2014-09-14 22:16:33 +0000 |
---|---|---|
committer | Anton Tanasenko | 2014-09-15 14:54:06 +0000 |
commit | ca79bc814c690064f8aea5fa2eb46c4cf1240be9 (patch) | |
tree | 63011e7fda18e8f87381c383785bf804d8ed4180 /org.eclipse.m2e.editor/src/org/eclipse | |
parent | 3a316afc8372207fc21476296844fdc37542d5c1 (diff) | |
download | m2e-core-ca79bc814c690064f8aea5fa2eb46c4cf1240be9.tar.gz m2e-core-ca79bc814c690064f8aea5fa2eb46c4cf1240be9.tar.xz m2e-core-ca79bc814c690064f8aea5fa2eb46c4cf1240be9.zip |
441523 Tuned pom editor's TableViewerEditor behavior
Change-Id: I2d44243a77330f0f3c1c09d878ecd6d3583b9cfe
Signed-off-by: Anton Tanasenko <atg.sleepless@gmail.com>
Diffstat (limited to 'org.eclipse.m2e.editor/src/org/eclipse')
-rw-r--r-- | org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/ListEditorComposite.java | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/ListEditorComposite.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/ListEditorComposite.java index b6e309ce..ab08833a 100644 --- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/ListEditorComposite.java +++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/ListEditorComposite.java @@ -18,6 +18,9 @@ import java.util.Map; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.CellLabelProvider; +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.IDoubleClickListener; import org.eclipse.jface.viewers.ILabelProvider; @@ -28,6 +31,7 @@ import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; +import org.eclipse.jface.viewers.TableViewerEditor; import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ControlAdapter; @@ -223,6 +227,27 @@ public class ListEditorComposite<T> extends Composite { } public void setCellModifier(ICellModifier cellModifier) { + + // trigger editing only on second click to prevent losing viewer selection on defocus + ColumnViewerEditorActivationStrategy activationSupport = new ColumnViewerEditorActivationStrategy(viewer) { + Object prevSelection; + + protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) { + + IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); + if(selection.size() != 1) + return false; + + Object selElement = selection.getFirstElement(); + if(prevSelection != (prevSelection = selElement)) + return false; + + return super.isEditorActivationEvent(event); + } + }; + + TableViewerEditor.create(viewer, activationSupport, ColumnViewerEditor.DEFAULT); + viewer.setColumnProperties(new String[] {"?"}); //$NON-NLS-1$ TextCellEditor editor = new TextCellEditor(viewer.getTable()); |