add new class openDistributionPerAreaStatusAdminWizardHandler - continue
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / PublishFlagLocalPreference.java
index b5b45976e9f94f3d6cbdcfad448b9486836a7dae..a3fdf2d8986be946fea0631b9ed4f76ddbf78494 100755 (executable)
@@ -8,9 +8,6 @@
 */
 package eu.etaxonomy.taxeditor.preference;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CLabel;
 import org.eclipse.swt.events.SelectionAdapter;
@@ -41,6 +38,7 @@ public class PublishFlagLocalPreference extends CdmPreferencePage {
     Button allowOverrideButton;
 
     protected boolean allowOverride;
+    private boolean override = true;
 
 
    @Override
@@ -69,27 +67,18 @@ public class PublishFlagLocalPreference extends CdmPreferencePage {
             return composite;
         }
 
-
-//        description.setText(Messages.PublishFlagPreference_description);
-//        description.setLayoutData(createTextGridData());
-//        publishFlagBehaviour = new Combo(composite, SWT.READ_ONLY);
-        List<String> enumValues = new ArrayList();
-
         publishFlagBehaviour = createCombo(composite, PublishEnum.values(), PreferencePredicate.DefaultBehaviourForPublishFlag, Messages.PublishFlagPreference_description, isAdminPreference);
-
-//        publishFlagBehaviour.setFont(parent.getFont());
-//        for(PublishEnum display: PublishEnum.values()){
-//            if (pref.getValue().equals(display.getKey())){
-//                publishFlagBehaviour.add(display.getLabel() + " (Default)");
-//            }
-//            else
-//        }
-
         publishFlagBehaviour.addSelectionListener(new SelectionListener() {
 
             @Override
             public void widgetSelected(SelectionEvent e) {
                 setApply(true);
+                if (!publishFlagBehaviour.getText().startsWith(Messages.Preference_Use_Default)){
+                    publishBehaviour = (PublishEnum)publishFlagBehaviour.getData(publishFlagBehaviour.getText());
+                }else{
+                    publishBehaviour = null;
+                }
+
             }
 
             @Override
@@ -100,7 +89,6 @@ public class PublishFlagLocalPreference extends CdmPreferencePage {
         });
         if (this.isAdminPreference){
             allowOverrideButton = createAllowOverrideButton(composite);
-            allowOverrideButton.setText(Messages.GeneralPreference_override);
             allowOverrideButton.setSelection(allowOverride);
             allowOverrideButton.addSelectionListener(new SelectionAdapter(){
                 @Override
@@ -112,13 +100,17 @@ public class PublishFlagLocalPreference extends CdmPreferencePage {
         }
         int index = 0;
 
-
-        for (String itemLabel : publishFlagBehaviour.getItems()){
-           if (itemLabel.startsWith(publishBehaviour.getLabel())){
-                publishFlagBehaviour.select(index);
-                break;
+        if(publishBehaviour==null){
+            publishFlagBehaviour.select(0);
+        }
+        else{
+            for (String itemLabel : publishFlagBehaviour.getItems()){
+                if (itemLabel.startsWith(publishBehaviour.getLabel())){
+                    publishFlagBehaviour.select(index);
+                    break;
+                }
+                index++;
             }
-            index++;
         }
 
         return composite;
@@ -128,17 +120,19 @@ public class PublishFlagLocalPreference extends CdmPreferencePage {
 
     @Override
     public boolean performOk() {
-        if (publishFlagBehaviour != null){
-            String text = publishFlagBehaviour.getText();
-            for (PublishEnum display: PublishEnum.values()){
-                if (text.startsWith(display.getLabel())){
-                    text = display.getKey();
-                    break;
+        if (isApply()){
+            if (publishBehaviour != null){
+                String text = publishFlagBehaviour.getText();
+                for (PublishEnum display: PublishEnum.values()){
+                    if (text.startsWith(display.getLabel())){
+                        text = display.getKey();
+                        break;
+                    }
+                }
+                PreferencesUtil.setStringValue(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey(), text);
+                if (pref == null || !pref.getValue().equals(text)){
+                    PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey()), true);
                 }
-            }
-            PreferencesUtil.setStringValue(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey(), text);
-            if (pref == null || !pref.getValue().equals(text)){
-                PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey()), true);
             }else{
                 PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey()), false);
             }
@@ -148,29 +142,43 @@ public class PublishFlagLocalPreference extends CdmPreferencePage {
 
     @Override
     public void getValues(){
-
+        publishBehaviour = null;
         try{
-            publishBehaviour = PublishEnum.valueOf(PreferencesUtil.getStringValue(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey(), true));
+            String publishString = PreferencesUtil.getStringValue(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey(), true);
+
+            if (publishString != null){
+                publishBehaviour = PublishEnum.valueOf(publishString);
+            }
         }catch (IllegalArgumentException e){
             publishBehaviour = PublishEnum.InheritFromParent;
         }
+
+        override = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey()));
+        if (!override){
+            publishBehaviour = null;
+        }
     }
 
     @Override
     protected void performDefaults() {
-        publishBehaviour = PublishEnum.valueOf(pref.getValue());
+        publishBehaviour = null;
         allowOverride = true;
         int index = 0;
+
         for (String itemLabel : publishFlagBehaviour.getItems()){
-            if (itemLabel.startsWith(publishBehaviour.getLabel())){
+            if (itemLabel.startsWith(Messages.Preference_Use_Default)){
                 publishFlagBehaviour.select(index);
                 break;
             }
             index++;
         }
-
+        if (isAdminPreference){
+            allowOverrideButton.setSelection(allowOverride);
+        }
+        setApply(true);
         super.performDefaults();
     }
 
 
+
 }