]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/ModuleNameTreeEntry.java
(refs #7264) Better updating of SCL module tree
[simantics/platform.git] / bundles / org.simantics.scl.ui / src / org / simantics / scl / ui / modulebrowser / ModuleNameTreeEntry.java
index 6f657b35134859abc3b6285c468e906047fae908..4c3bf1a2c9df1495da8bc101922c957f6fea9003 100644 (file)
@@ -1,8 +1,8 @@
 package org.simantics.scl.ui.modulebrowser;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.Map.Entry;
 
 import gnu.trove.map.hash.THashMap;
 
@@ -44,10 +44,16 @@ public class ModuleNameTreeEntry implements Comparable<ModuleNameTreeEntry> {
         return entry;
     }
     
-    public Collection<ModuleNameTreeEntry> children() {
-        ArrayList<ModuleNameTreeEntry> children = new ArrayList<ModuleNameTreeEntry>(childMap.values());
-        Collections.sort(children);
-        return children;
+    public Object[] children() {
+        Object[] result = childMap.values().toArray();
+        Arrays.sort(result);
+        return result;
+    }
+
+    public void clearModuleFlags() {
+        isModule = false;
+        for(ModuleNameTreeEntry child : childMap.values())
+            child.clearModuleFlags();
     }
 
     @Override
@@ -55,8 +61,13 @@ public class ModuleNameTreeEntry implements Comparable<ModuleNameTreeEntry> {
         return name.compareTo(o.name);
     }
     
-    @Override
-    public String toString() {
-        return name;
+    public boolean prune() {
+        Iterator<ModuleNameTreeEntry> it = childMap.values().iterator();
+        while(it.hasNext()) {
+            ModuleNameTreeEntry entry = it.next();
+            if(!entry.prune())
+                it.remove();
+        }
+        return isModule || !childMap.isEmpty();
     }
 }