]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/SCLModuleTreeContentProvider.java
(refs #7250) Merging master, minor CHR bugfixes
[simantics/platform.git] / bundles / org.simantics.scl.ui / src / org / simantics / scl / ui / modulebrowser / SCLModuleTreeContentProvider.java
diff --git a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/SCLModuleTreeContentProvider.java b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/SCLModuleTreeContentProvider.java
new file mode 100644 (file)
index 0000000..d73639c
--- /dev/null
@@ -0,0 +1,54 @@
+package org.simantics.scl.ui.modulebrowser;
+
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.simantics.scl.compiler.module.repository.ModuleRepository;
+
+public class SCLModuleTreeContentProvider implements ITreeContentProvider {
+    private ModuleRepository repository;
+    private final ModuleNameTreeEntry rootEntry = new ModuleNameTreeEntry(null, "", "");
+    
+    public void update() {
+        rootEntry.clearModuleFlags();
+        if(repository != null) {
+            for(String moduleName : repository.getSourceRepository().getModuleNames()) {
+                rootEntry.addModule(moduleName);
+            }
+        }
+        rootEntry.prune();
+    }
+
+    @Override
+    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+        this.repository = (ModuleRepository)newInput;
+        update();
+    }
+
+    @Override
+    public Object[] getElements(Object inputElement) {
+        return rootEntry.children();
+    }
+
+    @Override
+    public Object[] getChildren(Object parentElement) {
+        ModuleNameTreeEntry entry = (ModuleNameTreeEntry)parentElement;
+        return entry.children();
+    }
+
+    @Override
+    public Object getParent(Object element) {
+        ModuleNameTreeEntry entry = (ModuleNameTreeEntry)element;
+        return entry.parent;
+    }
+
+    @Override
+    public boolean hasChildren(Object element) {
+        ModuleNameTreeEntry entry = (ModuleNameTreeEntry)element;
+        return !entry.childMap.isEmpty();
+    }
+
+    @Override
+    public void dispose() {
+    }
+
+}