Now using preference system in plugin.core
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Tue, 25 Jun 2019 08:45:53 +0000 (10:45 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Tue, 25 Jun 2019 08:45:53 +0000 (10:45 +0200)
net.mograsim.plugin.core/.settings/org.eclipse.jdt.ui.prefs
net.mograsim.plugin.core/META-INF/MANIFEST.MF
net.mograsim.plugin.core/plugin.xml
net.mograsim.plugin.core/src/net/mograsim/plugin/MograsimPreview.java [deleted file]
net.mograsim.plugin.core/src/net/mograsim/plugin/SimulationPreview.java [new file with mode: 0644]
net.mograsim.plugin.core/src/net/mograsim/plugin/views/LogicUIPart.java

index 737e3a5..2615e7b 100644 (file)
@@ -1,6 +1,6 @@
 eclipse.preferences.version=1\r
 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true\r
-formatter_profile=_Eclipse ajusted old\r
+formatter_profile=_MoGraSim\r
 formatter_settings_version=16\r
 sp_cleanup.add_default_serial_version_id=true\r
 sp_cleanup.add_generated_serial_version_id=false\r
index 8ef1a71..7e65cf9 100644 (file)
@@ -21,7 +21,8 @@ Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.ui.themes;bundle-version="1.2.400",
  net.mograsim.logic.ui;bundle-version="0.1.0";visibility:=reexport,
  net.mograsim.logic.ui.am2900;bundle-version="0.1.0";visibility:=reexport,
- javax.annotation;bundle-version="1.0.0"
+ javax.annotation;bundle-version="1.0.0",
+ net.mograsim.preferences;bundle-version="0.1.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Automatic-Module-Name: net.mograsim.plugin.core
 Bundle-Vendor: Mograsim Team
index 7dc987c..16c3689 100644 (file)
    <extension\r
          point="org.eclipse.ui.themes">\r
       <themeElementCategory\r
-            class="net.mograsim.plugin.MograsimPreview"\r
+            class="net.mograsim.plugin.SimulationPreview"\r
             id="net.mograsim.plugin.mograsim"\r
             label="%themeElementCategory.label">\r
       </themeElementCategory>\r
+      <themeElementCategory\r
+            class="net.mograsim.plugin.SimulationPreview"\r
+            id="net.mograsim.logic.ui"\r
+            label="Simulation"\r
+            parentId="net.mograsim.plugin.mograsim">\r
+      </themeElementCategory>\r
       <colorDefinition\r
-            categoryId="net.mograsim.plugin.mograsim"\r
-            defaultsTo="COLOR_WHITE"\r
+            categoryId="net.mograsim.logic.ui"\r
             id="net.mograsim.plugin.sim_backgound"\r
             isEditable="true"\r
-            label="%colorDefinition.label">\r
+            label="%colorDefinition.label"\r
+            value="COLOR_WHITE">\r
          <description>\r
             %colorDefinition.description\r
          </description>\r
       </colorDefinition>\r
       <colorDefinition\r
-            categoryId="net.mograsim.plugin.mograsim"\r
-            defaultsTo="COLOR_BLACK"\r
+            categoryId="net.mograsim.logic.ui"\r
             id="net.mograsim.plugin.sim_text_color"\r
             isEditable="true"\r
-            label="%colorDefinition.label.0">\r
+            label="%colorDefinition.label.0"\r
+            value="COLOR_BLACK">\r
+      </colorDefinition>\r
+      <colorDefinition\r
+            categoryId="net.mograsim.logic.ui"\r
+            id="net.mograsim.logic.ui.color.bit.one"\r
+            isEditable="true"\r
+            label="Simulation Farbe 1"\r
+            value="COLOR_GREEN">\r
+      </colorDefinition>\r
+      <colorDefinition\r
+            categoryId="net.mograsim.logic.ui"\r
+            id="net.mograsim.logic.ui.color.bit.u"\r
+            isEditable="true"\r
+            label="Simulation Farbe U"\r
+            value="COLOR_CYAN">\r
+      </colorDefinition>\r
+      <colorDefinition\r
+            categoryId="net.mograsim.logic.ui"\r
+            id="net.mograsim.logic.ui.color.bit.x"\r
+            isEditable="true"\r
+            label="Simulation Farbe X"\r
+            value="COLOR_RED">\r
+      </colorDefinition>\r
+      <colorDefinition\r
+            categoryId="net.mograsim.logic.ui"\r
+            id="net.mograsim.logic.ui.color.bit.z"\r
+            isEditable="true"\r
+            label="Simulation Farbe Z"\r
+            value="COLOR_YELLOW">\r
+      </colorDefinition>\r
+      <colorDefinition\r
+            categoryId="net.mograsim.logic.ui"\r
+            id="net.mograsim.logic.ui.color.bit.zero"\r
+            isEditable="true"\r
+            label="Simulation Farbe 0"\r
+            value="COLOR_GRAY">\r
       </colorDefinition>\r
       <colorDefinition\r
             categoryId="net.mograsim.plugin.mograsim"\r
-            defaultsTo="COLOR_GREEN"\r
             id="net.mograsim.plugin.asm_comment_color"\r
             isEditable="true"\r
-            label="%colorDefinition.label.1">\r
+            label="%colorDefinition.label.1"\r
+            value="COLOR_GREEN">\r
       </colorDefinition>\r
       <colorDefinition\r
             categoryId="net.mograsim.plugin.mograsim"\r
-            defaultsTo="COLOR_BLUE"\r
             id="net.mograsim.plugin.asm_label_color"\r
             isEditable="true"\r
-            label="%colorDefinition.label.2">\r
+            label="%colorDefinition.label.2"\r
+            value="COLOR_BLUE">\r
       </colorDefinition>\r
       <colorDefinition\r
             categoryId="net.mograsim.plugin.mograsim"\r
-            defaultsTo="COLOR_RED"\r
             id="net.mograsim.plugin.asm_operation_color"\r
             isEditable="true"\r
-            label="%colorDefinition.label.3">\r
+            label="%colorDefinition.label.3"\r
+            value="COLOR_RED">\r
       </colorDefinition>\r
       <colorDefinition\r
             categoryId="net.mograsim.plugin.mograsim"\r
-            defaultsTo="COLOR_MAGENTA"\r
             id="net.mograsim.plugin.asm_number_color"\r
             isEditable="true"\r
-            label="%colorDefinition.label.4">\r
+            label="%colorDefinition.label.4"\r
+            value="COLOR_MAGENTA">\r
       </colorDefinition>\r
       <fontDefinition\r
             categoryId="net.mograsim.plugin.mograsim"\r
diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/MograsimPreview.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/MograsimPreview.java
deleted file mode 100644 (file)
index aa051a8..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-package net.mograsim.plugin;\r
-\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.ui.themes.ITheme;\r
-import org.eclipse.ui.themes.IThemePreview;\r
-\r
-import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
-import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInput;\r
-import net.mograsim.logic.core.timeline.Timeline;\r
-import net.mograsim.logic.ui.LogicExecuter;\r
-import net.mograsim.logic.ui.LogicUICanvas;\r
-import net.mograsim.logic.ui.model.ViewModelModifiable;\r
-import net.mograsim.logic.ui.model.components.GUIManualSwitch;\r
-import net.mograsim.logic.ui.model.components.GUINotGate;\r
-import net.mograsim.logic.ui.model.components.GUIOrGate;\r
-import net.mograsim.logic.ui.model.wires.GUIWire;\r
-import net.mograsim.logic.ui.model.wires.WireCrossPoint;\r
-import net.mograsim.logic.ui.modeladapter.LogicModelParameters;\r
-import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter;\r
-\r
-public class MograsimPreview implements IThemePreview\r
-{\r
-\r
-       private LogicUICanvas ui;\r
-       private LogicExecuter exec;\r
-\r
-       @Override\r
-       @SuppressWarnings("unused")\r
-       public void createControl(Composite parent, ITheme currentTheme)\r
-       {\r
-               ViewModelModifiable model = new ViewModelModifiable();\r
-               LogicModelParameters params = new LogicModelParameters();\r
-               params.gateProcessTime = 50;\r
-               params.wireTravelTime = 10;\r
-\r
-               GUIManualSwitch rIn = new GUIManualSwitch(model);\r
-               rIn.moveTo(10, 10);\r
-               GUIManualSwitch sIn = new GUIManualSwitch(model);\r
-               sIn.moveTo(10, 70);\r
-\r
-               GUIOrGate or1 = new GUIOrGate(model, 1);\r
-               or1.moveTo(70, 12.5);\r
-               new GUIWire(model, rIn.getOutputPin(), or1.getPin("A"));\r
-\r
-               GUIOrGate or2 = new GUIOrGate(model, 1);\r
-               or2.moveTo(70, 62.5);\r
-               new GUIWire(model, sIn.getOutputPin(), or2.getPin("B"));\r
-\r
-               GUINotGate not1 = new GUINotGate(model, 1);\r
-               not1.moveTo(110, 17.5);\r
-               new GUIWire(model, or1.getPin("Y"), not1.getPin("A"));\r
-\r
-               GUINotGate not2 = new GUINotGate(model, 1);\r
-               not2.moveTo(110, 67.5);\r
-               new GUIWire(model, or2.getPin("Y"), not2.getPin("A"));\r
-\r
-               WireCrossPoint p1 = new WireCrossPoint(model, 1);\r
-               p1.moveCenterTo(140, 22.5);\r
-               new GUIWire(model, not1.getPin("Y"), p1);\r
-               new GUIWire(model, p1, or2.getPin("A"), new Point(140, 35), new Point(50, 60), new Point(50, 67.5));\r
-\r
-               WireCrossPoint p2 = new WireCrossPoint(model, 1);\r
-               p2.moveCenterTo(140, 72.5);\r
-               new GUIWire(model, not2.getPin("Y"), p2);\r
-               new GUIWire(model, p2, or1.getPin("B"), new Point(140, 60), new Point(50, 35), new Point(50, 27.5));\r
-\r
-               WireCrossPoint o1 = new WireCrossPoint(model, 1);\r
-               o1.moveCenterTo(150, 22.5);\r
-               new GUIWire(model, p1, o1);\r
-\r
-               WireCrossPoint o2 = new WireCrossPoint(model, 1);\r
-               o2.moveCenterTo(150, 72.5);\r
-               new GUIWire(model, p2, o2);\r
-\r
-               Timeline t = ViewLogicModelAdapter.convert(model, params);\r
-               exec = new LogicExecuter(t);\r
-\r
-               rIn.clicked(0, 0);\r
-\r
-               ui = new LogicUICanvas(parent, SWT.NONE, model);\r
-               ZoomableCanvasUserInput userInput = new ZoomableCanvasUserInput(ui);\r
-               userInput.buttonDrag = 3;\r
-               userInput.buttonZoom = 2;\r
-               userInput.enableUserInput();\r
-               update(currentTheme);\r
-               currentTheme.getColorRegistry().addListener(e -> update(currentTheme));\r
-\r
-               ui.zoomSteps(12, 10, 10);\r
-               exec.startLiveExecution();\r
-       }\r
-\r
-       private void update(ITheme currentTheme)\r
-       {\r
-               ui.setBackground(currentTheme.getColorRegistry().get("net.mograsim.plugin.sim_backgound"));\r
-               ui.setForeground(currentTheme.getColorRegistry().get("net.mograsim.plugin.sim_text_color"));\r
-       }\r
-\r
-       @Override\r
-       public void dispose()\r
-       {\r
-               exec.stopLiveExecution();\r
-       }\r
-}\r
diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/SimulationPreview.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/SimulationPreview.java
new file mode 100644 (file)
index 0000000..9426f2c
--- /dev/null
@@ -0,0 +1,104 @@
+package net.mograsim.plugin;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.themes.ITheme;
+import org.eclipse.ui.themes.IThemePreview;
+
+import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
+import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInput;
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.ui.LogicExecuter;
+import net.mograsim.logic.ui.LogicUICanvas;
+import net.mograsim.logic.ui.model.ViewModelModifiable;
+import net.mograsim.logic.ui.model.components.GUIManualSwitch;
+import net.mograsim.logic.ui.model.components.GUINotGate;
+import net.mograsim.logic.ui.model.components.GUIOrGate;
+import net.mograsim.logic.ui.model.wires.GUIWire;
+import net.mograsim.logic.ui.model.wires.WireCrossPoint;
+import net.mograsim.logic.ui.modeladapter.LogicModelParameters;
+import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter;
+
+public class SimulationPreview implements IThemePreview
+{
+
+       private LogicUICanvas ui;
+       private LogicExecuter exec;
+
+       @Override
+       @SuppressWarnings("unused")
+       public void createControl(Composite parent, ITheme currentTheme)
+       {
+               ViewModelModifiable model = new ViewModelModifiable();
+               LogicModelParameters params = new LogicModelParameters();
+               params.gateProcessTime = 50;
+               params.wireTravelTime = 10;
+
+               GUIManualSwitch rIn = new GUIManualSwitch(model);
+               rIn.moveTo(10, 10);
+               GUIManualSwitch sIn = new GUIManualSwitch(model);
+               sIn.moveTo(10, 70);
+
+               GUIOrGate or1 = new GUIOrGate(model, 1);
+               or1.moveTo(70, 12.5);
+               new GUIWire(model, rIn.getOutputPin(), or1.getPin("A"));
+
+               GUIOrGate or2 = new GUIOrGate(model, 1);
+               or2.moveTo(70, 62.5);
+               new GUIWire(model, sIn.getOutputPin(), or2.getPin("B"));
+
+               GUINotGate not1 = new GUINotGate(model, 1);
+               not1.moveTo(110, 17.5);
+               new GUIWire(model, or1.getPin("Y"), not1.getPin("A"));
+
+               GUINotGate not2 = new GUINotGate(model, 1);
+               not2.moveTo(110, 67.5);
+               new GUIWire(model, or2.getPin("Y"), not2.getPin("A"));
+
+               WireCrossPoint p1 = new WireCrossPoint(model, 1);
+               p1.moveCenterTo(140, 22.5);
+               new GUIWire(model, not1.getPin("Y"), p1);
+               new GUIWire(model, p1, or2.getPin("A"), new Point(140, 35), new Point(50, 60), new Point(50, 67.5));
+
+               WireCrossPoint p2 = new WireCrossPoint(model, 1);
+               p2.moveCenterTo(140, 72.5);
+               new GUIWire(model, not2.getPin("Y"), p2);
+               new GUIWire(model, p2, or1.getPin("B"), new Point(140, 60), new Point(50, 35), new Point(50, 27.5));
+
+               WireCrossPoint o1 = new WireCrossPoint(model, 1);
+               o1.moveCenterTo(150, 22.5);
+               new GUIWire(model, p1, o1);
+
+               WireCrossPoint o2 = new WireCrossPoint(model, 1);
+               o2.moveCenterTo(150, 72.5);
+               new GUIWire(model, p2, o2);
+
+               Timeline t = ViewLogicModelAdapter.convert(model, params);
+               exec = new LogicExecuter(t);
+
+               rIn.clicked(0, 0);
+
+               ui = new LogicUICanvas(parent, SWT.NONE, model);
+               ZoomableCanvasUserInput userInput = new ZoomableCanvasUserInput(ui);
+               userInput.buttonDrag = 3;
+               userInput.buttonZoom = 2;
+               userInput.enableUserInput();
+               update(currentTheme);
+               currentTheme.getColorRegistry().addListener(e -> update(currentTheme));
+
+               ui.zoomSteps(12, 10, 10);
+               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 dispose()
+       {
+               exec.stopLiveExecution();
+       }
+}
index aab85c8..61e0b38 100644 (file)
@@ -2,11 +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.statushandlers.StatusManager;
 import org.eclipse.ui.themes.ITheme;
 
 import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInput;
@@ -21,6 +27,9 @@ 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.ColorDefinition.BuiltInColor;
+import net.mograsim.preferences.Preferences;
 
 public class LogicUIPart extends ViewPart
 {
@@ -40,6 +49,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 new ColorDefinition(BuiltInColor.COLOR_BLACK);
+                               }
+                               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);