diff --git a/java_console/ui/resources/com/rusefi/engines/miata_na.png b/java_console/ui/resources/com/rusefi/engines/miata_na.png new file mode 100644 index 0000000000..2ecfef7ff1 Binary files /dev/null and b/java_console/ui/resources/com/rusefi/engines/miata_na.png differ diff --git a/java_console/ui/resources/com/rusefi/engines/miata_nb.png b/java_console/ui/resources/com/rusefi/engines/miata_nb.png new file mode 100644 index 0000000000..e293dff765 Binary files /dev/null and b/java_console/ui/resources/com/rusefi/engines/miata_nb.png differ diff --git a/java_console/ui/src/com/rusefi/BenchTestPane.java b/java_console/ui/src/com/rusefi/BenchTestPane.java index 9c2fc48e3b..6a895c1517 100644 --- a/java_console/ui/src/com/rusefi/BenchTestPane.java +++ b/java_console/ui/src/com/rusefi/BenchTestPane.java @@ -1,17 +1,15 @@ package com.rusefi; -import com.rusefi.io.CommandQueue; import com.rusefi.ui.MessagesView; import com.rusefi.ui.util.UiUtils; import com.rusefi.ui.widgets.EtbResearch; import com.rusefi.ui.widgets.EtbTestSequence; import org.jetbrains.annotations.NotNull; -import org.putgemin.VerticalFlowLayout; import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; + +import static com.rusefi.CommandControl.TEST; public class BenchTestPane { private final JPanel content = new JPanel(new GridLayout(2, 4)); @@ -32,7 +30,7 @@ public class BenchTestPane { } private Component createMILTest() { - BenchTestPanel panel = new BenchTestPanel("MIL", "check_engine.jpg") { + CommandControl panel = new CommandControl("MIL", "check_engine.jpg", TEST) { @NotNull protected String getCommand() { return "milbench"; @@ -42,7 +40,7 @@ public class BenchTestPane { } private Component createIdleTest() { - BenchTestPanel panel = new BenchTestPanel("Idle Valve", "idle_valve.png") { + CommandControl panel = new CommandControl("Idle Valve", "idle_valve.png", TEST) { @NotNull protected String getCommand() { return "idlebench"; @@ -52,38 +50,23 @@ public class BenchTestPane { } private Component createDizzyTest() { - BenchTestPanel panel = new BenchTestPanel("Dizzy", "dizzy.jpg") { - @NotNull - protected String getCommand() { - return "dizzybench"; - } - }; + CommandControl panel = new FixedCommandControl("Dizzy", "dizzy.jpg", TEST, "dizzybench"); return panel.getContent(); } private Component createFanTest() { - BenchTestPanel panel = new BenchTestPanel("Radiator Fan", "radiator_fan.jpg") { - @NotNull - protected String getCommand() { - return "fanbench"; - } - }; + CommandControl panel = new FixedCommandControl("Radiator Fan", "radiator_fan.jpg", TEST, "fanbench"); return panel.getContent(); } private Component createFuelPumpTest() { - BenchTestPanel panel = new BenchTestPanel("Fuel Pump", "fuel_pump.jpg") { - @NotNull - protected String getCommand() { - return "fuelpumpbench"; - } - }; + CommandControl panel = new FixedCommandControl("Fuel Pump", "fuel_pump.jpg", TEST, "fuelpumpbench"); return panel.getContent(); } private Component createSparkTest() { final JComboBox indexes = createIndexCombo(); - BenchTestPanel panel = new BenchTestPanel("Spark #", "spark.jpg", indexes) { + CommandControl panel = new CommandControl("Spark #", "spark.jpg", TEST, indexes) { @Override protected String getCommand() { return "sparkbench2 1000 " + indexes.getSelectedItem() + " 5 333 3"; @@ -94,7 +77,7 @@ public class BenchTestPane { private Component createInjectorTest() { final JComboBox indexes = createIndexCombo(); - BenchTestPanel panel = new BenchTestPanel("Injector #", "injector.png", indexes) { + CommandControl panel = new CommandControl("Injector #", "injector.png", TEST, indexes) { @Override protected String getCommand() { return "fuelbench2 1000 " + indexes.getSelectedItem() + " 5 333 3"; @@ -116,37 +99,4 @@ public class BenchTestPane { return content; } - private abstract static class BenchTestPanel { - final JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 0)); - final JButton test = new JButton("Test"); - - public BenchTestPanel(String text, String iconFileName, JComponent... components) { - ImageIcon icon = UiUtils.loadIcon(iconFileName); - JPanel rightVerticalPanel = new JPanel(new VerticalFlowLayout()); - rightVerticalPanel.add(new JLabel(text)); - for (JComponent component : components) - rightVerticalPanel.add(component); - rightVerticalPanel.add(test); - - panel.add(new JLabel(icon)); - panel.add(rightVerticalPanel); - - int GAP = 3; - - panel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.black), BorderFactory.createEmptyBorder(GAP, GAP, GAP, GAP))); - - test.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - CommandQueue.getInstance().write(getCommand()); - } - }); - } - - protected abstract String getCommand(); - - public Component getContent() { - return UiUtils.wrap(panel); - } - } } \ No newline at end of file diff --git a/java_console/ui/src/com/rusefi/CommandControl.java b/java_console/ui/src/com/rusefi/CommandControl.java new file mode 100644 index 0000000000..79728caec5 --- /dev/null +++ b/java_console/ui/src/com/rusefi/CommandControl.java @@ -0,0 +1,50 @@ +package com.rusefi; + +import com.rusefi.io.CommandQueue; +import com.rusefi.ui.util.UiUtils; +import org.jetbrains.annotations.NotNull; +import org.putgemin.VerticalFlowLayout; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionListener; + +/** + * (c) Andrey Belomutskiy 2013-2019 + */ +abstract class CommandControl { + public static final String TEST = "Test"; + public static final String SET = "Set"; + protected final JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 0)); + final JButton test; + + public CommandControl(String labelText, String iconFileName, String buttonText, JComponent... components) { + ImageIcon icon = UiUtils.loadIcon(iconFileName); + JPanel rightVerticalPanel = new JPanel(new VerticalFlowLayout()); + rightVerticalPanel.add(new JLabel(labelText)); + for (JComponent component : components) + rightVerticalPanel.add(component); + test = new JButton(buttonText); + rightVerticalPanel.add(test); + + panel.add(new JLabel(icon)); + panel.add(rightVerticalPanel); + + int GAP = 3; + + panel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.black), BorderFactory.createEmptyBorder(GAP, GAP, GAP, GAP))); + + test.addActionListener(createButtonListener()); + } + + @NotNull + protected ActionListener createButtonListener() { + return e -> CommandQueue.getInstance().write(getCommand()); + } + + protected abstract String getCommand(); + + public Component getContent() { + return UiUtils.wrap(panel); + } +} diff --git a/java_console/ui/src/com/rusefi/FixedCommandControl.java b/java_console/ui/src/com/rusefi/FixedCommandControl.java new file mode 100644 index 0000000000..cba544a863 --- /dev/null +++ b/java_console/ui/src/com/rusefi/FixedCommandControl.java @@ -0,0 +1,15 @@ +package com.rusefi; + +public class FixedCommandControl extends CommandControl { + private final String command; + + public FixedCommandControl(String labelText, String iconFileName, String buttonText, String command) { + super(labelText, iconFileName, buttonText); + this.command = command; + } + + @Override + protected String getCommand() { + return command; + } +} diff --git a/java_console/ui/src/com/rusefi/Launcher.java b/java_console/ui/src/com/rusefi/Launcher.java index d0994753d7..f3e22261eb 100644 --- a/java_console/ui/src/com/rusefi/Launcher.java +++ b/java_console/ui/src/com/rusefi/Launcher.java @@ -39,13 +39,13 @@ import static com.rusefi.ui.storage.PersistentConfiguration.getConfig; *

*

* 12/25/12 - * (c) Andrey Belomutskiy 2013-2018 + * (c) Andrey Belomutskiy 2013-2019 * * @see StartupFrame * @see EngineSnifferPanel */ public class Launcher { - public static final int CONSOLE_VERSION = 20181117; + public static final int CONSOLE_VERSION = 20190112; public static final boolean SHOW_STIMULATOR = false; private static final String TAB_INDEX = "main_tab"; protected static final String PORT_KEY = "port"; @@ -151,8 +151,14 @@ public class Launcher { if (!LinkManager.isLogViewer()) tabbedPane.addTab("Gauges", new GaugesPanel(getConfig().getRoot().getChild("gauges")).getContent()); - if (!LinkManager.isLogViewer()) - tabbedPane.addTab("Formulas", new FormulasPane().getContent()); + if (!LinkManager.isLogViewer()) { + MessagesPane messagesPane = new MessagesPane(getConfig().getRoot().getChild("messages")); + tabbedPaneAdd("Messages", messagesPane.getContent(), messagesPane.getTabSelectedListener()); + } + if (!LinkManager.isLogViewer()) { + tabbedPane.add("Bench Test", new BenchTestPane().getContent()); + tabbedPane.add("Presets", new PresetsPans().getContent()); + } tabbedPaneAdd("Engine Sniffer", engineSnifferPanel.getPanel(), engineSnifferPanel.getTabSelectedListener()); @@ -170,10 +176,6 @@ public class Launcher { tabbedPane.add("ECU stimulation", stimulator.getPanel()); } // tabbedPane.addTab("live map adjustment", new Live3DReport().getControl()); - if (!LinkManager.isLogViewer()) { - MessagesPane messagesPane = new MessagesPane(getConfig().getRoot().getChild("messages")); - tabbedPaneAdd("Messages", messagesPane.getContent(), messagesPane.getTabSelectedListener()); - } if (!LinkManager.isLogViewer()) tabbedPane.addTab("Table Editor", tableEditor); // tabbedPane.add("Wizards", new Wizard().createPane()); @@ -181,7 +183,7 @@ public class Launcher { if (!LinkManager.isLogViewer()) tabbedPane.add("Settings", settingsTab.createPane()); if (!LinkManager.isLogViewer()) - tabbedPane.add("Bench Test", new BenchTestPane().getContent()); + tabbedPane.addTab("Formulas", new FormulasPane().getContent()); if (!LinkManager.isLogViewer() && false) // todo: fix it & better name? tabbedPane.add("Logs Manager", logsManager.getContent()); fuelTunePane = new FuelTunePane(getConfig().getRoot().getChild("fueltune")); diff --git a/java_console/ui/src/com/rusefi/PresetsPans.java b/java_console/ui/src/com/rusefi/PresetsPans.java new file mode 100644 index 0000000000..3f5c399ded --- /dev/null +++ b/java_console/ui/src/com/rusefi/PresetsPans.java @@ -0,0 +1,50 @@ +package com.rusefi; + +import com.rusefi.io.CommandQueue; +import org.jetbrains.annotations.NotNull; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionListener; + +/** + * (c) Andrey Belomutskiy 2013-2019 + */ +public class PresetsPans { + // see rusefi_enums.h + private static final int MIATA_NA_1_6 = 41; + private static final int MAZDA_MIATA_2003 = 47; + + private JPanel content = new JPanel(new GridLayout(2, 4)); + + public PresetsPans() { + content.add(new SetEngineTypeCommandControl("Miata NA6", "engines/miata_na.png", MIATA_NA_1_6).getContent()); + content.add(new SetEngineTypeCommandControl("Miata NB2", "engines/miata_nb.png", MAZDA_MIATA_2003).getContent()); + } + + public JPanel getContent() { + return content; + } + + private class SetEngineTypeCommandControl extends FixedCommandControl { + private final String labelTest; + + public SetEngineTypeCommandControl(String labelTest, String imageFileName, int engineType) { + super(labelTest, imageFileName, CommandControl.SET, "set engine_type " + engineType); + this.labelTest = labelTest; + } + + @NotNull + @Override + protected ActionListener createButtonListener() { + return e -> { + int dialogResult = JOptionPane.showConfirmDialog(panel, "Do you really want to reset all settings to " + labelTest, + "Warning", JOptionPane.YES_NO_OPTION); + if (dialogResult != JOptionPane.YES_OPTION) + return; + + CommandQueue.getInstance().write(getCommand()); + }; + } + } +} diff --git a/java_console/ui/src/com/rusefi/ui/LogDownloader.java b/java_console/ui/src/com/rusefi/ui/LogDownloader.java index 7b5ec9d3ed..aa6ca1d8fe 100644 --- a/java_console/ui/src/com/rusefi/ui/LogDownloader.java +++ b/java_console/ui/src/com/rusefi/ui/LogDownloader.java @@ -77,7 +77,9 @@ public class LogDownloader { removeFile.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - int i = JOptionPane.showConfirmDialog(Launcher.getFrame(), "Do you really want to delete " + name + "?"); + int i = JOptionPane.showConfirmDialog(Launcher.getFrame(), ("Do you really want to delete " + name + "?"), + UIManager.getString("OptionPane.titleText"), + JOptionPane.YES_NO_OPTION); if (i == JOptionPane.YES_OPTION) { CommandQueue.getInstance().write("del " + name); timer.restart();