blob: 168f108c4bbe7cc6f2dcbddfc9696cbd0d337ea7 [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2005, 2019 SAP SE
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* SAP SE - initial API, implementation and documentation
*
* SPDX-License-Identifier: EPL-2.0
**********************************************************************/
package org.eclipse.graphiti.examples.common.navigator;
import org.eclipse.core.resources.IFile;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.graphiti.examples.common.ExamplesCommonPlugin;
import org.eclipse.graphiti.examples.common.Messages;
import org.eclipse.graphiti.examples.common.navigator.nodes.EClassesNode;
import org.eclipse.graphiti.examples.common.navigator.nodes.base.IContainerNode;
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 GFEmfLabelProvider extends LabelProvider {
private static final String IMPL = "Impl"; //$NON-NLS-1$
@Override
public String getText(Object element) {
String ret = ""; //$NON-NLS-1$
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 EClass) {
String name = ((EClass) element).getName();
if (name == null) {
name = Messages.GFEmfLabelProvider_NameNotAvailable;
}
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 + " - "; //$NON-NLS-1$
ret = ret + super.getText(element);
}
return ret;
}
private String createTextForDiagram(Diagram diagram) {
return Messages.GFEmfLabelProvider_DiagramText;
}
// private String createTextForDiagramFile(Diagram diagram) {
// return diagram.getName() + " (" + diagram.getDiagramTypeId() + ")";
// }
@Override
public Image getImage(Object element) {
if (element instanceof EClassesNode) {
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 EClass) {
return getEClassImage();
}
if (element instanceof EObject) {
return getEObjectImage();
}
return super.getImage(element);
}
private Image getEClassImage() {
ImageRegistry registry = ExamplesCommonPlugin.getDefault().getImageRegistry();
String key = "icons/full/obj16/EClass.gif"; //$NON-NLS-1$
Image image = registry.get(key);
if (image == null) {
ImageDescriptor desc = ExamplesCommonPlugin.imageDescriptorFromPlugin("org.eclipse.emf.ecore.edit", key); //$NON-NLS-1$
registry.put(key, desc);
image = registry.get(key);
}
return image;
}
private Image getEObjectImage() {
ImageRegistry registry = ExamplesCommonPlugin.getDefault().getImageRegistry();
String key = "icons/full/obj16/EObject.gif"; //$NON-NLS-1$
Image image = registry.get(key);
if (image == null) {
ImageDescriptor desc = ExamplesCommonPlugin.imageDescriptorFromPlugin("org.eclipse.emf.ecore.edit", key); //$NON-NLS-1$
registry.put(key, desc);
image = registry.get(key);
}
return image;
}
private Image getEClassesNodeImage() {
ImageRegistry registry = ExamplesCommonPlugin.getDefault().getImageRegistry();
String key = "icons/full/obj16/EPackage.gif"; //$NON-NLS-1$
Image image = registry.get(key);
if (image == null) {
ImageDescriptor desc = ExamplesCommonPlugin.imageDescriptorFromPlugin("org.eclipse.emf.ecore.edit", key); //$NON-NLS-1$
registry.put(key, desc);
image = registry.get(key);
}
return image;
}
}