package com.hundsun.ares.studio.ui;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.jface.viewers.ITreeContentProvider;
import com.hundsun.ares.studio.core.ARESCore;
import com.hundsun.ares.studio.core.IARESModel;
import com.hundsun.ares.studio.core.IARESProject;
public class CommonNavigatorContentProvider extends ARESNavigatorContentProvider {
private DelegateContentProvider delegateContentProvider;
public CommonNavigatorContentProvider() {
}
@Override
public ITreeContentProvider getDelegateContentProvider() {
if (delegateContentProvider == null) {
delegateContentProvider = new DelegateContentProvider();
}
return delegateContentProvider;
}
}
class DelegateContentProvider extends CommonElementContentProvider {
private Object input;
public Object getParent(Object element) {
Object parent= super.getParent(element);
if (parent instanceof IARESModel) {
//return parent.equals(getViewerInput()) ? fRealInput : parent;
return input;
}
if (parent instanceof IARESProject) {
return ((IARESProject)parent).getProject();
}
return parent;
}
@Override
public Object[] getElements(Object inputElement) {
if(inputElement instanceof IWorkspaceRoot) {
return ((IWorkspaceRoot)inputElement).getProjects();
} else if(inputElement instanceof IARESModel) {
return ((IARESModel)inputElement).getWorkspace().getRoot().getProjects();
} else if(inputElement instanceof IProject) {
return super.getElements(ARESCore.create((IProject)inputElement));
}
return super.getElements(inputElement);
}
@Override
public boolean hasChildren(Object element) {
if(element instanceof IProject) {
return ((IProject)element).isAccessible();
}
return super.hasChildren(element);
}
@Override
public Object[] getChildren(Object parentElement) {
if (parentElement instanceof IWorkspaceRoot) {
return ((IWorkspaceRoot)parentElement).getProjects();
}
if (parentElement instanceof IProject) {
return super.getChildren(ARESCore.create((IProject)parentElement));
}
return super.getChildren(parentElement);
}
}