From 29df5a635d409aecf4a6b4273243e1786cb5b62b Mon Sep 17 00:00:00 2001 From: rusefi Date: Tue, 29 Aug 2023 13:46:23 -0400 Subject: [PATCH] java console: option not to remember latest used port --- .../storage/PersistentConfiguration.java | 8 +++++++ .../java/com/rusefi/core/rusEFIVersion.java | 2 +- .../main/java/com/rusefi/StartupFrame.java | 23 ++++++++++++++++++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/java_console/shared_io/src/main/java/com/rusefi/core/preferences/storage/PersistentConfiguration.java b/java_console/shared_io/src/main/java/com/rusefi/core/preferences/storage/PersistentConfiguration.java index f546462389..08c76b61dc 100644 --- a/java_console/shared_io/src/main/java/com/rusefi/core/preferences/storage/PersistentConfiguration.java +++ b/java_console/shared_io/src/main/java/com/rusefi/core/preferences/storage/PersistentConfiguration.java @@ -44,6 +44,14 @@ public class PersistentConfiguration { })); } + public static boolean getBoolProperty(String name) { + return getConfig().getRoot().getBoolProperty(name); + } + + public static void setBoolProperty(String name, boolean value) { + getConfig().getRoot().setBoolProperty(name, value); + } + @SuppressWarnings("unchecked") public void load() { if (!config.isEmpty()) { diff --git a/java_console/shared_io/src/main/java/com/rusefi/core/rusEFIVersion.java b/java_console/shared_io/src/main/java/com/rusefi/core/rusEFIVersion.java index 8ed0f63d01..26170f4bb9 100644 --- a/java_console/shared_io/src/main/java/com/rusefi/core/rusEFIVersion.java +++ b/java_console/shared_io/src/main/java/com/rusefi/core/rusEFIVersion.java @@ -6,7 +6,7 @@ import java.net.URL; import java.util.concurrent.atomic.AtomicReference; public class rusEFIVersion { - public static final int CONSOLE_VERSION = 20230805; + public static final int CONSOLE_VERSION = 20230829; public static AtomicReference firmwareVersion = new AtomicReference<>("N/A"); public static long classBuildTimeMillis() { diff --git a/java_console/ui/src/main/java/com/rusefi/StartupFrame.java b/java_console/ui/src/main/java/com/rusefi/StartupFrame.java index 92dbf31f0d..7d86392a00 100644 --- a/java_console/ui/src/main/java/com/rusefi/StartupFrame.java +++ b/java_console/ui/src/main/java/com/rusefi/StartupFrame.java @@ -4,6 +4,7 @@ import com.devexperts.logging.Logging; import com.rusefi.autodetect.PortDetector; import com.rusefi.autodetect.SerialAutoChecker; import com.rusefi.core.io.BundleUtil; +import com.rusefi.core.preferences.storage.PersistentConfiguration; import com.rusefi.core.ui.AutoupdateUtil; import com.rusefi.io.LinkManager; import com.rusefi.io.serial.BaudRateHolder; @@ -45,6 +46,7 @@ import static javax.swing.JOptionPane.YES_NO_OPTION; */ public class StartupFrame { private static final Logging log = getLogging(Launcher.class); + public static final String ALWAYS_AUTO_PORT = "always_auto_port"; // private static final int RUSEFI_ORANGE = 0xff7d03; @@ -112,6 +114,22 @@ public class StartupFrame { final JButton connectButton = new JButton("Connect", new ImageIcon(getClass().getResource("/com/rusefi/connect48.png"))); //connectButton.setBackground(new Color(RUSEFI_ORANGE)); // custom orange setToolTip(connectButton, "Connect to real hardware"); + + JCheckBoxMenuItem menuItem = new JCheckBoxMenuItem("Always auto-connect port"); + menuItem.setState(PersistentConfiguration.getBoolProperty(ALWAYS_AUTO_PORT)); + menuItem.addActionListener(e -> PersistentConfiguration.setBoolProperty(ALWAYS_AUTO_PORT, menuItem.getState())); + + connectButton.addMouseListener(new MouseAdapter() { + @Override + public void mouseReleased(MouseEvent e) { + if (!SwingUtilities.isRightMouseButton(e)) + return; + JPopupMenu menu = new JPopupMenu(); + menu.add(menuItem); + menu.show(connectButton, e.getX(), e.getY()); + } + }); + connectPanel.add(connectButton); connectPanel.setVisible(false); @@ -319,7 +337,10 @@ public class StartupFrame { for (final String port : ports) comboPorts.addItem(port); String defaultPort = getConfig().getRoot().getProperty(ConsoleUI.PORT_KEY); - comboPorts.setSelectedItem(defaultPort); + if (!PersistentConfiguration.getBoolProperty(ALWAYS_AUTO_PORT)) { + comboPorts.setSelectedItem(defaultPort); + } + trueLayout(comboPorts); }