whitespace fixups
[jSite2.git] / src / net / pterodactylus / util / swing / SwingUtils.java
index b107776..08f79bb 100644 (file)
 package net.pterodactylus.util.swing;
 
 import java.awt.Dimension;
+import java.awt.Point;
+import java.awt.Rectangle;
 import java.awt.Toolkit;
 import java.awt.Window;
 
 /**
  * Helper utilities for working with Swing.
- * 
+ *
  * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
  */
 public class SwingUtils {
 
+       /** The screen size. */
+       private static Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
+
+       /**
+        * Returns the size of the screen.
+        *
+        * @return The size of the screen
+        */
+       public static Dimension getScreenSize() {
+               return new Dimension(screenDimension);
+       }
+
        /**
         * Centers the given window on the screen.
-        * 
+        *
         * @param window
         *            The window to center
         */
        public static void center(Window window) {
-               Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
                Dimension frameDimension = window.getSize();
                window.setLocation((screenDimension.width - frameDimension.width) >> 1, (screenDimension.height - frameDimension.height) >> 1);
        }
 
+       /**
+        * {@link Window#pack() Packs} the given window and positions it so that its
+        * center stays the same.
+        *
+        * @param window
+        *            The window to pack and recenter
+        */
+       public static void repackCentered(Window window) {
+               Point center = getCenter(window.getBounds());
+               window.pack();
+               window.setLocation((center.x - window.getWidth() / 2), (center.y - window.getHeight() / 2));
+               window.repaint();
+       }
+
+       /**
+        * Returns the center of the given rectangle.
+        *
+        * @param bounds
+        *            The rectangle which center to get
+        * @return The center of the rectangle
+        */
+       private static Point getCenter(Rectangle bounds) {
+               return new Point(bounds.x + bounds.width / 2, bounds.y + bounds.height / 2);
+       }
+
 }