Merge branch 'release/5.18.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / menu / FeatureMenuPreferences.java
index 0cbfebed4e7ae1f85383568f376aad1a609fea9a..eb5377d2b22de1f914770e4c10a661bb4e4e8235 100644 (file)
@@ -9,15 +9,36 @@
 package eu.etaxonomy.taxeditor.preference.menu;
 
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
+import java.util.UUID;
 
+import org.apache.commons.lang3.StringUtils;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
+import eu.etaxonomy.cdm.model.common.CdmClass;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.term.TermType;
-import eu.etaxonomy.cdm.model.term.VocabularyEnum;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
+import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
+import eu.etaxonomy.taxeditor.editor.definedterm.FeatureDtoContentProvider;
+import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoLabelProvider;
 import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;
-import eu.etaxonomy.taxeditor.preference.GeneralTermPreference;
+import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.preference.GeneralTermPreferencePage;
+import eu.etaxonomy.taxeditor.preference.LocalOrDefaultEnum;
+import eu.etaxonomy.taxeditor.preference.wizard.CheckBoxTreeComposite;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -28,27 +49,83 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @created 17.09.2008
  * @version 1.0
  */
-public class FeatureMenuPreferences extends GeneralTermPreference{
+public class FeatureMenuPreferences extends GeneralTermPreferencePage{
 
     /** Constant <code>PLUGIN_ID="eu.etaxonomy.taxeditor.preferences.feat"{trunked}</code> */
-    public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.nameFeature"; //$NON-NLS-1$
+    public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.taxonFeature"; //$NON-NLS-1$
 
     /**
      * <p>Constructor for FeatureMenuPreference.</p>
      */
     public FeatureMenuPreferences() {
         super();
-        setLocalPref(true);
+        isAdminPreference = false;
         setPredicate(PreferencePredicate.TaxonFeatures);
         type = TermType.Feature;
     }
 
     @Override
-    protected List<TermVocabularyDto> getVocabulariesFromPreference() {
-        // TODO Auto-generated method stub
-        return null;
+    protected Control createContents(Composite parent) {
+        Composite container = new Composite(parent, SWT.NULL);
+        getPreferenceValues();
+        if (isLocalPref() && !allowOverride){
+            final CLabel description = new CLabel(parent, SWT.NULL);
+            description.setText(Messages.NameDetailsViewConfiguration_description_not_available);
+            this.setDefaultButtonActivated(false);
+            return parent;
+
+        }
+        final GridLayout gridLayout = new GridLayout();
+        gridLayout.numColumns = 2;
+        container.setLayout(gridLayout);
+        parent.setLayout(new GridLayout());
+        useLocalOrAdmin = new Combo(parent, SWT.BORDER | SWT.READ_ONLY);
+        if (!isAdminPreference){
+            useLocalOrAdmin.add(LocalOrDefaultEnum.Default.getLabel(), 0);
+            useLocalOrAdmin.add(LocalOrDefaultEnum.Local.getLabel(), 1);
+
+        }else{
+            useLocalOrAdmin.add(LocalOrDefaultEnum.AllowOverride.getLabel(), 0);
+            useLocalOrAdmin.add(LocalOrDefaultEnum.Database.getLabel(), 1);
+        }
+
+
+        treeComposite = new CheckBoxTreeComposite(container, new FeatureDtoContentProvider(true, false, false), new TermDtoLabelProvider(), SWT.SCROLL_PAGE);
+        treeComposite.getViewer().setComparator(new DefinedTermSorter());
+        rememberCheckedValues(getCheckedValuesFromPreferences());
+
+        if (isLocalPref()){
+            if (isOverride){
+                useLocalOrAdmin.select(1);
+            }else{
+                useLocalOrAdmin.select(0);
+                if (treeComposite.getViewer().getTree() != null && treeComposite.getViewer().getTree().getTopItem() != null) {
+                    treeComposite.getViewer().getTree().setSelection(treeComposite.getViewer().getTree().getTopItem());
+                }
+                treeComposite.setEnabled(false);
+
+                //treeComposite.getViewer().getTree().getVerticalBar().setEnabled(true);
+            }
+        }else{
+            if (allowOverride){
+                useLocalOrAdmin.select(0);
+            }else{
+                useLocalOrAdmin.select(1);
+            }
+        }
+        useLocalOrAdmin.addSelectionListener(this);
+
+        GridData data = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
+        data.heightHint = 300;
+        treeComposite.setLayoutData(data);
+        treeComposite.getViewer().addSelectionChangedListener(this);
+
+        return container;
+
     }
 
+
+
     @Override
     public boolean performOk(){
         if (isApply()){
@@ -63,12 +140,46 @@ public class FeatureMenuPreferences extends GeneralTermPreference{
 
     @Override
     protected void initialiseVocabularies() {
+        if (getVocabularies() != null) {
+            getVocabularies().clear();
+        }
+        List<TermVocabularyDto> vocs = new ArrayList<>();
+        Set<CdmClass> availableFor = new HashSet<>();
+        availableFor.add(CdmClass.TAXON);
+        vocs = CdmStore.getService(IVocabularyService.class).findFeatureVocabularyDtoByTermTypes(availableFor);
+
+        setVocabularies(vocs);
+//       super.initialiseVocabularies();
+
+
+
+//       List<TermVocabularyDto> vocs = new ArrayList<>();
+//       vocs.add(CdmStore.getService(IVocabularyService.class).findVocabularyDtoByVocabularyUuid(VocabularyEnum.NameFeature.getUuid()));
+//       this.getVocabularies().removeAll(vocs);
+
+    }
 
-       super.initialiseVocabularies();
-       List<TermVocabularyDto> vocs = new ArrayList<>();
-       vocs.add(CdmStore.getService(IVocabularyService.class).findVocabularyDtoByVocabularyUuid(VocabularyEnum.NameFeature.getUuid()));
-       this.getVocabularies().removeAll(vocs);
+    @Override
+    protected List<TermDto> getTermsFromStringValues(List<String> listValue) {
+        Collection<TermDto> termlist = new ArrayList<>();
+        ITermService termService = CdmStore.getService(ITermService.class);
+        List<UUID> uuidList = new ArrayList();
+        for (String s : listValue) {
+            if (!StringUtils.isBlank(s)){
+                UUID uuid = UUID.fromString(s);
+                uuidList.add(uuid);
+            }
+        }
+        if (!uuidList.isEmpty()){
+            termlist = termService.findFeatureByUUIDsAsDto(uuidList);
+        }
+
+        if (listValue == null || listValue.isEmpty() ){
+            termlist = termService.findFeatureByTitleAsDto("");
+
+        }
 
+        return new ArrayList(termlist);
     }