package tool.search;
import java.util.List;
import java.util.Set;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import tool.model.ToolCType;
import tool.model.ToolClass;
import tool.model.ToolComponent;
import tool.model.ToolInterface;
import tool.model.ToolPlan;
import tool.model.ToolType;
import tool.model.grammar.IErrorReporter;
public class SupplierContentProvider implements ITreeContentProvider {
private IProject project;
public SupplierContentProvider(IProject project){
super();
this.project = project;
}
@Override
public void dispose() {
}
@Override
public void inputChanged(Viewer viewer, Object arg1, Object arg2) {
}
@Override
public Object[] getChildren(Object parentElement) {
if (parentElement instanceof ToolPlan){
ToolPlan plan = (ToolPlan)parentElement;
List<ToolClass> classes = plan.getClasses();
List<ToolInterface> interfaces = plan.getInterfaces();
List<ToolCType> cTypes = plan.getCTypes();
Object[] kids = new Object[classes.size() + interfaces.size() + cTypes.size()];
int j = 0;
for (ToolType cls : classes){
kids[j] = cls;
j++;
}
for (ToolInterface inter : interfaces){
kids[j] = inter;
j++;
}
for (ToolCType ct : cTypes){
kids[j] = ct;
j++;
}
return kids;
} if (parentElement instanceof Set<?>){
Set<?> planSet = (Set<?>)parentElement;
/*
* assume we have a list of supplier plan names
*/
Object[] kids = new Object[planSet.size()];
int i = 0;
for (Object obj : planSet){
IErrorReporter plan = ToolPlan.fetch(project, obj.toString());
kids[i] = plan;
i++;
}
return kids;
}
return new Object[0];
}
@Override
public Object[] getElements(Object object) {
return getChildren(object);
}
@Override
public Object getParent(Object object) {
if (object instanceof ToolComponent){
return ((ToolComponent)object).getParent();
}
return null;
}
@Override
public boolean hasChildren(Object object) {
if (object instanceof ToolPlan)
return true;
return false;
}
}