Project

General

Profile

« Previous | Next » 

Revision 41e1666a

Added by Patrick Plitzner over 5 years ago

ref #6806 Fix dirty state handling and saving in feature tree editor

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/handler/PasteFeatureHandler.java
3 3

  
4 4
import javax.inject.Named;
5 5

  
6
import org.eclipse.core.runtime.NullProgressMonitor;
7 6
import org.eclipse.e4.core.di.annotations.CanExecute;
8 7
import org.eclipse.e4.core.di.annotations.Execute;
9 8
import org.eclipse.e4.core.di.annotations.Optional;
9
import org.eclipse.e4.ui.di.UISynchronize;
10 10
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
11 11
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
12 12
import org.eclipse.e4.ui.services.IServiceConstants;
......
14 14
import org.eclipse.jface.viewers.ISelection;
15 15
import org.eclipse.jface.viewers.IStructuredSelection;
16 16

  
17
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
18 17
import eu.etaxonomy.cdm.model.description.FeatureNode;
19
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureNodeDropAdapter;
20 18
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor;
21
import eu.etaxonomy.taxeditor.model.MessagingUtils;
22
import eu.etaxonomy.taxeditor.store.CdmStore;
19
import eu.etaxonomy.taxeditor.featuretree.e4.operation.AddFeatureOperation;
20
import eu.etaxonomy.taxeditor.model.AbstractUtility;
21
import eu.etaxonomy.taxeditor.store.StoreUtil;
23 22

  
24 23
public class PasteFeatureHandler {
25 24

  
26 25
    @Execute
27 26
    public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart part,
28
            @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection){
27
            @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection, UISynchronize sync){
29 28
        FeatureTreeEditor editor = (FeatureTreeEditor)part.getObject();
30 29

  
31
        if (editor.isDirty()) {
32
            if (MessagingUtils.confirmDialog(FeatureNodeDropAdapter.SAVE_CHANGES_TITLE,
33
                    FeatureNodeDropAdapter.SAVE_CHANGES_MESSAGE)){
34
                editor.save(new NullProgressMonitor());
35
            }
36
            else{
37
                return;
38
            }
30
        if (StoreUtil.checkDirty(editor)) {
31
            return;
39 32
        }
40 33

  
41 34
        ISelection clipBoardSelection = LocalSelectionTransfer.getTransfer().getSelection();
42 35
        FeatureNode parentNode = (FeatureNode) selection.getFirstElement();
43 36
        FeatureNode copiedNode = (FeatureNode) ((IStructuredSelection)clipBoardSelection).getFirstElement();
44 37

  
45
        CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(parentNode.getUuid(), copiedNode.getFeature().getUuid());
46

  
47
        editor.getViewer().reveal(copiedNode);
48
        editor.setDirty(true);
49
        editor.getViewer().refresh();
38
        AddFeatureOperation operation = new AddFeatureOperation(copiedNode.getFeature(), parentNode, editor, editor);
39
        AbstractUtility.executeOperation(operation, sync);
50 40
    }
51 41

  
52 42
    @CanExecute

Also available in: Unified diff