]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/SCLModuleTree.java
(refs #7264) Better updating of SCL module tree
[simantics/platform.git] / bundles / org.simantics.scl.ui / src / org / simantics / scl / ui / modulebrowser / SCLModuleTree.java
index acaffd0f565103cd2301e006794f84304961a574..8355c6dd3a6a642703ebd91b952bb76838593fe6 100644 (file)
@@ -1,75 +1,28 @@
 package org.simantics.scl.ui.modulebrowser;
 
-import java.util.Collection;
-
-import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.widgets.Composite;
 import org.simantics.scl.compiler.module.repository.ModuleRepository;
 
 public class SCLModuleTree extends TreeViewer {
-
-    private final ModuleRepository repository;
     
-    
-    private ITreeContentProvider contentProvider = new ITreeContentProvider() {
-        ModuleNameTreeEntry rootEntry;
-        
-        @Override
-        public void dispose() {
-        }
-
-        @Override
-        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-            if(newInput != null)
-                this.rootEntry = createModuleTreeEntry((Collection<String>)newInput);
-        }
-
-        @Override
-        public Object[] getElements(Object inputElement) {
-            if(rootEntry == null)
-                return new Object[0];
-            return rootEntry.children().toArray();
-        }
-
-        @Override
-        public Object[] getChildren(Object parentElement) {
-            return ((ModuleNameTreeEntry)parentElement).children().toArray();
-        }
-
-        @Override
-        public Object getParent(Object element) {
-            return ((ModuleNameTreeEntry)element).parent;
-        }
-
-        @Override
-        public boolean hasChildren(Object element) {
-            return !((ModuleNameTreeEntry)element).childMap.isEmpty();
-        }
-    };
-    
-    private LabelProvider labelProvider = new LabelProvider();
+    private LabelProvider labelProvider = new SCLModuleTreeLabelProvider();
+    private SCLModuleTreeContentProvider contentProvider;
     
     public SCLModuleTree(Composite parent, int style, ModuleRepository repository) {
         super(parent, style);
-        this.repository = repository;
+        this.contentProvider = new SCLModuleTreeContentProvider();
+        setUseHashlookup(true);
         setLabelProvider(labelProvider);
         setContentProvider(contentProvider);
         setAutoExpandLevel(1);
-        recalculateInput();
-    }
-
-    private static ModuleNameTreeEntry createModuleTreeEntry(Collection<String> names) {
-        ModuleNameTreeEntry root = new ModuleNameTreeEntry(null, "", "");
-        for(String name : names)
-            root.addModule(name);
-        return root;
+        setInput(repository);
     }
 
     public void recalculateInput() {
-        setInput(repository.getSourceRepository().getModuleNames());
+        contentProvider.update();
+        refresh();
     }
 
 }