More colors managed by Preferences
[Mograsim.git] / net.mograsim.plugin.core / src / net / mograsim / plugin / views / LogicUIPart.java
index aab85c8..d40f5a3 100644 (file)
@@ -2,12 +2,17 @@ package net.mograsim.plugin.views;
 
 import javax.inject.Inject;
 
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.jface.resource.ColorRegistry;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.RGB;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.part.ViewPart;
-import org.eclipse.ui.themes.ITheme;
+import org.eclipse.ui.statushandlers.StatusManager;
 
 import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInput;
 import net.mograsim.logic.core.timeline.Timeline;
@@ -21,6 +26,8 @@ import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901;
 import net.mograsim.logic.ui.model.wires.GUIWire;
 import net.mograsim.logic.ui.modeladapter.LogicModelParameters;
 import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter;
+import net.mograsim.preferences.ColorDefinition;
+import net.mograsim.preferences.Preferences;
 
 public class LogicUIPart extends ViewPart
 {
@@ -40,6 +47,33 @@ public class LogicUIPart extends ViewPart
        @Override
        public void createPartControl(Composite parent)
        {
+               // set preferences
+               Preferences.setPreferences(new Preferences()
+               {
+                       @Override
+                       public ColorDefinition getColorDefinition(String name)
+                       {
+                               RGB rgb = getColorRegistry().getRGB(name);
+                               if (rgb == null)
+                               {
+                                       StatusManager.getManager().handle(new Status(IStatus.ERROR, "net.mograsim.plugin.core", "No color for name " + name));
+                                       return null;
+                               }
+                               return new ColorDefinition(rgb.red, rgb.green, rgb.blue);
+                       }
+
+                       @Override
+                       public Color getColor(String name)
+                       {
+                               return getColorRegistry().get(name);
+                       }
+
+                       private ColorRegistry getColorRegistry()
+                       {
+                               return PlatformUI.getWorkbench().getThemeManager().getCurrentTheme().getColorRegistry();
+                       }
+               });
+
                // setup view model
                ViewModelModifiable viewModel = new ViewModelModifiable();
                createTestbench(viewModel);
@@ -58,10 +92,6 @@ public class LogicUIPart extends ViewPart
                userInput.buttonZoom = 2;
                userInput.enableUserInput();
 
-               ITheme currentTheme = PlatformUI.getWorkbench().getThemeManager().getCurrentTheme();
-               update(currentTheme);
-               currentTheme.getColorRegistry().addListener(e -> update(currentTheme));
-
                // initialize executer
                exec = new LogicExecuter(timeline);
 
@@ -69,12 +99,6 @@ public class LogicUIPart extends ViewPart
                exec.startLiveExecution();
        }
 
-       private void update(ITheme currentTheme)
-       {
-               ui.setBackground(currentTheme.getColorRegistry().get("net.mograsim.plugin.sim_backgound"));
-               ui.setForeground(currentTheme.getColorRegistry().get("net.mograsim.plugin.sim_text_color"));
-       }
-
        @Override
        public void setFocus()
        {