From: Patrick Plitzner Date: Mon, 14 Dec 2015 17:18:12 +0000 (+0100) Subject: Add generic default command for opening taxon editor for taxa and taxon X-Git-Tag: 4.0.0^2~216 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/420c234ae798eb8821a5078daaf7c03e0f902b05 Add generic default command for opening taxon editor for taxa and taxon nodes --- diff --git a/eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/plugin.properties b/eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/plugin.properties index d6cc82eab..5c00f134d 100644 --- a/eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/plugin.properties +++ b/eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/plugin.properties @@ -1,164 +1,164 @@ -#Properties file for taxeditor-editor -Bundle-Vendor.0 = EDIT -Bundle-Name.0 = EDIT Taxonomic Editor - Editor Bundle -command.name.17 = Set Basionym -command.name.18 = Remove Basionym -editor.name = Multipage Taxon Editor -editor.name.0 = Taxon Name Editor -editor.name.1 = Key -editor.name.2 = Polytomous Key Graph Editor -editor.name.3 = Polytomous Key List Editor -editor.name.4 = Cdm Authority Editor -editor.name.5 = Derivative Editor -view.name = Factual Data -view.name.0 = Uses -view.name.1 = Media -view.name.2 = Concept Relations -view.name.3 = Concept Graph -category.name = Taxonomic Editor -command.label = Reference -command.label.0 = Name -command.label.1 = Team -command.label.2 = Person -command.label.3 = Specimen -command.label.4 = Factual Data -command.label.5 = Media -command.label.6 = Concept -command.label.7 = Concept Graph -command.label.8 = Open Parent -menu.label = New -command.label.9 = Heterotypic Synonym -command.label.10 = Homotypic Synonym -command.label.11 = Synonym In Homotypical Group -menu.label.0 = Change To -command.label.12 = Accepted Taxon -command.label.13 = Synonym -command.label.14 = Misapplication -command.label.15 = Delete -command.label.16 = Delete All Empty Names -command.label.17 = Swap Synonym With Accepted -command.label.18 = Show Details -command.label.19 = Save -command.label.20 = New Node -command.label.21 = Delete -command.label.22 = Apply Layout -command.label.23 = New Key Number -command.label.24 = New Alternative -command.label.25 = Refresh Nodes -command.label.26 = Delete -command.label.27 = New Factual Data -menu.label.1 = New -command.label.28 = Move Description to Taxon -command.label.29 = Move Elements to Taxon -command.label.30 = Delete -command.label.31 = Save -menu.label.2 = New Derivative -command.label.32 = New Use -command.label.33 = New Use Summary -command.label.34 = New Use Record -command.label.35 = Delete -command.label.36 = Save -command.label.37 = New Image Gallery -command.label.38 = New Image -command.label.39 = Move Image Up In List -command.label.40 = Move Image Down In List -command.label.41 = Delete -command.label.42 = Save -menu.label.3 = New -command.label.43 = Open Related Concept -command.label.44 = Delete -command.label.45 = Edit Authorities -extension.name = Name Commands -category.name.0 = -- Name Editor -command.name = Open Parent -command.name.0 = Create Homotypic Synonym -command.name.1 = Create Heterotypic Synonym -command.name.2 = Create Synonym In Homotypical Group -command.name.3 = Change To Synonym -command.name.4 = Change To Accepted Taxon -command.name.5 = Change To Misapplication -command.name.6 = Swap Synonym With Accepted - -command.name.7 = Set Basionym / Original Combination -command.name.8 = Remove Basionym / Original Combination -command.name.9 = Delete All Empty Names -category.name.1 = -- Factual -command.name.10 = Create Description Element -command.name.11 = New Description -command.name.12 = Move Description Elements to Taxon -command.name.13 = Move Description to Taxon -category.name.2 = -- New Uses -command.name.14 = New Use -command.name.15 = New Use Summary -command.name.16 = New Use Record -category.name.3 = -- Media -command.name.19 = Move Image Down In List -command.name.20 = New Image Gallery -command.name.21 = New Image -command.name.22 = Move Image Up In List -category.name.4 = -- New Entity -command.name.23 = New Reference -command.name.24 = New Name -command.name.25 = New Team -command.name.26 = New Person -category.name.5 = -- Polytomous Keys -command.name.28 = New Child Node -command.name.29 = New Sibling Node -command.name.30 = Refresh Node Numbering -command.name.31 = Apply Layout -category.name.6 = -- Concept Relations -command.name.32 = Create Concept Relation -command.name.33 = Open Related Concept -category.name.7 = -- Group -command.name.34 = Edit CDM Authorities -command.name.35 = Open Derivative Editor -scheme.description = The default key binding scheme for the Taxonomic Editor -scheme.name = Taxonomic Editor Default Key Bindings -editor.name.6 = Specimen Import Editor -editor.name.7 = Gbif Import Editor -editor.name.8 = Checklist Editor -view.name.4 = Specimen Import -view.name.5 = GBIF Specimen Import -command.label.46 = Name -command.label.47 = Reference -command.label.48 = Datasource -command.label.49 = Misapplication -command.label.50 = Use Existing Image -command.name.36 = Create Misapplication -command.name.37 = Use Existing Image -command.name.38 = Open Checklist Editor -command.name.39 = New Datasource -wizard.name = Specimen Search/Import -wizard.description = Queries data provider for specimens with specified parameters.\nNote: Query results are currently limited to 100. -command.name.40 = Validation -view.name.6 = Validation -marker.field.0 = Object Type -marker.field.1 = Object -marker.field.2 = Attribute -marker.field.3 = Problematic Value -marker.field.4 = Problem description -marker.field.5 = Validator -marker.field.6 = Entity Class -marker.field.7 = Entity Id -extension.name.0 = Validation Error -command.label.51 = Open in Specimen Editor -command.label.52 = Delete -command.label.53 = Create Field Unit -command.label.54 = Delete (with children) -command.tooltip = Show Only Individuals Associations -command.label.55 = Open Associated Specimens -command.name.41 = Show Only Individual Associations -command.name.42 = Open Taxon Editor -command.name.43 = Create Field Unit -command.name.44 = Deep Delete -command.name.46 = Move Synonym (Homotypical Group) to another Accepted Taxon -command.label.56 = Move Synonym (Homotypical Group) to another Accepted Taxon -markerContentGenerator.name = Validation Problems Marker Generator -command.name.45 = Delete -command.name.47 = Delete -commandParameter.name = taxonUUID -Bundle-Name = Editor Bundle -command.name.48 = delete -command.name.49 = delete -command.name.50 = delete +#Properties file for taxeditor-editor +Bundle-Vendor.0 = EDIT +Bundle-Name.0 = EDIT Taxonomic Editor - Editor Bundle +command.name.17 = Set Basionym +command.name.18 = Remove Basionym +editor.name = Multipage Taxon Editor +editor.name.0 = Taxon Name Editor +editor.name.1 = Key +editor.name.2 = Polytomous Key Graph Editor +editor.name.3 = Polytomous Key List Editor +editor.name.4 = Cdm Authority Editor +editor.name.5 = Derivative Editor +view.name = Factual Data +view.name.0 = Uses +view.name.1 = Media +view.name.2 = Concept Relations +view.name.3 = Concept Graph +category.name = Taxonomic Editor +command.label = Reference +command.label.0 = Name +command.label.1 = Team +command.label.2 = Person +command.label.3 = Specimen +command.label.4 = Factual Data +command.label.5 = Media +command.label.6 = Concept +command.label.7 = Concept Graph +command.label.8 = Open Parent +menu.label = New +command.label.9 = Heterotypic Synonym +command.label.10 = Homotypic Synonym +command.label.11 = Synonym In Homotypical Group +menu.label.0 = Change To +command.label.12 = Accepted Taxon +command.label.13 = Synonym +command.label.14 = Misapplication +command.label.15 = Delete +command.label.16 = Delete All Empty Names +command.label.17 = Swap Synonym With Accepted +command.label.18 = Show Details +command.label.19 = Save +command.label.20 = New Node +command.label.21 = Delete +command.label.22 = Apply Layout +command.label.23 = New Key Number +command.label.24 = New Alternative +command.label.25 = Refresh Nodes +command.label.26 = Delete +command.label.27 = New Factual Data +menu.label.1 = New +command.label.28 = Move Description to Taxon +command.label.29 = Move Elements to Taxon +command.label.30 = Delete +command.label.31 = Save +menu.label.2 = New Derivative +command.label.32 = New Use +command.label.33 = New Use Summary +command.label.34 = New Use Record +command.label.35 = Delete +command.label.36 = Save +command.label.37 = New Image Gallery +command.label.38 = New Image +command.label.39 = Move Image Up In List +command.label.40 = Move Image Down In List +command.label.41 = Delete +command.label.42 = Save +menu.label.3 = New +command.label.43 = Open Related Concept +command.label.44 = Delete +command.label.45 = Edit Authorities +extension.name = Name Commands +category.name.0 = -- Name Editor +command.name = Open Parent +command.name.0 = Create Homotypic Synonym +command.name.1 = Create Heterotypic Synonym +command.name.2 = Create Synonym In Homotypical Group +command.name.3 = Change To Synonym +command.name.4 = Change To Accepted Taxon +command.name.5 = Change To Misapplication +command.name.6 = Swap Synonym With Accepted + +command.name.7 = Set Basionym / Original Combination +command.name.8 = Remove Basionym / Original Combination +command.name.9 = Delete All Empty Names +category.name.1 = -- Factual +command.name.10 = Create Description Element +command.name.11 = New Description +command.name.12 = Move Description Elements to Taxon +command.name.13 = Move Description to Taxon +category.name.2 = -- New Uses +command.name.14 = New Use +command.name.15 = New Use Summary +command.name.16 = New Use Record +category.name.3 = -- Media +command.name.19 = Move Image Down In List +command.name.20 = New Image Gallery +command.name.21 = New Image +command.name.22 = Move Image Up In List +category.name.4 = -- New Entity +command.name.23 = New Reference +command.name.24 = New Name +command.name.25 = New Team +command.name.26 = New Person +category.name.5 = -- Polytomous Keys +command.name.28 = New Child Node +command.name.29 = New Sibling Node +command.name.30 = Refresh Node Numbering +command.name.31 = Apply Layout +category.name.6 = -- Concept Relations +command.name.32 = Create Concept Relation +command.name.33 = Open Related Concept +category.name.7 = -- Group +command.name.34 = Edit CDM Authorities +command.name.35 = Open Derivative Editor +scheme.description = The default key binding scheme for the Taxonomic Editor +scheme.name = Taxonomic Editor Default Key Bindings +editor.name.6 = Specimen Import Editor +editor.name.7 = Gbif Import Editor +editor.name.8 = Checklist Editor +view.name.4 = Specimen Import +view.name.5 = GBIF Specimen Import +command.label.46 = Name +command.label.47 = Reference +command.label.48 = Datasource +command.label.49 = Misapplication +command.label.50 = Use Existing Image +command.name.36 = Create Misapplication +command.name.37 = Use Existing Image +command.name.38 = Open Checklist Editor +command.name.39 = New Datasource +wizard.name = Specimen Search/Import +wizard.description = Queries data provider for specimens with specified parameters.\nNote: Query results are currently limited to 100. +command.name.40 = Validation +view.name.6 = Validation +marker.field.0 = Object Type +marker.field.1 = Object +marker.field.2 = Attribute +marker.field.3 = Problematic Value +marker.field.4 = Problem description +marker.field.5 = Validator +marker.field.6 = Entity Class +marker.field.7 = Entity Id +extension.name.0 = Validation Error +command.label.51 = Open in Specimen Editor +command.label.52 = Delete +command.label.53 = Create Field Unit +command.label.54 = Delete (with children) +command.tooltip = Show Only Individuals Associations +command.label.55 = Open Associated Specimens +command.name.41 = Show Only Individual Associations +command.name.42 = Open Taxon Editor for taxon +command.name.43 = Create Field Unit +command.name.44 = Deep Delete +command.name.46 = Move Synonym (Homotypical Group) to another Accepted Taxon +command.label.56 = Move Synonym (Homotypical Group) to another Accepted Taxon +markerContentGenerator.name = Validation Problems Marker Generator +command.name.45 = Delete +command.name.47 = Delete +commandParameter.name = taxonUUID +Bundle-Name = Editor Bundle +command.name.48 = delete +command.name.49 = delete +command.name.50 = delete command.name.51 = delete diff --git a/eu.etaxonomy.taxeditor.editor/plugin.xml b/eu.etaxonomy.taxeditor.editor/plugin.xml index 9cb109b79..fa3e6800a 100644 --- a/eu.etaxonomy.taxeditor.editor/plugin.xml +++ b/eu.etaxonomy.taxeditor.editor/plugin.xml @@ -1449,21 +1449,27 @@ name="%command.name.41"> + typeId="eu.etaxonomy.taxeditor.uuidParameterType"> + + + + - - - - + + + + diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorCdmViewer.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorCdmViewer.java deleted file mode 100644 index 796d19aa3..000000000 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorCdmViewer.java +++ /dev/null @@ -1,62 +0,0 @@ -// $Id$ -/** -* Copyright (C) 2015 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; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.log4j.Logger; -import org.eclipse.ui.PartInitException; - -import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; -import eu.etaxonomy.cdm.model.taxon.TaxonBase; -import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView; -import eu.etaxonomy.taxeditor.model.MessagingUtils; -import eu.etaxonomy.taxeditor.view.ICdmViewer; - -/** - * @author pplitzner - * @date Feb 23, 2015 - * - */ -public class EditorCdmViewer implements ICdmViewer { - - private final Logger logger = Logger.getLogger(EditorCdmViewer.class); - - @Override - public void show(Object input, Class viewerClass) { - try { - if(viewerClass.equals(MultiPageTaxonEditor.class)){ - if(input instanceof TaxonBase){ - TaxonEditorInput editorInput = TaxonEditorInput.NewInstanceFromTaxonBase(((TaxonBase) input).getUuid()); - EditorUtil.open(editorInput); - } - } - else if(viewerClass.equals(DerivateView.class)){ - if(input instanceof SpecimenOrObservationBase){ - } - } - } catch (PartInitException e) { - String errorMessage = "Could not open editor"; - logger.error(errorMessage, e); - MessagingUtils.error(EditorCdmViewer.class, errorMessage, e); - } - } - - @Override - public Map, String> getViewerClasses(Object input) { - Map, String> viewerNameMap = new HashMap, String>(); - if(input instanceof TaxonBase){ - viewerNameMap.put(MultiPageTaxonEditor.class, "Taxon Editor"); - } - return viewerNameMap; - } - -} diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenTaxonEditorHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenTaxonEditorHandler.java deleted file mode 100644 index b416726cd..000000000 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenTaxonEditorHandler.java +++ /dev/null @@ -1,32 +0,0 @@ -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; - } - -} diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/TaxonParameterConverter.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/TaxonParameterConverter.java deleted file mode 100644 index 0283f4de8..000000000 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/TaxonParameterConverter.java +++ /dev/null @@ -1,30 +0,0 @@ -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; - } - -} diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/defaultHandler/DefaultOpenTaxonEditorHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/defaultHandler/DefaultOpenTaxonEditorHandler.java new file mode 100644 index 000000000..21a2ffad2 --- /dev/null +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/defaultHandler/DefaultOpenTaxonEditorHandler.java @@ -0,0 +1,84 @@ +package eu.etaxonomy.taxeditor.editor.handler.defaultHandler; +import java.util.UUID; + +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.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.handlers.HandlerUtil; + +import eu.etaxonomy.cdm.api.service.ITaxonNodeService; +import eu.etaxonomy.cdm.api.service.ITaxonService; +import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; +import eu.etaxonomy.cdm.model.taxon.Taxon; +import eu.etaxonomy.cdm.model.taxon.TaxonBase; +import eu.etaxonomy.cdm.model.taxon.TaxonNode; +import eu.etaxonomy.taxeditor.editor.EditorUtil; +import eu.etaxonomy.taxeditor.editor.TaxonEditorInput; +import eu.etaxonomy.taxeditor.handler.defaultHandler.DefaultOpenClassificationWizardHandler; +import eu.etaxonomy.taxeditor.model.MessagingUtils; +import eu.etaxonomy.taxeditor.store.CdmStore; + + +public class DefaultOpenTaxonEditorHandler extends AbstractHandler { + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + String commandId = event.getCommand().getId(); + String uuidParameterId = commandId+".uuid"; + //check if uuid parameter is set + if(event.getParameter(uuidParameterId)!=null){ + Object object = event.getObjectParameterForExecution(uuidParameterId); + ParameterType parameterType; + try { + parameterType = event.getCommand().getParameterType(uuidParameterId); + if(parameterType.isCompatible(object)){ + TaxonNode taxonNode = CdmStore.getService(ITaxonNodeService.class).load((UUID) object); + if(taxonNode!=null){ + openTaxonEditor(event, taxonNode.getTaxon().getUuid()); + } + else { + TaxonBase taxon = CdmStore.getService(ITaxonService.class).load((UUID) object); + openTaxonEditor(event, taxon.getUuid()); + } + } + } catch (NotDefinedException e) { + MessagingUtils.error(DefaultOpenClassificationWizardHandler.class, "Error while opening classification!", e); + } + } + //if not try current selection + else{ + ISelection selection = HandlerUtil.getCurrentSelection(event); + + if(selection instanceof IStructuredSelection){ + final IStructuredSelection structuredSelection = (IStructuredSelection) selection; + + Taxon taxon = null; + Object firstElement = structuredSelection.getFirstElement(); + if(firstElement instanceof TaxonBase){ + openTaxonEditor(event, (HibernateProxyHelper.deproxy(firstElement, TaxonBase.class).getUuid())); + } + else if(firstElement instanceof TaxonNode){ + taxon = (HibernateProxyHelper.deproxy(firstElement, TaxonNode.class)).getTaxon(); + openTaxonEditor(event, taxon.getUuid()); + } + } + } + return null; + } + + private void openTaxonEditor(ExecutionEvent event, UUID taxonUuid) { + TaxonEditorInput input = TaxonEditorInput.NewInstanceFromTaxonBase(taxonUuid); + try { + EditorUtil.open(input); + } catch (PartInitException e) { + MessagingUtils.error(DefaultOpenTaxonEditorHandler.class, "Could not open taxon editor for taxon "+input.getTaxon(), e); + } + } + + +}