42da25d1dfb22e754cba2c2900860f09c074e246
[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 boolean getBoolean(String name)
27         {
28                 return new DefaultPreferences().getBoolean(name);
29         }
30
31         @Override
32         public int getInt(String name)
33         {
34                 return new DefaultPreferences().getInt(name);
35         }
36
37         @Override
38         public double getDouble(String name)
39         {
40                 return new DefaultPreferences().getDouble(name);
41         }
42
43         @Override
44         public ColorDefinition getColorDefinition(String name)
45         {
46                 RGB rgb = getColorRegistry().getRGB(name);
47                 if (rgb == null)
48                 {
49                         StatusManager.getManager().handle(new Status(IStatus.ERROR, "net.mograsim.plugin.core", "No color for name " + name));
50                         return null;
51                 }
52                 return new ColorDefinition(rgb.red, rgb.green, rgb.blue);
53         }
54
55         @Override
56         public Color getColor(String name)
57         {
58                 return getColorRegistry().get(name);
59         }
60
61         private ColorRegistry getColorRegistry()
62         {
63                 return theme.getColorRegistry();
64         }
65 }