fix #8226: add new preferences for modifiers
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / FactualDataPreference.java
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) {
+
+
+
+    }
+
+
 }