Java Window installPrefsHandler(final Preferences prefs, final String name, Window window)

Here you can find the source of installPrefsHandler(final Preferences prefs, final String name, Window window)

Description

Installs a window preferences handler.

License

Open Source License

Parameter

Parameter Description
prefs Preferences for storing/retrieving preferences values.
name Base name of the preference.
window The window for which to track preferences.

Declaration

public static void installPrefsHandler(final Preferences prefs, final String name, Window window) 

Method Source Code


//package com.java2s;
/* @(#)PreferencesUtil.java
 * Copyright (c) 2005 Werner Randelshofer, Switzerland. MIT License.
 *///from  ww  w  .  jav a  2 s.co m

import java.awt.*;
import java.awt.event.*;
import java.util.prefs.*;
import javax.swing.JTabbedPane;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class Main {
    /**
     * Installs a window preferences handler.
     * On first run, sets the window to its preferred size at the top left 
     * corner of the screen.
     * On subsequent runs, sets the window the last size and location where
     * the user has placed it before.
     *
     * @param prefs Preferences for storing/retrieving preferences values.
     * @param name Base name of the preference.
     * @param window The window for which to track preferences.
     */
    public static void installPrefsHandler(final Preferences prefs, final String name, Window window) {
        GraphicsConfiguration conf = window.getGraphicsConfiguration();
        Rectangle screenBounds = conf.getBounds();
        Insets screenInsets = window.getToolkit().getScreenInsets(conf);

        screenBounds.x += screenInsets.left;
        screenBounds.y += screenInsets.top;
        screenBounds.width -= screenInsets.left + screenInsets.right;
        screenBounds.height -= screenInsets.top + screenInsets.bottom;

        Dimension preferredSize = window.getPreferredSize();

        Rectangle bounds = new Rectangle(prefs.getInt(name + ".x", 0), prefs.getInt(name + ".y", 0),
                prefs.getInt(name + ".width", preferredSize.width),
                prefs.getInt(name + ".height", preferredSize.height));
        bounds.width = Math.min(Math.max(200, bounds.width), screenBounds.width);
        bounds.height = Math.min(Math.max(200, bounds.height), screenBounds.height);
        if (!screenBounds.contains(bounds)) {
            bounds.x = screenBounds.x + (screenBounds.width - bounds.width) / 2;
            bounds.y = screenBounds.y + (screenBounds.height - bounds.height) / 2;
            Rectangle.intersect(screenBounds, bounds, bounds);
        }
        window.setBounds(bounds);

        window.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentMoved(ComponentEvent evt) {
                prefs.putInt(name + ".x", evt.getComponent().getX());
                prefs.putInt(name + ".y", evt.getComponent().getY());
            }

            @Override
            public void componentResized(ComponentEvent evt) {
                prefs.putInt(name + ".width", evt.getComponent().getWidth());
                prefs.putInt(name + ".height", evt.getComponent().getHeight());
            }
        });

    }

    /**
     * Installs a JTabbedPane preferences handler.
     * On first run, sets the JTabbedPane to its preferred tab.
     *
     * @param prefs Preferences for storing/retrieving preferences values.
     * @param name Base name of the preference.
     * @param tabbedPane The JTabbedPane for which to track preferences.
     */
    public static void installPrefsHandler(final Preferences prefs, final String name,
            final JTabbedPane tabbedPane) {
        int selectedTab = prefs.getInt(name, 0);
        try {
            tabbedPane.setSelectedIndex(selectedTab);
        } catch (IndexOutOfBoundsException e) {

        }
        tabbedPane.addChangeListener(new ChangeListener() {

            @Override
            public void stateChanged(ChangeEvent e) {
                prefs.putInt(name, tabbedPane.getSelectedIndex());
            }

        });
    }
}

Related

  1. getWindowNormalBounds(Window window)
  2. getWindowTitle(Window window)
  3. getWindowTitle(Window window)
  4. growIfNecessary(Window window)
  5. hideWaitPane(Window win, Timer timer)
  6. isResizable(Window window)
  7. modifyDimensions(Window window)
  8. openWindow(final JPanel panel)
  9. putWindowNormalBounds(Window window, Rectangle bounds)