3 import java.util.function.Consumer;
4 import java.util.function.Supplier;
6 import org.eclipse.swt.SWT;
7 import org.eclipse.swt.graphics.Color;
8 import org.eclipse.swt.graphics.Device;
10 import era.mi.logic.types.ColorDefinition;
11 import era.mi.logic.types.ColorDefinition.BuiltInColor;
12 import net.haspamelodica.swt.helper.gcs.GeneralGC;
14 //TODO replace with a proper ColorManager
15 public class ColorHelper
17 public static void executeWithDifferentForeground(GeneralGC gc, ColorDefinition col, Runnable exec)
19 executeWithDifferentColor(gc.getDevice(), col, gc::getForeground, gc::setForeground, exec);
22 public static void executeWithDifferentBackground(GeneralGC gc, ColorDefinition col, Runnable exec)
24 executeWithDifferentColor(gc.getDevice(), col, gc::getBackground, gc::setBackground, exec);
27 private static void executeWithDifferentColor(Device device, ColorDefinition col, Supplier<Color> getColor, Consumer<Color> setColor,
30 Color oldColor = getColor.get();
31 boolean isNoSystemColor = col.builtInColor == null;
34 newColor = new Color(device, col.r, col.g, col.b);
36 newColor = device.getSystemColor(ColorHelper.toSWTColorConstant(col.builtInColor));
37 setColor.accept(newColor);
41 setColor.accept(oldColor);
46 public static int toSWTColorConstant(BuiltInColor col)
51 return SWT.COLOR_BLACK;
53 return SWT.COLOR_BLUE;
55 return SWT.COLOR_CYAN;
57 return SWT.COLOR_DARK_BLUE;
59 return SWT.COLOR_DARK_CYAN;
61 return SWT.COLOR_DARK_GRAY;
62 case COLOR_DARK_GREEN:
63 return SWT.COLOR_DARK_GREEN;
64 case COLOR_DARK_MAGENTA:
65 return SWT.COLOR_DARK_MAGENTA;
67 return SWT.COLOR_DARK_RED;
68 case COLOR_DARK_YELLOW:
69 return SWT.COLOR_DARK_YELLOW;
71 return SWT.COLOR_GRAY;
73 return SWT.COLOR_GREEN;
75 return SWT.COLOR_MAGENTA;
79 return SWT.COLOR_WHITE;
81 return SWT.COLOR_YELLOW;
83 throw new IllegalArgumentException("Unknown enum constant: " + col);
89 throw new UnsupportedOperationException("No instances of ColorHelper");