add method to repack and recenter window
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 5 Apr 2008 17:27:25 +0000 (17:27 +0000)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 5 Apr 2008 17:27:25 +0000 (17:27 +0000)
git-svn-id: http://trooper/svn/projects/jSite/trunk@610 c3eda9e8-030b-0410-8277-bc7414b0a119

src/net/pterodactylus/util/swing/SwingUtils.java

index b107776..103297b 100644 (file)
@@ -20,6 +20,8 @@
 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;
 
@@ -43,4 +45,29 @@ public class SwingUtils {
                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);
+       }
+
 }