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