/** * */ package org.goko.gcode.rs274ngcv3.ui.workspace.uiprovider; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.DecorationOverlayIcon; import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider; import org.eclipse.jface.viewers.IDecoration; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.StyledString; import org.eclipse.swt.graphics.Image; import org.eclipse.wb.swt.ResourceManager; import org.goko.core.gcode.element.IGCodeProvider; import org.goko.core.gcode.element.validation.IValidationTarget; import org.goko.core.gcode.rs274ngcv3.element.IModifier; /** * @author PsyKo * @date 31 oct. 2015 */ public class GCodeContainerLabelProvider extends LabelProvider implements IStyledLabelProvider { private final ImageDescriptor warningImageDescriptor; private final ImageDescriptor errorImageDescriptor; /** * */ public GCodeContainerLabelProvider() { super(); warningImageDescriptor = ResourceManager.getPluginImageDescriptor("org.goko.gcode.rs274ngcv3.ui", "resources/icons/warn_ovr.png"); errorImageDescriptor = ResourceManager.getPluginImageDescriptor("org.goko.gcode.rs274ngcv3.ui", "resources/icons/error_ovr.png"); } /** (inheritDoc) * @see org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider#getStyledText(java.lang.Object) */ @Override public StyledString getStyledText(Object element) { if(element instanceof IGCodeProvider){ return new StyledString(((IGCodeProvider) element).getCode()); }else if(element instanceof GCodeContainerUiProvider){ StyledString styleString = new StyledString(); styleString.append("GCode "); return styleString; }else if(element instanceof IModifier){ StyledString styleString = new StyledString(); styleString.append(((IModifier<?>) element).getModifierName()); return styleString; } return null; } /** (inheritDoc) * @see org.eclipse.jface.viewers.LabelProvider#getImage(java.lang.Object) */ @Override public Image getImage(Object element) { if(element instanceof GCodeContainerUiProvider){ return ResourceManager.getPluginImage("org.goko.gcode.rs274ngcv3.ui", "resources/icons/resource_persp.gif"); }else if(element instanceof IGCodeProvider){ Image image = ResourceManager.getPluginImage("org.goko.gcode.rs274ngcv3.ui", "resources/icons/document-attribute-g.png"); IGCodeProvider provider = (IGCodeProvider) element; if(provider.isLocked()){ return ResourceManager.getPluginImage("org.goko.gcode.rs274ngcv3.ui", "resources/icons/lock.png"); } image = decorateValidationTarget(image, provider); return image; }else if(element instanceof IModifier){ if(((IModifier<?>) element).isEnabled()){ return ResourceManager.getPluginImage("org.goko.gcode.rs274ngcv3.ui", "resources/icons/modifier-on.png"); }else{ return ResourceManager.getPluginImage("org.goko.gcode.rs274ngcv3.ui", "resources/icons/modifier-off.png"); } } return super.getImage(element); } protected Image decorateValidationTarget(Image image, IValidationTarget target){ if(target.hasErrors()){ return new DecorationOverlayIcon(image, errorImageDescriptor, IDecoration.BOTTOM_RIGHT).createImage(); }else if(target.hasWarnings()){ return new DecorationOverlayIcon(image, warningImageDescriptor, IDecoration.BOTTOM_RIGHT).createImage(); } return image; } }