X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2FmodelBrowser2%2Fimage%2FChangedResourceImageDecorationRule.java;fp=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2FmodelBrowser2%2Fimage%2FChangedResourceImageDecorationRule.java;h=586387b677388ba24a856be81abcabd6fd92fded;hp=0000000000000000000000000000000000000000;hb=38cf4e45bf3648896fb2ba1bfb38378098ac3cc6;hpb=9a37dabc6c0212ed3e14499c88df3208cd06f9b0 diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/modelBrowser2/image/ChangedResourceImageDecorationRule.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/modelBrowser2/image/ChangedResourceImageDecorationRule.java new file mode 100644 index 000000000..586387b67 --- /dev/null +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/modelBrowser2/image/ChangedResourceImageDecorationRule.java @@ -0,0 +1,43 @@ +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; + } + +}