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() { } }