]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.structural.ui/src/org/simantics/structural/ui/modelBrowser/contributions/ComponentTypeLockStatusImageDecorationRule.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.structural.ui / src / org / simantics / structural / ui / modelBrowser / contributions / ComponentTypeLockStatusImageDecorationRule.java
diff --git a/bundles/org.simantics.structural.ui/src/org/simantics/structural/ui/modelBrowser/contributions/ComponentTypeLockStatusImageDecorationRule.java b/bundles/org.simantics.structural.ui/src/org/simantics/structural/ui/modelBrowser/contributions/ComponentTypeLockStatusImageDecorationRule.java
new file mode 100644 (file)
index 0000000..d17dd59
--- /dev/null
@@ -0,0 +1,40 @@
+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