package org.simantics.modeling.ui.modelBrowser2.image; 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.modeling.ModelingResources; import org.simantics.modeling.ui.Activator; import org.simantics.utils.ui.gfx.DecorationOverlayIcon; public class ChangedResourceImageDecorationRule implements ImageDecorationRule { private ImageDecorator CHANGED_DECORATOR = new ImageDecorator() { @Override public Image decorateImage(Image image, String column, int itemIndex) { ImageDescriptor original = (ImageDescriptor)image; ImageDescriptor decorated = (original == null || original.getImageData() == null) ? Activator.CHANGED_DECORATOR_ICON : new DecorationOverlayIcon(original, Activator.CHANGED_DECORATOR_ICON, IDecoration.BOTTOM_RIGHT); return (Image)decorated; } }; @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; ModelingResources MOD = ModelingResources.getInstance(graph); if (!graph.hasStatement(resource, MOD.changed)) return null; return CHANGED_DECORATOR; } }