/** * Saves the window state to the given properties map. * * @param aNamespace the namespace to use for the window state; * @param aProperties the properties to fill; * @param aWindow the window to save the state for. */ public static void saveWindowState(final Preferences aProperties, final Window aWindow) { // Special case: for FileDialog/JFileChooser we also store the properties... saveFileDialogState(aProperties, aWindow); final Point location = aWindow.getLocation(); aProperties.put("winXpos", Integer.toString(location.x)); aProperties.put("winYpos", Integer.toString(location.y)); if (isNonResizableWindow(aWindow)) { // In case the window cannot be resized, don't restore its width & // height... return; } final Dimension dims = aWindow.getSize(); aProperties.put("winWidth", Integer.toString(dims.width)); aProperties.put("winHeight", Integer.toString(dims.height)); }
/** * Checks whether the given window is either a FileDialog, or contains a JFileChooser component. * If so, its current directory is restored from the given properties. * * @param aNamespace the name space to use; * @param aProperties the properties to get the directory from; * @param aWindow the window to check for. */ private static void saveFileDialogState(final Preferences aProperties, final Window aWindow) { final String propKey = "lastDirectory"; if (aWindow instanceof FileDialog) { final String dir = ((FileDialog) aWindow).getDirectory(); if (dir != null) { aProperties.put(propKey, dir); } } else if (aWindow instanceof JDialog) { final Container contentPane = ((JDialog) aWindow).getContentPane(); final JFileChooser fileChooser = (JFileChooser) findComponent(contentPane, JFileChooser.class); if (fileChooser != null) { final File dir = fileChooser.getCurrentDirectory(); if (dir != null) { aProperties.put(propKey, dir.getAbsolutePath()); } } } }