]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.structural.ui.modelBrowser.contributions;\r
2 \r
3 import org.eclipse.jface.resource.ImageDescriptor;\r
4 import org.eclipse.jface.viewers.IDecoration;\r
5 import org.simantics.browsing.ui.content.ImageDecorator;\r
6 import org.simantics.browsing.ui.model.imagedecorators.ImageDecorationRule;\r
7 import org.simantics.db.ReadGraph;\r
8 import org.simantics.db.Resource;\r
9 import org.simantics.db.exception.DatabaseException;\r
10 import org.simantics.structural.stubs.StructuralResource2;\r
11 import org.simantics.structural.ui.Activator;\r
12 import org.simantics.utils.ui.gfx.DecorationOverlayIcon;\r
13 \r
14 public class ComponentTypeLockStatusImageDecorationRule implements ImageDecorationRule {\r
15 \r
16     @Override\r
17     public boolean isCompatible(Class<?> contentType) {\r
18         return Resource.class.isAssignableFrom(contentType);\r
19     }\r
20 \r
21     @Override\r
22     public ImageDecorator getImageDecorator(ReadGraph graph, Object content)\r
23             throws DatabaseException {\r
24         Resource resource = (Resource) content;\r
25         StructuralResource2 STR = StructuralResource2.getInstance(graph);\r
26         if(!graph.hasStatement(resource, STR.ComponentType_Locked))\r
27             return null;\r
28         \r
29         return new ImageDecorator() {\r
30             @Override\r
31             public <Image> Image decorateImage(Image image, String column, int itemIndex) {\r
32                 ImageDescriptor original = (ImageDescriptor)image;\r
33                 ImageDescriptor decorated = (original == null || original.getImageData() == null) ? Activator.LOCK\r
34                         : new DecorationOverlayIcon(original, Activator.LOCK, IDecoration.TOP_RIGHT);\r
35                 return (Image)decorated;\r
36             }\r
37         };\r
38     }\r
39 \r
40 }\r