refactoring: better dependency control

This commit is contained in:
rusefi 2020-06-25 20:18:02 -04:00
parent 02c1485ffb
commit 1e497b626e
14 changed files with 39 additions and 53 deletions

View File

@ -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);

View File

@ -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) {

View File

@ -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;
}

View File

@ -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());
}
}

View File

@ -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;
}

View File

@ -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();

View File

@ -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

View File

@ -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

View File

@ -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<String, Integer> 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);

View File

@ -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);

View File

@ -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);

View File

@ -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);
}

View File

@ -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()));

View File

@ -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() {