Merge branch 'release/5.8.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / PublishFlagLocalPreference.java
index 995571d161708d0af3b09277125282b62041e3ad..d33e3d265f63f88ef07c67115fac9aae0af5aade 100755 (executable)
@@ -8,6 +8,9 @@
 */
 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;
@@ -58,22 +61,29 @@ public class PublishFlagLocalPreference extends CdmPreferencePage {
         }
         allowOverride = pref.isAllowOverride();
         Composite composite = createComposite(parent);
-        final CLabel description = new CLabel(composite, SWT.NULL);
+
         if (!allowOverride && !isAdminPreference){
+            final CLabel description = new CLabel(composite, SWT.NULL);
             description.setText(Messages.PublishFlagPreference_description_not_allowed);
             description.setLayoutData(createTextGridData());
             return composite;
         }
 
 
-        description.setText(Messages.PublishFlagPreference_description);
-        description.setLayoutData(createTextGridData());
-        publishFlagBehaviour = new Combo(composite, SWT.READ_ONLY);
+//        description.setText(Messages.PublishFlagPreference_description);
+//        description.setLayoutData(createTextGridData());
+//        publishFlagBehaviour = new Combo(composite, SWT.READ_ONLY);
+        List<String> enumValues = new ArrayList();
 
-        publishFlagBehaviour.setFont(parent.getFont());
-        for(PublishEnum display: PublishEnum.values()){
-            publishFlagBehaviour.add(display.getLabel());
-        }
+        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() {
 
@@ -88,26 +98,31 @@ public class PublishFlagLocalPreference extends CdmPreferencePage {
 
             }
         });
-        allowOverrideButton = createAllowOverrideButton(composite);
-        allowOverrideButton.setText(Messages.GeneralPreference_override);
-        allowOverrideButton.setSelection(allowOverride);
-        allowOverrideButton.addSelectionListener(new SelectionAdapter(){
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                allowOverride = !allowOverride;
-                setApply(true);
-                }
-        });
-
+        if (this.isAdminPreference){
+            allowOverrideButton = createAllowOverrideButton(composite);
+            allowOverrideButton.setText(Messages.GeneralPreference_override);
+            allowOverrideButton.setSelection(allowOverride);
+            allowOverrideButton.addSelectionListener(new SelectionAdapter(){
+                @Override
+                public void widgetSelected(SelectionEvent e) {
+                    allowOverride = !allowOverride;
+                    setApply(true);
+                    }
+            });
+        }
         int index = 0;
 
-
-        for (String itemLabel : publishFlagBehaviour.getItems()){
-            if (itemLabel.equalsIgnoreCase(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;
@@ -120,13 +135,17 @@ public class PublishFlagLocalPreference extends CdmPreferencePage {
         if (publishFlagBehaviour != null){
             String text = publishFlagBehaviour.getText();
             for (PublishEnum display: PublishEnum.values()){
-                if (display.getLabel().equals(text)){
+                if (text.startsWith(display.getLabel())){
                     text = display.getKey();
                     break;
                 }
             }
             PreferencesUtil.setStringValue(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey(), text);
-            PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey()), allowOverride);
+            if (pref == null || !pref.getValue().equals(text)){
+                PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey()), true);
+            }else{
+                PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey()), false);
+            }
         }
         return true;
     }
@@ -143,11 +162,11 @@ public class PublishFlagLocalPreference extends CdmPreferencePage {
 
     @Override
     protected void performDefaults() {
-        publishBehaviour = (PublishEnum)PreferencePredicate.DefaultBehaviourForPublishFlag.getDefaultValue();
+        publishBehaviour = PublishEnum.valueOf(pref.getValue());
         allowOverride = true;
         int index = 0;
         for (String itemLabel : publishFlagBehaviour.getItems()){
-            if (itemLabel.equalsIgnoreCase(publishBehaviour.getLabel())){
+            if (itemLabel.startsWith(publishBehaviour.getLabel())){
                 publishFlagBehaviour.select(index);
                 break;
             }