1 package org.simantics.browsing.ui.nattable;
\r
3 import java.util.HashMap;
\r
4 import java.util.List;
\r
5 import java.util.Map;
\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
22 public class GEStyler extends CellPainterWrapper{
\r
24 private GETreeData treeData;
\r
26 public GEStyler(GETreeData treeData, ICellPainter painter) {
\r
28 this.treeData = treeData;
\r
31 private ConfigRegistryWrapper wrapper = new ConfigRegistryWrapper();
\r
34 public void paintCell(ILayerCell cell, GC gc, Rectangle rectangle, IConfigRegistry configRegistry) {
\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
42 style.setAttributeValue(CellStyleAttributes.IMAGE, image);
\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
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
55 public void clear() {
\r
56 configRegistry.clear();
\r
60 public <T> T getConfigAttribute(ConfigAttribute<T> configAttribute, String targetDisplayMode,
\r
61 String... configLabels) {
\r
62 return wrappedRegistry.getConfigAttribute(configAttribute, targetDisplayMode, configLabels);
\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
72 public <T> T getSpecificConfigAttribute(ConfigAttribute<T> configAttribute, String displayMode,
\r
73 String configLabel) {
\r
74 T value = _getSpecificConfigAttribute(configAttribute, displayMode, configLabel);
\r
77 return wrappedRegistry.getSpecificConfigAttribute(configAttribute, displayMode, configLabel);
\r
80 public <T> T _getSpecificConfigAttribute(ConfigAttribute<T> configAttribute,
\r
81 String displayMode, String configLabel) {
\r
82 T attributeValue = null;
\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
96 return attributeValue;
\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
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
114 configAttributeMap.put(configLabel, attributeValue);
\r
118 public <T> void registerConfigAttribute(ConfigAttribute<T> configAttribute, T attributeValue) {
\r
119 wrappedRegistry.registerConfigAttribute(configAttribute, attributeValue);
\r
124 public <T> void registerConfigAttribute(ConfigAttribute<T> configAttribute, T attributeValue,
\r
125 String targetDisplayMode) {
\r
126 wrappedRegistry.registerConfigAttribute(configAttribute, attributeValue, targetDisplayMode);
\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
138 public <T> void unregisterConfigAttribute(ConfigAttribute<T> configAttributeType) {
\r
139 wrappedRegistry.unregisterConfigAttribute(configAttributeType);
\r
144 public <T> void unregisterConfigAttribute(ConfigAttribute<T> configAttributeType, String displayMode) {
\r
145 wrappedRegistry.unregisterConfigAttribute(configAttributeType, displayMode);
\r
150 public <T> void unregisterConfigAttribute(ConfigAttribute<T> configAttributeType, String displayMode,
\r
151 String configLabel) {
\r
152 wrappedRegistry.unregisterConfigAttribute(configAttributeType, displayMode, configLabel);
\r
156 public IDisplayModeOrdering getDisplayModeOrdering() {
\r
157 return wrappedRegistry.getDisplayModeOrdering();
\r