(refs #7362) Creation of new SCL modules in SCL module browser
[simantics/platform.git] / bundles / org.simantics.scl.ui / src / org / simantics / scl / ui / modulebrowser / SCLModuleTreeContentProvider.java
1 package org.simantics.scl.ui.modulebrowser;
2
3 import org.eclipse.jface.viewers.ITreeContentProvider;
4 import org.eclipse.jface.viewers.Viewer;
5 import org.simantics.scl.compiler.module.repository.ModuleRepository;
6
7 public class SCLModuleTreeContentProvider implements ITreeContentProvider {
8     private ModuleRepository repository;
9     private final ModuleNameTreeEntry rootEntry = new ModuleNameTreeEntry(null, "", "");
10     
11     public void update() {
12         rootEntry.clearModuleFlags();
13         if(repository != null) {
14             for(String moduleName : repository.getSourceRepository().getModuleNames()) {
15                 rootEntry.addModule(moduleName);
16             }
17         }
18         rootEntry.prune();
19     }
20
21     @Override
22     public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
23         this.repository = (ModuleRepository)newInput;
24         update();
25     }
26
27     @Override
28     public Object[] getElements(Object inputElement) {
29         return rootEntry.children();
30     }
31
32     @Override
33     public Object[] getChildren(Object parentElement) {
34         ModuleNameTreeEntry entry = (ModuleNameTreeEntry)parentElement;
35         return entry.children();
36     }
37
38     @Override
39     public Object getParent(Object element) {
40         ModuleNameTreeEntry entry = (ModuleNameTreeEntry)element;
41         return entry.parent;
42     }
43
44     @Override
45     public boolean hasChildren(Object element) {
46         ModuleNameTreeEntry entry = (ModuleNameTreeEntry)element;
47         return !entry.childMap.isEmpty();
48     }
49
50     @Override
51     public void dispose() {
52     }
53
54 }