eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenChecklistEditorHandler.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenDerivateViewHandler.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenParentHandler.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenTaxonEditorHandler.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/SaveAllHandler.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/SaveTaxonHandler.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/TaxonParameterConverter.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/create/NewNameHandler.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/create/NewPersonHandler.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/create/NewReferenceHandler.java -text
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/NewClassificationHandler.java -text
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/NewTaxonNodeHandler.java -text
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/RefreshTreeHandler.java -text
+eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/TaxonParameterConverter.java -text
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/ChangeAcceptedTaxonToSynonymOperation.java -text
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/CopyOperation.java -text
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java -text
id="eu.etaxonomy.taxeditor.editor.handler.showOnlyIndividualAssociations"
name="Show Only Individual Associations">
</command>
+ <command
+ defaultHandler="eu.etaxonomy.taxeditor.editor.handler.OpenTaxonEditorHandler"
+ id="eu.etaxonomy.taxeditor.editor.openTaxonEditor"
+ name="Open Taxon Editor">
+ <commandParameter
+ id="eu.etaxonomy.taxeditor.editor.taxonParameter"
+ name="taxonUUID"
+ optional="false"
+ typeId="eu.etaxonomy.taxeditor.editor.taxonParameterType">
+ </commandParameter>
+ </command>
+ <commandParameterType
+ converter="eu.etaxonomy.taxeditor.editor.handler.TaxonParameterConverter"
+ id="eu.etaxonomy.taxeditor.editor.taxonParameterType"
+ type="eu.etaxonomy.cdm.model.taxon.TaxonBase">
+ </commandParameterType>
</extension>
<extension
point="org.eclipse.core.expressions.definitions">
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.handlers.HandlerUtil;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.taxeditor.editor.group.authority.CdmAuthorityEditor;
import eu.etaxonomy.taxeditor.editor.group.authority.CdmAuthorityEditorInput;
import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
import eu.etaxonomy.taxeditor.editor.key.KeyEditor;
import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyEditorInput;
-import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditorInput;
import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditor;
+import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditorInput;
import eu.etaxonomy.taxeditor.editor.view.dataimport.BioCaseEditorInput;
import eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditor;
import eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditorInput;
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* Utility for the editor package
*/
public static void openTaxonBase(UUID taxonBaseUuid)
throws PartInitException {
+ TaxonBase taxonBase = CdmStore.getService(ITaxonService.class).find(taxonBaseUuid);
+ if (taxonBase != null && taxonBase.isOrphaned()) {
+ MessagingUtils.warningDialog("Orphaned Taxon", TaxonEditorInput.class, "This is an orphaned taxon i.e. a taxon that is not connected to a classification and not having any taxonomic relationships. Editing of orphaned taxon is currently not supported.");
+ return;
+ }
TaxonEditorInput input = TaxonEditorInput
.NewInstanceFromTaxonBase(taxonBaseUuid);
open(input);
}
return null;
}
+
+ /**
+ * Opens a taxon editor for the given object if the given object is a valid input.
+ * @param object the object for which the editor will be opened
+ * @throws PartInitException
+ */
+ public static void openTaxonEditor(Object object) throws PartInitException {
+ if(object instanceof TaxonBase<?>){
+ openTaxonBase(((TaxonBase<?>) object).getUuid());
+ }
+ }
}
*/
public class TaxonEditorInput implements IEditorInput, IConversationEnabled, IPersistableElement {
- private ConversationHolder conversation;
+ private final ConversationHolder conversation;
- private TaxonNode taxonNode;
+ private final TaxonNode taxonNode;
private TaxonEditorInputDataChangeBehaviour dataChangeBehavior;
TaxonBase taxonBase = CdmStore.getService(ITaxonService.class).find(taxonBaseUuid);
if (taxonBase != null){
- if(taxonBase.isOrphaned()) {
- MessagingUtils.warningDialog("Orphaned Taxon", TaxonEditorInput.class, "This is an orphaned taxon i.e. a taxon that is not connected to a classification and not having any taxonomic relationships. Editing of orphaned taxon is currently not supported.");
- }
- else if(taxonBase.isInstanceOf(Taxon.class)){
+ if(taxonBase.isInstanceOf(Taxon.class)){
Taxon taxon = CdmBase.deproxy(taxonBase, Taxon.class);
-
+
if (taxon.getTaxonNodes().size() == 0 && taxon.isMisapplication()){
// TODO get accepted taxon
MessagingUtils.info("trying to open Mispplied Name ");
-
+
Set<Taxon> acceptedTaxa = new HashSet<Taxon>();
Set<TaxonRelationship> relations = taxon.getRelationsFromThisTaxon();
for(TaxonRelationship relation : relations){
}
}
input = getInputForMultipleTaxa(conversation, acceptedTaxa);
-
+
}else{
input = getInputForMultipleNodes(conversation, taxon.getTaxonNodes());
}
}else if(taxonBase instanceof Synonym){
Synonym synonym = (Synonym) taxonBase;
-
+
Set<Taxon> taxa = synonym.getAcceptedTaxa();
input = getInputForMultipleTaxa(conversation, taxa);
}
input.setInitiallySelectedTaxonBase(taxonBase);
}
}
-
+
return input;
}
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.handler;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.ParameterType;
+import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.ui.PartInitException;
+
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+
+
+public class OpenTaxonEditorHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ Object object = event.getObjectParameterForExecution("eu.etaxonomy.taxeditor.editor.taxonParameter");
+
+ try {
+ ParameterType parameterType = event.getCommand().getParameterType("eu.etaxonomy.taxeditor.editor.taxonParameter");
+ if(parameterType.isCompatible(object)){
+ EditorUtil.openTaxonEditor(object);
+ }
+ } catch (NotDefinedException e) {
+ MessagingUtils.error(this.getClass(), "Parameter type not defined", e);
+ } catch (PartInitException e) {
+ MessagingUtils.error(OpenTaxonEditorHandler.class, "Error opening the editor", e);
+ }
+ return null;
+ }
+
+}
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.handler;
+
+import java.util.UUID;
+
+import org.eclipse.core.commands.AbstractParameterValueConverter;
+import org.eclipse.core.commands.ParameterValueConversionException;
+
+import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+public class TaxonParameterConverter extends AbstractParameterValueConverter {
+
+ public TaxonParameterConverter() {
+ }
+
+ @Override
+ public Object convertToObject(String parameterValue) throws ParameterValueConversionException {
+ return CdmStore.getService(ITaxonService.class).load(UUID.fromString(parameterValue));
+ }
+
+ @Override
+ public String convertToString(Object parameterValue) throws ParameterValueConversionException {
+ if(parameterValue instanceof TaxonBase<?>){
+ return ((TaxonBase<?>) parameterValue).getUuid().toString();
+ }
+ return null;
+ }
+
+}
--- /dev/null
+package eu.etaxonomy.taxeditor.navigation.navigator.handler;
+
+import java.util.UUID;
+
+import org.eclipse.core.commands.AbstractParameterValueConverter;
+import org.eclipse.core.commands.ParameterValueConversionException;
+
+import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+public class TaxonParameterConverter extends AbstractParameterValueConverter {
+
+ public TaxonParameterConverter() {
+ }
+
+ @Override
+ public Object convertToObject(String parameterValue) throws ParameterValueConversionException {
+ return CdmStore.getService(ITaxonService.class).load(UUID.fromString(parameterValue));
+ }
+
+ @Override
+ public String convertToString(Object parameterValue) throws ParameterValueConversionException {
+ if(parameterValue instanceof TaxonBase<?>){
+ return ((TaxonBase) parameterValue).getUuid().toString();
+ }
+ return null;
+ }
+
+}
*/
package eu.etaxonomy.taxeditor.ui.section.occurrence.association;
+import java.util.ArrayList;
import java.util.Collection;
+import org.eclipse.core.commands.Command;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.IParameter;
+import org.eclipse.core.commands.NotEnabledException;
+import org.eclipse.core.commands.NotHandledException;
+import org.eclipse.core.commands.Parameterization;
+import org.eclipse.core.commands.ParameterizedCommand;
+import org.eclipse.core.commands.common.NotDefinedException;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.commands.ICommandService;
+import org.eclipse.ui.handlers.IHandlerService;
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
public class TaxonAssociationDetailElement extends AbstractCdmDetailElement<DerivedUnitFacade> implements IDoubleClickListener{
+ private TableViewer associationsViewer;
+ private TableViewer typeDesignationViewer;
+
public TaxonAssociationDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
super(formFactory, formElement);
}
@Override
protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
+ //TODO add context menu for deleting associations
+
Label associationsLabel = formFactory.createLabel(getLayoutComposite(), "Individuals Associations");
associationsLabel.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
- TableViewer associationsViewer = new TableViewer(getLayoutComposite(), SWT.FULL_SELECTION);
+ associationsViewer = new TableViewer(getLayoutComposite(), SWT.FULL_SELECTION);
associationsViewer.getTable().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
associationsViewer.setContentProvider(new ArrayContentProvider());
Collection<TaxonBase<?>> associatedTaxa = CdmStore.getService(IOccurrenceService.class).listAssociatedTaxa(entity.innerDerivedUnit(), null, null, null, null);
Label typeLabel = formFactory.createLabel(getLayoutComposite(), "Type Designations");
typeLabel.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
- TableViewer typeDesignationViewer = new TableViewer(getLayoutComposite(), SWT.FULL_SELECTION);
+ typeDesignationViewer = new TableViewer(getLayoutComposite(), SWT.FULL_SELECTION);
typeDesignationViewer.getTable().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
typeDesignationViewer.setContentProvider(new ArrayContentProvider());
Collection<TaxonBase<?>> typedTaxa = CdmStore.getService(IOccurrenceService.class).listTypedTaxa(entity.innerDerivedUnit(), null, null, null, null);
/** {@inheritDoc} */
@Override
public void handleEvent(Object eventSource) {
-
+ //empty
}
/* (non-Javadoc)
*/
@Override
public void doubleClick(DoubleClickEvent event) {
-// String commandId = "eu.etaxonomy.taxeditor.navigation.command.update.editSelection";
-//
-// IHandlerService handlerService = (IHandlerService) AbstractUtility.getService(IHandlerService.class);
-// try {
-// handlerService.executeCommand(commandId, null);
-// } catch (ExecutionException e) {
-// // TODO Auto-generated catch block
-// e.printStackTrace();
-// } catch (NotDefinedException e) {
-// // TODO Auto-generated catch block
-// e.printStackTrace();
-// } catch (NotEnabledException e) {
-// // TODO Auto-generated catch block
-// e.printStackTrace();
-// } catch (NotHandledException e) {
-// // TODO Auto-generated catch block
-// e.printStackTrace();
-// }
-
-
-// if(event.getSelection() instanceof StructuredSelection){
-// StructuredSelection selection = (StructuredSelection)event.getSelection();
-// if(selection.getFirstElement() instanceof TaxonBase<?>){
-// UUID taxonBaseUUID = ((TaxonBase<?>) selection.getFirstElement()).getUuid();
-// }
-// }
+ if(associationsViewer.getSelection() instanceof IStructuredSelection){
+ Object firstElement = ((IStructuredSelection) associationsViewer.getSelection()).getFirstElement();
+ if(firstElement instanceof TaxonBase<?>){
+ TaxonBase<?> taxonBase = (TaxonBase<?>)firstElement;
+ String commandId = "eu.etaxonomy.taxeditor.editor.openTaxonEditor";
+
+
+ ArrayList parameters = new ArrayList();
+ IParameter iparam = null;
+
+ //get the command from plugin.xml
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ ICommandService cmdService = (ICommandService)window.getService(ICommandService.class);
+ Command cmd = cmdService.getCommand(commandId);
+
+ //get the parameter
+ try {
+ iparam = cmd.getParameter("eu.etaxonomy.taxeditor.editor.taxonParameter");
+ } catch (NotDefinedException e1) {
+ MessagingUtils.error(this.getClass(), "Command not defined", e1);
+ }
+ Parameterization params = new Parameterization(iparam, (taxonBase).getUuid().toString());
+ parameters.add(params);
+
+ //build the parameterized command
+ ParameterizedCommand pc = new ParameterizedCommand(cmd, (Parameterization[]) parameters.toArray(new Parameterization[parameters.size()]));
+
+ //execute the command
+ IHandlerService handlerService = (IHandlerService)window.getService(IHandlerService.class);
+ try {
+ handlerService.executeCommand(pc, null);
+ } catch (ExecutionException e) {
+ MessagingUtils.error(TaxonAssociationDetailElement.class, e);
+ } catch (NotDefinedException e) {
+ MessagingUtils.error(TaxonAssociationDetailElement.class, e);
+ } catch (NotEnabledException e) {
+ MessagingUtils.error(TaxonAssociationDetailElement.class, e);
+ } catch (NotHandledException e) {
+ MessagingUtils.error(TaxonAssociationDetailElement.class, e);
+ }
+ }
+ }
}
}