1 package org.simantics.modeling.ui.modelBrowser2.image;
3 import org.eclipse.jface.resource.ImageDescriptor;
4 import org.eclipse.jface.viewers.IDecoration;
5 import org.simantics.browsing.ui.content.ImageDecorator;
6 import org.simantics.browsing.ui.model.imagedecorators.ImageDecorationRule;
7 import org.simantics.db.ReadGraph;
8 import org.simantics.db.Resource;
9 import org.simantics.db.exception.DatabaseException;
10 import org.simantics.modeling.ModelingResources;
11 import org.simantics.modeling.ui.Activator;
12 import org.simantics.utils.ui.gfx.DecorationOverlayIcon;
14 public class ChangedResourceImageDecorationRule implements ImageDecorationRule {
16 private ImageDecorator CHANGED_DECORATOR = new ImageDecorator() {
18 public <Image> Image decorateImage(Image image, String column, int itemIndex) {
19 ImageDescriptor original = (ImageDescriptor)image;
20 ImageDescriptor decorated = (original == null || original.getImageData() == null) ? Activator.CHANGED_DECORATOR_ICON
21 : new DecorationOverlayIcon(original, Activator.CHANGED_DECORATOR_ICON, IDecoration.BOTTOM_RIGHT);
22 return (Image)decorated;
27 public boolean isCompatible(Class<?> contentType) {
28 return Resource.class.isAssignableFrom(contentType);
32 public ImageDecorator getImageDecorator(ReadGraph graph, Object content)
33 throws DatabaseException
35 Resource resource = (Resource) content;
36 ModelingResources MOD = ModelingResources.getInstance(graph);
37 if (!graph.hasStatement(resource, MOD.changed))
40 return CHANGED_DECORATOR;