Merge branch 'release/5.8.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / NameDetailsViewConfiguration.java
index 92ff20eb61a426ce0463f5b3981660a15544a857..570e91cb26781909ffdfe948dad014c472ac7337 100644 (file)
@@ -6,9 +6,11 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CLabel;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 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;
@@ -19,13 +21,22 @@ import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
 
 
-public class NameDetailsViewConfiguration extends CdmPreferencePage {
+public class NameDetailsViewConfiguration extends CdmPreferencePage implements SelectionListener{
 
-    protected boolean isSimpleDetailsViewActivated;
+    /**
+     *
+     */
+    private static final String DISABLE = "Disable";
+    /**
+     *
+     */
+    private static final String ENABLE = "Enable";
+    protected Boolean isSimpleDetailsViewActivated;
        boolean isUseLocalSettings;
        protected NameDetailsConfigurator nameDetailsConfig;
     Composite localSettings ;
 
+    CdmPreference nameDetailsPref;
 
     protected boolean isShowTaxon;
     protected boolean isShowNameApprobiation ;
@@ -51,7 +62,7 @@ public class NameDetailsViewConfiguration extends CdmPreferencePage {
     private Button showSecDetail;
     private Button secEnabled;
 
-    protected Button activateCheckButton;
+    protected Combo activateCheckButton;
     protected Button allowLocalPreference;
     protected Button showTaxon;
     protected Button showLsid;
@@ -70,6 +81,8 @@ public class NameDetailsViewConfiguration extends CdmPreferencePage {
     protected Button showHybrid;
     protected Button showNameApprobiation;
 
+    Composite dbSettings;
+
     @Override
     protected Control createContents(Composite parent) {
         getValues();
@@ -84,43 +97,47 @@ public class NameDetailsViewConfiguration extends CdmPreferencePage {
                 nameDetailsConfig = new NameDetailsConfigurator(false);
             }
 
-            activateCheckButton = new Button(title, SWT.CHECK);
-            allowLocalPreference = createAllowOverrideButton(title);
-            Composite dbSettings  = new Composite(parent, SWT.NONE);
+            activateCheckButton = createBooleanCombo(title, ENABLE, DISABLE, PreferencePredicate.SimpleDetailsViewActivated, Messages.NameDetailsViewConfiguration_activateSimpleDetailsView, isAdminPreference);
+            if (isAdminPreference){
+                allowLocalPreference = createAllowOverrideButton(title);
 
-            activateCheckButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, true, 1, 1));
-            activateCheckButton.setText(Messages.NameDetailsViewConfiguration_activateSimpleDetailsView);
-            isSimpleDetailsViewActivated = nameDetailsConfig.isSimpleDetailsViewActivated();
+                allowLocalPreference.addSelectionListener(new SelectionAdapter(){
+                    @Override
+                    public void widgetSelected(SelectionEvent e) {
+                        setApply(true);
+                        if (isAdminPreference){
+                            isAllowOverride = allowLocalPreference.getSelection();
+                        }else{
+                            isOverride = allowLocalPreference.getSelection();
+                        }
 
-            activateCheckButton.addSelectionListener(new SelectionAdapter(){
-                @Override
-                public void widgetSelected(SelectionEvent e) {
-                    setApply(true);
-                    isSimpleDetailsViewActivated = activateCheckButton.getSelection();
-                    nameDetailsConfig.setSimpleDetailsViewActivated(isSimpleDetailsViewActivated);
-                    dbSettings.setEnabled(isSimpleDetailsViewActivated);
-                    PreferencesUtil.recursiveSetEnabled(dbSettings, isSimpleDetailsViewActivated);
-                    if (isSimpleDetailsViewActivated){
-                        showSecDetail.setEnabled(isShowTaxon);
-                        secEnabled.setEnabled(isShowTaxon);
                     }
+                });
 
-                 }
-             });
+            }
+            dbSettings = new Composite(parent, SWT.NONE);
 
+//            activateCheckButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, true, 1, 1));
+//            activateCheckButton.setText(Messages.NameDetailsViewConfiguration_activateSimpleDetailsView);
+            isSimpleDetailsViewActivated = nameDetailsConfig.isSimpleDetailsViewActivated();
 
-            allowLocalPreference.addSelectionListener(new SelectionAdapter(){
-                @Override
-                public void widgetSelected(SelectionEvent e) {
-                    setApply(true);
-                    if (isAdminPreference){
-                        isAllowOverride = allowLocalPreference.getSelection();
-                    }else{
-                        isOverride = allowLocalPreference.getSelection();
-                    }
+            activateCheckButton.addSelectionListener(this);
+//            new SelectionAdapter(){
+//                @Override
+//                public void widgetSelected(SelectionEvent e) {
+//                    setApply(true);
+//                    isSimpleDetailsViewActivated = activateCheckButton.getSelectionIndex() == 0? true:false;
+//                    nameDetailsConfig.setSimpleDetailsViewActivated(isSimpleDetailsViewActivated);
+//                    dbSettings.setEnabled(isSimpleDetailsViewActivated);
+//                    PreferencesUtil.recursiveSetEnabled(dbSettings, isSimpleDetailsViewActivated);
+//                    if (isSimpleDetailsViewActivated){
+//                        showSecDetail.setEnabled(isShowTaxon);
+//                        secEnabled.setEnabled(isShowTaxon);
+//                    }
+//
+//                 }
+//             });
 
-                }
-            });
 
             dbSettings.setLayout(new GridLayout());
             dbSettings.setEnabled(isSimpleDetailsViewActivated);
@@ -396,7 +413,9 @@ public class NameDetailsViewConfiguration extends CdmPreferencePage {
     public boolean performOk() {
         if (nameDetailsConfig != null){
             PreferencesUtil.setStringValue(PreferencePredicate.NameDetailsView.getKey(), nameDetailsConfig.toString());
-            PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.NameDetailsView.getKey()), isOverride);
+            if (nameDetailsPref == null || !nameDetailsConfig.toString().equals(nameDetailsPref.getValue())) {
+                PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.NameDetailsView.getKey()), true);
+            }
         }
 
         return true;
@@ -406,24 +425,31 @@ public class NameDetailsViewConfiguration extends CdmPreferencePage {
     @Override
     public void getValues(){
         if (nameDetailsConfig == null){
-            CdmPreference nameDetailsPref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.NameDetailsView);
+            nameDetailsPref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.NameDetailsView);
             isAdminPreference = false;
             isAllowOverride = true;
             if (nameDetailsPref != null){
                 isAllowOverride = nameDetailsPref.isAllowOverride();
 
             }
-            isOverride = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.NameDetailsView.getKey()));
+            isOverride = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.NameDetailsView.getKey()), true) != null? PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.NameDetailsView.getKey()), true): false;
             nameDetailsConfig = PreferencesUtil.getPreferredNameDetailsConfiguration(true);
         }
     }
 
     protected void setButtonSelections(){
-        activateCheckButton.setSelection(isSimpleDetailsViewActivated);;
+
+        int index = 0;
+        if (isSimpleDetailsViewActivated != null){
+            if (isSimpleDetailsViewActivated){
+                index = 1;
+            }else{
+                index = 2;
+            }
+        }
+        activateCheckButton.select(index);
         if (isAdminPreference){
             allowLocalPreference.setSelection(isAllowOverride);
-        }else{
-            allowLocalPreference.setSelection(isOverride);
         }
         showTaxon.setSelection(isShowTaxon);
         showLsid.setSelection(isShowLSID);
@@ -473,4 +499,47 @@ public class NameDetailsViewConfiguration extends CdmPreferencePage {
         super.performDefaults();
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void widgetSelected(SelectionEvent e) {
+        if (e.getSource().equals(activateCheckButton)){
+            String text = activateCheckButton.getText();
+            if(text.equals(Messages.Preference_Use_Default)){
+                isSimpleDetailsViewActivated = null;
+                if (isAdminPreference){
+                    nameDetailsPref.setAllowOverride(true);
+                    allowLocalPreference.setSelection(true);
+                }
+                return;
+            }
+            if (text.equals(ENABLE)){
+                isSimpleDetailsViewActivated = true;
+
+            }else{
+                isSimpleDetailsViewActivated = false;
+            }
+            nameDetailsConfig.setSimpleDetailsViewActivated(isSimpleDetailsViewActivated);
+            dbSettings.setEnabled(isSimpleDetailsViewActivated);
+            PreferencesUtil.recursiveSetEnabled(dbSettings, isSimpleDetailsViewActivated);
+            if (isSimpleDetailsViewActivated){
+              showSecDetail.setEnabled(isShowTaxon);
+              secEnabled.setEnabled(isShowTaxon);
+            }
+            setApply(true);
+        }
+
+
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void widgetDefaultSelected(SelectionEvent e) {
+        // TODO Auto-generated method stub
+
+    }
+
 }