Fixed an endless redraw loop on GTK
[Mograsim.git] / plugins / net.mograsim.plugin.core / src / net / mograsim / plugin / EclipsePreferences.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.preference.IPreferenceStore;
6 import org.eclipse.jface.resource.ColorRegistry;
7 import org.eclipse.swt.graphics.Color;
8 import org.eclipse.swt.graphics.RGB;
9 import org.eclipse.ui.statushandlers.StatusManager;
10 import org.eclipse.ui.themes.ITheme;
11
12 import net.mograsim.preferences.ColorDefinition;
13 import net.mograsim.preferences.DefaultPreferences;
14 import net.mograsim.preferences.Preferences;
15
16 public class EclipsePreferences extends Preferences
17 {
18         private final ITheme theme;
19         private final IPreferenceStore prefs;
20         private final Preferences defaultPrefs;
21
22         public EclipsePreferences(ITheme theme, IPreferenceStore prefs)
23         {
24                 this.theme = theme;
25                 this.prefs = prefs;
26                 this.defaultPrefs = new DefaultPreferences();
27         }
28
29         @Override
30         public boolean getBoolean(String name)
31         {
32                 prefs.setDefault(name, defaultPrefs.getBoolean(name));
33                 return prefs.getBoolean(name);
34         }
35
36         @Override
37         public int getInt(String name)
38         {
39                 prefs.setDefault(name, defaultPrefs.getInt(name));
40                 return prefs.getInt(name);
41         }
42
43         @Override
44         public double getDouble(String name)
45         {
46                 prefs.setDefault(name, defaultPrefs.getDouble(name));
47                 return prefs.getDouble(name);
48         }
49
50         @Override
51         public ColorDefinition getColorDefinition(String name)
52         {
53                 RGB rgb = getColorRegistry().getRGB(name);
54                 if (rgb == null)
55                 {
56                         StatusManager.getManager().handle(new Status(IStatus.ERROR, MograsimActivator.PLUGIN_ID, "No color for name " + name));
57                         return null;
58                 }
59                 return new ColorDefinition(rgb.red, rgb.green, rgb.blue);
60         }
61
62         @Override
63         public Color getColor(String name)
64         {
65                 return getColorRegistry().get(name);
66         }
67
68         private ColorRegistry getColorRegistry()
69         {
70                 return theme.getColorRegistry();
71         }
72 }