Project

General

Profile

Download (2.77 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2011 EDIT
4
* European Distributed Institute of Taxonomy 
5
* http://www.e-taxonomy.eu
6
* 
7
* The contents of this file are subject to the Mozilla Public License Version 1.1
8
* See LICENSE.TXT at the top of this package for the full license terms.
9
*/
10
package eu.etaxonomy.taxeditor.editor.view.descriptive.handler;
11

    
12
import org.eclipse.core.commands.AbstractHandler;
13
import org.eclipse.core.commands.ExecutionEvent;
14
import org.eclipse.core.commands.ExecutionException;
15
import org.eclipse.core.commands.common.NotDefinedException;
16
import org.eclipse.ui.IEditorInput;
17
import org.eclipse.ui.IEditorPart;
18
import org.eclipse.ui.IWorkbenchPart;
19
import org.eclipse.ui.forms.editor.FormEditor;
20
import org.eclipse.ui.handlers.HandlerUtil;
21

    
22
import eu.etaxonomy.cdm.model.taxon.Taxon;
23
import eu.etaxonomy.taxeditor.editor.EditorUtil;
24
import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
25
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateTaxonDescriptionOperation;
26
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
27
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
28

    
29
/**
30
 * <p>AddDescriptionHandler class.</p>
31
 *
32
 * @author p.ciardelli
33
 * @created 11.08.2009
34
 * @version 1.0
35
 */
36
public class CreateDescriptionHandler extends AbstractHandler {
37

    
38
	/* (non-Javadoc)
39
	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
40
	 */
41
	/** {@inheritDoc} */
42
	public Object execute(ExecutionEvent event) throws ExecutionException {
43
		IWorkbenchPart part = HandlerUtil.getActivePart(event);
44
		IPostOperationEnabled postOperationEnabled = (part instanceof IPostOperationEnabled) ? (IPostOperationEnabled) part : null;
45
		
46
		
47
		IEditorPart editor = HandlerUtil.getActiveEditor(event);
48
		if (editor instanceof FormEditor) {
49
			editor = ((FormEditor) editor).getActiveEditor();
50
		}
51
		IEditorInput input = editor.getEditorInput();
52
		if (input instanceof TaxonEditorInput) {
53
			Taxon taxon = ((TaxonEditorInput) input).getTaxon();	
54
			AbstractPostOperation operation;
55
			try {
56
				
57
				operation = createOperationInstance(event.getCommand().getName(), taxon, postOperationEnabled);
58
				EditorUtil.executeOperation(operation);
59
			} catch (NotDefinedException e) {
60
				EditorUtil.warn(getClass(), "Command name not set.");
61
			}
62
		} 
63
		return null;
64
	}
65
	
66
	/**Comments for funtion createOperationInstance
67
	 * The function is used to make the specific object creation more generic
68
	 * @param eventLabel
69
	 * @param taxon
70
	 * @param postOperationEnabled
71
	 * @return
72
	 */
73
	protected AbstractPostOperation createOperationInstance(String eventLabel, Taxon taxon, IPostOperationEnabled postOperationEnabled) {
74
		// TODO use undo context specific to editor	
75
		return new CreateTaxonDescriptionOperation(eventLabel,  EditorUtil.getUndoContext(), taxon, postOperationEnabled);
76
	}
77
	
78

    
79
}
(2-2/6)