From 73c251ff4d01b64f3e17e8bc85cafbf6bc7fd542 Mon Sep 17 00:00:00 2001 From: Denny Sheirer Date: Sat, 9 May 2020 15:36:01 +0000 Subject: [PATCH] #804 Tracks main application gui maximized state on shutdown and restores to maximized on restart. (#811) Co-authored-by: Denny --- .../java/io/github/dsheirer/gui/SDRTrunk.java | 7 +++++ .../preference/swing/SwingPreference.java | 28 +++++++++++++++---- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/dsheirer/gui/SDRTrunk.java b/src/main/java/io/github/dsheirer/gui/SDRTrunk.java index d29c0738..5e3e6e6b 100644 --- a/src/main/java/io/github/dsheirer/gui/SDRTrunk.java +++ b/src/main/java/io/github/dsheirer/gui/SDRTrunk.java @@ -281,6 +281,11 @@ public class SDRTrunk implements Listener } mMainGui.setSize(dimension); + + if(mUserPreferences.getSwingPreference().getMaximized(WINDOW_FRAME_IDENTIFIER, false)) + { + mMainGui.setExtendedState(JFrame.MAXIMIZED_BOTH); + } } else { @@ -414,6 +419,8 @@ public class SDRTrunk implements Listener mLog.info("Application shutdown started ..."); mUserPreferences.getSwingPreference().setLocation(WINDOW_FRAME_IDENTIFIER, mMainGui.getLocation()); mUserPreferences.getSwingPreference().setDimension(WINDOW_FRAME_IDENTIFIER, mMainGui.getSize()); + mUserPreferences.getSwingPreference().setMaximized(WINDOW_FRAME_IDENTIFIER, + (mMainGui.getExtendedState() & JFrame.MAXIMIZED_BOTH) == JFrame.MAXIMIZED_BOTH); mUserPreferences.getSwingPreference().setDimension(SPECTRAL_PANEL_IDENTIFIER, mSpectralPanel.getSize()); mUserPreferences.getSwingPreference().setDimension(CONTROLLER_PANEL_IDENTIFIER, mControllerPanel.getSize()); mJavaFxWindowManager.shutdown(); diff --git a/src/main/java/io/github/dsheirer/preference/swing/SwingPreference.java b/src/main/java/io/github/dsheirer/preference/swing/SwingPreference.java index 4aaf9842..b635fced 100644 --- a/src/main/java/io/github/dsheirer/preference/swing/SwingPreference.java +++ b/src/main/java/io/github/dsheirer/preference/swing/SwingPreference.java @@ -40,6 +40,7 @@ public class SwingPreference private static final String LOCATION_Y = ".y"; private static final String SIZE_HEIGHT = ".height"; private static final String SIZE_WIDTH = ".width"; + private static final String MAXIMIZED = ".maximized"; private Preferences mPreferences = Preferences.userNodeForPackage(SwingPreference.class); @@ -80,11 +81,7 @@ public class SwingPreference if(x != Integer.MAX_VALUE && y != Integer.MAX_VALUE) { Point location = new Point(x,y); - - if(isValidWindowLocation(location)) - { - return location; - } + return location; } return null; @@ -101,6 +98,27 @@ public class SwingPreference mPreferences.putInt(key + LOCATION_Y, location.y); } + /** + * Stores the window maximized state for the window key + * @param key identifying the window + * @param maximized state + */ + public void setMaximized(String key, boolean maximized) + { + mPreferences.putBoolean(key + MAXIMIZED, maximized); + } + + /** + * Retrieves the window maximized preference for the specified window key + * @param key to identify the window + * @param defaultMaximized to be the default value when no preference exists + * @return maximized state + */ + public boolean getMaximized(String key, boolean defaultMaximized) + { + return mPreferences.getBoolean(key + MAXIMIZED, defaultMaximized); + } + /** * Returns the stored size/dimension of the window identified by the key argument. * @param key to identify the window