package org.simantics.structural.ui.modelBrowser.contributions; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.IDecoration; import org.simantics.browsing.ui.content.ImageDecorator; import org.simantics.browsing.ui.model.imagedecorators.ImageDecorationRule; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.exception.DatabaseException; import org.simantics.structural.stubs.StructuralResource2; import org.simantics.structural.ui.Activator; import org.simantics.utils.ui.gfx.DecorationOverlayIcon; public class ComponentTypeLockStatusImageDecorationRule implements ImageDecorationRule { @Override public boolean isCompatible(Class contentType) { return Resource.class.isAssignableFrom(contentType); } @Override public ImageDecorator getImageDecorator(ReadGraph graph, Object content) throws DatabaseException { Resource resource = (Resource) content; StructuralResource2 STR = StructuralResource2.getInstance(graph); if(!graph.hasStatement(resource, STR.ComponentType_Locked)) return null; return new ImageDecorator() { @Override public Image decorateImage(Image image, String column, int itemIndex) { ImageDescriptor original = (ImageDescriptor)image; ImageDescriptor decorated = (original == null || original.getImageData() == null) ? Activator.LOCK : new DecorationOverlayIcon(original, Activator.LOCK, IDecoration.TOP_RIGHT); return (Image)decorated; } }; } }