diff --git a/src/enginuity/logger/EcuLogger.java b/src/enginuity/logger/EcuLogger.java index a9b5e7eb..23f8e619 100644 --- a/src/enginuity/logger/EcuLogger.java +++ b/src/enginuity/logger/EcuLogger.java @@ -239,7 +239,7 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC private void loadUserProfile(EcuDataLoader dataLoader, String profileFilePath) { UserProfileLoader profileLoader = new UserProfileLoaderImpl(); UserProfile profile = profileLoader.loadProfile(profileFilePath); - initSelectedPort(profile); + setSelectedPort(profile); List ecuParams = dataLoader.getEcuParameters(); addConvertorUpdateListeners(ecuParams); clearParamTableModels(); @@ -248,9 +248,10 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC loadEcuSwitches(dataLoader.getEcuSwitches(), profile); } - private void initSelectedPort(UserProfile profile) { + private void setSelectedPort(UserProfile profile) { if (profile != null) { settings.setLoggerPort(profile.getSerialPort()); + portsComboBox.setSelectedItem(profile.getSerialPort()); } } @@ -570,6 +571,7 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC public static void main(String... args) { + System.out.println(System.getProperty("user.dir")); startLogger(EXIT_ON_CLOSE, new Settings()); } diff --git a/src/enginuity/logger/ui/EcuLoggerMenuBar.java b/src/enginuity/logger/ui/EcuLoggerMenuBar.java index fbec59a8..d9058850 100644 --- a/src/enginuity/logger/ui/EcuLoggerMenuBar.java +++ b/src/enginuity/logger/ui/EcuLoggerMenuBar.java @@ -39,6 +39,7 @@ public class EcuLoggerMenuBar extends JMenuBar implements ActionListener { private JMenu fileMenu = new JMenu("File"); private JMenuItem loadProfile = new JMenuItem("Load Profile..."); + private JMenuItem reloadProfile = new JMenuItem("Reload Profile"); private JMenuItem saveProfile = new JMenuItem("Save Profile"); private JMenuItem saveProfileAs = new JMenuItem("Save Profile As..."); private JMenuItem exit = new JMenuItem("Exit"); @@ -62,15 +63,18 @@ public class EcuLoggerMenuBar extends JMenuBar implements ActionListener { add(fileMenu); fileMenu.setMnemonic('F'); loadProfile.setMnemonic('O'); + reloadProfile.setMnemonic('R'); saveProfile.setMnemonic('S'); saveProfileAs.setMnemonic('A'); exit.setMnemonic('X'); fileMenu.add(loadProfile); + fileMenu.add(reloadProfile); fileMenu.add(saveProfile); fileMenu.add(saveProfileAs); fileMenu.add(new JSeparator()); fileMenu.add(exit); loadProfile.addActionListener(this); + reloadProfile.addActionListener(this); saveProfile.addActionListener(this); saveProfileAs.addActionListener(this); exit.addActionListener(this); @@ -115,6 +119,13 @@ public class EcuLoggerMenuBar extends JMenuBar implements ActionListener { parent.reportError(e); } + } else if (evt.getSource() == reloadProfile) { + try { + parent.reloadUserProfile(parent.getSettings().getLoggerProfileFilePath()); + } catch (Exception e) { + parent.reportError(e); + } + } else if (evt.getSource() == saveProfile) { try { saveProfile(); diff --git a/src/enginuity/logger/ui/SerialPortComboBox.java b/src/enginuity/logger/ui/SerialPortComboBox.java index e54b7f47..6728f096 100644 --- a/src/enginuity/logger/ui/SerialPortComboBox.java +++ b/src/enginuity/logger/ui/SerialPortComboBox.java @@ -37,7 +37,7 @@ public final class SerialPortComboBox extends JComboBox implements SerialPortRef this.settings = settings; } - public void refreshPortList(Set ports, String defaultSelectedPort) { + public synchronized void refreshPortList(Set ports, String defaultSelectedPort) { checkNotNull(ports); boolean changeDetected = ports.isEmpty() || ports.size() != getItemCount(); if (!changeDetected) { @@ -83,4 +83,23 @@ public final class SerialPortComboBox extends JComboBox implements SerialPortRef } } } + + public void setSelectedItem(Object object) { + if (contains(object)) { + super.setSelectedItem(object); + } else { + if (getItemCount() >= 1) { + setSelectedIndex(0); + } + } + } + + private boolean contains(Object object) { + for (int i = 0; i < getItemCount(); i++) { + if (getItemAt(i) != null && getItemAt(i).equals(object)) { + return true; + } + } + return false; + } }