Merge branch 'release/5.10.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / store / StoreUtil.java
index c711eebbd82f96c5c1a13ee2d4d5362dfafb59ca..dec333f61b7072bf2cf09dc1d45a364dc181c0cf 100644 (file)
@@ -13,19 +13,28 @@ import java.util.UUID;
 
 import org.eclipse.core.commands.operations.IOperationHistory;
 import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.jface.action.IStatusLineManager;
 import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
 import org.eclipse.ui.forms.widgets.ScrolledForm;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.term.TermNode;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
+import eu.etaxonomy.taxeditor.view.detail.CdmSectionPart;
 import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
 
 /**
@@ -138,8 +147,8 @@ public class StoreUtil extends AbstractUtility {
            return title.replace("&", "&&");
        }
 
-    public static String getPrefKey(Class<? extends AbstractFormSection> sectionClass, Object entity) {
-        return sectionClass.getCanonicalName()+";"+entity.getClass().getCanonicalName();
+    public static String getPrefKey(Class<? extends AbstractFormSection> sectionClass, String entity) {
+        return sectionClass.getCanonicalName()+";"+entity;
     }
 
     /**
@@ -155,7 +164,7 @@ public class StoreUtil extends AbstractUtility {
             boolean proceed = MessageDialog.openQuestion(null,
                     Messages.DefinedTermEditorE4_SAVE_TITLE, Messages.DefinedTermEditorE4_SAVE_MESSAGE);
             if (proceed) {
-                editor.save(null);
+                editor.save(new NullProgressMonitor());
                 return false;
             }
             else{
@@ -208,4 +217,41 @@ public class StoreUtil extends AbstractUtility {
         }
         return string1.compareTo(string2);
     }
+
+    public static int getSectionStyle(Class<? extends AbstractFormSection> clazz, String input){
+        return StoreUtil.getSectionStyle(clazz, input, false);
+    }
+
+    public static int getSectionStyle(Class<? extends AbstractFormSection> clazz, String input, boolean initiallyExpanded){
+        int style = ExpandableComposite.TWISTIE;
+        String prefKey = getPrefKey(clazz, input);
+        if(PreferencesUtil.contains(prefKey)){
+            style = PreferencesUtil.getStringValue(prefKey).equals(CdmSectionPart.EXPANDED)?style |= ExpandableComposite.EXPANDED:style;
+        }
+        else{
+            style = initiallyExpanded?style |= ExpandableComposite.EXPANDED:style;
+        }
+        return style;
+    }
+
+    public static String getPath(TermNode node){
+        String path = node.getTerm().getLabel();
+        TermNode parent = node.getParent();
+        while(parent != null && parent.getTerm()!=null){
+            path = parent.getTerm().getLabel() + "/" + path;
+            parent = parent.getParent();
+        }
+        return path;
+    }
+
+    public static void setTextWithoutModifyListeners(Text text, String string){
+        Listener[] listeners = text.getListeners(SWT.Modify);
+        for (Listener listener : listeners) {
+            text.removeListener(SWT.Modify, listener);
+        }
+        text.setText(CdmUtils.Nz(string));
+        for (Listener listener : listeners) {
+            text.addListener(SWT.Modify, listener);
+        }
+    }
 }