From: Cherian Mathew Date: Tue, 15 Sep 2015 10:11:19 +0000 (+0200) Subject: Merge branch 'develop' into remoting-4.0 X-Git-Tag: remoting-3.10.0~10 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/4ac90d615da900439ee877996d1c7528215211ba?hp=e3bcf9949a000ee3d35875dc200d51cfb60fc70c Merge branch 'develop' into remoting-4.0 Conflicts: eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewDerivedUnitBaseWizard.java --- diff --git a/eu.etaxonomy.taxeditor.editor/plugin.xml b/eu.etaxonomy.taxeditor.editor/plugin.xml index d3812b9e3..b04657165 100644 --- a/eu.etaxonomy.taxeditor.editor/plugin.xml +++ b/eu.etaxonomy.taxeditor.editor/plugin.xml @@ -1471,8 +1471,27 @@ id="eu.etaxonomy.taxeditor.editor.view.descriptive.command.moveDescriptionElements" name="%command.name.12"> + + + + + + + + selectionIterator = ((IStructuredSelection) currentSelection).iterator(); - Set selectedElementUUIDs = new HashSet(); - while(selectionIterator.hasNext()){ - Object object = selectionIterator.next(); - if(object instanceof SpecimenOrObservationBase){ - selectedElementUUIDs.add(((SpecimenOrObservationBase) object).getUuid()); - } - else if(object instanceof IndividualsAssociation){ - SpecimenOrObservationBase specimen = ((IndividualsAssociation) object).getAssociatedSpecimenOrObservation(); - if(specimen!=null){ - selectedElementUUIDs.add(specimen.getUuid()); + Set selectedElementUUIDs = new HashSet(); + Object parameter; + //check if parameter is set + try { + parameter = event.getObjectParameterForExecution("eu.etaxonomy.taxeditor.specimenUuidParameter"); + } catch (ExecutionException e) { + parameter = null; + } + if(parameter instanceof UUID){ + selectedElementUUIDs.add((UUID) parameter); + } + else{ + //if not, try with current selection + ISelection currentSelection = HandlerUtil.getCurrentSelection(event); + if(currentSelection instanceof IStructuredSelection){ + Iterator selectionIterator = ((IStructuredSelection) currentSelection).iterator(); + while(selectionIterator.hasNext()){ + Object object = selectionIterator.next(); + if(object instanceof SpecimenOrObservationBase){ + selectedElementUUIDs.add(((SpecimenOrObservationBase) object).getUuid()); + } + else if(object instanceof IndividualsAssociation){ + SpecimenOrObservationBase specimen = ((IndividualsAssociation) object).getAssociatedSpecimenOrObservation(); + if(specimen!=null){ + selectedElementUUIDs.add(specimen.getUuid()); + } } } } - if(!selectedElementUUIDs.isEmpty()){ - DerivateViewEditorInput input = new DerivateViewEditorInput(selectedElementUUIDs); - try { - EditorUtil.open(input); - } catch (PartInitException e) { - MessagingUtils.error(OpenDerivateViewHandler.class, "Could not open Derivative Editor", e); - } catch (NullPointerException npe){ - MessagingUtils.messageDialog("Failed to open Editor", OpenDerivateViewHandler.class, "Could not open Derivative Editor. The derivate hierarchy is corrupted!", npe); - } - } - else{ - MessagingUtils.informationDialog("Empty selection", "No Specimen selected."); + } + if(!selectedElementUUIDs.isEmpty()){ + DerivateViewEditorInput input = new DerivateViewEditorInput(selectedElementUUIDs); + try { + EditorUtil.open(input); + } catch (PartInitException e) { + MessagingUtils.error(OpenDerivateViewHandler.class, "Could not open Derivative Editor", e); + } catch (NullPointerException npe){ + MessagingUtils.messageDialog("Failed to open Editor", OpenDerivateViewHandler.class, "Could not open Derivative Editor. The derivate hierarchy is corrupted!", npe); } } + else{ + MessagingUtils.informationDialog("Empty selection", "No Specimen selected."); + } return null; } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/UuidParameterConverter.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/UuidParameterConverter.java new file mode 100644 index 000000000..5bd3db11e --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/UuidParameterConverter.java @@ -0,0 +1,24 @@ +package eu.etaxonomy.taxeditor.handler; + +import java.util.UUID; + +import org.eclipse.core.commands.AbstractParameterValueConverter; +import org.eclipse.core.commands.ParameterValueConversionException; + +public class UuidParameterConverter extends AbstractParameterValueConverter { + + public UuidParameterConverter() { + // TODO Auto-generated constructor stub + } + + @Override + public Object convertToObject(String parameterValue) throws ParameterValueConversionException { + return UUID.fromString(parameterValue); + } + + @Override + public String convertToString(Object parameterValue) throws ParameterValueConversionException { + return parameterValue.toString(); + } + +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewDerivedUnitBaseWizard.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewDerivedUnitBaseWizard.java index 836c953c9..59dee8496 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewDerivedUnitBaseWizard.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewDerivedUnitBaseWizard.java @@ -1,15 +1,32 @@ // $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. -*/ + * 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.newWizard; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.eclipse.core.commands.Command; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.commands.NotEnabledException; +import org.eclipse.core.commands.NotHandledException; +import org.eclipse.core.commands.ParameterizedCommand; +import org.eclipse.core.commands.common.NotDefinedException; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.MessageDialogWithToggle; +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.facade.DerivedUnitFacadeNotSupportedException; import eu.etaxonomy.cdm.api.service.IOccurrenceService; @@ -19,7 +36,10 @@ import eu.etaxonomy.cdm.model.occurrence.FieldUnit; import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen; import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType; +import eu.etaxonomy.taxeditor.model.AbstractUtility; import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart; +import eu.etaxonomy.taxeditor.model.MessagingUtils; +import eu.etaxonomy.taxeditor.preference.IPreferenceKeys; import eu.etaxonomy.taxeditor.preference.PreferencesUtil; import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseWizardPage; @@ -27,6 +47,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralWizardPage import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralWizardPage; import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitWizardPage; import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventWizardPage; +import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateSearchCompositeController; /** * @author n.hoffmann @@ -34,39 +55,39 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventWizardPage; * @version 1.0 */ public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard implements IDerivedUnitFacadePart{ - private SpecimenOrObservationType specOrObsType = null; + private SpecimenOrObservationType specOrObsType = null; - public NewDerivedUnitBaseWizard() { - super(); - } + public NewDerivedUnitBaseWizard() { + super(); + } - public NewDerivedUnitBaseWizard(SpecimenOrObservationType specOrObsType) { - super(); - this.specOrObsType = specOrObsType; - } - /** {@inheritDoc} */ - @Override - public void addPages() { - DerivedUnitFacade facade = null; - try { - if(getEntity() instanceof DerivedUnit) { - facade = DerivedUnitFacade.NewInstance((DerivedUnit)getEntity(), PreferencesUtil.getDerivedUnitConfigurator()); - addPage(new DerivedUnitGeneralWizardPage(formFactory, getConversationHolder(), facade)); - addPage(new GatheringEventWizardPage(formFactory, getConversationHolder(), facade)); - addPage(new FieldUnitWizardPage(formFactory, getConversationHolder(), facade)); - addPage(new DerivedUnitBaseWizardPage(formFactory, getConversationHolder(), facade)); - } - else if(getEntity() instanceof FieldUnit){ - facade = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.FieldUnit, (FieldUnit)getEntity(), PreferencesUtil.getDerivedUnitConfigurator()); - addPage(new FieldUnitGeneralWizardPage(formFactory, getConversationHolder(), facade)); - addPage(new GatheringEventWizardPage(formFactory, getConversationHolder(), facade)); - addPage(new FieldUnitWizardPage(formFactory, getConversationHolder(), facade)); - } - } catch (DerivedUnitFacadeNotSupportedException e) { - // we should never get here - throw new IllegalStateException(); - } - } + public NewDerivedUnitBaseWizard(SpecimenOrObservationType specOrObsType) { + super(); + this.specOrObsType = specOrObsType; + } + /** {@inheritDoc} */ + @Override + public void addPages() { + DerivedUnitFacade facade = null; + try { + if(getEntity() instanceof DerivedUnit) { + facade = DerivedUnitFacade.NewInstance((DerivedUnit)getEntity(), PreferencesUtil.getDerivedUnitConfigurator()); + addPage(new DerivedUnitGeneralWizardPage(formFactory, getConversationHolder(), facade)); + addPage(new GatheringEventWizardPage(formFactory, getConversationHolder(), facade)); + addPage(new FieldUnitWizardPage(formFactory, getConversationHolder(), facade)); + addPage(new DerivedUnitBaseWizardPage(formFactory, getConversationHolder(), facade)); + } + else if(getEntity() instanceof FieldUnit){ + facade = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.FieldUnit, (FieldUnit)getEntity(), PreferencesUtil.getDerivedUnitConfigurator()); + addPage(new FieldUnitGeneralWizardPage(formFactory, getConversationHolder(), facade)); + addPage(new GatheringEventWizardPage(formFactory, getConversationHolder(), facade)); + addPage(new FieldUnitWizardPage(formFactory, getConversationHolder(), facade)); + } + } catch (DerivedUnitFacadeNotSupportedException e) { + // we should never get here + throw new IllegalStateException(); + } + } /** {@inheritDoc} */ @Override @@ -76,8 +97,8 @@ public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard parameters = new HashMap(); + parameters.put("eu.etaxonomy.taxeditor.specimenUuidParameter", getEntity().getUuid()); + ParameterizedCommand parameterizedCommand = ParameterizedCommand.generateCommand(command, parameters); + + + // execute the command + try { + handlerService.executeCommand(parameterizedCommand, null); + } catch (ExecutionException e) { + MessagingUtils.error(DerivateSearchCompositeController.class, e); + } catch (NotDefinedException e) { + MessagingUtils.error(DerivateSearchCompositeController.class, e); + } catch (NotEnabledException e) { + MessagingUtils.error(DerivateSearchCompositeController.class, e); + } catch (NotHandledException e) { + MessagingUtils.error(DerivateSearchCompositeController.class, e); + } + } + return performFinish; + } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IPreferenceKeys.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IPreferenceKeys.java index fc2422da9..5e9432541 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IPreferenceKeys.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IPreferenceKeys.java @@ -143,6 +143,10 @@ public interface IPreferenceKeys { public static final String SHOW_ADVANCED_MEDIA_SECTION = "eu.etaxonomy.taxeditor.media.showAdvancedMedia"; + public static final String ALWAYS_OPEN_SPECIMEN_IN_EDITOR = "eu.etaxonomy.taxeditor.specimen.alwaysOpenSpecimenInEditor"; + + public static final String PROMPT_FOR_OPEN_SPECIMEN_IN_EDITOR = "eu.etaxonomy.taxeditor.specimen.promptForOpenSpecimenInEditor"; + // TODO RL public static final String IS_RL = "eu.etaxonomy.taxeditor.isRL"; diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/SpecimenOrObservationPreferences.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/SpecimenOrObservationPreferences.java index 9c9bd5aee..d9a9ac3cc 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/SpecimenOrObservationPreferences.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/SpecimenOrObservationPreferences.java @@ -9,7 +9,9 @@ */ package eu.etaxonomy.taxeditor.preference; +import org.eclipse.jface.dialogs.MessageDialogWithToggle; import org.eclipse.jface.preference.BooleanFieldEditor; +import org.eclipse.jface.preference.ComboFieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; @@ -21,17 +23,11 @@ import org.eclipse.ui.IWorkbenchPreferencePage; */ public class SpecimenOrObservationPreferences extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { - /* (non-Javadoc) - * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) - */ @Override public void init(IWorkbench workbench) { setPreferenceStore(PreferencesUtil.getPreferenceStore()); } - /* (non-Javadoc) - * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors() - */ @Override protected void createFieldEditors() { addField(new BooleanFieldEditor(IPreferenceKeys.DETERMINATION_ONLY_FOR_FIELD_UNITS, @@ -43,7 +39,10 @@ public class SpecimenOrObservationPreferences extends FieldEditorPreferencePage addField(new BooleanFieldEditor(IPreferenceKeys.SHOW_TAXON_ASSOCIATIONS, "Show taxon associations of a specimen in the details view", getFieldEditorParent())); - + addField(new ComboFieldEditor(IPreferenceKeys.ALWAYS_OPEN_SPECIMEN_IN_EDITOR, + "Open newly created specimens in specimen editor", new String[][] { + { "always", MessageDialogWithToggle.ALWAYS }, { "never", MessageDialogWithToggle.NEVER } }, + getFieldEditorParent())); }