From 8ad5f0de7caaf81693c02a7734ddaf359013707d Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 29 Aug 2014 10:55:20 -0400 Subject: [PATCH] auto-sync --- .../src/com/irnems/core/EngineState.java | 9 +++ .../models/src/com/irnems/core/Sensor.java | 3 + java_console/ui/src/com/irnems/Launcher.java | 2 +- .../ui/src/com/rusefi/ui/FrameHelper.java | 4 +- .../ui/src/com/rusefi/ui/GaugesPanel.java | 5 ++ .../ui/src/com/rusefi/ui/RecentCommands.java | 3 +- .../ui/src/com/rusefi/ui/RpmPanel.java | 2 +- .../com/rusefi/ui/widgets/SensorGauge.java | 80 ++++++++++++++----- .../com/rusefi/ui/widgets/UpDownImage.java | 5 ++ 9 files changed, 86 insertions(+), 27 deletions(-) diff --git a/java_console/models/src/com/irnems/core/EngineState.java b/java_console/models/src/com/irnems/core/EngineState.java index 6a336e6890..266d67fa9e 100644 --- a/java_console/models/src/com/irnems/core/EngineState.java +++ b/java_console/models/src/com/irnems/core/EngineState.java @@ -96,6 +96,8 @@ public class EngineState { addDoubleSensor("duty0", Sensor.DUTY0); addDoubleSensor("duty1", Sensor.DUTY1); addDoubleSensor("timing", Sensor.TIMING); + addDoubleSensor(Sensor.TRG_0_DUTY); + addDoubleSensor(Sensor.TRG_1_DUTY); addDoubleSensor("idl", Sensor.IDLE_SWITCH); @@ -164,6 +166,13 @@ public class EngineState { }); } + /** + * Sensor enum name matches the protocol key + */ + private void addDoubleSensor(Sensor sensor) { + addDoubleSensor(sensor.name(), sensor); + } + private void addDoubleSensor(String key, final Sensor sensor) { addDoubleSensor(key, sensor, false); } diff --git a/java_console/models/src/com/irnems/core/Sensor.java b/java_console/models/src/com/irnems/core/Sensor.java index b854b2e3b4..e2b49de785 100644 --- a/java_console/models/src/com/irnems/core/Sensor.java +++ b/java_console/models/src/com/irnems/core/Sensor.java @@ -22,6 +22,9 @@ public enum Sensor { MAF("MAF", "Volts", 4), TPS("throttle", "%", 100), + TRG_0_DUTY("trg0 duty", "%", 100), + TRG_1_DUTY("trg1 duty", "%", 100), + // COOLANT_WIDTH("c w", "", 30), // INTAKE_AIR_WIDTH("air w", "", 30), diff --git a/java_console/ui/src/com/irnems/Launcher.java b/java_console/ui/src/com/irnems/Launcher.java index a6d49212fd..605279ac57 100644 --- a/java_console/ui/src/com/irnems/Launcher.java +++ b/java_console/ui/src/com/irnems/Launcher.java @@ -19,7 +19,7 @@ import javax.swing.*; * @see WavePanel */ public class Launcher extends FrameHelper { - public static final int CONSOLE_VERSION = 20140820; + public static final int CONSOLE_VERSION = 20140828; public static final boolean SHOW_STIMULATOR = true; public Launcher(String port) { diff --git a/java_console/ui/src/com/rusefi/ui/FrameHelper.java b/java_console/ui/src/com/rusefi/ui/FrameHelper.java index 4518bf310c..7618224ad9 100644 --- a/java_console/ui/src/com/rusefi/ui/FrameHelper.java +++ b/java_console/ui/src/com/rusefi/ui/FrameHelper.java @@ -13,7 +13,7 @@ import java.awt.event.WindowEvent; public class FrameHelper { protected final JFrame frame = new JFrame(); - protected void showFrame(JComponent container) { + protected void showFrame(JComponent component) { frame.setSize(800, 500); frame.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); frame.addWindowListener(new WindowAdapter() { @@ -28,7 +28,7 @@ public class FrameHelper { onWindowClosed(); } }); - frame.add(container); + frame.add(component); frame.setVisible(true); } diff --git a/java_console/ui/src/com/rusefi/ui/GaugesPanel.java b/java_console/ui/src/com/rusefi/ui/GaugesPanel.java index 818bf0666f..e7c7dd052a 100644 --- a/java_console/ui/src/com/rusefi/ui/GaugesPanel.java +++ b/java_console/ui/src/com/rusefi/ui/GaugesPanel.java @@ -19,6 +19,11 @@ public class GaugesPanel { private final JPanel content = new JPanel(new BorderLayout()); + public static void main(String[] args) { + FrameHelper fh = new FrameHelper(); + fh.showFrame(new GaugesPanel().getContent()); + } + public GaugesPanel() { // Radial radial2 = createRadial("title"); diff --git a/java_console/ui/src/com/rusefi/ui/RecentCommands.java b/java_console/ui/src/com/rusefi/ui/RecentCommands.java index 37b5a6972e..5d093316d7 100644 --- a/java_console/ui/src/com/rusefi/ui/RecentCommands.java +++ b/java_console/ui/src/com/rusefi/ui/RecentCommands.java @@ -36,6 +36,7 @@ public class RecentCommands { } }); + add("help"); add("showconfig"); add("writeconfig"); add("enable_injection"); @@ -52,7 +53,7 @@ public class RecentCommands { content.add(createButton(entry)); } UpDownImage.trueRepaint(content.getParent()); -// UpDownImage.trueLayout(content); + UpDownImage.trueLayout(content.getParent()); } private JComponent createButton(final Entry entry) { diff --git a/java_console/ui/src/com/rusefi/ui/RpmPanel.java b/java_console/ui/src/com/rusefi/ui/RpmPanel.java index 791f3a0bca..aab1b7fd75 100644 --- a/java_console/ui/src/com/rusefi/ui/RpmPanel.java +++ b/java_console/ui/src/com/rusefi/ui/RpmPanel.java @@ -53,7 +53,7 @@ public class RpmPanel { gauges.add(SensorGauge.createGauge(Sensor.FUEL)); //gauges.add(GaugesPanel.createGauge(Sensor.ADVANCE0)); - gauges.add(SensorGauge.createGauge(Sensor.VREF, PotCommand.VOLTAGE_CORRECTION)); + gauges.add(SensorGauge.createGauge(Sensor.VREF)); gauges.add(SensorGauge.createGauge(Sensor.MAF)); gauges.add(SensorGauge.createGauge(Sensor.DWELL1)); // gauges.add(GaugesPanel.createGauge(Sensor.ADVANCE1)); diff --git a/java_console/ui/src/com/rusefi/ui/widgets/SensorGauge.java b/java_console/ui/src/com/rusefi/ui/widgets/SensorGauge.java index 8d92155bb7..84f4ba5348 100644 --- a/java_console/ui/src/com/rusefi/ui/widgets/SensorGauge.java +++ b/java_console/ui/src/com/rusefi/ui/widgets/SensorGauge.java @@ -10,6 +10,8 @@ import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.text.DecimalFormat; @@ -32,17 +34,22 @@ public class SensorGauge { private static final int _5_VOLTS_WITH_DECIMAL = 50; public static Component createGauge(final Sensor sensor) { - return createGauge(sensor, 1); + JPanel wrapper = new JPanel(new BorderLayout()); + + createGaugeBody(sensor, wrapper); + + + return wrapper; } - public static Component createGauge(final Sensor sensor, final double correction) { + private static void createGaugeBody(final Sensor sensor, final JPanel wrapper) { final Radial gauge = createRadial(sensor.getName(), sensor.getUnits(), sensor.getMaxValue(), sensor.getMinValue()); gauge.setBackgroundColor(sensor.getColor()); SensorCentral.getInstance().addListener(sensor, new SensorCentral.AdcListener() { public void onAdcUpdate(SensorCentral model, double value) { - gauge.setValue(value * correction); + gauge.setValue(value); } }); gauge.setLcdDecimals(2); @@ -50,29 +57,58 @@ public class SensorGauge { gauge.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - if (e.getClickCount() == 2) { - int size = gauge.getSize().width; - JFrame n = new JFrame(sensor.getName()); - boolean isMockable = MOCKABLE.contains(sensor); - int h = isMockable ? (int) (size * 1.5) : size; - - JPanel content = new JPanel(new BorderLayout()); - - content.add(createGauge(sensor, correction), BorderLayout.CENTER); - - if (isMockable) - content.add(createMockVoltageSlider(sensor), BorderLayout.SOUTH); - - n.setSize(size, h); - n.setAlwaysOnTop(true); - n.add(content); - n.setVisible(true); - n.setLocation(e.getXOnScreen(), e.getYOnScreen()); + if (SwingUtilities.isRightMouseButton(e)) { + showPopupMenu(e, wrapper); + } else if (e.getClickCount() == 2) { + handleDoubleClick(e, gauge, sensor); } } }); + wrapper.removeAll(); + wrapper.add(gauge, BorderLayout.CENTER); + UpDownImage.trueRepaint(wrapper.getParent()); + UpDownImage.trueLayout(wrapper.getParent()); + } - return gauge; + private static void showPopupMenu(MouseEvent e, JPanel wrapper) { + JPopupMenu pm = new JPopupMenu(); + JMenu gauges = new JMenu("Gauges..."); + fillGaugeItems(gauges, wrapper); + pm.add(gauges); + pm.show(e.getComponent(), e.getX(), e.getY()); + } + + private static void fillGaugeItems(JMenu gauges, final JPanel wrapper) { + for (final Sensor s : Sensor.values()) { + JMenuItem mi = new JMenuItem(s.getName()); + mi.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + createGaugeBody(s, wrapper); + } + }); + gauges.add(mi); + } + } + + private static void handleDoubleClick(MouseEvent e, Radial gauge, Sensor sensor) { + int size = gauge.getSize().width; + JFrame n = new JFrame(sensor.getName()); + boolean isMockable = MOCKABLE.contains(sensor); + int h = isMockable ? (int) (size * 1.5) : size; + + JPanel content = new JPanel(new BorderLayout()); + + content.add(createGauge(sensor), BorderLayout.CENTER); + + if (isMockable) + content.add(createMockVoltageSlider(sensor), BorderLayout.SOUTH); + + n.setSize(size, h); + n.setAlwaysOnTop(true); + n.add(content); + n.setVisible(true); + n.setLocation(e.getXOnScreen(), e.getYOnScreen()); } private final static Hashtable SLIDER_LABELS = new Hashtable(); diff --git a/java_console/ui/src/com/rusefi/ui/widgets/UpDownImage.java b/java_console/ui/src/com/rusefi/ui/widgets/UpDownImage.java index b7e157c409..c901a4e372 100644 --- a/java_console/ui/src/com/rusefi/ui/widgets/UpDownImage.java +++ b/java_console/ui/src/com/rusefi/ui/widgets/UpDownImage.java @@ -65,7 +65,12 @@ public class UpDownImage extends JPanel { control.repaint(); } + /** + * todo: one 'trueXXX' method should be enough, which one? + */ public static void trueLayout(Component component) { + if (component == null) + return; component.invalidate(); component.validate(); }