6ea0028e3fc210100bc2566501419703d3b1c917
[Mograsim.git] / net.mograsim.plugin.core / src / net / mograsim / plugin / ThemePreferences.java
1 package net.mograsim.plugin;
2
3 import org.eclipse.core.runtime.IStatus;
4 import org.eclipse.core.runtime.Status;
5 import org.eclipse.jface.resource.ColorRegistry;
6 import org.eclipse.swt.graphics.Color;
7 import org.eclipse.swt.graphics.RGB;
8 import org.eclipse.ui.statushandlers.StatusManager;
9 import org.eclipse.ui.themes.ITheme;
10
11 import net.mograsim.preferences.ColorDefinition;
12 import net.mograsim.preferences.DefaultPreferences;
13 import net.mograsim.preferences.Preferences;
14
15 // TODO proper getInt/getDouble implementation, maybe via own preferences page?
16 public class ThemePreferences extends Preferences
17 {
18         private final ITheme theme;
19
20         public ThemePreferences(ITheme theme)
21         {
22                 this.theme = theme;
23         }
24
25         @Override
26         public int getInt(String name)
27         {
28                 return new DefaultPreferences().getInt(name);
29         }
30
31         @Override
32         public double getDouble(String name)
33         {
34                 return new DefaultPreferences().getDouble(name);
35         }
36
37         @Override
38         public ColorDefinition getColorDefinition(String name)
39         {
40                 RGB rgb = getColorRegistry().getRGB(name);
41                 if (rgb == null)
42                 {
43                         StatusManager.getManager().handle(new Status(IStatus.ERROR, "net.mograsim.plugin.core", "No color for name " + name));
44                         return null;
45                 }
46                 return new ColorDefinition(rgb.red, rgb.green, rgb.blue);
47         }
48
49         @Override
50         public Color getColor(String name)
51         {
52                 return getColorRegistry().get(name);
53         }
54
55         private ColorRegistry getColorRegistry()
56         {
57                 return theme.getColorRegistry();
58         }
59 }