package org.activiti.designer.eclipse.navigator;
import org.activiti.designer.eclipse.common.ActivitiPlugin;
import org.activiti.designer.eclipse.navigator.nodes.BpmnElementsNode;
import org.activiti.designer.eclipse.navigator.nodes.base.IContainerNode;
import org.eclipse.bpmn2.BaseElement;
import org.eclipse.core.resources.IFile;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
import org.eclipse.graphiti.mm.pictograms.Diagram;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
public class BpmnLabelProvider extends LabelProvider {
private static final String IMPL = "Impl";
@Override
public String getText(Object element) {
String ret = "";
if (element instanceof IContainerNode) {
IContainerNode icn = (IContainerNode) element;
ret = icn.getText();
}
if (element instanceof IFile) {
IFile file = (IFile) element;
return file.getName();
}
if (element instanceof Diagram) {
Diagram diagram = (Diagram) element;
if (diagram != null) {
ret = createTextForDiagram(diagram);
}
}
if (element instanceof BaseElement) {
String name = ((BaseElement) element).getId();
if (name == null) {
name = "name not available";
}
return name;
}
if (element instanceof EObject && ret.length() <= 0) {
EObject eObject = (EObject) element;
ret = ret + eObject.getClass().getSimpleName();
if (ret.endsWith(IMPL)) {
ret = ret.substring(0, ret.length() - (IMPL.length()));
}
}
if (element instanceof GraphicsAlgorithm && ret.length() > 0) {
ret = ret + " - ";
ret = ret + super.getText(element);
}
return ret;
}
private String createTextForDiagram(Diagram diagram) {
return "Diagram";
}
// private String createTextForDiagramFile(Diagram diagram) {
// return diagram.getName() + " (" + diagram.getDiagramTypeId() + ")";
// }
@Override
public Image getImage(Object element) {
if (element instanceof BpmnElementsNode) {
return getEClassesNodeImage();
}
if (element instanceof IContainerNode) {
IContainerNode icn = (IContainerNode) element;
return icn.getImage();
}
if (element instanceof IFile) {
String imageKey = ISharedImages.IMG_OBJ_ELEMENT;
return PlatformUI.getWorkbench().getSharedImages().getImage(imageKey);
}
if (element instanceof PictogramElement) {
String imageKey = ISharedImages.IMG_OBJ_ELEMENT;
return PlatformUI.getWorkbench().getSharedImages().getImage(imageKey);
}
if (element instanceof BaseElement) {
return getEClassImage();
}
if (element instanceof EObject) {
return getEObjectImage();
}
return super.getImage(element);
}
private Image getEClassImage() {
ImageRegistry registry = ActivitiPlugin.getDefault().getImageRegistry();
String key = "icons/full/obj16/EClass.gif"; //$NON-NLS-1$
Image image = registry.get(key);
if (image == null) {
ImageDescriptor desc = ActivitiPlugin.imageDescriptorFromPlugin("org.eclipse.emf.ecore.edit", key);
registry.put(key, desc);
image = registry.get(key);
}
return image;
}
private Image getEObjectImage() {
ImageRegistry registry = ActivitiPlugin.getDefault().getImageRegistry();
String key = "icons/full/obj16/EObject.gif"; //$NON-NLS-1$
Image image = registry.get(key);
if (image == null) {
ImageDescriptor desc = ActivitiPlugin.imageDescriptorFromPlugin("org.eclipse.emf.ecore.edit", key);
registry.put(key, desc);
image = registry.get(key);
}
return image;
}
private Image getEClassesNodeImage() {
ImageRegistry registry = ActivitiPlugin.getDefault().getImageRegistry();
String key = "icons/full/obj16/EPackage.gif"; //$NON-NLS-1$
Image image = registry.get(key);
if (image == null) {
ImageDescriptor desc = ActivitiPlugin.imageDescriptorFromPlugin("org.eclipse.emf.ecore.edit", key);
registry.put(key, desc);
image = registry.get(key);
}
return image;
}
}