1 package net.mograsim.preferences;
3 import java.util.HashMap;
6 import org.eclipse.swt.SWT;
7 import org.eclipse.swt.graphics.Color;
8 import org.eclipse.swt.graphics.Device;
10 import net.mograsim.preferences.ColorDefinition.BuiltInColor;
12 public class SimpleColorManager extends ColorManager
14 private static final Map<BuiltInColor, Color> systemColors = new HashMap<>();
15 private static final Map<Color, BuiltInColor> systemColorConstants = new HashMap<>();
18 public Color toColor(Device device, ColorDefinition col)
20 Color systemColor = systemColors.get(col.builtInColor);
21 if (systemColor != null)
23 if (col.builtInColor != null)
25 systemColor = device.getSystemColor(toSWTColorConstant(col.builtInColor));
26 systemColors.put(col.builtInColor, systemColor);
27 systemColorConstants.put(systemColor, col.builtInColor);
30 return new Color(device, col.r, col.g, col.b);
34 public void dispose(Color col)
36 if (!systemColorConstants.containsKey(col))
40 public static int toSWTColorConstant(BuiltInColor col)
45 return SWT.COLOR_BLACK;
47 return SWT.COLOR_BLUE;
49 return SWT.COLOR_CYAN;
51 return SWT.COLOR_DARK_BLUE;
53 return SWT.COLOR_DARK_CYAN;
55 return SWT.COLOR_DARK_GRAY;
56 case COLOR_DARK_GREEN:
57 return SWT.COLOR_DARK_GREEN;
58 case COLOR_DARK_MAGENTA:
59 return SWT.COLOR_DARK_MAGENTA;
61 return SWT.COLOR_DARK_RED;
62 case COLOR_DARK_YELLOW:
63 return SWT.COLOR_DARK_YELLOW;
65 return SWT.COLOR_GRAY;
67 return SWT.COLOR_GREEN;
69 return SWT.COLOR_MAGENTA;
73 return SWT.COLOR_WHITE;
75 return SWT.COLOR_YELLOW;
77 throw new IllegalArgumentException("Unknown enum constant: " + col);