Changed simulation speed slider to a scale (not sure if this is better?)
[Mograsim.git] / plugins / net.mograsim.plugin.core / src / net / mograsim / plugin / editors / SimulationViewEditor.java
index 06fadc0..f88dc55 100644 (file)
@@ -17,7 +17,7 @@ import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Slider;
+import org.eclipse.swt.widgets.Scale;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
 import org.eclipse.ui.IFileEditorInput;
@@ -38,6 +38,7 @@ import net.mograsim.plugin.nature.ProjectMachineContext;
 import net.mograsim.plugin.tables.DisplaySettings;
 import net.mograsim.plugin.tables.mi.ActiveInstructionPreviewContentProvider;
 import net.mograsim.plugin.tables.mi.InstructionTable;
+import net.mograsim.preferences.Preferences;
 
 //TODO what if we open multiple editors?
 //TODO actually save / load register and latch states
@@ -53,19 +54,19 @@ public class SimulationViewEditor extends EditorPart
        private Button sbseButton;
        private Button pauseButton;
        private Label speedFactorLabel;
-       private Slider simSpeedSlider;
+       private Scale simSpeedScale;
        private Composite canvasParent;
        private LogicUICanvas canvas;
        private InstructionTable instPreview;
        private Label noMachineLabel;
 
-       private ActiveMachineListener activeMNachineListener;
+       private ActiveMachineListener activeMachineListener;
        private MemoryCellModifiedListener memCellListener;
        private LogicObserver clockObserver;
 
        public SimulationViewEditor()
        {
-               activeMNachineListener = m -> recreateContextDependentControls();
+               activeMachineListener = m -> recreateContextDependentControls();
                memCellListener = a -> instPreview.refresh();
                clockObserver = o ->
                {
@@ -130,13 +131,13 @@ public class SimulationViewEditor extends EditorPart
                        resetButton.setEnabled(true);
                        sbseButton.setEnabled(true);
                        pauseButton.setEnabled(true);
-                       simSpeedSlider.setEnabled(true);
+                       simSpeedScale.setEnabled(true);
 
                        machine = machineOptional.get();
                        canvas = new LogicUICanvas(canvasParent, SWT.NONE, machine.getModel());
                        ZoomableCanvasUserInput userInput = new ZoomableCanvasUserInput(canvas);
-                       userInput.buttonDrag = 3;
-                       userInput.buttonZoom = 2;
+                       userInput.buttonDrag = Preferences.current().getInt("net.mograsim.logic.model.button.drag");
+                       userInput.buttonZoom = Preferences.current().getInt("net.mograsim.logic.model.button.zoom");
                        userInput.enableUserInput();
                        if (zoom > 0)
                        {
@@ -161,7 +162,7 @@ public class SimulationViewEditor extends EditorPart
                        resetButton.setEnabled(false);
                        sbseButton.setEnabled(false);
                        pauseButton.setEnabled(false);
-                       simSpeedSlider.setEnabled(false);
+                       simSpeedScale.setEnabled(false);
                }
        }
 
@@ -227,16 +228,16 @@ public class SimulationViewEditor extends EditorPart
 
                new Label(c, SWT.NONE).setText("Simulation Speed: ");
 
-               simSpeedSlider = new Slider(c, SWT.NONE);
-               simSpeedSlider.setMinimum(0);
-               simSpeedSlider.setMaximum(50 + simSpeedSlider.getThumb());
-               simSpeedSlider.setIncrement(1);
-               simSpeedSlider.setSelection(0);
+               simSpeedScale = new Scale(c, SWT.NONE);
+               simSpeedScale.setMinimum(0);
+               simSpeedScale.setMaximum(50);
+               simSpeedScale.setIncrement(1);
+               simSpeedScale.setSelection(0);
 
                speedFactorLabel = new Label(c, SWT.NONE);
                speedFactorLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
 
-               simSpeedSlider.addListener(SWT.Selection, e -> updateSpeedFactor());
+               simSpeedScale.addListener(SWT.Selection, e -> updateSpeedFactor());
                updateSpeedFactor();
 
                c.layout();
@@ -254,7 +255,7 @@ public class SimulationViewEditor extends EditorPart
 
        private void updateSpeedFactor()
        {
-               double factor = Math.pow(1.32, simSpeedSlider.getSelection() - 50);
+               double factor = Math.pow(1.32, simSpeedScale.getSelection() - 50);
                speedFactorLabel.setText(String.format("%f", factor));
                if (exec != null)
                        exec.setSpeedFactor(factor);
@@ -288,7 +289,7 @@ public class SimulationViewEditor extends EditorPart
                        IFileEditorInput fileInput = (IFileEditorInput) input;
                        context = ProjectMachineContext.getMachineContextOf(fileInput.getFile().getProject());
                        context.activateMachine();
-                       context.addActiveMachineListener(activeMNachineListener);
+                       context.addActiveMachineListener(activeMachineListener);
                        recreateContextDependentControls();
 
                        setPartName(fileInput.getName());
@@ -348,7 +349,7 @@ public class SimulationViewEditor extends EditorPart
        public void dispose()
        {
                stopExecAndDeregisterContextDependentListeners();
-               context.removeActiveMachineListener(activeMNachineListener);
+               context.removeActiveMachineListener(activeMachineListener);
                super.dispose();
        }
 }
\ No newline at end of file