fix bad import, AGAIN.
[nikiroo-utils.git] / ui / UIUtils.java
index ce7bcc1e866ff1ca7ec31ae35a11a0be94924a37..892c6cbb02ee3268853d9895c38d94fc045684f3 100644 (file)
@@ -6,9 +6,15 @@ import java.awt.Desktop;
 import java.awt.GradientPaint;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsEnvironment;
 import java.awt.Paint;
+import java.awt.Point;
 import java.awt.RadialGradientPaint;
+import java.awt.Rectangle;
 import java.awt.RenderingHints;
+import java.awt.Window;
 import java.io.IOException;
 import java.net.URISyntaxException;
 
@@ -34,7 +40,7 @@ import be.nikiroo.utils.VersionCheck;
 public class UIUtils {
        static private Color buttonNormal;
        static private Color buttonPressed;
-       
+
        /**
         * Set a fake "native Look & Feel" for the application if possible
         * (check for the one currently in use, then try GTK).
@@ -49,7 +55,7 @@ public class UIUtils {
                String lf = UIManager.getSystemLookAndFeelClassName();
                if (lf.equals(noLF))
                        lf = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel";
-               
+
                return setLookAndFeel(lf);
        }
 
@@ -240,12 +246,10 @@ public class UIUtils {
                scroll.getHorizontalScrollBar().setUnitIncrement(16);
 
                if (!allowHorizontal) {
-                       scroll.setHorizontalScrollBarPolicy(
-                                       JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+                       scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
                }
                if (!allowVertical) {
-                       scroll.setVerticalScrollBarPolicy(
-                                       JScrollPane.VERTICAL_SCROLLBAR_NEVER);
+                       scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
                }
 
                return scroll;
@@ -276,7 +280,7 @@ public class UIUtils {
         */
        static public boolean showUpdatedDialog(Component parentComponent,
                        VersionCheck updates, String introText, String title) {
-               
+
                StringBuilder builder = new StringBuilder();
                final JEditorPane updateMessage = new JEditorPane("text/html", "");
                if (introText != null && !introText.isEmpty()) {
@@ -335,7 +339,7 @@ public class UIUtils {
                return JOptionPane.showConfirmDialog(parentComponent, updateMessage,
                                title, JOptionPane.DEFAULT_OPTION) == JOptionPane.OK_OPTION;
        }
-       
+
        /**
         * Set the given {@link JButton} as "pressed" (selected, but with more UI
         * visibility).
@@ -368,4 +372,53 @@ public class UIUtils {
                button.setSelected(pressed);
                button.setBackground(pressed ? buttonPressed : buttonNormal);
        }
+
+       /**
+        * Set the given {@link Window} to full screen mode, on the desktop it
+        * currently resides on.
+        * <p>
+        * Can be cancelled by calling again with a NULL value.
+        * 
+        * @param win
+        *            the window to set to full screen
+        */
+       static public void setFullscreenWindow(Window win) {
+               GraphicsEnvironment env = GraphicsEnvironment
+                               .getLocalGraphicsEnvironment();
+               GraphicsDevice[] screens = env.getScreenDevices();
+
+               if (win == null) {
+                       for (GraphicsDevice screen : screens) {
+                               if (win == null) {
+                                       screen.setFullScreenWindow(null);
+                               }
+                       }
+
+                       return;
+               }
+               
+               Rectangle r = win.getBounds();
+               Point center = new Point(r.x + r.width / 2, r.y + r.height / 2);
+
+               GraphicsDevice current = null;
+               for (GraphicsDevice screen : screens) {
+                       GraphicsConfiguration[] confs = screen.getConfigurations();
+                       for (GraphicsConfiguration conf : confs) {
+                               if (conf.getBounds().contains(center)) {
+                                       current = screen;
+                                       break;
+                               }
+                       }
+
+                       if (current != null)
+                               break;
+               }
+
+               if (current == null) {
+                       current = GraphicsEnvironment.getLocalGraphicsEnvironment()
+                                       .getDefaultScreenDevice();
+               }
+
+               current.setFullScreenWindow(win);
+       }
 }