Project

General

Profile

Download (3.79 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 * 
3
 */
4
package eu.etaxonomy.taxeditor.editor.name.handler;
5

    
6
import java.util.ArrayList;
7
import java.util.List;
8
import java.util.UUID;
9

    
10
import org.apache.log4j.Logger;
11
import org.eclipse.core.commands.AbstractHandler;
12
import org.eclipse.core.commands.ExecutionEvent;
13
import org.eclipse.core.commands.ExecutionException;
14
import org.eclipse.core.commands.IHandler;
15
import org.eclipse.core.commands.common.NotDefinedException;
16
import org.eclipse.swt.widgets.Display;
17
import org.eclipse.ui.PartInitException;
18
import org.eclipse.ui.handlers.HandlerUtil;
19

    
20
import eu.etaxonomy.cdm.model.common.CdmBase;
21
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
22
import eu.etaxonomy.taxeditor.editor.EditorUtil;
23
import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
24
import eu.etaxonomy.taxeditor.editor.Page;
25
import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
26
import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
27
import eu.etaxonomy.taxeditor.editor.name.operation.ChangeAcceptedTaxonToSynonymOperation;
28
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
29
import eu.etaxonomy.taxeditor.ui.dialogs.filteredSelection.TaxonNodeSelectionDialog;
30

    
31
/**
32
 * <p>ChangeAcceptedTaxonToSynonymHandler class.</p>
33
 *
34
 * @author n.hoffmann
35
 * @created Jan 4, 2010
36
 * @version 1.0
37
 */
38
public class ChangeAcceptedTaxonToSynonymHandler extends AbstractHandler
39
		implements IHandler, IPostOperationEnabled {
40
	private static final Logger logger = Logger
41
			.getLogger(ChangeAcceptedTaxonToSynonymHandler.class);
42
	private ChangeAcceptedTaxonToSynonymOperation operation;
43

    
44
	private UUID newAcceptedTaxonNodeUuid;
45
	private TaxonNameEditor editor;
46
	
47
	/* (non-Javadoc)
48
	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
49
	 */
50
	/** {@inheritDoc} */
51
	public Object execute(ExecutionEvent event) throws ExecutionException {
52
		
53
		editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage(
54
				Page.NAME);
55
		TaxonNode oldAcceptedTaxonNode = ((TaxonEditorInput) editor.getEditorInput()).getTaxonNode();
56
		
57
		// Choose new accepted taxon	
58
		List<UUID> excludeTaxa = new ArrayList<UUID>();
59
		excludeTaxa.add(oldAcceptedTaxonNode.getUuid());
60
		TaxonNode newAcceptedTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), editor.getConversationHolder(), "Choose the accepted taxon", excludeTaxa, null);
61

    
62
		if (newAcceptedTaxonNode == null) {
63
			return null;
64
		}
65
		
66
		newAcceptedTaxonNodeUuid = newAcceptedTaxonNode.getUuid();
67
				
68
		try {
69
			operation = new ChangeAcceptedTaxonToSynonymOperation(event.getCommand().getName(), 
70
									editor.getUndoContext(), oldAcceptedTaxonNode, newAcceptedTaxonNode, this, editor);
71
			EditorUtil.executeOperation(operation);
72
			
73
		} catch (NotDefinedException e) {
74
			logger.warn("Command name not set");
75
		}
76
		
77
		return null;
78
		
79
	}
80

    
81
	/* (non-Javadoc)
82
	 * @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
83
	 */
84
	/** {@inheritDoc} */
85
	public boolean postOperation(CdmBase objectAffectedByOperation) {
86
		Display.getDefault().asyncExec(new Runnable(){
87

    
88
			public void run() {
89
				EditorUtil.close(editor.getMultiPageTaxonEditor());
90
				
91
				try {
92
					MultiPageTaxonEditor possibleOpenEditor = (MultiPageTaxonEditor) EditorUtil.findEditorByTaxonNodeUuid(newAcceptedTaxonNodeUuid);
93
					if(possibleOpenEditor != null){
94
						EditorUtil.close(possibleOpenEditor);
95
					}
96
					EditorUtil.openTaxonNode(newAcceptedTaxonNodeUuid);
97
				} catch (PartInitException e) {
98
					EditorUtil.error(this.getClass(), e);
99
					throw new RuntimeException(e);
100
				} catch (Exception e) {
101
					EditorUtil.warningDialog("Could not create Taxon", this, e.getMessage());
102
				}
103
			}
104
			
105
		});
106
		
107
		
108
		return true;
109
	}
110

    
111
	/**
112
	 * <p>onComplete</p>
113
	 *
114
	 * @return a boolean.
115
	 */
116
	public boolean onComplete() {
117
		// TODO Auto-generated method stub
118
		return false;
119
	}	
120
}
(1-1/16)