Project

General

Profile

« Previous | Next » 

Revision 1c54a64e

Added by Patrick Plitzner over 5 years ago

ref #7873 Implement copy&paste keyboard shortcuts

View differences:

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