fix #9040: adapt preferences to availableFor attribute of features
authorKatja Luther <k.luther@bgbm.org>
Mon, 15 Jun 2020 16:02:06 +0000 (18:02 +0200)
committerKatja Luther <k.luther@bgbm.org>
Mon, 15 Jun 2020 16:02:06 +0000 (18:02 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/FeatureDtoContentProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/AbstractGeneralTermPreference.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/FeatureMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NameFeatureMenuPreference.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/FeatureDetailElement.java

index b841f0408810a0abc1c79566862b91a5d85c654f..ff9a6637270a2d86911b2a9cf7e514d0715d29c5 100755 (executable)
@@ -98,8 +98,11 @@ public class FeatureDtoContentProvider extends TermDtoContentProvider {
                     }
                 }
             }
-
-            getVocabularyToChildTermMap().put(voc, filteredChildren);
+            if (filteredChildren.isEmpty()){
+                getVocabularyToChildTermMap().remove(voc);
+            }else{
+                getVocabularyToChildTermMap().put(voc, filteredChildren);
+            }
         }else{
             filteredChildren = children;
         }
index 31704175d1d5123a1a73ff43fedc6699467c87a2..107a915e04aafcff19aadec2ae2ec06f9b01876d 100755 (executable)
@@ -179,6 +179,8 @@ abstract public class AbstractGeneralTermPreference<T extends AbstractTermDto> e
         treeComposite.getViewer().getTree().deselectAll();
         treeComposite.getViewer().refresh();
         treeComposite.getViewer().setInput(getVocabularies());
+        Object o =treeComposite.getViewer().getInput();
+
 
         if (checkedValues != null && checkedValues != "") { //$NON-NLS-1$
             String[] listChecked = checkedValues.split(";"); //$NON-NLS-1$
index 45b9a76d032381ceab30eac14bcc252667ba9383..dee01658b2edc54bad0124ec4466c3b549428c1a 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.lang.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.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;
 
 /**
@@ -31,7 +52,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 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>
@@ -43,6 +64,66 @@ public class FeatureMenuPreferences extends GeneralTermPreferencePage{
         type = TermType.Feature;
     }
 
+    @Override
+    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
@@ -59,12 +140,46 @@ public class FeatureMenuPreferences extends GeneralTermPreferencePage{
 
     @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);
+
+    }
+
+    @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);
+        }
 
-       super.initialiseVocabularies();
-       List<TermVocabularyDto> vocs = new ArrayList<>();
-       vocs.add(CdmStore.getService(IVocabularyService.class).findVocabularyDtoByVocabularyUuid(VocabularyEnum.NameFeature.getUuid()));
-       this.getVocabularies().removeAll(vocs);
+        if (listValue == null || listValue.isEmpty() ){
+            termlist = termService.findFeatureByTitleAsDto("");
+
+        }
 
+        return new ArrayList(termlist);
     }
 
 
index f59370d974467c8588a720a8274d2cba537d77fe..3bc5624c3fc141f89ba8741dae48e18d32e5802a 100755 (executable)
@@ -9,15 +9,31 @@
 package eu.etaxonomy.taxeditor.preference.menu;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
+
+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.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.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.l10n.Messages;
 import eu.etaxonomy.taxeditor.preference.GeneralTermPreferencePage;
+import eu.etaxonomy.taxeditor.preference.LocalOrDefaultEnum;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.preference.wizard.CheckBoxTreeComposite;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -38,6 +54,65 @@ public class NameFeatureMenuPreference extends GeneralTermPreferencePage {
         type = TermType.Feature;
     }
 
+    @Override
+    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(false, true, 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
@@ -59,7 +134,9 @@ public class NameFeatureMenuPreference extends GeneralTermPreferencePage {
             getVocabularies().clear();
         }
         List<TermVocabularyDto> vocs = new ArrayList<>();
-        vocs.add(CdmStore.getService(IVocabularyService.class).findVocabularyDtoByVocabularyUuid(VocabularyEnum.NameFeature.getUuid()));
+        Set<CdmClass> availableFor = new HashSet<>();
+        availableFor.add(CdmClass.TAXON_NAME);
+        vocs = CdmStore.getService(IVocabularyService.class).findFeatureVocabularyDtoByTermTypes(availableFor);
 
         setVocabularies(vocs);
     }
index 2b631f0c2f21e1529431bbb93320cf9569acf99c..adc7a214f060419512557d5425243d208be98102 100644 (file)
@@ -101,8 +101,8 @@ public class FeatureDetailElement extends DefinedTermDetailElement<Feature> {
             sectionModifierVocabularies.setEntity(getEntity());\r
         }\r
 \r
-        availableForTaxon = formFactory.createCheckbox(formElement, "Available for Taxon", entity.isAvailableForTaxon(), style);;\r
-        availableForTaxonName = formFactory.createCheckbox(formElement, "Available for Taxon Name", entity.isAvailableForTaxonName(), style);;;\r
+        availableForTaxon = formFactory.createCheckbox(formElement, "Available for Taxon", entity.isAvailableForTaxon(), style);\r
+        availableForTaxonName = formFactory.createCheckbox(formElement, "Available for Taxon Name", entity.isAvailableForTaxonName(), style);\r
         availableForSpecimenOrObservation = formFactory.createCheckbox(formElement, "Available for Occurrence", entity.isAvailableForOccurrence(), style);\r
     }\r
 \r
@@ -152,12 +152,15 @@ public class FeatureDetailElement extends DefinedTermDetailElement<Feature> {
         }\r
            else if(eventSource == availableForSpecimenOrObservation){\r
             getEntity().setAvailableForOccurrence(availableForSpecimenOrObservation.getSelection());\r
+            System.err.println(getEntity().isAvailableForOccurrence());\r
         }\r
            else if(eventSource == availableForTaxon){\r
             getEntity().setAvailableForTaxon(availableForTaxon.getSelection());\r
+            System.err.println(getEntity().isAvailableForTaxon());\r
         }\r
            else if(eventSource == availableForTaxonName){\r
             getEntity().setAvailableForTaxonName(availableForTaxonName.getSelection());\r
+            System.err.println(getEntity().isAvailableForTaxonName());\r
         }\r
 \r
         StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);\r