--- /dev/null
+package org.simantics.document.ui;\r
+\r
+import gnu.trove.map.hash.THashMap;\r
+\r
+import org.eclipse.jface.text.source.ISharedTextColors;\r
+import org.eclipse.swt.graphics.Color;\r
+import org.eclipse.swt.graphics.RGB;\r
+import org.eclipse.swt.widgets.Display;\r
+\r
+final public class SharedTextColors implements ISharedTextColors {\r
+\r
+ Display display;\r
+ THashMap<RGB,Color> map = new THashMap<RGB,Color>();\r
+ \r
+ public SharedTextColors(Display display) {\r
+ this.display = display;\r
+ }\r
+\r
+ @Override\r
+ public Color getColor(RGB rgb) {\r
+ Color color = map.get(rgb);\r
+ if(color == null) {\r
+ color = new Color(display, rgb);\r
+ map.put(rgb, color);\r
+ }\r
+ return color;\r
+ }\r
+\r
+ @Override\r
+ public void dispose() {\r
+ for(Color color : map.values())\r
+ color.dispose();\r
+ map.clear();\r
+ }\r
+}
\ No newline at end of file