/* * (c) 2011 - 2013 University of Mannheim: Software Engineering Group */ package de.uni_mannheim.informatik.swt.models.plm.diagram.sheet; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EObject; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; import org.eclipse.gmf.runtime.emf.type.core.IElementType; import org.eclipse.gmf.runtime.notation.View; import org.eclipse.jface.viewers.BaseLabelProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.graphics.Image; /** * @generated */ public class PLMSheetLabelProvider extends BaseLabelProvider implements ILabelProvider { /** * @generated */ public String getText(Object element) { element = unwrap(element); if (element instanceof de.uni_mannheim.informatik.swt.models.plm.diagram.navigator.PLMNavigatorGroup) { return ((de.uni_mannheim.informatik.swt.models.plm.diagram.navigator.PLMNavigatorGroup) element) .getGroupName(); } EObject semanticElement = ((IGraphicalEditPart) element) .resolveSemanticElement(); //No Clabject -> Show linguistic type if (!(semanticElement instanceof de.uni_mannheim.informatik.swt.models.plm.PLM.Clabject)) { IElementType etype = getElementType(getView(element)); return etype == null ? "" : etype.getDisplayName(); } EList<de.uni_mannheim.informatik.swt.models.plm.PLM.Classification> classifications = ((de.uni_mannheim.informatik.swt.models.plm.PLM.Clabject) semanticElement) .getClassificationsAsInstance(); //No ontological type -> show linguistic type if (classifications.size() == 0) { IElementType etype = getElementType(getView(element)); return etype == null ? "" : etype.getDisplayName(); } String typesAsString = ""; for (de.uni_mannheim.informatik.swt.models.plm.PLM.Classification i : classifications) if (i.getType() instanceof de.uni_mannheim.informatik.swt.models.plm.PLM.Entity) typesAsString += i.getType().getName() + (classifications.indexOf(i) < classifications.size() - 1 ? ", " : ""); else typesAsString += ((de.uni_mannheim.informatik.swt.models.plm.PLM.Connection) i .getType()).getHumanReadableName() + (classifications.indexOf(i) < classifications.size() - 1 ? ", " : ""); return typesAsString; } /** * @generated */ public Image getImage(Object element) { IElementType etype = getElementType(getView(unwrap(element))); return etype == null ? null : de.uni_mannheim.informatik.swt.models.plm.diagram.providers.PLMElementTypes .getImage(etype); } /** * @generated */ private Object unwrap(Object element) { if (element instanceof IStructuredSelection) { return ((IStructuredSelection) element).getFirstElement(); } return element; } /** * @generated */ private View getView(Object element) { if (element instanceof View) { return (View) element; } if (element instanceof IAdaptable) { return (View) ((IAdaptable) element).getAdapter(View.class); } return null; } /** * @generated */ private IElementType getElementType(View view) { // For intermediate views climb up the containment hierarchy to find the one associated with an element type. while (view != null) { int vid = de.uni_mannheim.informatik.swt.models.plm.diagram.part.PLMVisualIDRegistry .getVisualID(view); IElementType etype = de.uni_mannheim.informatik.swt.models.plm.diagram.providers.PLMElementTypes .getElementType(vid); if (etype != null) { return etype; } view = view.eContainer() instanceof View ? (View) view.eContainer() : null; } return null; } }