package fr.opensagres.nosql.ide.ui.viewers.server;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import fr.opensagres.nosql.ide.core.extensions.IServerType;
import fr.opensagres.nosql.ide.core.model.IModelIdentity;
import fr.opensagres.nosql.ide.core.model.IServer;
import fr.opensagres.nosql.ide.core.model.ITreeSimpleNode;
import fr.opensagres.nosql.ide.core.model.NodeTypeConstants;
import fr.opensagres.nosql.ide.ui.PlatformUI;
import fr.opensagres.nosql.ide.ui.internal.ImageResources;
public class ServerLabelProvider extends LabelProvider {
private static ServerLabelProvider instance;
public static ServerLabelProvider getInstance() {
synchronized (ServerLabelProvider.class) {
if (instance == null) {
instance = new ServerLabelProvider();
}
return instance;
}
}
@Override
public String getText(Object element) {
if (element instanceof IModelIdentity) {
return ((IModelIdentity) element).getLabel();
}
return super.getText(element);
}
@Override
public Image getImage(Object element) {
if (element instanceof IServerType) {
IServerType serverType = ((IServerType) element);
return PlatformUI.getServerImageRegistry().getImage(serverType);
}
if (element instanceof ITreeSimpleNode) {
int type = ((ITreeSimpleNode) element).getType();
switch (type) {
case NodeTypeConstants.Server:
IServer server = (IServer) element;
switch (server.getServerState()) {
case Started:
return ImageResources
.getImage(ImageResources.IMG_SERVER_STARTED_16);
case Stopped:
return ImageResources
.getImage(ImageResources.IMG_SERVER_STOPPED_16);
default:
return ImageResources
.getImage(ImageResources.IMG_SERVER_16);
}
case NodeTypeConstants.Database:
return ImageResources.getImage(ImageResources.IMG_DATABASE_16);
case NodeTypeConstants.Collection:
return ImageResources
.getImage(ImageResources.IMG_COLLECTION_16);
case NodeTypeConstants.Document:
return ImageResources.getImage(ImageResources.IMG_DOCUMENT_16);
case NodeTypeConstants.Error:
return ImageResources.getImage(ImageResources.IMG_ERROR_16);
case NodeTypeConstants.CollectionsCategory:
case NodeTypeConstants.GridFSCategory:
case NodeTypeConstants.StoredJavascriptCategory:
case NodeTypeConstants.IndexesCategory:
return ImageResources.getImage(ImageResources.IMG_CATEGORY_16);
case NodeTypeConstants.Users:
return ImageResources.getImage(ImageResources.IMG_USERS_16);
case NodeTypeConstants.Index:
return ImageResources.getImage(ImageResources.IMG_INDEX_16);
case NodeTypeConstants.GridFSBucket:
return ImageResources.getImage(ImageResources.IMG_GRIDFS_16);
default:
}
}
return super.getImage(element);
}
}