From 1e497b626e8163680948b889dd3cf383f8495b8b Mon Sep 17 00:00:00 2001 From: rusefi Date: Thu, 25 Jun 2020 20:18:02 -0400 Subject: [PATCH] refactoring: better dependency control --- .../ui/src/main/java/com/rusefi/ConsoleUI.java | 5 ++--- .../main/java/com/rusefi/SensorSnifferPane.java | 9 +++++---- .../com/rusefi/sensor_logs/SensorLogger.java | 9 +-------- .../rusefi/test/SensorSnifferPaneSandbox.java | 17 ----------------- .../src/main/java/com/rusefi/ui/UIContext.java | 3 +++ .../com/rusefi/ui/config/BaseConfigField.java | 7 +++++-- .../com/rusefi/ui/config/BitConfigField.java | 2 +- .../java/com/rusefi/ui/config/ConfigField.java | 5 +++-- .../com/rusefi/ui/config/EnumConfigField.java | 5 +++-- .../java/com/rusefi/ui/console/MainFrame.java | 2 +- .../java/com/rusefi/ui/console/SettingsTab.java | 4 ++-- .../rusefi/ui/engine/EngineSnifferPanel.java | 8 ++++---- .../com/rusefi/ui/etb/EtbCommandsPanel.java | 10 ++++------ .../com/rusefi/ui/light/LightweightGUI.java | 6 +++++- 14 files changed, 39 insertions(+), 53 deletions(-) delete mode 100644 java_console/ui/src/main/java/com/rusefi/test/SensorSnifferPaneSandbox.java diff --git a/java_console/ui/src/main/java/com/rusefi/ConsoleUI.java b/java_console/ui/src/main/java/com/rusefi/ConsoleUI.java index f3c674f4d2..d131d2ca8c 100644 --- a/java_console/ui/src/main/java/com/rusefi/ConsoleUI.java +++ b/java_console/ui/src/main/java/com/rusefi/ConsoleUI.java @@ -11,7 +11,6 @@ import com.rusefi.io.LinkManager; import com.rusefi.io.serial.BaudRateHolder; import com.rusefi.maintenance.FirmwareFlasher; import com.rusefi.maintenance.VersionChecker; -import com.rusefi.sensor_logs.SensorLogger; import com.rusefi.ui.*; import com.rusefi.ui.console.MainFrame; import com.rusefi.ui.console.TabbedPanel; @@ -104,7 +103,7 @@ public class ConsoleUI { tabbedPaneAdd("Engine Sniffer", engineSnifferPanel.getPanel(), engineSnifferPanel.getTabSelectedListener()); if (!LinkManager.isLogViewer()) { - SensorSnifferPane sensorSniffer = new SensorSnifferPane(getConfig().getRoot().getChild("sensor_sniffer")); + SensorSnifferPane sensorSniffer = new SensorSnifferPane(uiContext, getConfig().getRoot().getChild("sensor_sniffer")); tabbedPaneAdd("Sensor Sniffer", sensorSniffer.getPanel(), sensorSniffer.getTabSelectedListener()); } @@ -141,7 +140,7 @@ public class ConsoleUI { tabbedPane.addTab("rusEFI Online", new OnlineTab().getContent()); - SensorLogger.init(); + uiContext.sensorLogger.init(); if (!LinkManager.isLogViewerMode(port)) { int selectedIndex = getConfig().getRoot().getIntProperty(TAB_INDEX, DEFAULT_TAB_INDEX); diff --git a/java_console/ui/src/main/java/com/rusefi/SensorSnifferPane.java b/java_console/ui/src/main/java/com/rusefi/SensorSnifferPane.java index 64c7493306..d96f6d6849 100644 --- a/java_console/ui/src/main/java/com/rusefi/SensorSnifferPane.java +++ b/java_console/ui/src/main/java/com/rusefi/SensorSnifferPane.java @@ -3,6 +3,7 @@ package com.rusefi; import com.rusefi.config.generated.Fields; import com.rusefi.ui.RpmLabel; import com.rusefi.ui.RpmModel; +import com.rusefi.ui.UIContext; import com.rusefi.ui.config.ConfigField; import com.rusefi.ui.config.EnumConfigField; import com.rusefi.ui.engine.EngineSnifferPanel; @@ -38,7 +39,7 @@ public class SensorSnifferPane { private boolean paused = false; - public SensorSnifferPane(Node config) { + public SensorSnifferPane(UIContext uiContext, Node config) { SensorSnifferCentral.addListener(new SensorSnifferCentral.AnalogChartListener() { @Override public void onAnalogChart(final String message) { @@ -108,9 +109,9 @@ public class SensorSnifferPane { lowerPanel.setBorder(BorderFactory.createLineBorder(Color.cyan)); content.add(lowerPanel, BorderLayout.SOUTH); - lowerPanel.add(new EnumConfigField(Fields.SENSORCHARTMODE, "Mode").getContent()); - lowerPanel.add(new ConfigField(Fields.SENSORCHARTFREQUENCY, "Every XXX engine cycles").getContent()); - lowerPanel.add(new ConfigField(Fields.SENSORSNIFFERRPMTHRESHOLD, "RPM threashold").getContent()); + lowerPanel.add(new EnumConfigField(uiContext, Fields.SENSORCHARTMODE, "Mode").getContent()); + lowerPanel.add(new ConfigField(uiContext, Fields.SENSORCHARTFREQUENCY, "Every XXX engine cycles").getContent()); + lowerPanel.add(new ConfigField(uiContext, Fields.SENSORSNIFFERRPMTHRESHOLD, "RPM threashold").getContent()); } private void setPaused(JButton pauseButton, boolean isPaused) { diff --git a/java_console/ui/src/main/java/com/rusefi/sensor_logs/SensorLogger.java b/java_console/ui/src/main/java/com/rusefi/sensor_logs/SensorLogger.java index 584807fb99..93ac4168c2 100644 --- a/java_console/ui/src/main/java/com/rusefi/sensor_logs/SensorLogger.java +++ b/java_console/ui/src/main/java/com/rusefi/sensor_logs/SensorLogger.java @@ -86,14 +86,7 @@ public class SensorLogger { private static boolean isInitialized; - private SensorLogger() { - } - - static { - init(); - } - - public synchronized static void init() { + public synchronized void init() { if (isInitialized) { return; } diff --git a/java_console/ui/src/main/java/com/rusefi/test/SensorSnifferPaneSandbox.java b/java_console/ui/src/main/java/com/rusefi/test/SensorSnifferPaneSandbox.java deleted file mode 100644 index 6e7d41720a..0000000000 --- a/java_console/ui/src/main/java/com/rusefi/test/SensorSnifferPaneSandbox.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.rusefi.test; - -import com.rusefi.SensorSnifferPane; -import com.rusefi.ui.storage.Node; -import com.rusefi.ui.util.FrameHelper; - -/** - * 2/16/15 - * Andrey Belomutskiy, (c) 2013-2020 - */ - -public class SensorSnifferPaneSandbox { - public static void main(String[] args) { - Node config = null;//getConfig().getRoot().getChild("sensor_sniffer"); - new FrameHelper().showFrame(new SensorSnifferPane(config).getPanel()); - } -} \ No newline at end of file diff --git a/java_console/ui/src/main/java/com/rusefi/ui/UIContext.java b/java_console/ui/src/main/java/com/rusefi/ui/UIContext.java index d129b1d8a7..23aa87f80e 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/UIContext.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/UIContext.java @@ -1,10 +1,13 @@ package com.rusefi.ui; import com.rusefi.io.LinkManager; +import com.rusefi.sensor_logs.SensorLogger; public class UIContext { private final LinkManager linkManager = new LinkManager(); + public SensorLogger sensorLogger = new SensorLogger(); + public LinkManager getLinkManager() { return linkManager; } diff --git a/java_console/ui/src/main/java/com/rusefi/ui/config/BaseConfigField.java b/java_console/ui/src/main/java/com/rusefi/ui/config/BaseConfigField.java index 188a1b3a04..4e4d5cad67 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/config/BaseConfigField.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/config/BaseConfigField.java @@ -7,6 +7,7 @@ import com.rusefi.config.Field; import com.rusefi.io.CommandQueue; import com.rusefi.io.ConnectionStatusLogic; import com.rusefi.io.LinkManager; +import com.rusefi.ui.UIContext; import org.jetbrains.annotations.NotNull; import javax.swing.*; @@ -16,9 +17,11 @@ import java.nio.ByteBuffer; public abstract class BaseConfigField { protected final JLabel status = new JLabel("P"); private final JPanel panel = new JPanel(new BorderLayout()); + private final UIContext uiContext; protected final Field field; - public BaseConfigField(final Field field) { + public BaseConfigField(UIContext uiContext, final Field field) { + this.uiContext = uiContext; this.field = field; status.setToolTipText("Pending..."); } @@ -28,7 +31,7 @@ public abstract class BaseConfigField { } private void processInitialValue(Field field) { - BinaryProtocol bp = LinkManager.getCurrentStreamStateStatic(); + BinaryProtocol bp = uiContext.getLinkManager().getCurrentStreamState(); if (bp == null) return; ConfigurationImage ci = bp.getControllerConfiguration(); diff --git a/java_console/ui/src/main/java/com/rusefi/ui/config/BitConfigField.java b/java_console/ui/src/main/java/com/rusefi/ui/config/BitConfigField.java index a9d3edd32d..6370877e42 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/config/BitConfigField.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/config/BitConfigField.java @@ -16,7 +16,7 @@ public class BitConfigField extends BaseConfigField { private boolean ec; public BitConfigField(UIContext uiContext, final Field field, String caption) { - super(field); + super(uiContext, field); createUi(caption, view); requestInitialValue(field); // this is not in base constructor so that view is created by the time we invoke it diff --git a/java_console/ui/src/main/java/com/rusefi/ui/config/ConfigField.java b/java_console/ui/src/main/java/com/rusefi/ui/config/ConfigField.java index cb12cab272..27d6c16fd7 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/config/ConfigField.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/config/ConfigField.java @@ -5,6 +5,7 @@ import com.rusefi.config.Field; import com.rusefi.config.FieldCommandResponse; import com.rusefi.core.MessagesCentral; import com.rusefi.core.Pair; +import com.rusefi.ui.UIContext; import com.rusefi.ui.util.JTextFieldWithWidth; import javax.swing.*; @@ -17,8 +18,8 @@ public class ConfigField extends BaseConfigField { private final JTextField view = new JTextFieldWithWidth(200); private final static DecimalFormat df = new DecimalFormat("0.0000"); - public ConfigField(final Field field, String topLabel) { - super(field); + public ConfigField(UIContext uiContext, final Field field, String topLabel) { + super(uiContext, field); createUi(topLabel, view); requestInitialValue(field); // this is not in base constructor so that view is created by the time we invoke it diff --git a/java_console/ui/src/main/java/com/rusefi/ui/config/EnumConfigField.java b/java_console/ui/src/main/java/com/rusefi/ui/config/EnumConfigField.java index d58abb22ac..259f4cf56e 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/config/EnumConfigField.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/config/EnumConfigField.java @@ -6,6 +6,7 @@ import com.rusefi.config.FieldCommandResponse; import com.rusefi.config.FieldType; import com.rusefi.core.MessagesCentral; import com.rusefi.core.Pair; +import com.rusefi.ui.UIContext; import javax.swing.*; import java.awt.event.ActionEvent; @@ -19,8 +20,8 @@ public class EnumConfigField extends BaseConfigField { private final Map ordinals = new HashMap<>(); private final String[] options = field.getOptions(); - public EnumConfigField(final Field field, String caption) { - super(field); + public EnumConfigField(UIContext uiContext, final Field field, String caption) { + super(uiContext, field); if (options == null) throw new NullPointerException("options for " + field); createUi(caption, view); diff --git a/java_console/ui/src/main/java/com/rusefi/ui/console/MainFrame.java b/java_console/ui/src/main/java/com/rusefi/ui/console/MainFrame.java index 0584b59a52..15e4b543fe 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/console/MainFrame.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/console/MainFrame.java @@ -112,7 +112,7 @@ public class MainFrame { root.setProperty(ConsoleUI.TAB_INDEX, tabbedPane.tabbedPane.getSelectedIndex()); GaugesPanel.DetachedRepository.INSTANCE.saveConfig(); getConfig().save(); - BinaryProtocol bp = LinkManager.getCurrentStreamStateStatic(); + BinaryProtocol bp = consoleUI.uiContext.getLinkManager().getCurrentStreamState(); if (bp != null && !bp.isClosed) bp.close(); // it could be that serial driver wants to be closed explicitly System.exit(0); diff --git a/java_console/ui/src/main/java/com/rusefi/ui/console/SettingsTab.java b/java_console/ui/src/main/java/com/rusefi/ui/console/SettingsTab.java index 933302c33c..3d742af4b3 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/console/SettingsTab.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/console/SettingsTab.java @@ -151,9 +151,9 @@ public class SettingsTab { if (field.getType() == FieldType.BIT) { control = new BitConfigField(uiContext, field, f.getUiName()).getContent(); } else if (field.getOptions() != null) { - control = new EnumConfigField(field, f.getUiName()).getContent(); + control = new EnumConfigField(uiContext, field, f.getUiName()).getContent(); } else { - control = new ConfigField(field, f.getUiName()).getContent(); + control = new ConfigField(uiContext, field, f.getUiName()).getContent(); } dialogBody.add(control); diff --git a/java_console/ui/src/main/java/com/rusefi/ui/engine/EngineSnifferPanel.java b/java_console/ui/src/main/java/com/rusefi/ui/engine/EngineSnifferPanel.java index 0e29b94f74..27e4b8782c 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/engine/EngineSnifferPanel.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/engine/EngineSnifferPanel.java @@ -131,12 +131,12 @@ public class EngineSnifferPanel { if (!LinkManager.isLogViewer()) { JPanel lowerButtons = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 0)); - lowerButtons.add(new ConfigField(Fields.GLOBALTRIGGERANGLEOFFSET, "Trigger Offset").getContent()); + lowerButtons.add(new ConfigField(uiContext, Fields.GLOBALTRIGGERANGLEOFFSET, "Trigger Offset").getContent()); lowerButtons.add(new BitConfigField(uiContext, Fields.VERBOSETRIGGERSYNCHDETAILS, "Verbose trigger Sync").getContent()); lowerButtons.add(new BitConfigField(uiContext, Fields.ISENGINECHARTENABLED, "Collect Engine Data").getContent()); - lowerButtons.add(new ConfigField(Fields.SENSORCHARTFREQUENCY, "Frequency").getContent()); - lowerButtons.add(new ConfigField(Fields.ENGINECHARTSIZE, "Engine Sniffer size").getContent()); - lowerButtons.add(new ConfigField(Fields.ENGINESNIFFERRPMTHRESHOLD, "RPM threashold").getContent()); + lowerButtons.add(new ConfigField(uiContext, Fields.SENSORCHARTFREQUENCY, "Frequency").getContent()); + lowerButtons.add(new ConfigField(uiContext, Fields.ENGINECHARTSIZE, "Engine Sniffer size").getContent()); + lowerButtons.add(new ConfigField(uiContext, Fields.ENGINESNIFFERRPMTHRESHOLD, "RPM threashold").getContent()); bottomPanel.add(lowerButtons, BorderLayout.NORTH); } diff --git a/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbCommandsPanel.java b/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbCommandsPanel.java index bdac3097b8..2d9c98cb0f 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbCommandsPanel.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/etb/EtbCommandsPanel.java @@ -2,12 +2,10 @@ package com.rusefi.ui.etb; import com.rusefi.config.generated.Fields; import com.rusefi.core.Sensor; -import com.rusefi.ldmp.generated.ElectronicThrottleMeta; import com.rusefi.ui.UIContext; import com.rusefi.ui.config.BitConfigField; import com.rusefi.ui.config.ConfigField; import com.rusefi.ui.config.EnumConfigField; -import com.rusefi.ui.livedocs.LiveDocPanel; import com.rusefi.ui.storage.Node; import com.rusefi.ui.util.UiUtils; import com.rusefi.ui.widgets.AnyCommand; @@ -43,9 +41,9 @@ public class EtbCommandsPanel { testParameters.add(new JLabel("set etb_p 1.1")); testParameters.add(new BitConfigField(uiContext, Fields.PAUSEETBCONTROL, "Pause").getContent()); - testParameters.add(new ConfigField(Fields.ETB_PFACTOR, "pFactor").getContent()); - testParameters.add(new ConfigField(Fields.ETB_IFACTOR, "iFactor").getContent()); - testParameters.add(new ConfigField(Fields.ETB_DFACTOR, "dFactor").getContent()); + testParameters.add(new ConfigField(uiContext, Fields.ETB_PFACTOR, "pFactor").getContent()); + testParameters.add(new ConfigField(uiContext, Fields.ETB_IFACTOR, "iFactor").getContent()); + testParameters.add(new ConfigField(uiContext, Fields.ETB_DFACTOR, "dFactor").getContent()); content.setBorder(BorderFactory.createTitledBorder("Commands")); @@ -63,7 +61,7 @@ public class EtbCommandsPanel { // todo: restore this functionality // content.add(LiveDocPanel.createPanel("ETB", ElectronicThrottleMeta.CONTENT)); - content.add(new EnumConfigField(Fields.DEBUGMODE, "Debug Mode").getContent()); + content.add(new EnumConfigField(uiContext, Fields.DEBUGMODE, "Debug Mode").getContent()); content.add(createMagicSpotsPanel()); content.add(UiUtils.wrap(new EtbMonteCarloSequence().getButton())); diff --git a/java_console/ui/src/main/java/com/rusefi/ui/light/LightweightGUI.java b/java_console/ui/src/main/java/com/rusefi/ui/light/LightweightGUI.java index 309ba82f21..594267d102 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/light/LightweightGUI.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/light/LightweightGUI.java @@ -10,6 +10,7 @@ import com.rusefi.io.ConnectionStatusLogic; import com.rusefi.io.ConnectionWatchdog; import com.rusefi.io.LinkManager; import com.rusefi.sensor_logs.SensorLogger; +import com.rusefi.ui.UIContext; import com.rusefi.ui.util.FrameHelper; import org.putgemin.VerticalFlowLayout; @@ -62,6 +63,9 @@ public class LightweightGUI { } public static void start() { + + UIContext uiContext = new UIContext(); + LightweightGUI gui = new LightweightGUI(); gui.setConnectedUI(false); @@ -72,7 +76,7 @@ public class LightweightGUI { ConnectionStatusLogic.INSTANCE.addListener(new ConnectionStatusLogic.Listener() { @Override public void onConnectionStatus(boolean isConnected) { - SensorLogger.init(); + uiContext.sensorLogger.init(); SwingUtilities.invokeLater(new Runnable() { @Override public void run() {