package fr.opensagres.mongodb.ide.ui.viewers;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import fr.opensagres.mongodb.ide.core.IServerManager;
import fr.opensagres.mongodb.ide.core.model.Server;
import fr.opensagres.mongodb.ide.core.model.TreeContainerNode;
import fr.opensagres.mongodb.ide.core.model.TreeSimpleNode;
public class MongoContentProvider implements ITreeContentProvider {
private static MongoContentProvider instance;
public static MongoContentProvider getInstance() {
synchronized (MongoContentProvider.class) {
if (instance == null) {
instance = new MongoContentProvider();
}
return instance;
}
}
public Object[] getElements(Object inputElement) {
if (inputElement instanceof IServerManager) {
return ((IServerManager) inputElement).getServers().toArray(
TreeSimpleNode.EMPTY);
}
return TreeSimpleNode.EMPTY;
}
public Object[] getChildren(Object parentElement) {
if (parentElement instanceof TreeContainerNode) {
return ((TreeContainerNode) parentElement).getChildren().toArray(
TreeSimpleNode.EMPTY);
}
return TreeSimpleNode.EMPTY;
}
public Object getParent(Object element) {
return ((TreeSimpleNode) element).getParent();
}
public boolean hasChildren(Object element) {
if (element instanceof TreeSimpleNode) {
TreeSimpleNode node = (TreeSimpleNode) element;
switch (node.getType()) {
case Server:
return ((Server) element).isConnected();
default:
return element instanceof TreeContainerNode;
}
}
return false;
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
public void dispose() {
}
}