Revision 1c54a64e
Added by Patrick Plitzner over 5 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeEditor.java | ||
---|---|---|
28 | 28 |
import org.eclipse.e4.ui.workbench.modeling.EPartService; |
29 | 29 |
import org.eclipse.e4.ui.workbench.modeling.ESelectionService; |
30 | 30 |
import org.eclipse.jface.util.LocalSelectionTransfer; |
31 |
import org.eclipse.jface.viewers.ISelection; |
|
31 | 32 |
import org.eclipse.jface.viewers.ISelectionChangedListener; |
32 | 33 |
import org.eclipse.jface.viewers.IStructuredSelection; |
33 | 34 |
import org.eclipse.jface.viewers.SelectionChangedEvent; |
34 | 35 |
import org.eclipse.jface.viewers.StructuredSelection; |
35 | 36 |
import org.eclipse.jface.viewers.TreeViewer; |
37 |
import org.eclipse.swt.SWT; |
|
36 | 38 |
import org.eclipse.swt.dnd.DND; |
37 | 39 |
import org.eclipse.swt.dnd.Transfer; |
40 |
import org.eclipse.swt.events.KeyAdapter; |
|
41 |
import org.eclipse.swt.events.KeyEvent; |
|
38 | 42 |
import org.eclipse.swt.layout.FillLayout; |
39 | 43 |
import org.eclipse.swt.widgets.Composite; |
40 | 44 |
import org.eclipse.ui.IMemento; |
... | ... | |
49 | 53 |
import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer; |
50 | 54 |
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider; |
51 | 55 |
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeLabelProvider; |
56 |
import eu.etaxonomy.taxeditor.featuretree.e4.operation.AddFeatureOperation; |
|
57 |
import eu.etaxonomy.taxeditor.model.AbstractUtility; |
|
52 | 58 |
import eu.etaxonomy.taxeditor.model.IContextListener; |
53 | 59 |
import eu.etaxonomy.taxeditor.model.IDirtyMarkable; |
54 | 60 |
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails; |
... | ... | |
56 | 62 |
import eu.etaxonomy.taxeditor.session.ICdmEntitySession; |
57 | 63 |
import eu.etaxonomy.taxeditor.store.AppModelId; |
58 | 64 |
import eu.etaxonomy.taxeditor.store.CdmStore; |
65 |
import eu.etaxonomy.taxeditor.store.StoreUtil; |
|
59 | 66 |
import eu.etaxonomy.taxeditor.workbench.part.IE4ViewerPart; |
60 | 67 |
|
61 | 68 |
/** |
... | ... | |
112 | 119 |
viewer.addDragSupport(ops, transfers, new FeatureNodeDragListener(viewer)); |
113 | 120 |
viewer.addDropSupport(ops, transfers, new FeatureTreeDropAdapter(this, viewer, sync)); |
114 | 121 |
viewer.addSelectionChangedListener(this); |
122 |
viewer.getTree().addKeyListener(new KeyAdapter() { |
|
123 |
@Override |
|
124 |
public void keyPressed(KeyEvent e) { |
|
125 |
if(e.stateMask == SWT.MOD1 && e.keyCode == 'c'){ |
|
126 |
copy(viewer.getStructuredSelection()); |
|
127 |
} |
|
128 |
else if(e.stateMask == SWT.MOD1 && e.keyCode == 'v'){ |
|
129 |
paste(viewer.getStructuredSelection()); |
|
130 |
} |
|
131 |
} |
|
132 |
}); |
|
115 | 133 |
|
116 | 134 |
List<FeatureTree> trees = CdmStore.getService(IFeatureTreeService.class).list(FeatureTree.class, null, null, null, null); |
117 | 135 |
viewer.setInput(trees); |
... | ... | |
120 | 138 |
menuService.registerContextMenu(viewer.getControl(), AppModelId.POPUPMENU_EU_ETAXONOMY_TAXEDITOR_STORE_POPUPMENU_FEATURETREEEDITOR); |
121 | 139 |
} |
122 | 140 |
|
141 |
public void paste(IStructuredSelection selection) { |
|
142 |
if (StoreUtil.promptCheckIsDirty(this)) { |
|
143 |
return; |
|
144 |
} |
|
145 |
|
|
146 |
ISelection clipBoardSelection = LocalSelectionTransfer.getTransfer().getSelection(); |
|
147 |
Object firstElement = selection.getFirstElement(); |
|
148 |
FeatureNode parentNode = null; |
|
149 |
if(firstElement instanceof FeatureNode){ |
|
150 |
parentNode = (FeatureNode) firstElement; |
|
151 |
} |
|
152 |
else if(firstElement instanceof FeatureTree){ |
|
153 |
parentNode = ((FeatureTree)firstElement).getRoot(); |
|
154 |
} |
|
155 |
if(parentNode!=null){ |
|
156 |
FeatureNode copiedNode = (FeatureNode) ((IStructuredSelection)clipBoardSelection).getFirstElement(); |
|
157 |
|
|
158 |
AddFeatureOperation operation = new AddFeatureOperation(copiedNode.getFeature(), parentNode, this, this); |
|
159 |
AbstractUtility.executeOperation(operation, sync); |
|
160 |
} |
|
161 |
|
|
162 |
} |
|
163 |
|
|
164 |
public void copy(IStructuredSelection selection) { |
|
165 |
LocalSelectionTransfer.getTransfer().setSelection(selection); |
|
166 |
} |
|
167 |
|
|
123 | 168 |
private void initSession(){ |
124 | 169 |
if(conversation == null){ |
125 | 170 |
conversation = CdmStore.createConversation(); |
Also available in: Unified diff
ref #7873 Implement copy&paste keyboard shortcuts