ref #7268 Implement own extension point for preferences
authorPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 15 Feb 2018 14:34:23 +0000 (15:34 +0100)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 15 Feb 2018 14:41:20 +0000 (15:41 +0100)
# Conflicts:
# eu.etaxonomy.taxeditor.workbench/fragment.e4xmi

38 files changed:
eu.etaxonomy.taxeditor.bulkeditor/plugin.xml
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/preference/BulkEditorGeneralPreferencePage.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/preference/BulkEditorMarkerPreferencePage.java
eu.etaxonomy.taxeditor.store/plugin.xml
eu.etaxonomy.taxeditor.store/schema/eu.etaxonomy.taxeditor.store.preferencePage.exsd [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/event/EventUtility.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/AdminGeneralPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/AdminPreferencesPage.java [deleted file]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/ChecklistEditorGeneralPreference.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/DebugPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/DefaultFeatureTreePreferenecs.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/DescriptionPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IE4PreferencePage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/LanguageEditorPreferencePage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/LanguageRepresentationPreferencePage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/MatchingPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/MediaPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/MobotOpenUrlPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/NameDetailsViewConfiguration.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/OrderPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/SpecimenOrObservationPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/TaxonomicEditorGeneralPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/TaxonomicPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/TemplatePreferencePage.java [deleted file]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/TypeDesignationPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/matching/AbstractMatchingPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/matching/NonViralNameMatchingPreference.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/matching/ReferenceMatchingPreference.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/matching/TeamOrPersonMatchingPreference.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/AbstractMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/CdmPreferencePage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/FieldEditorPreferencePageE4.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NomenclaturalCodePreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/PresenceAbsenceMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/RankMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CommandHandlerButton.java
eu.etaxonomy.taxeditor.workbench/fragment.e4xmi
eu.etaxonomy.taxeditor.workbench/src/main/java/eu/etaxonomy/taxeditor/workbench/handler/OpenPreferencesHandler.java [new file with mode: 0644]

index 7ff8ad34c686a37460fb49d7f9266a53873f42de..0c39a587c430af3b14d0b9c70b3ba78bf2b38428 100644 (file)
       </fragment>
    </extension>
    <extension
-         point="org.eclipse.ui.preferencePages">
+         point="eu.etaxonomy.taxeditor.store.preferencePage">
       <page
             category="eu.etaxonomy.taxeditor.preferences.bulkeditor.general"
             class="eu.etaxonomy.taxeditor.bulkeditor.preference.BulkEditorMarkerPreferencePage"
index a59e7dd5e1a18bd5c8fd00b2bc039ba58a252795..4a1eb557e96fd92243b28573e74d62458cd80177 100644 (file)
 package eu.etaxonomy.taxeditor.bulkeditor.preference;
 
 import org.eclipse.jface.preference.BooleanFieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
 
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.preference.menu.FieldEditorPreferencePageE4;
 
 /**
  * @author n.hoffmann
  * @created Dec 13, 2010
  * @version 1.0
  */
-public class BulkEditorGeneralPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+public class BulkEditorGeneralPreferencePage extends FieldEditorPreferencePageE4 {
 
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
-     */
     @Override
     protected void createFieldEditors() {
         addField(new BooleanFieldEditor(IPreferenceKeys.BULK_EDITOR_OCCURRENCE_SHOW_FIELD_UNITS,
@@ -34,13 +28,4 @@ public class BulkEditorGeneralPreferencePage extends FieldEditorPreferencePage i
                 getFieldEditorParent()));
     }
 
-    /* (non-Javadoc)
-        * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
-        */
-       @Override
-       public void init(IWorkbench workbench) {
-        setPreferenceStore(PreferencesUtil.getPreferenceStore());
-       }
-
-
 }
index de3c8a327fb2babd3311761531a7ec9552e93548..fafc1544162364a405e25ab308ea75c3ecd5d488 100644 (file)
 package eu.etaxonomy.taxeditor.bulkeditor.preference;
 
 import org.eclipse.jface.preference.BooleanFieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
 
 import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.preference.menu.FieldEditorPreferencePageE4;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.TermStore;
 
@@ -25,14 +22,9 @@ import eu.etaxonomy.taxeditor.store.TermStore;
  * @created 17.08.2009
  * @version 1.0
  */
-public class BulkEditorMarkerPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+public class BulkEditorMarkerPreferencePage extends FieldEditorPreferencePageE4 {
 
 
-       @Override
-       public void init(IWorkbench workbench) {
-               setPreferenceStore(PreferencesUtil.getPreferenceStore());
-       }
-
     @Override
     protected void createFieldEditors() {
         if(CdmStore.isActive()){
index f7851a544cc5a808bb671955f3c63c58c2372291..f6a68ed0c6dcd2cc3fc8d30fe7cb8f240182b139 100755 (executable)
@@ -2,6 +2,7 @@
 <?eclipse version="3.2"?>
 <plugin>
    <extension-point id="eu.etaxonomy.taxeditor.store.cdmViewer" name="Cdm Viewer" schema="schema/eu.etaxonomy.taxeditor.store.cdmViewer.exsd"/>
+   <extension-point id="eu.etaxonomy.taxeditor.store.preferencePage" name="Preference Page" schema="schema/eu.etaxonomy.taxeditor.store.preferencePage.exsd"/>
    <extension
          point="org.eclipse.ui.menus">
       <menuContribution
    </fragment>
 </extension>
 <extension
-      point="org.eclipse.ui.preferencePages">
-   <page
+      point="eu.etaxonomy.taxeditor.store.preferencePage">
+<page
          category="eu.etaxonomy.taxeditor.preferences.general"
          class="eu.etaxonomy.taxeditor.preference.DebugPreferences"
          id="eu.etaxonomy.taxeditor.preference.DebugPreferences"
diff --git a/eu.etaxonomy.taxeditor.store/schema/eu.etaxonomy.taxeditor.store.preferencePage.exsd b/eu.etaxonomy.taxeditor.store/schema/eu.etaxonomy.taxeditor.store.preferencePage.exsd
new file mode 100644 (file)
index 0000000..88d77de
--- /dev/null
@@ -0,0 +1,136 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="eu.etaxonomy.taxeditor.store" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appInfo>
+         <meta.schema plugin="eu.etaxonomy.taxeditor.store" id="eu.etaxonomy.taxeditor.store.preferencePage" name="Preference Page"/>
+      </appInfo>
+      <documentation>
+         [Enter description of this extension point.]
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appInfo>
+            <meta.element />
+         </appInfo>
+      </annotation>
+      <complexType>
+         <sequence minOccurs="0" maxOccurs="unbounded">
+            <element ref="page"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appInfo>
+                  <meta.attribute translatable="true"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="page">
+      <annotation>
+         <appInfo>
+            <meta.element labelAttribute="name"/>
+         </appInfo>
+      </annotation>
+      <complexType>
+         <attribute name="id" type="string" use="required">
+            <annotation>
+               <documentation>
+                  a unique name that will be used to identify this page.
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string" use="required">
+            <annotation>
+               <documentation>
+                  a translatable name that will be used in the UI for this page.
+               </documentation>
+               <appInfo>
+                  <meta.attribute translatable="true"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+         <attribute name="class" type="string" use="required">
+            <annotation>
+               <documentation>
+                  a name of the fully qualified class that implements 
+&lt;samp&gt;eu.etaxonomy.taxeditor.preference.IE4PreferencePage&lt;/samp&gt;.
+               </documentation>
+               <appInfo>
+                  <meta.attribute kind="java" basedOn=":eu.etaxonomy.taxeditor.preference.IE4PreferencePage"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+         <attribute name="category" type="string">
+            <annotation>
+               <documentation>
+                  a path indicating the location of the page in the preference tree. The path may either be a parent node ID or a sequence
+     of IDs separated by &apos;/&apos;, representing the full path from the root node.
+               </documentation>
+               <appInfo>
+                  <meta.attribute kind="identifier" basedOn="eu.etaxonomy.taxeditor.store.preferencePage/page/@id"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="since"/>
+      </appInfo>
+      <documentation>
+         [Enter the first release in which this extension point appears.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="examples"/>
+      </appInfo>
+      <documentation>
+         [Enter extension point usage example here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="apiinfo"/>
+      </appInfo>
+      <documentation>
+         [Enter API information here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="implementation"/>
+      </appInfo>
+      <documentation>
+         [Enter information about supplied implementation of this extension point.]
+      </documentation>
+   </annotation>
+
+
+</schema>
index 9a061502358432639dbb9a9500794c06774035fb..04cfc524297ac6f7752502a0f36bfc29be6de4ff 100644 (file)
@@ -14,6 +14,7 @@ import javax.annotation.PostConstruct;
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.eclipse.e4.core.commands.ECommandService;
 import org.eclipse.e4.core.di.annotations.Optional;
 import org.eclipse.e4.core.services.events.IEventBroker;
 import org.eclipse.e4.ui.di.UIEventTopic;
@@ -42,6 +43,9 @@ public class EventUtility {
     @Inject
     private static IEventBroker eventBroker;
 
+    @Inject
+    private static ECommandService commandService;
+
     @PostConstruct
     public void create(){
         //nothing
@@ -51,6 +55,10 @@ public class EventUtility {
         eventBroker.post(topic, data);
     }
 
+    public static ECommandService getCommandService() {
+        return commandService;
+    }
+
     @Inject
     @Optional
     private void updateCurrentActiveShell(@Named(IServiceConstants.ACTIVE_SHELL)Shell shell){
index 272a2121b8b4252e0693ee8a871c14aa29e41f99..1401585a0ae78d115ea5e8fa214f0b2160c20947 100644 (file)
@@ -9,26 +9,15 @@
 package eu.etaxonomy.taxeditor.preference;
 
 import org.eclipse.jface.preference.BooleanFieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import eu.etaxonomy.taxeditor.preference.menu.FieldEditorPreferencePageE4;
 
 /**
  * @author k.luther
  * @date 01.11.2016
  *
  */
-public class AdminGeneralPreferences 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());
-
-
-    }
+public class AdminGeneralPreferences extends FieldEditorPreferencePageE4 {
 
     /* (non-Javadoc)
      * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/AdminPreferencesPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/AdminPreferencesPage.java
deleted file mode 100644 (file)
index 44c2de8..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
-* Copyright (C) 2016 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.preference;
-
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-/**
- * @author k.luther
- * @date 01.11.2016
- *
- */
-public class AdminPreferencesPage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
-     */
-    @Override
-    public void init(IWorkbench workbench) {
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
-     */
-    @Override
-    protected void createFieldEditors() {
-
-    }
-
-
-}
index 61bf228ffa3865de42427aa2f90b8d7b0d19efcb..47dfdffa4225548c88ecb3629eecf40249e95573 100644 (file)
@@ -17,8 +17,6 @@ import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
 
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.CommandHandlerButton;
@@ -28,17 +26,11 @@ import eu.etaxonomy.taxeditor.ui.element.CommandHandlerButton;
  * @date 21.07.2014
  *
  */
-public class ChecklistEditorGeneralPreference extends PreferencePage implements IWorkbenchPreferencePage {
+public class ChecklistEditorGeneralPreference extends PreferencePage {
 
     boolean isEditorActivated;
     Composite child ;
-    /*
-     * (non-Javadoc)
-     *
-     * @see
-     * org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors
-     * ()
-     */
+
     @Override
     protected Control createContents(Composite parent) {
 
@@ -129,14 +121,4 @@ public class ChecklistEditorGeneralPreference extends PreferencePage implements
         return composite;
     }
 
-    /*
-     * (non-Javadoc)
-     *
-     * @see
-     * org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
-     */
-    @Override
-    public void init(IWorkbench workbench) {
-    }
-
 }
index 9e3466efc23e08b5bc826dd17b786c1de9d2f8eb..e057bbd5117406c000478bd0f46372d67fa5ecab 100644 (file)
@@ -9,29 +9,16 @@
 package eu.etaxonomy.taxeditor.preference;
 
 import org.eclipse.jface.preference.BooleanFieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import eu.etaxonomy.taxeditor.preference.menu.FieldEditorPreferencePageE4;
 
 /**
  * @author k.luther
  * @date 01.04.2016
  *
  */
-public class DebugPreferences 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());
-
-    }
+public class DebugPreferences extends FieldEditorPreferencePageE4 {
 
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
-     */
     @Override
     protected void createFieldEditors() {
         addField(new BooleanFieldEditor(IPreferenceKeys.IS_SHOW_UP_WIDGET_IS_DISPOSED,
index 2168b53186558aa206e51ee6d68a5d214f515e6e..d2efdd0969d5212a2befd6f0987fb4d4af024da7 100644 (file)
@@ -22,8 +22,6 @@ import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
 
 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
 import eu.etaxonomy.cdm.model.description.FeatureTree;
@@ -40,14 +38,11 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @created Sep 16, 2010
  * @version 1.0
  */
-public class DefaultFeatureTreePreferenecs extends CdmPreferencePage implements IWorkbenchPreferencePage {
+public class DefaultFeatureTreePreferenecs extends CdmPreferencePage {
 
        private FeatureTree defaultFeatureTreeForTextualDescription;
        private FeatureTree defaultFeatureTreeForStructuredDescription;
 
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
-        */
        /** {@inheritDoc} */
        @Override
        protected Control createContents(Composite parent) {
@@ -126,12 +121,6 @@ public class DefaultFeatureTreePreferenecs extends CdmPreferencePage implements
                }
        }
 
-       /** {@inheritDoc} */
-       @Override
-       public void init(IWorkbench workbench) {
-               setPreferenceStore(PreferencesUtil.getPreferenceStore());
-       }
-
        /** {@inheritDoc} */
        @Override
        public boolean performOk() {
index b2af1be68646890fd48074b3f0d2167358444046..383263d1077f216e1d3ac0c63a0fa05639d0cbe0 100644 (file)
@@ -10,9 +10,8 @@
 package eu.etaxonomy.taxeditor.preference;
 
 import org.eclipse.jface.preference.BooleanFieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import eu.etaxonomy.taxeditor.preference.menu.FieldEditorPreferencePageE4;
 
 /**
  * <p>DescriptionPreferences class.</p>
@@ -21,19 +20,11 @@ import org.eclipse.ui.IWorkbenchPreferencePage;
  * @created 20.05.2008
  * @version 1.0
  */
-public class DescriptionPreferences extends FieldEditorPreferencePage implements
-               IWorkbenchPreferencePage {
+public class DescriptionPreferences extends FieldEditorPreferencePageE4 {
 
        /** Constant <code>PLUGIN_ID="eu.etaxonomy.taxeditor.preferences.desc"{trunked}</code> */
        public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.description";
 
-       /** {@inheritDoc} */
-       @Override
-    public void init(IWorkbench workbench) {
-        setPreferenceStore(PreferencesUtil.getPreferenceStore());
-
-       }
-
        @Override
        protected void createFieldEditors() {
            addField(new BooleanFieldEditor(IPreferenceKeys.SHOW_VOCABULARY_ID_FOR_TERM_LABELS,
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IE4PreferencePage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IE4PreferencePage.java
new file mode 100644 (file)
index 0000000..8035c7b
--- /dev/null
@@ -0,0 +1,20 @@
+// $Id$
+/**
+* Copyright (C) 2018 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.preference;
+
+/**
+ * Interface for e4 compatible preference extension point.
+ * @author pplitzner
+ * @date 14.02.2018
+ *
+ */
+public interface IE4PreferencePage {
+
+}
index aae9b342a8ef80e76d4287977fbb00d9c54f77fb..4f4dbf012d289a4085c863f41ec6b266f6ffe9da 100644 (file)
@@ -14,7 +14,6 @@ import java.util.Locale;
 
 import org.apache.commons.lang.StringUtils;
 import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.PreferencePage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CCombo;
 import org.eclipse.swt.events.SelectionEvent;
@@ -24,28 +23,24 @@ import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
 import org.eclipse.ui.PlatformUI;
 
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
 
 /**
  * @author n.hoffmann
  * @created Dec 3, 2010
  * @version 1.0
  */
-public class LanguageEditorPreferencePage extends PreferencePage implements IWorkbenchPreferencePage{
+public class LanguageEditorPreferencePage extends CdmPreferencePage {
 
     private CCombo combo;
     PreferencesUtil preferencesUtil = new PreferencesUtil();
     private boolean isSelectionChanged = false;
     private int initalSelectionIndex;
 
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
-        */
        @Override
        protected Control createContents(Composite parent) {
                Composite container = new Composite(parent, SWT.NULL);
@@ -143,17 +138,6 @@ public class LanguageEditorPreferencePage extends PreferencePage implements IWor
         }
     }
 
-       /* (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.PreferencePage#performOk()
-        */
        @Override
        public boolean performOk() {
         try {
index 88d24bae6a372576bc5518d471502979bccf5dec..0bcbbecfceac312255b6615c4dd46bdaf1e93f5f 100644 (file)
@@ -11,7 +11,6 @@ package eu.etaxonomy.taxeditor.preference;
 
 import java.util.List;
 
-import org.eclipse.jface.preference.PreferencePage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -23,10 +22,9 @@ import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
 
 import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -34,7 +32,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @created Dec 3, 2010
  * @version 1.0
  */
-public class LanguageRepresentationPreferencePage extends PreferencePage implements IWorkbenchPreferencePage{
+public class LanguageRepresentationPreferencePage extends CdmPreferencePage{
 
        private boolean isMultilanguageTextEditingCapability;
        private Language globalLanguage;
@@ -46,9 +44,6 @@ public class LanguageRepresentationPreferencePage extends PreferencePage impleme
                return composite;
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
-        */
        @Override
        protected Control createContents(Composite parent) {
                Composite container = new Composite(parent, SWT.NULL);
@@ -64,9 +59,6 @@ public class LanguageRepresentationPreferencePage extends PreferencePage impleme
 
        }
 
-       /**
-        * @param container
-        */
        private void createSetDefaultLanguage(Composite parent) {
                globalLanguage = PreferencesUtil.getGlobalLanguage();
 
@@ -108,9 +100,6 @@ public class LanguageRepresentationPreferencePage extends PreferencePage impleme
                });
        }
 
-       /**
-        *
-        */
        private void createSetMultiLanguageTextEditingCapability(Composite parent) {
                isMultilanguageTextEditingCapability = getPreferenceStore().getBoolean(IPreferenceKeys.MULTILANGUAGE_TEXT_EDITING_CAPABILITY);
 
@@ -135,17 +124,6 @@ public class LanguageRepresentationPreferencePage extends PreferencePage impleme
                });
        }
 
-       /* (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.PreferencePage#performOk()
-        */
        @Override
        public boolean performOk() {
                getPreferenceStore().setValue(IPreferenceKeys.MULTILANGUAGE_TEXT_EDITING_CAPABILITY, isMultilanguageTextEditingCapability);
index 9c8d50f7ae3feb47c87a8499c3e7b9491a804746..cc84a18c788de53c784ab3ea1e8fd56e678276a6 100644 (file)
@@ -1,21 +1,20 @@
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* 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.preference;
 
-import org.eclipse.jface.preference.PreferencePage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
 
 /**
  * <p>MatchingPreferences class.</p>
@@ -24,12 +23,8 @@ import org.eclipse.ui.IWorkbenchPreferencePage;
  * @created Jan 22, 2010
  * @version 1.0
  */
-public class MatchingPreferences extends PreferencePage implements
-       IWorkbenchPreferencePage  {
+public class MatchingPreferences extends CdmPreferencePage  {
 
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
-        */
        /** {@inheritDoc} */
        @Override
        protected Control createContents(Composite parent) {
@@ -40,13 +35,4 @@ public class MatchingPreferences extends PreferencePage implements
                return container;
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
-        */
-       /** {@inheritDoc} */
-       public void init(IWorkbench workbench) {
-               
-       }
-       
-       
 }
index 62c1d837333ab979ba51f69584ee70d164bcc407..494239840f3f7201e4aa42c7caeebe8c170315d1 100644 (file)
@@ -9,28 +9,16 @@
 package eu.etaxonomy.taxeditor.preference;
 
 import org.eclipse.jface.preference.BooleanFieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import eu.etaxonomy.taxeditor.preference.menu.FieldEditorPreferencePageE4;
 
 /**
  * @author pplitzner
  * @date 13.02.2014
  *
  */
-public class MediaPreferences 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());
-    }
+public class MediaPreferences extends FieldEditorPreferencePageE4 {
 
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
-     */
     @Override
     protected void createFieldEditors() {
         addField(new BooleanFieldEditor(IPreferenceKeys.SHOW_ADVANCED_MEDIA_SECTION,
index d2c1198fbc919df689bc649b9565173d052a00ab..154d6e13623ea395a744c6281d65b898ce9de2f4 100644 (file)
@@ -9,19 +9,17 @@
 
 package eu.etaxonomy.taxeditor.preference;
 
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
 import org.eclipse.jface.preference.IntegerFieldEditor;
 import org.eclipse.jface.preference.StringFieldEditor;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import eu.etaxonomy.taxeditor.preference.menu.FieldEditorPreferencePageE4;
 
 /**
  * @author n.hoffmann
  * @created Feb 4, 2011
  * @version 1.0
  */
-public class MobotOpenUrlPreferences extends FieldEditorPreferencePage implements
-               IWorkbenchPreferencePage {
+public class MobotOpenUrlPreferences extends FieldEditorPreferencePageE4 {
 
 
     @Override
@@ -40,8 +38,4 @@ public class MobotOpenUrlPreferences extends FieldEditorPreferencePage implement
 
     }
 
-    @Override
-    public void init(IWorkbench workbench) {
-        setPreferenceStore(PreferencesUtil.getPreferenceStore());
-    }
 }
index 28e420ea9def48323241ae73be1190988fa48892..eda16afdef092482dc5723ac73f974882c69e73e 100644 (file)
@@ -1,7 +1,6 @@
 package eu.etaxonomy.taxeditor.preference;
 
 
-import org.eclipse.jface.preference.PreferencePage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -10,31 +9,20 @@ import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
 
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
 
 
-public class NameDetailsViewConfiguration extends PreferencePage implements IWorkbenchPreferencePage {
-       boolean isSimpleDetailsViewActivated;
+public class NameDetailsViewConfiguration extends CdmPreferencePage {
+
+    boolean isSimpleDetailsViewActivated;
        boolean isUseLocalSettings;
     Composite child ;
     Composite localSettings ;
-       @Override
-       public void init(IWorkbench workbench) {
-
-       }
 
-       /*
-     * (non-Javadoc)
-     *
-     * @see
-     * org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors
-     * ()
-     */
     @Override
     protected Control createContents(Composite parent) {
 
@@ -299,9 +287,6 @@ public class NameDetailsViewConfiguration extends PreferencePage implements IWor
             label.setText("The CDM settings don't allow to set the preferences for the display of name details locally. If you need to make local settings, please ask an administrator.");
         }
         return composite;
-
-
-
        }
 
 }
index d0f526871396de3ce0b017d078d0a386fd16999e..dcada3d965201f216bf8634d1a68aa755ed6e413 100644 (file)
@@ -1,7 +1,6 @@
 package eu.etaxonomy.taxeditor.preference;\r
 \r
 import org.eclipse.jface.dialogs.MessageDialog;\r
-import org.eclipse.jface.preference.PreferencePage;\r
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.events.SelectionAdapter;\r
 import org.eclipse.swt.events.SelectionEvent;\r
@@ -10,12 +9,11 @@ import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.swt.widgets.Control;\r
 import org.eclipse.swt.widgets.Label;\r
-import org.eclipse.ui.IWorkbench;\r
-import org.eclipse.ui.IWorkbenchPreferencePage;\r
 \r
 import eu.etaxonomy.taxeditor.l10n.Messages;\r
+import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;\r
 \r
-public class OrderPreferences extends PreferencePage implements IWorkbenchPreferencePage {\r
+public class OrderPreferences extends CdmPreferencePage {\r
 \r
 \r
            boolean isNaturalOrderActivated;\r
@@ -24,13 +22,7 @@ public class OrderPreferences extends PreferencePage implements IWorkbenchPrefer
            boolean isRestoreTaxonNavigator;\r
            boolean isSelectionChanged = false;\r
            boolean isStrictlyAlphabeticallyOrdered;\r
-           /*\r
-            * (non-Javadoc)\r
-            *\r
-            * @see\r
-            * org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors\r
-            * ()\r
-            */\r
+\r
            @Override\r
            protected Control createContents(Composite parent) {\r
 \r
@@ -152,15 +144,6 @@ public class OrderPreferences extends PreferencePage implements IWorkbenchPrefer
            }\r
 \r
 \r
-               @Override\r
-               public void init(IWorkbench workbench) {\r
-                       // TODO Auto-generated method stub\r
-\r
-               }\r
-\r
-               /* (non-Javadoc)\r
-                * @see org.eclipse.jface.preference.PreferencePage#performOk()\r
-                */\r
                @Override\r
                public boolean performOk() {\r
               if(isSelectionChanged){\r
index aaa131f6cee324af92d034cf3b219731e7fc74e6..0e5ed1aa77724f3c135b2b51f83d17764afbd28f 100644 (file)
@@ -9,12 +9,9 @@
 package eu.etaxonomy.taxeditor.preference;
 
 import org.eclipse.jface.preference.BooleanFieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
 
 import eu.etaxonomy.cdm.api.application.ICdmRepository;
 import eu.etaxonomy.cdm.api.service.IPreferenceService;
@@ -22,6 +19,7 @@ import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
+import eu.etaxonomy.taxeditor.preference.menu.FieldEditorPreferencePageE4;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -29,7 +27,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @date 13.02.2014
  *
  */
-public class SpecimenOrObservationPreferences extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+public class SpecimenOrObservationPreferences extends FieldEditorPreferencePageE4 {
 
     public SpecimenOrObservationPreferences(){
         super();
@@ -43,7 +41,8 @@ public class SpecimenOrObservationPreferences extends FieldEditorPreferencePage
 
 
     @Override
-    public void init(IWorkbench workbench) {
+    public void init() {
+        super.init();
 //        setPreferenceStore(PreferencesUtil.getPreferenceStore());
         ICdmRepository controller = CdmStore.getCurrentApplicationConfiguration();
         if (controller != null){
index 4b02ddb18bcc12c6902e8c6898316c1f6c314c3b..1e31fed10bf657bb951598d71bdd5f4f20a7004c 100644 (file)
 package eu.etaxonomy.taxeditor.preference;
 
 import org.eclipse.jface.preference.BooleanFieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
 import org.eclipse.jface.preference.StringFieldEditor;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.RowLayout;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import eu.etaxonomy.taxeditor.preference.menu.FieldEditorPreferencePageE4;
 
 /**
  * <p>
@@ -29,15 +28,8 @@ import org.eclipse.ui.IWorkbenchPreferencePage;
  * @version 1.0
  */
 public class TaxonomicEditorGeneralPreferences extends
-               FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+               FieldEditorPreferencePageE4 {
 
-       /*
-        * (non-Javadoc)
-        *
-        * @see
-        * org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors
-        * ()
-        */
        @Override
        protected void createFieldEditors() {
                addField(new BooleanFieldEditor(IPreferenceKeys.SHOW_DEBUG_INFORMATION,
@@ -105,15 +97,4 @@ public class TaxonomicEditorGeneralPreferences extends
 
        }
 
-       /*
-        * (non-Javadoc)
-        *
-        * @see
-        * org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
-        */
-       @Override
-       public void init(IWorkbench workbench) {
-               setPreferenceStore(PreferencesUtil.getPreferenceStore());
-       }
-
 }
index 47d0427ca1af22497833b471923ab6c756116e34..373c380cab79100c9b417686f1bf59cb0fdbe686 100644 (file)
@@ -1,21 +1,20 @@
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* 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.preference;
 
-import org.eclipse.jface.preference.PreferencePage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
 
 /**
  * <p>TaxonomicPreferences class.</p>
@@ -24,19 +23,15 @@ import org.eclipse.ui.IWorkbenchPreferencePage;
  * @created 20.05.2008
  * @version 1.0
  */
-public class TaxonomicPreferences extends PreferencePage implements
-               IWorkbenchPreferencePage {
+public class TaxonomicPreferences extends CdmPreferencePage {
 
        /** Constant <code>PLUGIN_ID="eu.etaxonomy.taxeditor.taxonomic.prefer"{trunked}</code> */
        public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.taxonomic.preferences";
-       
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
-        */
+
        /** {@inheritDoc} */
        @Override
        protected Control createContents(Composite parent) {
-               
+
                Composite container = new Composite(parent, SWT.NULL);
                container.setLayout(new GridLayout());
 
@@ -44,11 +39,4 @@ public class TaxonomicPreferences extends PreferencePage implements
                return container;
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
-        */
-       /** {@inheritDoc} */
-       public void init(IWorkbench workbench) {
-
-       }
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/TemplatePreferencePage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/TemplatePreferencePage.java
deleted file mode 100644 (file)
index f718afe..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
-* Copyright (C) 2014 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.preference;
-
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-/**
- * @author a.oppermann
- * @date 13.08.2014
- *
- */
-public class TemplatePreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
-
-    @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.IS_RL, "Rote Liste 2020",  getFieldEditorParent()));
-    }
-
-}
index 438eca2adb4b3494f8f9aefa185f871683bfbb79..f96d0c1ef46dda282e9fa236122e5fe9d3186584 100644 (file)
@@ -1,17 +1,16 @@
 /**
  * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
+ * 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.preference;
 
 import org.eclipse.jface.preference.BooleanFieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import eu.etaxonomy.taxeditor.preference.menu.FieldEditorPreferencePageE4;
 
 /**
  * @author n.hoffmann
@@ -19,20 +18,8 @@ import org.eclipse.ui.IWorkbenchPreferencePage;
  * @created Oct 12, 2011
  * @version 1.0
  */
-public class TypeDesignationPreferences 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());
-       }
+public class TypeDesignationPreferences extends FieldEditorPreferencePageE4 {
 
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
-        */
        @Override
        protected void createFieldEditors() {
                addField(new BooleanFieldEditor(IPreferenceKeys.ADD_TYPES_TO_ALL_NAMES,
index 015b3fb44b546634cd23abba6aa0fde97ecdb57e..053c8a6182cae34609a3c74ed1324f5ca189b652 100644 (file)
@@ -17,17 +17,14 @@ import java.util.List;
 import java.util.Map;
 
 import org.eclipse.jface.preference.ComboFieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
 import org.eclipse.swt.widgets.Combo;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
 
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 import eu.etaxonomy.cdm.strategy.match.MatchException;
 import eu.etaxonomy.cdm.strategy.match.MatchMode;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.preference.menu.FieldEditorPreferencePageE4;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -35,8 +32,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @created Jan 22, 2010
  * @version 1.0
  */
-public abstract class AbstractMatchingPreferences<T extends IdentifiableEntity> extends FieldEditorPreferencePage implements
-               IWorkbenchPreferencePage {
+public abstract class AbstractMatchingPreferences<T extends IdentifiableEntity> extends FieldEditorPreferencePageE4 {
 
        /**
         * Fields that will be excluded from the display
@@ -52,11 +48,6 @@ public abstract class AbstractMatchingPreferences<T extends IdentifiableEntity>
 
        protected Map<String, Combo> matchModeCombos = new HashMap<String, Combo>();
 
-    @Override
-    public void init(IWorkbench workbench) {
-        setPreferenceStore(PreferencesUtil.getPreferenceStore());
-    }
-
        /**
         * {@inheritDoc}
         */
index c90645912fdf4752a46344317848d47d8ac482f3..1c5db7eb7b97edc8045e465c2725734dc7102277 100644 (file)
@@ -9,8 +9,6 @@
 
 package eu.etaxonomy.taxeditor.preference.matching;
 
-import org.eclipse.ui.IWorkbench;
-
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 import eu.etaxonomy.cdm.strategy.match.MatchException;
@@ -27,8 +25,8 @@ public class NonViralNameMatchingPreference extends AbstractMatchingPreferences<
 
        /** {@inheritDoc} */
        @Override
-    public void init(IWorkbench workbench) {
-           super.init(workbench);
+    public void init() {
+           super.init();
                clazz = TaxonName.class;
 
                try {
index fcf1a9ebe3975cb6291031699862a68e6b57dad6..3a385301eca70c3fd4b14f799eab145466a660cd 100644 (file)
@@ -9,8 +9,6 @@
 
 package eu.etaxonomy.taxeditor.preference.matching;
 
-import org.eclipse.ui.IWorkbench;
-
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 import eu.etaxonomy.cdm.strategy.match.MatchException;
@@ -26,8 +24,8 @@ public class ReferenceMatchingPreference extends AbstractMatchingPreferences<Ref
 
        /** {@inheritDoc} */
        @Override
-    public void init(IWorkbench workbench) {
-           super.init(workbench);
+    public void init() {
+           super.init();
                clazz = Reference.class;
 
                try {
index 7b8b069e3c504d90c3aa4e1874e6d0a3751d27d0..0581acd612f4eb84f070771aad0a3eded83abab4 100644 (file)
@@ -9,8 +9,6 @@
 
 package eu.etaxonomy.taxeditor.preference.matching;
 
-import org.eclipse.ui.IWorkbench;
-
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 import eu.etaxonomy.cdm.strategy.match.MatchException;
@@ -27,8 +25,8 @@ public class TeamOrPersonMatchingPreference extends
 
        /** {@inheritDoc} */
        @Override
-    public void init(IWorkbench workbench) {
-           super.init(workbench);
+    public void init() {
+           super.init();
                clazz = TeamOrPersonBase.class;
 
                try {
index bcb56a2f18bd7056f0247332e6fb790b65290f66..747a4714f009c96a859b0989cda372ba90049d2a 100644 (file)
@@ -29,8 +29,6 @@ import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
 import org.eclipse.ui.commands.ICommandService;
 import org.eclipse.ui.handlers.IHandlerService;
 
@@ -51,8 +49,7 @@ import eu.etaxonomy.taxeditor.store.TermStore;
  * @created 12.06.2009
  * @version 1.0
  */
-public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends CdmPreferencePage implements
-               IWorkbenchPreferencePage, IConversationEnabled{
+public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends CdmPreferencePage implements IConversationEnabled{
 
        private Button toggleButton;
        protected HashMap<DefinedTermBase<T>, Button> menuButtons;
@@ -84,6 +81,7 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
                super(title);
                vocabularyIsEditable = editable;
                setDescription(description);
+               init();
        }
 
        protected List<T> getTerms(){
@@ -220,7 +218,7 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
 
        /** {@inheritDoc} */
        @Override
-    public void init(IWorkbench workbench) {
+    public void init() {
            setPreferenceStore(PreferencesUtil.getPreferenceStore());
            if(!CdmStore.isActive()) {
                MessagingUtils.noDataSourceWarningDialog(null);
index cad741900ebae5375ef82d885d9f9ec570276cb2..1957db0bb19d01b1b9e8356273dd3c937006a455 100644 (file)
@@ -16,6 +16,8 @@ import org.eclipse.jface.preference.PreferencePage;
 import org.eclipse.jface.resource.ImageDescriptor;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.taxeditor.preference.IE4PreferencePage;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -25,23 +27,27 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @date 30 Jul 2015
  *
  */
-public abstract class CdmPreferencePage extends PreferencePage implements ICdmEntitySessionEnabled {
+public abstract class CdmPreferencePage extends PreferencePage implements ICdmEntitySessionEnabled, IE4PreferencePage {
 
     private ICdmEntitySession previousCdmEntitySession;
     private boolean isApply;
 
     public CdmPreferencePage() {
-        initSession();
+        this(null, null);
     }
 
     public CdmPreferencePage(String title) {
-        super(title);
-        initSession();
+        this(title, null);
     }
 
     public CdmPreferencePage(String title, ImageDescriptor image) {
         super(title, image);
         initSession();
+        init();
+    }
+
+    public void init() {
+        setPreferenceStore(PreferencesUtil.getPreferenceStore());
     }
 
     private void initSession() {
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/FieldEditorPreferencePageE4.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/FieldEditorPreferencePageE4.java
new file mode 100644 (file)
index 0000000..dd06b84
--- /dev/null
@@ -0,0 +1,31 @@
+// $Id$
+/**
+* Copyright (C) 2018 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.preference.menu;
+
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+
+import eu.etaxonomy.taxeditor.preference.IE4PreferencePage;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+
+/**
+ * @author pplitzner
+ * @date 14.02.2018
+ *
+ */
+public abstract class FieldEditorPreferencePageE4 extends FieldEditorPreferencePage implements IE4PreferencePage{
+
+    public FieldEditorPreferencePageE4() {
+        init();
+    }
+
+    protected void init(){
+        setPreferenceStore(PreferencesUtil.getPreferenceStore());
+    }
+}
index 23ded94e278f24e41c15585c1478d14c9075243f..bcd5d9136d906d7a7a8582a8c6aa133d7a872438 100644 (file)
@@ -12,9 +12,6 @@ import java.util.List;
 
 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;
 
 import eu.etaxonomy.cdm.api.application.ICdmRepository;
 import eu.etaxonomy.cdm.api.service.IPreferenceService;
@@ -27,7 +24,6 @@ import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
 
 /**
  * <p>
@@ -37,8 +33,7 @@ import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
  * @author p.ciardelli
  * @created 16.09.2008
  */
-public class NomenclaturalCodePreferences extends FieldEditorPreferencePage
-               implements IWorkbenchPreferencePage {
+public class NomenclaturalCodePreferences extends FieldEditorPreferencePageE4 {
 
        @Override
        protected void createFieldEditors() {
@@ -80,12 +75,9 @@ public class NomenclaturalCodePreferences extends FieldEditorPreferencePage
         *
         * Initialize the preference page
         */
-       @Override
-    public void init(IWorkbench workbench) {
-
-               setPreferenceStore(TaxeditorStorePlugin.getDefault()
-                               .getPreferenceStore());
-
+    @Override
+    public void init() {
+        super.init();
              ICdmRepository controller = CdmStore.getCurrentApplicationConfiguration();
           if (controller != null){
               IPreferenceService service = controller.getPreferenceService();
index 7eee8b9fc25bbceaa612646a24502f76368c4254..08bec5161b9c6fde3212574e523119b6fb44fad2 100644 (file)
@@ -9,8 +9,6 @@
 
 package eu.etaxonomy.taxeditor.preference.menu;
 
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
 import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 
@@ -21,21 +19,14 @@ import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
  * @created 25.06.2009
  * @version 1.0
  */
-public class PresenceAbsenceMenuPreferences extends AbstractMenuPreferences<PresenceAbsenceTerm> implements
-               IWorkbenchPreferencePage {
+public class PresenceAbsenceMenuPreferences extends AbstractMenuPreferences<PresenceAbsenceTerm> {
 
-       /**
-        * <p>Constructor for PresenceAbsenceMenuPreferences.</p>
-        */
        public PresenceAbsenceMenuPreferences() {
                super("Distribution Status Preferences",
                                "Choose which distribution states should be shown.",
                                false);
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.preference.menu.AbstractMenuPreferences#getTermClass()
-        */
        /** {@inheritDoc} */
        @Override
        protected TermType getTermType() {
index af0372a3ad0dbbb940b9b5d5fe00ed76c4a623c7..0a91933e7cb6ce25bb9dcde313b7233a403dfe0d 100644 (file)
@@ -13,7 +13,6 @@ import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IWorkbenchPreferencePage;
 
 import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.name.Rank;
@@ -28,8 +27,7 @@ import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
  * @created 17.09.2008
  * @version 1.0
  */
-public class RankMenuPreferences extends AbstractMenuPreferences<Rank> implements
-               IWorkbenchPreferencePage {
+public class RankMenuPreferences extends AbstractMenuPreferences<Rank> {
 
        /** Constant <code>PLUGIN_ID="eu.etaxonomy.taxeditor.preferences.rank"{trunked}</code> */
        public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.ranks";
@@ -43,9 +41,6 @@ public class RankMenuPreferences extends AbstractMenuPreferences<Rank> implement
                                false);
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.preference.menu.AbstractMenuPreferences#createAdditionalContent(org.eclipse.swt.widgets.Composite)
-        */
        /** {@inheritDoc} */
        @Override
        protected void createAdditionalContent(Composite container) {
@@ -69,9 +64,6 @@ public class RankMenuPreferences extends AbstractMenuPreferences<Rank> implement
 
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.preference.menu.AbstractMenuPreferences#getTermClass()
-        */
        /** {@inheritDoc} */
        @Override
        protected TermType getTermType() {
index f9395eaa3368881b40adf438a9ea705b97a2dab8..e6795e93ee81147978653e583a3ed71a5ce6c721 100644 (file)
@@ -8,6 +8,7 @@ import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.commands.NotEnabledException;
 import org.eclipse.core.commands.NotHandledException;
 import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.e4.core.commands.ECommandService;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.DisposeListener;
@@ -17,9 +18,9 @@ import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.commands.ICommandService;
 import org.eclipse.ui.handlers.IHandlerService;
 
+import eu.etaxonomy.taxeditor.event.EventUtility;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.LoginManager;
 import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
@@ -98,7 +99,7 @@ public class CommandHandlerButton extends Composite implements Observer {
        }
 
        private void updateButtonEnabledState() {
-               ICommandService commandService =  TaxeditorStorePlugin.getDefault().getWorkbench().getService(ICommandService.class);
+               ECommandService commandService = EventUtility.getCommandService();
                Command command = commandService.getCommand(commandId);
                if(!button.isDisposed()){
                        button.setEnabled(command != null && command.isEnabled());
index 6de788f932860359b1794d60142567cd2c26538c..52c2b6c1e1c2d20e5fd7bde93173d76e429ffcc2 100644 (file)
@@ -91,7 +91,7 @@
     <elements xsi:type="commands:Command" xmi:id="_RxxNsB7EEeeRW_RHu3JLqQ" elementId="org.eclipse.ui.edit.copy" commandName="%command.label.9"/>
     <elements xsi:type="commands:Command" xmi:id="_TmIHQB7EEeeRW_RHu3JLqQ" elementId="org.eclipse.ui.edit.paste" commandName="%command.label.10"/>
     <elements xsi:type="commands:Command" xmi:id="_WOTDYB7EEeeRW_RHu3JLqQ" elementId="org.eclipse.ui.edit.delete" commandName="%command.label.11"/>
-    <elements xsi:type="commands:Command" xmi:id="_l9kXoB7PEeeC-JvycL9ysA" elementId="org.eclipse.ui.window.preferences" commandName="%command.label.12"/>
+    <elements xsi:type="commands:Command" xmi:id="_l9kXoB7PEeeC-JvycL9ysA" elementId="eu.etaxonomy.taxeditor.workbench.preferences" commandName="%command.label.12"/>
     <elements xsi:type="commands:Command" xmi:id="_hooiQB7QEeeC-JvycL9ysA" elementId="org.eclipse.ui.newWizard" commandName="%command.label.21"/>
     <elements xsi:type="commands:Command" xmi:id="_UZ2zYCQsEeeq76l4saMAFQ" elementId="eu.etaxonomy.taxeditor.workbench.help.aboutPlatform" commandName="%command.name.0"/>
     <elements xsi:type="commands:Command" xmi:id="_UZ_WQCQsEeeq76l4saMAFQ" elementId="eu.etaxonomy.taxeditor.workbench.help.parser" commandName="%command.name"/>
     <elements xsi:type="commands:Handler" xmi:id="_dBGosFp0Eee4PsIXei-TMg" elementId="eu.etaxonomy.taxeditor.workbench.SaveHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.workbench/eu.etaxonomy.taxeditor.workbench.SaveHandler" command="_X-56IFp0Eee4PsIXei-TMg"/>
     <elements xsi:type="commands:Handler" xmi:id="_UvfiQL2lEeeyWfw0n8-ICQ" elementId="eu.etaxonomy.taxeditor.workbench.handler.CollapseHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.workbench/eu.etaxonomy.taxeditor.workbench.handler.CollapseHandler" command="_S00XkL2gEeeyWfw0n8-ICQ"/>
     <elements xsi:type="commands:Handler" xmi:id="_bkScIL4vEeewU62zpvPllA" elementId="eu.etaxonomy.taxeditor.workbench.handler.ExpandHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.workbench/eu.etaxonomy.taxeditor.workbench.handler.ExpandHandler" command="_Z0st0L4vEeewU62zpvPllA"/>
+    <elements xsi:type="commands:Handler" xmi:id="_YExMQBC4EeihNvjJtDdlyA" elementId="eu.etaxonomy.taxeditor.workbench.handler.ExitHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.workbench/eu.etaxonomy.taxeditor.workbench.handler.ExitHandler" command="_V040UBC4EeihNvjJtDdlyA"/>
+    <elements xsi:type="commands:Handler" xmi:id="_-aK0EBFsEeiJUct092UvwA" elementId="eu.etaxonomy.taxeditor.workbench.handler.OpenPreferencesHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.workbench/eu.etaxonomy.taxeditor.workbench.handler.OpenPreferencesHandler" command="_l9kXoB7PEeeC-JvycL9ysA"/>
   </fragments>
   <fragments xsi:type="fragment:StringModelFragment" xmi:id="_Z4f0kFsaEeebk7BsM35KOg" featurename="children" parentElementId="org.eclipse.ui.contexts.dialogAndWindow">
     <elements xsi:type="commands:BindingContext" xmi:id="_5pEDMFsaEeebk7BsM35KOg" elementId="eu.etaxonomy.taxeditor.workbench.bindingcontext" name="Taxonomic Editor Keybinding Context"/>
diff --git a/eu.etaxonomy.taxeditor.workbench/src/main/java/eu/etaxonomy/taxeditor/workbench/handler/OpenPreferencesHandler.java b/eu.etaxonomy.taxeditor.workbench/src/main/java/eu/etaxonomy/taxeditor/workbench/handler/OpenPreferencesHandler.java
new file mode 100644 (file)
index 0000000..c250c44
--- /dev/null
@@ -0,0 +1,167 @@
+// $Id$
+/**
+* Copyright (C) 2018 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.workbench.handler;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.inject.Named;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.preference.IPreferencePage;
+import org.eclipse.jface.preference.PreferenceDialog;
+import org.eclipse.jface.preference.PreferenceManager;
+import org.eclipse.jface.preference.PreferenceNode;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * @author pplitzner
+ * @date 14.02.2018
+ *
+ */
+public class OpenPreferencesHandler {
+
+    private Logger logger = Logger.getLogger(OpenPreferencesHandler.class);
+
+    private List<PageWrapper> pagesYetToBeAdded = new ArrayList<>();
+
+    private Map<String, PreferenceNode> idToNodeMap = new HashMap<>();
+
+    @Execute
+    public void execute(@Named(IServiceConstants.ACTIVE_SHELL)Shell shell) {
+        PreferenceManager manager = new PreferenceManager('/');
+
+        IExtensionRegistry reg = Platform.getExtensionRegistry();
+        IConfigurationElement[] extensions = reg
+                .getConfigurationElementsFor("eu.etaxonomy.taxeditor.store.preferencePage"); //$NON-NLS-1$
+        for (IConfigurationElement configElement : extensions) {
+            if(configElement.getName().equals("page")){ //$NON-NLS-1$
+                Object o;
+                try {
+                    o = configElement.createExecutableExtension("class");
+                    if(o instanceof IPreferencePage){
+                        IPreferencePage page = (IPreferencePage) o;
+                        String category = configElement.getAttribute("category");
+                        String id = configElement.getAttribute("id");
+                        String name = configElement.getAttribute("name");
+
+                        page.setTitle(name);
+                        //add all root nodes
+                        if(category!=null){
+                            PreferenceNode node = new PreferenceNode(id, page);
+                            manager.addToRoot(node);
+                            idToNodeMap.put(id, node);
+                        }
+                        //child nodes will be handled later
+                        else{
+                            pagesYetToBeAdded.add(new PageWrapper(page, category, id, name));
+                        }
+                    }
+                } catch (CoreException e) {
+                    logger.error(String.format("Failed to initialize preference page for config element: %s", configElement), e);
+                }
+            }
+        }
+
+//        pagesYetToBeAdded.entrySet().stream().
+//        //filter stream to only contain parent nodes
+//        filter(entry->{
+//            PageWrapper pageWrapper = entry.getValue();
+//            PreferenceNode node = new PreferenceNode(pageWrapper.getId(), pageWrapper.getPage());
+//            if(StringUtils.isEmpty(pageWrapper.getCategory())){
+//                manager.addToRoot(node);
+//                return true;
+//            }
+//            return false;
+//        })
+//        .map(parent->addPage(parent.getValue(), manager));
+
+
+        Collections.sort(pagesYetToBeAdded, new PreferenceNodeComparator());
+
+        int size = pagesYetToBeAdded.size();
+        while(!pagesYetToBeAdded.isEmpty()){
+
+            Iterator<PageWrapper> iterator = pagesYetToBeAdded.iterator();
+            while(iterator.hasNext()){
+                PageWrapper pageWrapper = iterator.next();
+                if(addPage(pageWrapper)){
+                    iterator.remove();
+                }
+            }
+            if(size==pagesYetToBeAdded.size()){
+                //avoid potential endless loop
+                break;
+            }
+            size = pagesYetToBeAdded.size();
+        }
+        PreferenceDialog dialog = new PreferenceDialog(shell, manager);
+        dialog.create();
+        dialog.getTreeViewer().expandAll();
+        dialog.open();
+    }
+
+    private boolean addPage(PageWrapper pageWrapper){
+        PreferenceNode node = new PreferenceNode(pageWrapper.getId(), pageWrapper.getPage());
+        idToNodeMap.put(pageWrapper.getId(), node);
+        PreferenceNode parent = idToNodeMap.get(pageWrapper.getCategory());
+        if(parent!=null){
+            parent.add(node);
+            return true;
+        }
+        return false;
+    }
+
+    private class PreferenceNodeComparator implements Comparator<PageWrapper>{
+
+        @Override
+        public int compare(PageWrapper o1, PageWrapper o2) {
+            return o1.getName().compareTo(o2.getName());
+        }
+
+    }
+
+    private class PageWrapper{
+        IPreferencePage page;
+        String category;
+        String id;
+        String name;
+        public PageWrapper(IPreferencePage page, String category, String id, String name) {
+            super();
+            this.page = page;
+            this.category = category;
+            this.id = id;
+            this.name = name;
+        }
+        public IPreferencePage getPage() {
+            return page;
+        }
+        public String getCategory() {
+            return category;
+        }
+        public String getId() {
+            return id;
+        }
+        public String getName() {
+            return name;
+        }
+    }
+}