X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.ui%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fui%2Fmodulebrowser%2FSCLModuleTree.java;fp=bundles%2Forg.simantics.scl.ui%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fui%2Fmodulebrowser%2FSCLModuleTree.java;h=43e6781d406e5d2942b83e0db7f798770d4e00a3;hb=0b1f301a6a42beea2716b3268a402db125b927eb;hp=0000000000000000000000000000000000000000;hpb=8c6f87444ee37d6e3cc3316bf7e707d4f6631578;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/SCLModuleTree.java b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/SCLModuleTree.java new file mode 100644 index 000000000..43e6781d4 --- /dev/null +++ b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/SCLModuleTree.java @@ -0,0 +1,68 @@ +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) { + this.rootEntry = createModuleTreeEntry((Collection)newInput); + } + + @Override + public Object[] getElements(Object inputElement) { + 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(); + + public SCLModuleTree(Composite parent, int style, ModuleRepository repository) { + super(parent, style); + this.repository = repository; + setLabelProvider(labelProvider); + setContentProvider(contentProvider); + setAutoExpandLevel(1); + setInput(repository.getSourceRepository().getModuleNames()); + } + + private static ModuleNameTreeEntry createModuleTreeEntry(Collection names) { + ModuleNameTreeEntry root = new ModuleNameTreeEntry(null, "", ""); + for(String name : names) + root.addModule(name); + return root; + } + +}