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
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
<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
+++ /dev/null
-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
--- /dev/null
+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();
+ }
+}
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;
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
{
@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);