X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.preferences%2Fsrc%2Fnet%2Fmograsim%2Fpreferences%2FSimpleColorManager.java;fp=net.mograsim.preferences%2Fsrc%2Fnet%2Fmograsim%2Fpreferences%2FSimpleColorManager.java;h=74f74dc02027c38719d070620cb186341aadda17;hb=dff3e01498ac766a7f1ec7b18ce2cc5acd257cb5;hp=0000000000000000000000000000000000000000;hpb=bc741717e4a64cda96f0c51c780895c6e93ef309;p=Mograsim.git diff --git a/net.mograsim.preferences/src/net/mograsim/preferences/SimpleColorManager.java b/net.mograsim.preferences/src/net/mograsim/preferences/SimpleColorManager.java new file mode 100644 index 00000000..74f74dc0 --- /dev/null +++ b/net.mograsim.preferences/src/net/mograsim/preferences/SimpleColorManager.java @@ -0,0 +1,80 @@ +package net.mograsim.preferences; + +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Device; + +import net.mograsim.preferences.ColorDefinition.BuiltInColor; + +public class SimpleColorManager extends ColorManager +{ + private static final Map systemColors = new HashMap<>(); + private static final Map systemColorConstants = new HashMap<>(); + + @Override + public Color toColor(Device device, ColorDefinition col) + { + Color systemColor = systemColors.get(col.builtInColor); + if (systemColor != null) + return systemColor; + if (col.builtInColor != null) + { + systemColor = device.getSystemColor(toSWTColorConstant(col.builtInColor)); + systemColors.put(col.builtInColor, systemColor); + systemColorConstants.put(systemColor, col.builtInColor); + return systemColor; + } + return new Color(device, col.r, col.g, col.b); + } + + @Override + public void dispose(Color col) + { + if (!systemColorConstants.containsKey(col)) + col.dispose(); + } + + public static int toSWTColorConstant(BuiltInColor col) + { + switch (col) + { + case COLOR_BLACK: + return SWT.COLOR_BLACK; + case COLOR_BLUE: + return SWT.COLOR_BLUE; + case COLOR_CYAN: + return SWT.COLOR_CYAN; + case COLOR_DARK_BLUE: + return SWT.COLOR_DARK_BLUE; + case COLOR_DARK_CYAN: + return SWT.COLOR_DARK_CYAN; + case COLOR_DARK_GRAY: + return SWT.COLOR_DARK_GRAY; + case COLOR_DARK_GREEN: + return SWT.COLOR_DARK_GREEN; + case COLOR_DARK_MAGENTA: + return SWT.COLOR_DARK_MAGENTA; + case COLOR_DARK_RED: + return SWT.COLOR_DARK_RED; + case COLOR_DARK_YELLOW: + return SWT.COLOR_DARK_YELLOW; + case COLOR_GRAY: + return SWT.COLOR_GRAY; + case COLOR_GREEN: + return SWT.COLOR_GREEN; + case COLOR_MAGENTA: + return SWT.COLOR_MAGENTA; + case COLOR_RED: + return SWT.COLOR_RED; + case COLOR_WHITE: + return SWT.COLOR_WHITE; + case COLOR_YELLOW: + return SWT.COLOR_YELLOW; + default: + throw new IllegalArgumentException("Unknown enum constant: " + col); + } + } +}