fix #8226: add new preferences for modifiers
authorKatja Luther <k.luther@bgbm.org>
Wed, 25 Sep 2019 12:04:22 +0000 (14:04 +0200)
committerKatja Luther <k.luther@bgbm.org>
Wed, 25 Sep 2019 12:04:55 +0000 (14:04 +0200)
eu.etaxonomy.taxeditor.store/plugin.xml
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/preferencePage/FactualDataAdminPreferencePage.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/l10n/Messages.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/l10n/messages.properties
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/l10n/messages_de.properties
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/FactualDataPreference.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/menu/CdmPreferencePage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/AbstractDetailedDescriptionDetailElement.java

index 67dbc491d9d6e64a0148c387b66e78e5ccc6845e..879d938f93ce5a7c62f08e75aaea57c1bf5c98a5 100755 (executable)
    </page>-->
       <page
             category="eu.etaxonomy.taxeditor.preferences.general"
-            class="eu.etaxonomy.taxeditor.preference.FactualDataPreference"
+            class="eu.etaxonomy.taxeditor.databaseAdmin.preferencePage.FactualDataAdminPreferencePage"
             id="eu.etaxonomy.taxeditor.preferences.description"
             name="%page.name.0">
       </page>
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/preferencePage/FactualDataAdminPreferencePage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/preferencePage/FactualDataAdminPreferencePage.java
new file mode 100755 (executable)
index 0000000..072e9f3
--- /dev/null
@@ -0,0 +1,59 @@
+/**
+* Copyright (C) 2019 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.databaseAdmin.preferencePage;
+
+import eu.etaxonomy.cdm.model.metadata.CdmPreference;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.taxeditor.preference.FactualDataPreference;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+
+/**
+ * @author k.luther
+ * @since 25.09.2019
+ */
+public class FactualDataAdminPreferencePage extends FactualDataPreference {
+
+
+    @Override
+    public void getValues(){
+        isAdminPreference = true;
+        pref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.ShowModifier);
+
+        allowOverride = getPrefAllowOverride(pref);
+
+        isShowModifier = getBooleanPrefValue(pref);
+
+        //get modifier freetext values
+        prefFreeText = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.ShowModifierFreeText);
+
+        allowOverrideFreeText = getPrefAllowOverride(prefFreeText);
+        isShowModifierFreeText = getBooleanPrefValue(prefFreeText);
+        }
+
+
+
+    @Override
+    public boolean performOk() {
+        if (isApply()){
+            pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.ShowModifier, isShowModifier != null? Boolean.toString(this.isShowModifier): null);
+            pref.setAllowOverride(allowOverride);
+            PreferencesUtil.setPreferenceToDB(pref);
+
+            prefFreeText = CdmPreference.NewTaxEditorInstance(PreferencePredicate.ShowModifierFreeText, isShowModifierFreeText != null? Boolean.toString(this.isShowModifierFreeText): null);
+            prefFreeText.setAllowOverride(allowOverrideFreeText);
+            PreferencesUtil.setPreferenceToDB(prefFreeText);
+
+            setApply(false);
+        }
+        return true;
+    }
+
+
+
+}
index de54a643e96e132f7b3e5d5db5f00a9a278f44a9..1672e788c93d9a355e860deddd8d26973053c9c2 100644 (file)
@@ -689,6 +689,11 @@ public class Messages extends NLS {
     public static String Preference_update;
 
 
+    public static String FactualData_showModifier;
+    public static String FactualData_showModifier_FreeText;
+    public static String FactualData_description;
+
+
 
 
 
index e4cf6eddd75a79649a4eb823278dcbd994dde7dd..7d52f9ca134f8b3b884b48b4651e8958ce5fa949 100644 (file)
@@ -520,4 +520,7 @@ SupplementalDataSourcePreferences_SHOW_NAMESPACE=Show ID Namespace
 
 OrderPreferencePage_NotAllowed=The DB preference does not allow to edit this preference locally
 Delete=Delete
-Preference_update=Update
\ No newline at end of file
+Preference_update=Update
+FactualData_showModifier=Show modifier
+FactualData_showModifier_FreeText=Show modifier freetext
+FactualData_description=If a preference is not selectable, there is a serverside preference not allowed to override.
\ No newline at end of file
index 546efe7ecf53b6d58ed01fede0a221f155a783d3..c077cc7552a89289ed2cfa084261e0edde1ce762 100644 (file)
@@ -521,3 +521,6 @@ SupplementalDataSourcePreferences_SHOW_NAMESPACE=ID-Namensraum anzeigen
 OrderPreferencePage_NotAllowed=Die Datenbank Präferenz erlaub kein Editieren
 Delete=Löschen
 Preference_update=Aktualisieren
+FactualData_showModifier=Zeige Modifier
+FactualData_showModifier_FreeText=Zeige Freitext-Modifier
+FactualData_description=Wenn die Präferenz nicht ausgewählt werden kann, dann gibt es eine serverseitige Präferenz, die das Überschreiben nicht erlaubt.
\ No newline at end of file
index 4e180ee140ae81faee06d24102959f16d0bd463c..ab690e46ac097c826fa0270b646a4dabda8e6058 100755 (executable)
@@ -8,9 +8,19 @@
 */
 package eu.etaxonomy.taxeditor.preference;
 
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Button;
+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 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;
 
 /**
@@ -18,15 +28,239 @@ import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
  * @since 28 Jan 2019
  *
  */
-public class FactualDataPreference extends CdmPreferencePage {
+public class FactualDataPreference extends CdmPreferencePage implements SelectionListener{
 
+
+    protected Boolean isShowModifier;
+
+    protected Combo comboShowModifier;
+    protected CdmPreference pref = null;
+    Button allowOverrideButton;
+
+    protected boolean allowOverride;
+    private boolean isOverride = true;
+
+    protected Boolean isShowModifierFreeText;
+
+    protected Combo comboShowModifierFreeText;
+    protected CdmPreference prefFreeText = null;
+    Button allowOverrideFreeTextButton;
+
+    protected boolean allowOverrideFreeText;
+    private boolean isOverrideFreeText = true;
+
+
+   @Override
+   public void init() {
+       super.init();
+
+
+   }
     /**
      * {@inheritDoc}
      */
     @Override
     protected Control createContents(Composite parent) {
-        noDefaultAndApplyButton();
-        return null;
+        getValues();
+
+        Composite composite = createComposite(parent);
+        Label description = new Label(composite, SWT.NULL);
+        description.setText(Messages.FactualData_description);
+
+        comboShowModifier = createBooleanCombo(composite, SHOW, DO_NOT_SHOW, PreferencePredicate.ShowModifier, Messages.FactualData_showModifier, isAdminPreference);
+        comboShowModifier.addSelectionListener(this);
+        if (this.isAdminPreference){
+            allowOverrideButton = createAllowOverrideButton(composite);
+            allowOverrideButton.setSelection(allowOverride);
+            allowOverrideButton.addSelectionListener(new SelectionAdapter(){
+                @Override
+                public void widgetSelected(SelectionEvent e) {
+                    allowOverride = !allowOverride;
+                    setApply(true);
+                    }
+            });
+        }
+        int index = 0;
+        if(isShowModifier==null){
+            comboShowModifier.select(0);
+        } else{
+            for (String itemLabel : comboShowModifier.getItems()){
+                if (itemLabel.startsWith(this.SHOW) && isShowModifier){
+                    comboShowModifier.select(index);
+                    break;
+                }
+                if (itemLabel.startsWith(DO_NOT_SHOW) && !isShowModifier){
+                    comboShowModifier.select(index);
+                    break;
+                }
+                index++;
+            }
+        }
+        if (!isAdminPreference){
+            comboShowModifier.setEnabled(allowOverride);
+        }
+
+        comboShowModifierFreeText = createBooleanCombo(composite, SHOW, DO_NOT_SHOW, PreferencePredicate.ShowModifierFreeText, Messages.FactualData_showModifier_FreeText, isAdminPreference);
+        comboShowModifierFreeText.addSelectionListener(this);
+        if (this.isAdminPreference){
+            allowOverrideFreeTextButton = createAllowOverrideButton(composite);
+            allowOverrideFreeTextButton.setSelection(allowOverrideFreeText);
+            allowOverrideFreeTextButton.addSelectionListener(new SelectionAdapter(){
+                @Override
+                public void widgetSelected(SelectionEvent e) {
+                    allowOverrideFreeText = !allowOverrideFreeText;
+                    setApply(true);
+                    }
+            });
+        }
+        index = 0;
+        if(isShowModifierFreeText==null){
+            comboShowModifierFreeText.select(0);
+        } else{
+            for (String itemLabel : comboShowModifierFreeText.getItems()){
+                if (itemLabel.startsWith(this.SHOW) && isShowModifierFreeText){
+                    comboShowModifierFreeText.select(index);
+                    break;
+                }
+                if (itemLabel.startsWith(DO_NOT_SHOW) && !isShowModifierFreeText){
+                    comboShowModifierFreeText.select(index);
+                    break;
+                }
+                index++;
+            }
+        }
+        if (!isAdminPreference){
+            comboShowModifierFreeText.setEnabled(allowOverrideFreeText);
+        }
+        return composite;
+
+    }
+
+
+    @Override
+    public boolean performOk() {
+        if (isApply()){
+            if (isShowModifier != null){
+                PreferencesUtil.setStringValue(PreferencePredicate.ShowModifier.getKey(), Boolean.toString(isShowModifier));
+                PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowModifier.getKey()), true);
+
+            }else{
+                PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowModifier.getKey()), false);
+            }
+            if (isShowModifierFreeText != null){
+                PreferencesUtil.setStringValue(PreferencePredicate.ShowModifierFreeText.getKey(), Boolean.toString(isShowModifierFreeText));
+                PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowModifierFreeText.getKey()), true);
+
+            }else{
+                PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowModifierFreeText.getKey()), false);
+            }
+
+        }
+        return true;
+    }
+
+    @Override
+    public void getValues(){
+        // get modifier values
+        pref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.ShowModifier);
+        if (pref == null){
+            pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.ShowModifier, PreferencePredicate.ShowModifier.getDefaultValue().toString());
+        }
+        allowOverride = pref.isAllowOverride();
+        isShowModifier = null;
+        String showModifierString = PreferencesUtil.getStringValue(PreferencePredicate.ShowModifier.getKey(), true);
+        if (showModifierString != null){
+            isShowModifier = Boolean.valueOf(showModifierString);
+        }
+
+        isOverride = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowModifier.getKey()));
+        if (!isOverride){
+           isShowModifier = null;
+        }
+
+        //get modifier freetext values
+        prefFreeText = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.ShowModifierFreeText);
+        if (prefFreeText == null){
+            prefFreeText = CdmPreference.NewTaxEditorInstance(PreferencePredicate.ShowModifierFreeText, PreferencePredicate.ShowModifierFreeText.getDefaultValue().toString());
+        }
+        allowOverrideFreeText = prefFreeText.isAllowOverride();
+        isShowModifierFreeText = null;
+        String showModifierStringFreeText = PreferencesUtil.getStringValue(PreferencePredicate.ShowModifierFreeText.getKey(), true);
+        if (showModifierStringFreeText != null){
+            isShowModifierFreeText = Boolean.valueOf(showModifierStringFreeText);
+        }
+
+        isOverrideFreeText = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowModifierFreeText.getKey()));
+        if (!isOverrideFreeText){
+           isShowModifierFreeText = null;
+        }
+
     }
 
+    @Override
+    protected void performDefaults() {
+       isShowModifier = null;
+       allowOverride = true;
+
+       comboShowModifier.select(0);
+       if (isAdminPreference){
+            allowOverrideButton.setSelection(allowOverride);
+        }
+
+       isShowModifierFreeText = null;
+       allowOverrideFreeText = true;
+
+       comboShowModifierFreeText.select(0);
+       if (isAdminPreference){
+            allowOverrideFreeTextButton.setSelection(allowOverrideFreeText);
+        }
+
+        setApply(true);
+        super.performDefaults();
+    }
+    @Override
+    public void widgetSelected(SelectionEvent e) {
+        if (e.getSource().equals(this.comboShowModifier)) {
+            String text = comboShowModifier.getText();
+            if (text.startsWith(Messages.Preference_Use_Default)){
+                isOverride = false;
+                isShowModifier = null;
+
+            }else if (text.equals(SHOW)){
+                isShowModifier = true;
+                isOverride = true;
+            }else{
+                isShowModifier = false;
+                isOverride = true;
+            }
+
+        }
+
+        if (e.getSource().equals(this.comboShowModifierFreeText)) {
+            String text = comboShowModifierFreeText.getText();
+            if (text.startsWith(Messages.Preference_Use_Default)){
+                isOverrideFreeText = false;
+                isShowModifierFreeText = null;
+
+            }else if (text.equals(SHOW)){
+                isShowModifierFreeText = true;
+                isOverrideFreeText = true;
+            }else{
+                isShowModifierFreeText = false;
+                isOverrideFreeText = true;
+            }
+
+        }
+        setApply(true);
+
+    }
+
+    @Override
+    public void widgetDefaultSelected(SelectionEvent e) {
+
+
+
+    }
+
+
 }
index 328b3e81258d1b50963063462c78e43e196c1554..e7d9fef20b55dd6151ccece1ede40a3ac07f9e74 100644 (file)
@@ -38,8 +38,6 @@ public class OrderPreferences extends CdmPreferencePage implements SelectionList
            protected boolean isAllowOverrideShowTaxonNodeWizard;\r
            protected Boolean isShowTaxonNodeWizard;\r
 \r
-           final String SHOW = Messages.GeneralPreference_yes;\r
-           final String DO_NOT_SHOW = Messages.GeneralPreference_no;\r
 \r
 \r
            @Override\r
index 89c58715a7fcce7e10407cf177a12c28d6942259..f0d7e9a83bed70978a31fa4300e6d2cb604839c1 100644 (file)
@@ -39,7 +39,8 @@ public abstract class CdmPreferencePage extends PreferencePage implements IE4Pre
 
     private boolean isApply;
 
-
+    protected final String SHOW = Messages.GeneralPreference_yes;
+    protected final String DO_NOT_SHOW = Messages.GeneralPreference_no;
 
     public CdmPreferencePage() {
         this(null, null);
@@ -236,6 +237,19 @@ public abstract class CdmPreferencePage extends PreferencePage implements IE4Pre
 
     }
 
+    public Boolean getBooleanPrefValue(CdmPreference pref) {
+        return pref != null? (pref.getValue()!= null?Boolean.valueOf(pref.getValue()): null): null;
+    }
+
+    public String getStringPrefValue(CdmPreference pref) {
+        return pref != null? (pref.getValue()!= null? pref.getValue(): null): null;
+    }
+
+    public boolean getPrefAllowOverride(CdmPreference pref) {
+        return pref != null? pref.isAllowOverride(): true;
+    }
+
+
 
 
 
index aa3d4a63a81e6bc092e46df7a24cbd7c408a4318..3c5e60e4b8f2a05f56976f8b543b4a14b36c4c4d 100644 (file)
@@ -18,8 +18,10 @@ import org.eclipse.swt.events.SelectionListener;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.description.State;
 import eu.etaxonomy.cdm.model.description.StateData;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
@@ -69,9 +71,11 @@ public class StateDataElement extends AbstractEntityCollectionElement<StateData>
         }
                combo_state.setTerms(stateTerms);
                combo_state.setSelection(entity.getState());
-               section_modifiers.setEntity(entity);
-               section_modifiers.setExpanded(!entity.getModifiers().isEmpty());
-               if(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {
+               if (section_modifiers != null){
+               section_modifiers.setEntity(entity);
+               section_modifiers.setExpanded(!entity.getModifiers().isEmpty());
+               }
+               if(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()) != null && text_modifyingText != null) {
             text_modifyingText.setText(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()).getText());
         }
                if(getEntity().getId()>0){
@@ -83,9 +87,14 @@ public class StateDataElement extends AbstractEntityCollectionElement<StateData>
        @Override
        public void createControls(ICdmFormElement element, int style) {
                combo_state = formFactory.createDefinedTermComboElement(TermType.State, element, "State", null, style);
-               section_modifiers = formFactory.createModifierSection(getConversationHolder(), element, StoreUtil.getSectionStyle(ModifierSection.class, StateData.class.getCanonicalName(), true));
-               section_modifiers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
-               text_modifyingText = formFactory.createTextWithLabelElement(element, "Modifying Text", null, style);
+               if (PreferencesUtil.getBooleanValue(PreferencePredicate.ShowModifier.getKey())){
+                   section_modifiers = formFactory.createModifierSection(getConversationHolder(), element, StoreUtil.getSectionStyle(ModifierSection.class, StateData.class.getCanonicalName(), true));
+                   section_modifiers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+               }
+               if (PreferencesUtil.getBooleanValue(PreferencePredicate.ShowModifierFreeText.getKey())){
+                   text_modifyingText = formFactory.createTextWithLabelElement(element, "Modifying Text", null, style);
+               }
+
        }
 
        /** {@inheritDoc} */
index eb8b6031418a68f58439f7e6f9a9fb73a5aafd02..aa8147ad3b638914626b7eca38f958b34a716760 100644 (file)
@@ -13,6 +13,8 @@ import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@@ -61,22 +63,26 @@ public abstract class AbstractDetailedDescriptionDetailElement<T extends Descrip
     protected void createModifier(ICdmFormElement formElement, DescriptionElementBase entity,
             int style) {
 
-        section_modifiers = formFactory.createModifierSection(getConversationHolder(), this, StoreUtil.getSectionStyle(ModifierSection.class, entity.getClass().getCanonicalName(), true));
-        section_modifiers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
-        section_modifiers.setEntity(entity);
-
-        text_modifyingText = formFactory.createTextWithLabelElement(this, "Modifying Text", null, style);
-        if(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {
-            text_modifyingText.setText(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()).getText());
+        if (PreferencesUtil.getBooleanValue(PreferencePredicate.ShowModifier.getKey())){
+            section_modifiers = formFactory.createModifierSection(getConversationHolder(), this, StoreUtil.getSectionStyle(ModifierSection.class, entity.getClass().getCanonicalName(), true));
+            section_modifiers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+            section_modifiers.setEntity(entity);
+        }
+        if (PreferencesUtil.getBooleanValue(PreferencePredicate.ShowModifierFreeText.getKey())){
+            text_modifyingText = formFactory.createTextWithLabelElement(this, "Modifying Text", null, style);
+            if(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {
+                text_modifyingText.setText(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()).getText());
+            }
         }
     }
 
     protected void createFreetextModifier(ICdmFormElement formElement, DescriptionElementBase entity,
             int style) {
-
-        text_modifyingText = formFactory.createTextWithLabelElement(this, "Modifying Text", null, style);
-        if(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {
-            text_modifyingText.setText(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()).getText());
+        if (PreferencesUtil.getBooleanValue(PreferencePredicate.ShowModifierFreeText.getKey())){
+            text_modifyingText = formFactory.createTextWithLabelElement(this, "Modifying Text", null, style);
+            if(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {
+                text_modifyingText.setText(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()).getText());
+            }
         }
     }