+++ /dev/null
-// $Id$
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy
- * http://www.e-taxonomy.eu
- *
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.editor.view.descriptive.handler;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeSelection;
-import org.eclipse.jface.viewers.TreePath;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.forms.editor.FormEditor;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.TaxonDescription;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
-import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateDescriptionElementOperation;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
-import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
-
-/**
- * <p>CreateDescriptionElementHandler class.</p>
- *
- * @author n.hoffmann
- * @created 16.04.2009
- * @version 1.0
- */
-public class CreateDescriptionElementHandler extends AbstractHandler {
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.
- * ExecutionEvent)
- */
- /** {@inheritDoc} */
- public Object execute(ExecutionEvent event) throws ExecutionException {
- IWorkbenchPart part = HandlerUtil.getActivePart(event);
- IPostOperationEnabled postOperationEnabled = (part instanceof IPostOperationEnabled) ? (IPostOperationEnabled) part
- : null;
-
- IEditorPart editor = HandlerUtil.getActiveEditor(event);
- if (editor instanceof FormEditor) {
- editor = ((FormEditor) editor).getActiveEditor();
- }
- IEditorInput input = editor.getEditorInput();
- if (input instanceof TaxonEditorInput) {
- Taxon taxon = ((TaxonEditorInput) input).getTaxon();
-
- TaxonDescription description = null;
-
- ISelection selection = HandlerUtil.getActiveMenuSelection(event);
- if (selection instanceof ITreeSelection) {
- TreePath[] paths = ((ITreeSelection) selection).getPaths();
- Object firstSegment = paths[0].getFirstSegment();
- if (firstSegment instanceof TaxonDescription) {
- description = (TaxonDescription) firstSegment;
- }
- }else if (selection instanceof IStructuredSelection) {
- Object selectedElement = ((IStructuredSelection) selection)
- .getFirstElement();
- if (selectedElement instanceof TaxonDescription){
- description = (TaxonDescription) selectedElement;
- }
- }
-
- if (description != null) {
-
- Feature feature = (Feature) ((Event) event.getTrigger()).data;
-
- AbstractPostOperation operation = null;
- try {
- // TODO use undo context specific to editor
- operation = new CreateDescriptionElementOperation(event
- .getCommand().getName(),
- EditorUtil.getUndoContext(), taxon,
- description, feature, postOperationEnabled);
- EditorUtil.executeOperation(operation);
- } catch (NotDefinedException e) {
- EditorUtil.warn(getClass(), "Command name not set");
- }
- } else {
- EditorUtil.error(getClass(), new IllegalArgumentException("Could not determine the taxon description"));
- return null;
- }
- }
- return null;
-
- }
-}