Project

General

Profile

« Previous | Next » 

Revision 5fe02eb2

Added by Patrick Plitzner about 9 years ago

  • added TaxonDeletionConfigurator to delete operations

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteTaxonBaseHandler.java
1 1
/**
2 2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy 
3
* European Distributed Institute of Taxonomy
4 4
* http://www.e-taxonomy.eu
5
* 
5
*
6 6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7 7
* See LICENSE.TXT at the top of this package for the full license terms.
8 8
*/
......
16 16
import org.eclipse.jface.dialogs.MessageDialog;
17 17
import org.eclipse.swt.widgets.Display;
18 18
import org.eclipse.ui.IWorkbenchPage;
19
import org.eclipse.ui.PartInitException;
20 19
import org.eclipse.ui.handlers.HandlerUtil;
21 20

  
21
import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
22 22
import eu.etaxonomy.cdm.model.common.CdmBase;
23 23
import eu.etaxonomy.cdm.model.taxon.Synonym;
24 24
import eu.etaxonomy.cdm.model.taxon.Taxon;
25 25
import eu.etaxonomy.taxeditor.editor.EditorUtil;
26
import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
27 26
import eu.etaxonomy.taxeditor.editor.Page;
28 27
import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
29 28
import eu.etaxonomy.taxeditor.editor.name.operation.DeleteMisapplicationOperation;
30 29
import eu.etaxonomy.taxeditor.editor.name.operation.DeleteSynonymOperation;
31 30
import eu.etaxonomy.taxeditor.editor.name.operation.DeleteTaxonOperation;
31
import eu.etaxonomy.taxeditor.model.AbstractUtility;
32 32
import eu.etaxonomy.taxeditor.model.MessagingUtils;
33 33
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
34 34
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
......
47 47
	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
48 48
	 */
49 49
	/** {@inheritDoc} */
50
	public Object execute(ExecutionEvent event) throws ExecutionException {
50
	@Override
51
    public Object execute(ExecutionEvent event) throws ExecutionException {
51 52
		editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage(Page.NAME);
52
				
53

  
53 54
		Object selectedElement = EditorUtil.getSelection(event).getFirstElement();
54
		
55

  
55 56
		doExecute(event, editor, selectedElement);
56
		
57

  
57 58
		return null;
58 59
	}
59
	
60

  
60 61
	/**
61 62
	 * @param editor
62 63
	 * @param selectedElement
......
65 66
	 */
66 67
	protected void doExecute(ExecutionEvent event, TaxonNameEditor editor, Object selectedElement) {
67 68
		AbstractPostOperation operation = null;
68
		String commandName = null;		
69
		String commandName = null;
69 70

  
70 71
		try {
71 72
			commandName = event.getCommand().getName();
72 73
		} catch (NotDefinedException e) {
73 74
			MessagingUtils.error(getClass(), e);
74 75
		}
75
		
76

  
76 77
		// synonym
77 78
		if(selectedElement instanceof Synonym){
78 79
			operation = new DeleteSynonymOperation(commandName, editor.getUndoContext(), editor.getTaxon(), (Synonym) selectedElement, editor);
......
87 88
			if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Are you sure you want to delete the selected taxon?")){
88 89
				return ;
89 90
			}
91

  
90 92
			IWorkbenchPage activePage = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
91
			
92
			operation = new DeleteTaxonOperation(commandName, editor.getUndoContext(),(Taxon) selectedElement, null, activePage, this, editor);
93

  
94
			operation = new DeleteTaxonOperation(commandName, editor.getUndoContext(),(Taxon) selectedElement, new TaxonDeletionConfigurator(), null, activePage, this, editor);
93 95
			//editor.dispose();
94
			
96

  
95 97
		}
96 98
		else {
97 99
			throw new IllegalArgumentException("Element has to be Synonym, Misapplication or Concept");
98 100
		}
99
				
100
		EditorUtil.executeOperation(operation);
101
		
102
		
103
		
104
		
101

  
102
		AbstractUtility.executeOperation(operation);
105 103
	}
106 104

  
107 105
	@Override
108 106
	public boolean postOperation(CdmBase objectAffectedByOperation) {
109 107
		Display.getDefault().asyncExec(new Runnable(){
110 108

  
111
			public void run() {
112
				EditorUtil.close(editor.getMultiPageTaxonEditor());
113
					
109
			@Override
110
            public void run() {
111
				AbstractUtility.close(editor.getMultiPageTaxonEditor());
114 112
			}
115
			
116 113
		});
117
		
118
		
119 114
		return true;
120 115
	}
121 116

  
......
124 119
		// TODO Auto-generated method stub
125 120
		return false;
126 121
	}
127
	
128
	
122

  
129 123
}
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonBaseOperation.java
5 5
import org.eclipse.core.runtime.IAdaptable;
6 6
import org.eclipse.core.runtime.IProgressMonitor;
7 7
import org.eclipse.core.runtime.IStatus;
8
import org.eclipse.ui.IEditorInput;
9
import org.eclipse.ui.IEditorReference;
10
import org.eclipse.ui.IPerspectiveDescriptor;
11
import org.eclipse.ui.IViewPart;
12 8
import org.eclipse.ui.IWorkbenchPage;
13
import org.eclipse.ui.PartInitException;
14 9

  
15 10
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
16
import eu.etaxonomy.cdm.model.taxon.Taxon;
17
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
18
import eu.etaxonomy.taxeditor.editor.EditorUtil;
19
import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
11
import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
20 12
import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation;
21 13
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
22 14

  
23 15
public class DeleteTaxonBaseOperation extends AbstractPersistentPostOperation {
24
	
25
	private IWorkbenchPage activePage;
26
	
16

  
17
	protected TaxonDeletionConfigurator configurator;
18

  
27 19
	public DeleteTaxonBaseOperation(String label, IUndoContext undoContext,
28
			Taxon taxon, IWorkbenchPage activePage, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {
20
	        TaxonDeletionConfigurator configurator, IWorkbenchPage activePage, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {
29 21
		super(label, undoContext, postOperationEnabled,
30 22
				 conversationEnabled);
31
		this.activePage = activePage;
32
		
23
		this.configurator = configurator;
24

  
33 25
	}
34 26

  
35 27
	@Override
......
52 44
		// TODO Auto-generated method stub
53 45
		return null;
54 46
	}
55
	
56
	protected void closeObsoleteEditor(Taxon taxon){
57
		for (IEditorReference ref : activePage.getEditorReferences()) {
58
			
59
			IViewPart view =  activePage.findView("eu.etaxonomy.taxeditor.navigation.navigator");
60
		
61
			try {
62
				IEditorInput input = ref.getEditorInput(); 
63
				if (input instanceof TaxonEditorInput) {
64
					TaxonNode node = ((TaxonEditorInput) input).getTaxonNode();
65
					if (taxonNode.equals(node)) {
66
						activePage.closeEditor(ref.getEditor(false), false);
67
					}
68
				}
69
			} catch (PartInitException e) {
70
				continue;
71
			}
72
		}
73
	}
74 47
}
75

  
76

  
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java
23 23
import eu.etaxonomy.taxeditor.store.CdmStore;
24 24

  
25 25
public class DeleteTaxonOperation extends DeleteTaxonBaseOperation{
26
	//private Taxon taxon;
27
	private final Classification classification;
28

  
29

  
30 26

  
27
    private final Classification classification;
31 28

  
32 29
	public DeleteTaxonOperation(String label, IUndoContext undoContext,
33
			Taxon taxon, Classification classification, IWorkbenchPage activePage, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {
34
		super(label, undoContext, taxon, activePage, postOperationEnabled, conversationEnabled);
30
			Taxon taxon, TaxonDeletionConfigurator configurator, Classification classification, IWorkbenchPage activePage, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {
31
		super(label, undoContext, configurator, activePage, postOperationEnabled, conversationEnabled);
35 32
		this.element = taxon;
36 33

  
37 34
		Set<TaxonNode> nodes = taxon.getTaxonNodes();
......
52 49

  
53 50
	}
54 51

  
55

  
56

  
57 52
	@Override
58 53
	public IStatus execute(IProgressMonitor monitor, IAdaptable info)
59 54
			throws ExecutionException {
......
64 59

  
65 60
				ICdmApplicationConfiguration controller;
66 61

  
67
				controller = (ICdmApplicationConfiguration) CdmStore.getCurrentApplicationConfiguration();
62
				controller = CdmStore.getCurrentApplicationConfiguration();
68 63

  
69 64
				ITaxonService service = controller.getTaxonService();
70
				
71 65

  
72
				DeleteResult result =	service.deleteTaxon(element, new TaxonDeletionConfigurator(), classification);
66

  
67
				DeleteResult result =	service.deleteTaxon(element, configurator, classification);
73 68
				if (result.isError()){
74 69
					MessageDialog.openError(null, "Delete failed", result.getExceptions().get(0).getMessage());
75 70
				}
76 71

  
77
				//closeObsoleteEditor(taxon);
78 72
				monitor.worked(40);
79 73

  
80 74

  
......
95 89
		return null;
96 90
	}
97 91

  
98

  
99
}
92
}

Also available in: Unified diff