Project

General

Profile

« Previous | Next » 

Revision c2e12c2b

Added by Patrick Plitzner over 5 years ago

ref #6806 Implement operation framework for feature tree editor

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeEditor.java
9 9

  
10 10
package eu.etaxonomy.taxeditor.featuretree.e4;
11 11

  
12
import java.util.ArrayList;
12 13
import java.util.Arrays;
13 14
import java.util.HashMap;
14 15
import java.util.List;
......
21 22
import org.eclipse.core.runtime.IProgressMonitor;
22 23
import org.eclipse.e4.ui.di.Focus;
23 24
import org.eclipse.e4.ui.di.Persist;
25
import org.eclipse.e4.ui.di.UISynchronize;
24 26
import org.eclipse.e4.ui.model.application.ui.MDirtyable;
25 27
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
26 28
import org.eclipse.e4.ui.services.EMenuService;
......
39 41
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
40 42
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
41 43
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
44
import eu.etaxonomy.cdm.model.common.CdmBase;
42 45
import eu.etaxonomy.cdm.model.description.FeatureNode;
43 46
import eu.etaxonomy.cdm.model.description.FeatureTree;
44 47
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
......
46 49
import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer;
47 50
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider;
48 51
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeLabelProvider;
52
import eu.etaxonomy.taxeditor.model.AbstractUtility;
49 53
import eu.etaxonomy.taxeditor.model.IContextListener;
50 54
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
51 55
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
52 56
import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
57
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
58
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
53 59
import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
54 60
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
55 61
import eu.etaxonomy.taxeditor.store.CdmStore;
......
64 70
 */
65 71
public class FeatureTreeEditor implements ICdmEntitySessionEnabled, ISelectionChangedListener,
66 72
        IE4ViewerPart, IE4SavablePart, IPartContentHasDetails, IPartContentHasSupplementalData,
67
        IContextListener, IConversationEnabled, IDirtyMarkable {
73
        IContextListener, IConversationEnabled, IDirtyMarkable, IPostOperationEnabled {
68 74

  
69 75
    private ConversationHolder conversation;
70 76

  
......
79 85
    @Inject
80 86
    private MPart thisPart;
81 87

  
88
    @Inject
89
    private UISynchronize sync;
90

  
82 91
    private TreeViewer viewer;
83 92

  
93
    private List<AbstractPostOperation> operations = new ArrayList<>();
94

  
84 95
    @Inject
85 96
    public FeatureTreeEditor() {
86 97
        CdmStore.getContextManager().addContextListener(this);
......
143 154
	    return dirty.isDirty();
144 155
	}
145 156

  
157
	public void addOperation(AbstractPostOperation operation){
158
	    operations.add(operation);
159
	}
160

  
146 161
	/** {@inheritDoc} */
147 162
	@Override
148 163
	public void selectionChanged(SelectionChangedEvent event) {
......
197 212

  
198 213
        // commit the conversation and start a new transaction immediately
199 214
        conversation.commit(true);
215
        operations.forEach(operation->AbstractUtility.executeOperation(operation, sync));
216
        operations.clear();
200 217

  
201
        List<FeatureTree> trees = (List<FeatureTree>) viewer.getInput();
202
        CdmStore.getService(IFeatureTreeService.class).merge(trees);
218
//        List<FeatureTree> trees = (List<FeatureTree>) viewer.getInput();
219
//        CdmStore.getService(IFeatureTreeService.class).merge(trees);
203 220

  
204 221
        this.setDirty(false);
205 222
	}
......
275 292
        dirty.setDirty(true);
276 293
    }
277 294

  
295
    /**
296
     * {@inheritDoc}
297
     */
298
    @Override
299
    public boolean postOperation(CdmBase objectAffectedByOperation) {
300
        return false;
301
    }
302

  
303
    /**
304
     * {@inheritDoc}
305
     */
306
    @Override
307
    public boolean onComplete() {
308
        return false;
309
    }
310

  
278 311
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/handler/AddChildFeatureHandler.java
23 23
import org.eclipse.jface.wizard.WizardDialog;
24 24
import org.eclipse.swt.widgets.Shell;
25 25

  
26
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
27 26
import eu.etaxonomy.cdm.model.description.Feature;
28 27
import eu.etaxonomy.cdm.model.description.FeatureNode;
29 28
import eu.etaxonomy.taxeditor.featuretree.AvailableFeaturesWizard;
30 29
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor;
31
import eu.etaxonomy.taxeditor.store.CdmStore;
30
import eu.etaxonomy.taxeditor.featuretree.e4.operation.AddFeatureOperation;
32 31

  
33 32
/**
34 33
 * @author pplitzner
......
50 49
            FeatureNode parent = (FeatureNode)next;
51 50
            Collection<Feature> additionalFeatures = wizard.getAdditionalFeatures();
52 51
            for (Feature feature : additionalFeatures) {
53
                CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(parent.getUuid(), feature.getUuid());
52
                FeatureNode childNode = FeatureNode.NewInstance(feature);
53
                parent.addChild(childNode);
54
                AddFeatureOperation operation = new AddFeatureOperation(feature, parent, editor, editor);
55
                editor.addOperation(operation);
54 56
            }
57
            editor.setDirty(true);
55 58
            editor.getViewer().refresh();
56 59
            editor.getViewer().expandToLevel(parent, 1);
57 60
        }
58 61
    }
59 62

  
60 63
    @CanExecute
61
    public boolean canExecute(@Named(IServiceConstants.ACTIVE_PART)MPart thisPart,
64
    public boolean canExecute(
62 65
            @Optional@Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection,
66
            @Named(IServiceConstants.ACTIVE_PART)MPart thisPart,
63 67
            MHandledMenuItem menuItem) {
64 68
        boolean canExecute = false;
65 69
        canExecute = thisPart.getObject() instanceof FeatureTreeEditor
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/handler/AddFeatureHandler.java
23 23
import org.eclipse.jface.wizard.WizardDialog;
24 24
import org.eclipse.swt.widgets.Shell;
25 25

  
26
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
27 26
import eu.etaxonomy.cdm.model.description.Feature;
27
import eu.etaxonomy.cdm.model.description.FeatureNode;
28 28
import eu.etaxonomy.cdm.model.description.FeatureTree;
29 29
import eu.etaxonomy.taxeditor.featuretree.AvailableFeaturesWizard;
30 30
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor;
31
import eu.etaxonomy.taxeditor.store.CdmStore;
31
import eu.etaxonomy.taxeditor.featuretree.e4.operation.AddFeatureOperation;
32 32

  
33 33
/**
34 34
 * @author pplitzner
......
49 49
            FeatureTree tree = (FeatureTree) selection.iterator().next();
50 50
            Collection<Feature> additionalFeatures = wizard.getAdditionalFeatures();
51 51
            for (Feature feature : additionalFeatures) {
52
                CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(tree.getRoot().getUuid(), feature.getUuid());
52
                FeatureNode childNode = FeatureNode.NewInstance(feature);
53
                tree.getRoot().addChild(childNode);
54
                AddFeatureOperation operation = new AddFeatureOperation(feature, tree.getRoot(), editor, editor);
55
                editor.addOperation(operation);
53 56
            }
57
            editor.setDirty(true);
54 58
            editor.getViewer().refresh();
55 59
            editor.getViewer().expandToLevel(selection, 1);
56 60
        }
......
62 66
            @Named(IServiceConstants.ACTIVE_PART)MPart thisPart,
63 67
            MHandledMenuItem menuItem) {
64 68
        boolean canExecute = false;
65
        canExecute = selection!=null
69
        canExecute = thisPart.getObject() instanceof FeatureTreeEditor
70
                && selection!=null
66 71
                && selection.size()==1
67
                && selection.iterator().next() instanceof FeatureTree
68
                && thisPart.getObject() instanceof FeatureTreeEditor;
72
                && selection.iterator().next() instanceof FeatureTree;
69 73
        menuItem.setVisible(canExecute);
70 74
        return canExecute;
71 75
    }
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/handler/CreateFeatureTreeHandler.java
20 20

  
21 21
import eu.etaxonomy.cdm.model.description.FeatureTree;
22 22
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor;
23
import eu.etaxonomy.taxeditor.featuretree.e4.operation.CreateFeatureTreeOperation;
23 24

  
24 25
/**
25 26
 * @author pplitzner
......
33 34
        FeatureTree tree = FeatureTree.NewInstance();
34 35
        tree.setTitleCache("New feature tree", true);
35 36
        FeatureTreeEditor editor = (FeatureTreeEditor) thisPart.getObject();
37
        CreateFeatureTreeOperation operation = new CreateFeatureTreeOperation(tree, editor, editor);
38
        editor.addOperation(operation);
36 39
        List<FeatureTree> trees = (List<FeatureTree>) editor.getViewer().getInput();
37 40
        trees.add(tree);
38 41
        editor.getViewer().setInput(trees);
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/handler/RemoveFeatureHandler.java
18 18
import org.eclipse.e4.ui.services.IServiceConstants;
19 19
import org.eclipse.jface.viewers.IStructuredSelection;
20 20

  
21
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
22
import eu.etaxonomy.cdm.api.service.config.FeatureNodeDeletionConfigurator;
23 21
import eu.etaxonomy.cdm.model.description.FeatureNode;
24
import eu.etaxonomy.taxeditor.store.CdmStore;
22
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor;
23
import eu.etaxonomy.taxeditor.featuretree.e4.operation.RemoveFeatureOperation;
25 24
import eu.etaxonomy.taxeditor.workbench.part.IE4ViewerPart;
26 25

  
27 26
/**
......
34 33
    @Execute
35 34
    public void execute(@Named(IServiceConstants.ACTIVE_PART)MPart thisPart,
36 35
            @Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection){
36
        FeatureTreeEditor editor = (FeatureTreeEditor) thisPart.getObject();
37 37
        for (Object selectedObject : selection.toArray()) {
38 38
            FeatureNode featureNode = (FeatureNode) selectedObject;
39
            CdmStore.getService(IFeatureNodeService.class).deleteFeatureNode(featureNode.getUuid(), new FeatureNodeDeletionConfigurator());
39
            RemoveFeatureOperation operation = new RemoveFeatureOperation(featureNode, editor, editor);
40
            editor.addOperation(operation);
41
            FeatureNode parent = featureNode.getParent();
42
            parent.removeChild(featureNode);
40 43
        }
41
        IE4ViewerPart editor = (IE4ViewerPart) thisPart.getObject();
44
        editor.setDirty(true);
42 45
        editor.refresh();
43 46
    }
44 47

  
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/handler/RemoveFeatureTreeHandler.java
20 20
import org.eclipse.e4.ui.services.IServiceConstants;
21 21
import org.eclipse.jface.viewers.IStructuredSelection;
22 22

  
23
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
24 23
import eu.etaxonomy.cdm.model.description.FeatureTree;
25 24
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor;
26
import eu.etaxonomy.taxeditor.store.CdmStore;
25
import eu.etaxonomy.taxeditor.featuretree.e4.operation.RemoveFeatureTreeOperation;
27 26

  
28 27
/**
29 28
 * @author pplitzner
......
39 38
        List<FeatureTree> trees = (List<FeatureTree>) editor.getViewer().getInput();
40 39
        for (Object selectedObject : selection.toArray()) {
41 40
            FeatureTree featureTree = (FeatureTree) selectedObject;
42
            CdmStore.getService(IFeatureTreeService.class).delete(featureTree.getUuid());
41
            RemoveFeatureTreeOperation operation = new RemoveFeatureTreeOperation(featureTree, editor, editor);
42
            editor.addOperation(operation);
43 43
            trees.remove(featureTree);
44 44
        }
45 45
        editor.getViewer().setInput(trees);
46
        editor.setDirty(true);
46 47
    }
47 48

  
48 49
    @CanExecute
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/operation/AddFeatureOperation.java
1
/**
2
* Copyright (C) 2018 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.taxeditor.featuretree.e4.operation;
10

  
11
import org.eclipse.core.commands.ExecutionException;
12
import org.eclipse.core.runtime.IAdaptable;
13
import org.eclipse.core.runtime.IProgressMonitor;
14
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.Status;
16

  
17
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
18
import eu.etaxonomy.cdm.api.service.UpdateResult;
19
import eu.etaxonomy.cdm.model.description.Feature;
20
import eu.etaxonomy.cdm.model.description.FeatureNode;
21
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
22
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
23
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
24
import eu.etaxonomy.taxeditor.store.CdmStore;
25
import eu.etaxonomy.taxeditor.store.StoreUtil;
26

  
27
/**
28
 * @author pplitzner
29
 * @since Apr 30, 2018
30
 *
31
 */
32
public class AddFeatureOperation extends AbstractPostOperation<Feature> {
33

  
34
    private FeatureNode node;
35

  
36
    public AddFeatureOperation(Feature element, FeatureNode node,
37
            IPostOperationEnabled postOperationEnabled, ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
38
        super("Add Feature", StoreUtil.getUndoContext(), element, postOperationEnabled, cdmEntitySessionEnabled);
39
        this.node = node;
40
    }
41

  
42
    @Override
43
    public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
44
        UpdateResult result = CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(node.getUuid(), element.getUuid());
45
        return result.isOk()?Status.OK_STATUS:Status.CANCEL_STATUS;
46
    }
47

  
48
    @Override
49
    public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
50
        return null;
51
    }
52

  
53
    @Override
54
    public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
55
        return null;
56
    }
57

  
58
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/operation/CreateFeatureTreeOperation.java
1
/**
2
* Copyright (C) 2018 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.taxeditor.featuretree.e4.operation;
10

  
11
import org.eclipse.core.commands.ExecutionException;
12
import org.eclipse.core.runtime.IAdaptable;
13
import org.eclipse.core.runtime.IProgressMonitor;
14
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.Status;
16

  
17
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
18
import eu.etaxonomy.cdm.model.description.FeatureTree;
19
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
20
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
21
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
22
import eu.etaxonomy.taxeditor.store.CdmStore;
23
import eu.etaxonomy.taxeditor.store.StoreUtil;
24

  
25
/**
26
 * @author pplitzner
27
 * @since Apr 30, 2018
28
 *
29
 */
30
public class CreateFeatureTreeOperation extends AbstractPostOperation<FeatureTree>{
31

  
32
    public CreateFeatureTreeOperation(FeatureTree element,
33
            IPostOperationEnabled postOperationEnabled, ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
34
        super("Create Feature Tree", StoreUtil.getUndoContext(), element, postOperationEnabled, cdmEntitySessionEnabled);
35
    }
36

  
37
    @Override
38
    public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
39
        CdmStore.getService(IFeatureTreeService.class).save(element);
40
        return Status.OK_STATUS;
41
    }
42

  
43
    @Override
44
    public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
45
        return null;
46
    }
47

  
48
    @Override
49
    public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
50
        return null;
51
    }
52

  
53
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/operation/RemoveFeatureOperation.java
1
/**
2
* Copyright (C) 2018 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.taxeditor.featuretree.e4.operation;
10

  
11
import org.eclipse.core.commands.ExecutionException;
12
import org.eclipse.core.runtime.IAdaptable;
13
import org.eclipse.core.runtime.IProgressMonitor;
14
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.Status;
16

  
17
import eu.etaxonomy.cdm.api.service.DeleteResult;
18
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
19
import eu.etaxonomy.cdm.api.service.config.FeatureNodeDeletionConfigurator;
20
import eu.etaxonomy.cdm.model.description.FeatureNode;
21
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
22
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
23
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
24
import eu.etaxonomy.taxeditor.store.CdmStore;
25
import eu.etaxonomy.taxeditor.store.StoreUtil;
26

  
27
/**
28
 * @author pplitzner
29
 * @since Apr 30, 2018
30
 *
31
 */
32
public class RemoveFeatureOperation extends AbstractPostOperation<FeatureNode>{
33

  
34
    public RemoveFeatureOperation(FeatureNode element,
35
            IPostOperationEnabled postOperationEnabled, ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
36
        super("Remove Feature", StoreUtil.getUndoContext(), element, postOperationEnabled, cdmEntitySessionEnabled);
37
    }
38

  
39
    @Override
40
    public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
41
        DeleteResult result = CdmStore.getService(IFeatureNodeService.class).deleteFeatureNode(element.getUuid(), new FeatureNodeDeletionConfigurator());
42
        return result.isOk()?Status.OK_STATUS:Status.CANCEL_STATUS;
43
    }
44

  
45
    @Override
46
    public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
47
        return null;
48
    }
49

  
50
    @Override
51
    public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
52
        return null;
53
    }
54

  
55

  
56

  
57
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/operation/RemoveFeatureTreeOperation.java
1
/**
2
* Copyright (C) 2018 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.taxeditor.featuretree.e4.operation;
10

  
11
import org.eclipse.core.commands.ExecutionException;
12
import org.eclipse.core.runtime.IAdaptable;
13
import org.eclipse.core.runtime.IProgressMonitor;
14
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.core.runtime.Status;
16

  
17
import eu.etaxonomy.cdm.api.service.DeleteResult;
18
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
19
import eu.etaxonomy.cdm.model.description.FeatureTree;
20
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
21
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
22
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
23
import eu.etaxonomy.taxeditor.store.CdmStore;
24
import eu.etaxonomy.taxeditor.store.StoreUtil;
25

  
26
/**
27
 * @author pplitzner
28
 * @since Apr 30, 2018
29
 *
30
 */
31
public class RemoveFeatureTreeOperation extends AbstractPostOperation<FeatureTree>{
32

  
33
    public RemoveFeatureTreeOperation(FeatureTree element,
34
            IPostOperationEnabled postOperationEnabled, ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
35
        super("Remove Feature Tree", StoreUtil.getUndoContext(), element, postOperationEnabled, cdmEntitySessionEnabled);
36
    }
37

  
38
    @Override
39
    public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
40
        DeleteResult result = CdmStore.getService(IFeatureTreeService.class).delete(element.getUuid());
41
        return result.isOk()?Status.OK_STATUS:Status.CANCEL_STATUS;
42
    }
43

  
44
    @Override
45
    public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
46
        return null;
47
    }
48

  
49
    @Override
50
    public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
51
        return null;
52
    }
53

  
54
}

Also available in: Unified diff