]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.browsing.ui.nattable/src/org/simantics/browsing/ui/nattable/GEStyler.java
Merge "Testing SonarQube with Simantics Platform SDK - still"
[simantics/platform.git] / bundles / org.simantics.browsing.ui.nattable / src / org / simantics / browsing / ui / nattable / GEStyler.java
1 package org.simantics.browsing.ui.nattable;\r
2 \r
3 import java.util.HashMap;\r
4 import java.util.List;\r
5 import java.util.Map;\r
6 \r
7 import org.eclipse.nebula.widgets.nattable.config.CellConfigAttributes;\r
8 import org.eclipse.nebula.widgets.nattable.config.ConfigRegistry;\r
9 import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;\r
10 import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;\r
11 import org.eclipse.nebula.widgets.nattable.painter.cell.CellPainterWrapper;\r
12 import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter;\r
13 import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;\r
14 import org.eclipse.nebula.widgets.nattable.style.ConfigAttribute;\r
15 import org.eclipse.nebula.widgets.nattable.style.DisplayMode;\r
16 import org.eclipse.nebula.widgets.nattable.style.IDisplayModeOrdering;\r
17 import org.eclipse.nebula.widgets.nattable.style.Style;\r
18 import org.eclipse.swt.graphics.GC;\r
19 import org.eclipse.swt.graphics.Image;\r
20 import org.eclipse.swt.graphics.Rectangle;\r
21 \r
22 public class GEStyler extends CellPainterWrapper{\r
23                 \r
24         private GETreeData treeData;\r
25         \r
26         public GEStyler(GETreeData treeData, ICellPainter painter) {\r
27                 super(painter);\r
28                 this.treeData = treeData;\r
29         }\r
30         \r
31         private ConfigRegistryWrapper wrapper = new ConfigRegistryWrapper();\r
32 \r
33         @Override\r
34         public void paintCell(ILayerCell cell, GC gc, Rectangle rectangle, IConfigRegistry configRegistry) {\r
35                 wrapper.clear();\r
36                 wrapper.wrappedRegistry = configRegistry;\r
37                 TreeNode node = treeData.getDataAtIndex(cell.getRowIndex());\r
38                 Style style = new Style();\r
39                 node.getStyle(cell.getColumnIndex(), style);\r
40                 Image image = node.getImage(cell.getColumnIndex());\r
41                 if (image != null)\r
42                         style.setAttributeValue(CellStyleAttributes.IMAGE, image);\r
43                 \r
44                 wrapper.setSpecificConfigAttribute(CellConfigAttributes.CELL_STYLE, DisplayMode.NORMAL, "BODY", style);\r
45 //              wrapper.setSpecificConfigAttribute(CellStyleAttributes.FOREGROUND_COLOR, DisplayMode.NORMAL, "BODY", style.getAttributeValue(CellStyleAttributes.FOREGROUND_COLOR));\r
46 //              wrapper.setSpecificConfigAttribute(CellStyleAttributes.BACKGROUND_COLOR, DisplayMode.NORMAL, "BODY", style.getAttributeValue(CellStyleAttributes.BACKGROUND_COLOR));\r
47 //              wrapper.setSpecificConfigAttribute(CellStyleAttributes.FONT, DisplayMode.NORMAL, "BODY", style.getAttributeValue(CellStyleAttributes.FONT));\r
48                 super.paintCell(cell, gc, rectangle, wrapper);\r
49         }\r
50         \r
51         private class ConfigRegistryWrapper extends ConfigRegistry {\r
52                 IConfigRegistry wrappedRegistry;\r
53                  Map<ConfigAttribute<?>, Map<String, Map<String, ?>>> configRegistry = new HashMap<ConfigAttribute<?>, Map<String, Map<String, ?>>>();\r
54                 \r
55                 public void clear() {\r
56                         configRegistry.clear();\r
57                 }\r
58 \r
59                 @Override\r
60                 public <T> T getConfigAttribute(ConfigAttribute<T> configAttribute, String targetDisplayMode,\r
61                                 String... configLabels) {\r
62                         return wrappedRegistry.getConfigAttribute(configAttribute, targetDisplayMode, configLabels);\r
63                 }\r
64 \r
65                 @Override\r
66                 public <T> T getConfigAttribute(ConfigAttribute<T> configAttribute, String targetDisplayMode,\r
67                                 List<String> configLabels) {\r
68                         return wrappedRegistry.getConfigAttribute(configAttribute, targetDisplayMode, configLabels);\r
69                 }\r
70 \r
71                 @Override\r
72                 public <T> T getSpecificConfigAttribute(ConfigAttribute<T> configAttribute, String displayMode,\r
73                                 String configLabel) {\r
74                         T value = _getSpecificConfigAttribute(configAttribute, displayMode, configLabel);\r
75                         if (value != null)\r
76                                 return value;\r
77                         return wrappedRegistry.getSpecificConfigAttribute(configAttribute, displayMode, configLabel);\r
78                 }\r
79                 \r
80                  public <T> T _getSpecificConfigAttribute(ConfigAttribute<T> configAttribute,\r
81                             String displayMode, String configLabel) {\r
82                         T attributeValue = null;\r
83 \r
84                         Map<String, Map<String, ?>> displayModeConfigAttributeMap = this.configRegistry\r
85                                 .get(configAttribute);\r
86                         if (displayModeConfigAttributeMap != null) {\r
87                             Map<String, T> configAttributeMap = (Map<String, T>) displayModeConfigAttributeMap.get(displayMode);\r
88                             if (configAttributeMap != null) {\r
89                                 attributeValue = configAttributeMap.get(configLabel);\r
90                                 if (attributeValue != null) {\r
91                                     return attributeValue;\r
92                                 }\r
93                             }\r
94                         }\r
95 \r
96                         return attributeValue;\r
97                     }\r
98                 \r
99                 public <T> void setSpecificConfigAttribute(ConfigAttribute<T> configAttribute, String displayMode,\r
100                                 String configLabel, T attributeValue) {\r
101                         Map<String, Map<String, ?>> displayModeConfigAttributeMap = this.configRegistry\r
102                         .get(configAttribute);\r
103                 if (displayModeConfigAttributeMap == null) {\r
104                     displayModeConfigAttributeMap = new HashMap<String, Map<String, ?>>();\r
105                     this.configRegistry.put(configAttribute, displayModeConfigAttributeMap);\r
106                 }\r
107 \r
108                 Map<String, T> configAttributeMap = (Map<String, T>) displayModeConfigAttributeMap.get(displayMode);\r
109                 if (configAttributeMap == null) {\r
110                     configAttributeMap = new HashMap<String, T>();\r
111                     displayModeConfigAttributeMap.put(displayMode, configAttributeMap);\r
112                 }\r
113 \r
114                 configAttributeMap.put(configLabel, attributeValue);\r
115                 }\r
116 \r
117                 @Override\r
118                 public <T> void registerConfigAttribute(ConfigAttribute<T> configAttribute, T attributeValue) {\r
119                         wrappedRegistry.registerConfigAttribute(configAttribute, attributeValue);\r
120                         \r
121                 }\r
122 \r
123                 @Override\r
124                 public <T> void registerConfigAttribute(ConfigAttribute<T> configAttribute, T attributeValue,\r
125                                 String targetDisplayMode) {\r
126                         wrappedRegistry.registerConfigAttribute(configAttribute, attributeValue, targetDisplayMode);\r
127                         \r
128                 }\r
129 \r
130                 @Override\r
131                 public <T> void registerConfigAttribute(ConfigAttribute<T> configAttribute, T attributeValue,\r
132                                 String targetDisplayMode, String configLabel) {\r
133                         wrappedRegistry.registerConfigAttribute(configAttribute, attributeValue, targetDisplayMode, configLabel);\r
134                         \r
135                 }\r
136 \r
137                 @Override\r
138                 public <T> void unregisterConfigAttribute(ConfigAttribute<T> configAttributeType) {\r
139                         wrappedRegistry.unregisterConfigAttribute(configAttributeType);\r
140                         \r
141                 }\r
142 \r
143                 @Override\r
144                 public <T> void unregisterConfigAttribute(ConfigAttribute<T> configAttributeType, String displayMode) {\r
145                         wrappedRegistry.unregisterConfigAttribute(configAttributeType, displayMode);\r
146                         \r
147                 }\r
148 \r
149                 @Override\r
150                 public <T> void unregisterConfigAttribute(ConfigAttribute<T> configAttributeType, String displayMode,\r
151                                 String configLabel) {\r
152                         wrappedRegistry.unregisterConfigAttribute(configAttributeType, displayMode, configLabel);\r
153                 }\r
154 \r
155                 @Override\r
156                 public IDisplayModeOrdering getDisplayModeOrdering() {\r
157                         return wrappedRegistry.getDisplayModeOrdering();\r
158                 }\r
159                 \r
160         }\r
161 }\r