refactoring: better dependency control

This commit is contained in:
rusefi 2020-06-25 20:59:42 -04:00
parent 1a12d0cdeb
commit 9c3ea2f17b
7 changed files with 32 additions and 24 deletions

View File

@ -31,7 +31,7 @@ public class CommandQueue {
*/ */
private Set<String> pendingConfirmations = Collections.synchronizedSet(new HashSet<String>()); private Set<String> pendingConfirmations = Collections.synchronizedSet(new HashSet<String>());
private static final CommandQueue instance = new CommandQueue(); public static final CommandQueue instance = new CommandQueue();
private final BlockingQueue<IMethodInvocation> pendingCommands = new LinkedBlockingQueue<>(); private final BlockingQueue<IMethodInvocation> pendingCommands = new LinkedBlockingQueue<>();
private final List<CommandQueueListener> commandListeners = new ArrayList<>(); private final List<CommandQueueListener> commandListeners = new ArrayList<>();

View File

@ -99,7 +99,8 @@ public class ECUEditorToolBar extends JToolBar {
burnImage.addActionListener(new ActionListener() { burnImage.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
CommandQueue.getInstance().write(Fields.CMD_WRITECONFIG); throw new UnsupportedOperationException("Disabled");
//CommandQueue.getInstance().write(Fields.CMD_WRITECONFIG);
} }
}); });
} }

View File

@ -17,10 +17,12 @@ public class PresetsPane {
private static final int TEST_V_12 = 49; private static final int TEST_V_12 = 49;
private static final int ETB_BENCH = 58; private static final int ETB_BENCH = 58;
private static final int MINIMAL_PINS = 99; private static final int MINIMAL_PINS = 99;
private final UIContext uiContext;
private JPanel content = new JPanel(new GridLayout(2, 4)); private JPanel content = new JPanel(new GridLayout(2, 4));
public PresetsPane(UIContext uiContext) { public PresetsPane(UIContext uiContext) {
this.uiContext = uiContext;
content.add(new SetEngineTypeCommandControl("Frankenso Miata NA6 Stage 0", "/engines/miata_na.png", Fields.ET_FRANKENSO_MIATA_NA6_VAF).getContent()); content.add(new SetEngineTypeCommandControl("Frankenso Miata NA6 Stage 0", "/engines/miata_na.png", Fields.ET_FRANKENSO_MIATA_NA6_VAF).getContent());
content.add(new SetEngineTypeCommandControl("Frankenso Miata NA6 Stage 1", "/engines/miata_na.png", Fields.ET_FRANKENSO_MIATA_NA6).getContent()); content.add(new SetEngineTypeCommandControl("Frankenso Miata NA6 Stage 1", "/engines/miata_na.png", Fields.ET_FRANKENSO_MIATA_NA6).getContent());
content.add(new SetEngineTypeCommandControl("Frankenso Miata NB2", "/engines/miata_nb.png", Fields.ET_FRANKENSO_MIATA_NB2).getContent()); content.add(new SetEngineTypeCommandControl("Frankenso Miata NB2", "/engines/miata_nb.png", Fields.ET_FRANKENSO_MIATA_NB2).getContent());
@ -53,7 +55,7 @@ public class PresetsPane {
if (dialogResult != JOptionPane.YES_OPTION) if (dialogResult != JOptionPane.YES_OPTION)
return; return;
CommandQueue.getInstance().write(getCommand()); uiContext.getCommandQueue().write(getCommand());
}; };
} }
} }

View File

@ -2,9 +2,6 @@ package com.rusefi;
import com.opensr5.ConfigurationImage; import com.opensr5.ConfigurationImage;
import com.opensr5.Logger; import com.opensr5.Logger;
import com.rusefi.config.generated.Fields;
import com.rusefi.io.LinkManager;
import com.rusefi.ui.RecentCommands;
import com.rusefi.ui.StatusWindow; import com.rusefi.ui.StatusWindow;
import com.rusefi.ui.UIContext; import com.rusefi.ui.UIContext;
@ -13,28 +10,26 @@ import java.awt.*;
import java.io.EOFException; import java.io.EOFException;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.concurrent.atomic.AtomicBoolean;
/** /**
* Andrey Belomutskiy, (c) 2013-2020 * Andrey Belomutskiy, (c) 2013-2020
* 3/7/2015 * 3/7/2015
*/ */
public class UploadChanges { public class UploadChanges {
private static final StatusWindow wnd = new StatusWindow(); //public static final Logger logger = createUiLogger();
public static void main(String[] args) throws InvocationTargetException, InterruptedException {
StatusWindow wnd = new StatusWindow();
static {
wnd.getFrame().setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); wnd.getFrame().setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
wnd.getFrame().setTitle("rusEfi bin upload"); wnd.getFrame().setTitle("rusEfi bin upload");
wnd.getFrameHelper().initFrame(wnd.getContent(), false); wnd.getFrameHelper().initFrame(wnd.getContent(), false);
JPanel bottomPanel = new JPanel(new FlowLayout()); JPanel bottomPanel = new JPanel(new FlowLayout());
bottomPanel.add(RecentCommands.createButton(new AtomicBoolean(), Fields.CMD_WRITECONFIG)); // bottomPanel.add(RecentCommands.createButton(new AtomicBoolean(), Fields.CMD_WRITECONFIG));
wnd.getContent().add(bottomPanel, BorderLayout.SOUTH); wnd.getContent().add(bottomPanel, BorderLayout.SOUTH);
}
public static final Logger logger = createUiLogger();
public static void main(String[] args) throws InvocationTargetException, InterruptedException {
if (args.length != 1) { if (args.length != 1) {
System.out.println("Exactly one parameter expected"); System.out.println("Exactly one parameter expected");
return; return;
@ -77,12 +72,16 @@ public class UploadChanges {
*/ */
} }
/*
public static void scheduleUpload(UIContext uiContext, final ConfigurationImage newVersion) { public static void scheduleUpload(UIContext uiContext, final ConfigurationImage newVersion) {
scheduleUpload(uiContext, newVersion, null); scheduleUpload(uiContext, newVersion, null);
} }
*/
public static void scheduleUpload(UIContext uiContext, final ConfigurationImage newVersion, final Runnable afterUpload) { public static void scheduleUpload(UIContext uiContext, final ConfigurationImage newVersion, final Runnable afterUpload) {
JFrame frame = wnd.getFrame(); if (1 == 1)
throw new UnsupportedOperationException("disabled");
Logger logger = null;
JFrame frame = null;//wnd.getFrame();
frame.setVisible(true); frame.setVisible(true);
uiContext.getLinkManager().execute(new Runnable() { uiContext.getLinkManager().execute(new Runnable() {
@Override @Override
@ -104,6 +103,7 @@ public class UploadChanges {
}); });
} }
/*
private static Logger createUiLogger() { private static Logger createUiLogger() {
return new Logger() { return new Logger() {
@Override @Override
@ -140,5 +140,5 @@ public class UploadChanges {
} }
}; };
} }
*/
} }

View File

@ -95,7 +95,7 @@ public class RecentCommands {
public RecentCommands(UIContext uiContext) { public RecentCommands(UIContext uiContext) {
this.uiContext = uiContext; this.uiContext = uiContext;
CommandQueue.getInstance().addListener(new CommandQueue.CommandQueueListener() { uiContext.getCommandQueue().addListener(new CommandQueue.CommandQueueListener() {
@Override @Override
public void onCommand(String command) { public void onCommand(String command) {
if (!reentrant.get()) if (!reentrant.get())
@ -168,7 +168,7 @@ public class RecentCommands {
content.removeAll(); content.removeAll();
if (uiContext.getLinkManager().isLogViewer()) if (uiContext.getLinkManager().isLogViewer())
content.add(createButton()); content.add(createButton(uiContext));
JButton reset = new JButton(AutoupdateUtil.loadIcon("/undo.jpg")); JButton reset = new JButton(AutoupdateUtil.loadIcon("/undo.jpg"));
reset.setContentAreaFilled(false); reset.setContentAreaFilled(false);
@ -188,7 +188,7 @@ public class RecentCommands {
sorted.addAll(entries.keySet()); sorted.addAll(entries.keySet());
for (Entry entry : sorted) { for (Entry entry : sorted) {
content.add(createButton(reentrant, entry.command)); content.add(createButton(uiContext, reentrant, entry.command));
} }
} }
UiUtils.trueLayout(content.getParent()); UiUtils.trueLayout(content.getParent());
@ -197,7 +197,7 @@ public class RecentCommands {
getConfig().getRoot().setProperty(KEY, pack()); getConfig().getRoot().setProperty(KEY, pack());
} }
public static JComponent createButton(final AtomicBoolean reentrant, final String command) { public static JComponent createButton(UIContext uiContext, final AtomicBoolean reentrant, final String command) {
JButton button = new JButton(command); JButton button = new JButton(command);
Icon icon = COMMAND_ICONS.get(command); Icon icon = COMMAND_ICONS.get(command);
if (icon != null) if (icon != null)
@ -209,7 +209,7 @@ public class RecentCommands {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
reentrant.set(true); reentrant.set(true);
int timeout = CommandQueue.getTimeout(command); int timeout = CommandQueue.getTimeout(command);
CommandQueue.getInstance().write(command, timeout); uiContext.getCommandQueue().write(command, timeout);
reentrant.set(false); reentrant.set(false);
} }
}); });
@ -279,7 +279,7 @@ public class RecentCommands {
} }
public static JButton createButton() { public static JButton createButton(UIContext uiContext) {
JButton button = new JButton("Read trigger log"); JButton button = new JButton("Read trigger log");
button.addActionListener(new ActionListener() { button.addActionListener(new ActionListener() {
@Override @Override

View File

@ -1,5 +1,6 @@
package com.rusefi.ui; package com.rusefi.ui;
import com.rusefi.io.CommandQueue;
import com.rusefi.io.LinkManager; import com.rusefi.io.LinkManager;
import com.rusefi.sensor_logs.SensorLogger; import com.rusefi.sensor_logs.SensorLogger;
@ -11,4 +12,8 @@ public class UIContext {
public LinkManager getLinkManager() { public LinkManager getLinkManager() {
return linkManager; return linkManager;
} }
public CommandQueue getCommandQueue() {
return CommandQueue.instance;
}
} }

View File

@ -121,7 +121,7 @@ public class SettingsTab {
panel.add(dialogBody); panel.add(dialogBody);
panel.add(UiUtils.wrap(RecentCommands.createButton(new AtomicBoolean(), Fields.CMD_WRITECONFIG))); panel.add(UiUtils.wrap(RecentCommands.createButton(uiContext, new AtomicBoolean(), Fields.CMD_WRITECONFIG)));
JLabel unusable = new JLabel("This is painfully unusable, TunerStudio works way better for settings!"); JLabel unusable = new JLabel("This is painfully unusable, TunerStudio works way better for settings!");
unusable.setForeground(Color.red); unusable.setForeground(Color.red);