smaller changes for feature tree handling in factual data view
authorKatja Luther <k.luther@bgbm.org>
Wed, 12 Aug 2020 12:40:56 +0000 (14:40 +0200)
committerKatja Luther <k.luther@bgbm.org>
Wed, 12 Aug 2020 12:40:56 +0000 (14:40 +0200)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveContentProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/FactualDataPartE4.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/handler/DynamicFeatureMenuE4.java

index f46841b3b177ed63c1be88e9885721992b8f7e38..92174987be911a5ad746227c60a96edcdf7b9859 100644 (file)
@@ -147,12 +147,12 @@ public class DescriptiveContentProvider implements ITreeContentProvider {
        }
 
        private FeatureNodeContainerTree getContainerTreeForDesription(DescriptionBase<?> description){
-//             if(! featureNodeContainerCache.containsKey(description)){
-//                     FeatureNodeContainerTree containerTree = new FeatureNodeContainerTree(description, getFeatureTree(description));
-//                     featureNodeContainerCache.put(description, containerTree);
-//             }
-//             return featureNodeContainerCache.get(description);
-               return new FeatureNodeContainerTree(description, getFeatureTree(description));
+               if(! featureNodeContainerCache.containsKey(description)){
+                       FeatureNodeContainerTree containerTree = new FeatureNodeContainerTree(description, getFeatureTree(description));
+                       featureNodeContainerCache.put(description, containerTree);
+               }
+               return featureNodeContainerCache.get(description);
+//             return
        }
 
        @Override
@@ -176,7 +176,7 @@ public class DescriptiveContentProvider implements ITreeContentProvider {
         * @param description
         * @return
         */
-       private TermTree getFeatureTree(DescriptionBase description){
+       public TermTree getFeatureTree(DescriptionBase description){
 
                TermTree<?> featureTree = null;
 
index 6b36b52363eeca7febcbc5e2f547851c2c70c8b9..642968ae3d5f3231e90e542f5f78f503fe1212ee 100644 (file)
@@ -209,6 +209,11 @@ public class FactualDataPartE4 extends AbstractCdmEditorPartE4
             DescriptionBase description = descriptionElement.getInDescription();
             FeatureNodeContainerTree containerTree = featureNodeContainerCache.get(description);
             FeatureNodeContainer featureNodeContainer = containerTree.getFeatureNodeContainerForDescriptionElement(descriptionElement);
+            if (featureNodeContainer == null){
+                containerTree = new FeatureNodeContainerTree(description, provider.getFeatureTree(description));
+                featureNodeContainerCache.put(description, containerTree);
+                featureNodeContainer = containerTree.getFeatureNodeContainerForDescriptionElement(descriptionElement);
+            }
             ((AbstractTreeViewer) viewer).expandToLevel(featureNodeContainer, 2);
             StructuredSelection selection = new StructuredSelection(object);
             viewer.setSelection(selection, true);
index fd09edeebc82fac11af6eed8166ae049c0e908de..f362f7410a1d3c9140d3b48958c1e25f109abb5f 100644 (file)
@@ -69,8 +69,14 @@ public class DynamicFeatureMenuE4 {
 
             // add possible children to the menu
             for (TermNode<?> childNode : featureNode.getChildNodes()) {
-                createMenuItem(menu, childNode.getTerm(), globalLanguage);
+                TermTree<?> featureTree = getFeatureTree(((FeatureNodeContainer) selectedElement).getDescription());
+                featureTree = PreferencesUtil.getPreferredFeatureTreeForNameDescription(false);
+
+                if (featureTree != null && featureTree.getRootChildren().contains(childNode.getTerm() )){
+                        createMenuItem(menu, childNode.getTerm(), globalLanguage);
+                }
             }
+
         } else if (selectedElement instanceof DescriptionElementBase) {
             Feature feature = ((DescriptionElementBase) selectedElement)
                     .getFeature();