Add preference for opening a newly created specimen in specimen editor
authorPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 15 Sep 2015 08:52:47 +0000 (10:52 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 15 Sep 2015 08:54:23 +0000 (10:54 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewDerivedUnitBaseWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IPreferenceKeys.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/SpecimenOrObservationPreferences.java

index c4215fd34cf05ea40f0c8b96e0d8b40d9446e0a4..41de8fd8e27a1ae0b635a955b06847f80c02e21b 100644 (file)
@@ -1,12 +1,12 @@
 // $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;
 
@@ -20,6 +20,8 @@ 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;
@@ -37,6 +39,7 @@ 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;
@@ -52,39 +55,39 @@ import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateSearchCompositeControl
  * @version 1.0
  */
 public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<SpecimenOrObservationBase> 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
@@ -94,8 +97,8 @@ public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<SpecimenOr
         } else {
             if (SpecimenOrObservationType.Media.equals(specOrObsType)
                     || ((specOrObsType.getKindOf() != null) && specOrObsType.getKindOf().equals(SpecimenOrObservationType.Media))) {
-                   MediaSpecimen mediaSpecimen = MediaSpecimen.NewInstance(specOrObsType);
-                   //a MediaSpecimen with no media attached does not make sense. Hence, we add one
+                MediaSpecimen mediaSpecimen = MediaSpecimen.NewInstance(specOrObsType);
+                //a MediaSpecimen with no media attached does not make sense. Hence, we add one
                 mediaSpecimen.setMediaSpecimen(Media.NewInstance());
                 return mediaSpecimen;
             } else if (specOrObsType.equals(SpecimenOrObservationType.FieldUnit)) {
@@ -106,49 +109,62 @@ public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<SpecimenOr
         }
     }
 
-       /** {@inheritDoc} */
-       @Override
-       protected void saveEntity() {
-               CdmStore.getService(IOccurrenceService.class).saveOrUpdate(getEntity());
-       }
-
-       @Override
-       protected String getEntityName() {
-               return "Specimen";
-       }
-
-       /**
-        * {@inheritDoc}
-        */
-       @Override
-       public boolean performFinish() {
-           boolean performFinish = super.performFinish();
-
-        IHandlerService handlerService = (IHandlerService) AbstractUtility.getService(IHandlerService.class);
+    /** {@inheritDoc} */
+    @Override
+    protected void saveEntity() {
+        CdmStore.getService(IOccurrenceService.class).saveOrUpdate(getEntity());
+    }
 
-        //get the command from plugin.xml
-        IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-        ICommandService cmdService = (ICommandService)window.getService(ICommandService.class);
-        Command command = cmdService.getCommand("eu.etaxonomy.taxeditor.editor.openSpecimenEditor");
-        Map<String, UUID> parameters = new HashMap<String, UUID>();
-        parameters.put("eu.etaxonomy.taxeditor.specimenUuidParameter", getEntity().getUuid());
-        ParameterizedCommand parameterizedCommand = ParameterizedCommand.generateCommand(command, parameters);
+    @Override
+    protected String getEntityName() {
+        return "Specimen";
+    }
 
-        //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);
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean performFinish() {
+         int returnCode = IDialogConstants.NO_ID;
+        if (!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.PROMPT_FOR_OPEN_SPECIMEN_IN_EDITOR)){
+            MessageDialogWithToggle messageDialog = MessageDialogWithToggle.openYesNoQuestion(getShell(),
+                    "Choose opening option", "Do you want to open the specimen in the specimen editor?",
+                    "Remember my decision?", false, PreferencesUtil.getPreferenceStore(),
+                    IPreferenceKeys.ALWAYS_OPEN_SPECIMEN_IN_EDITOR);
+            returnCode = messageDialog.getReturnCode();
+            PreferencesUtil.getPreferenceStore().setValue(IPreferenceKeys.PROMPT_FOR_OPEN_SPECIMEN_IN_EDITOR, messageDialog.getToggleState());
+            if (returnCode != IDialogConstants.YES_ID) {
+                return super.performFinish();
+            }
         }
-
-        return performFinish;
-       }
+        if (returnCode==IDialogConstants.YES_ID || 
+                PreferencesUtil.getPreferenceStore().getString(IPreferenceKeys.ALWAYS_OPEN_SPECIMEN_IN_EDITOR)
+                .equals(MessageDialogWithToggle.ALWAYS)) {
+            IHandlerService handlerService = (IHandlerService) AbstractUtility.getService(IHandlerService.class);
+
+            // get the command from plugin.xml
+            IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+            ICommandService cmdService = (ICommandService) window.getService(ICommandService.class);
+            Command command = cmdService.getCommand("eu.etaxonomy.taxeditor.editor.openSpecimenEditor");
+            Map<String, UUID> parameters = new HashMap<String, UUID>();
+            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 super.performFinish();
+    }
 
 
 }
index fc2422da97852185043d89dd3254ebce88d9377f..5e9432541ac74e65e983e505ac5cf0629cfc0e4e 100644 (file)
@@ -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";
 
index 9c9bd5aee17d34aaf503280f48c7394b1a51b4bd..d9a9ac3cc47bcd9ec02c87aa489635523a2dff21 100644 (file)
@@ -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()));
     }