package org.eclipse.gmf.tooling.runtime.providers; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.emf.ecore.ENamedElement; import org.eclipse.gmf.runtime.common.core.service.AbstractProvider; import org.eclipse.gmf.runtime.common.core.service.IOperation; import org.eclipse.gmf.runtime.common.ui.services.icon.GetIconOperation; import org.eclipse.gmf.runtime.common.ui.services.icon.IIconProvider; import org.eclipse.swt.graphics.Image; public class DefaultElementTypeIconProvider extends AbstractProvider implements IIconProvider { private final DiagramElementTypes myElementTypes; public DefaultElementTypeIconProvider(DiagramElementTypes elementTypes) { myElementTypes = elementTypes; } public final DiagramElementTypes getElementTypes() { return myElementTypes; } public final DiagramElementTypeImages getElementTypeImages() { return myElementTypes.getElementTypeImages(); } public Image getIcon(IAdaptable hint, int flags) { ENamedElement definingElement = getElementTypes().getDefiningNamedElement(hint); return definingElement == null ? null : getElementTypeImages().getImage(definingElement); } public boolean provides(IOperation operation) { if (operation instanceof GetIconOperation) { return ((GetIconOperation) operation).execute(this) != null; } return false; } }