package org.csstudio.sds.ui.internal.editor.newproperties; import org.csstudio.sds.model.AbstractWidgetModel; import org.csstudio.sds.model.WidgetModelFactoryService; import org.csstudio.ui.util.CustomMediaFactory; import org.eclipse.gef.EditPart; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.graphics.Image; public class PropertyContributorLabelProvider implements ILabelProvider { @Override public Image getImage(final Object element) { AbstractWidgetModel widget = getWidget(element); if((widget!=null) && (widget.getTypeID()!=null)) { String pluginId=WidgetModelFactoryService.getInstance().getContributingPluginId(widget.getTypeID()); String iconPath = WidgetModelFactoryService.getInstance().getIcon(widget.getTypeID()); if((pluginId!=null) && (iconPath!=null)) { return CustomMediaFactory.getInstance().getImageFromPlugin(pluginId, iconPath); } } return null; } @Override public String getText(final Object o) { AbstractWidgetModel widget = getWidget(o); String[] split = widget.getTypeID().split("\\."); String typeID = split[split.length-1]; return widget!=null?widget.getName()+" ("+typeID+")":""; } @Override public void addListener(final ILabelProviderListener listener) { } @Override public void dispose() { } @Override public boolean isLabelProperty(final Object element, final String property) { return false; } @Override public void removeListener(final ILabelProviderListener listener) { } private AbstractWidgetModel getWidget(final Object o) { if (o instanceof IStructuredSelection) { IStructuredSelection sel = (IStructuredSelection) o; if (sel.getFirstElement() instanceof EditPart) { EditPart ep = (EditPart) sel.getFirstElement(); if (ep.getModel() instanceof AbstractWidgetModel) { return (AbstractWidgetModel) ep.getModel(); } } } return null; } }