/*
 * Jitsi, the OpenSource Java VoIP and Instant Messaging client.
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */
package net.java.sip.communicator.plugin.desktoputil;

import java.awt.*;

/**
 * A class which reads the screen bounds and provides this information.
 *
 * @author Ingo Bauersachs
 */
public class ScreenInformation
{
    /**
     * Calculates the bounding box of all available screens. This method is
     * highly inaccurate when screens of different sizes are used or not evenly
     * aligned. A correct implementation should generate a polygon.
     *
     * @return A polygon of the usable screen area.
     */
    public static Rectangle getScreenBounds()
    {
        final GraphicsEnvironment ge = GraphicsEnvironment
                .getLocalGraphicsEnvironment();

        Rectangle bounds = new Rectangle();
        for(GraphicsDevice gd : ge.getScreenDevices())
        {
            GraphicsConfiguration gc = gd.getDefaultConfiguration();
            bounds = bounds.union(gc.getBounds());
        }
        return bounds;
    }

    /**
     * Checks whether the top edge of the rectangle is contained in any of the
     * available screens.
     *
     * @param window The bounding box of the window.
     * @return True when the top edge is in a visible screen area; false
     *         otherwise
     */
    public static boolean isTitleOnScreen(Rectangle window)
    {
        final GraphicsEnvironment ge = GraphicsEnvironment
            .getLocalGraphicsEnvironment();

        boolean leftInside = false;
        boolean rightInside = false;
        Point left = new Point(window.x, window.y);
        Point right = new Point(window.x, window.y + window.width);
        for(GraphicsDevice gd : ge.getScreenDevices())
        {
            GraphicsConfiguration gc = gd.getDefaultConfiguration();
            if(gc.getBounds().contains(left))
                leftInside = true;
            if(gc.getBounds().contains(right))
                rightInside = true;
            if(leftInside && rightInside)
                return true;
        }
        return leftInside && rightInside;
    }
}

@@ -1623,17 +1623,20 @@
   Point 
-l
+topL
 eft = ne
@@ -1678,17 +1678,20 @@
   Point 
-r
+topR
 ight = n
@@ -1707,25 +1707,26 @@
 window.x
-,
+ +
  window.
 y + wind
@@ -1721,19 +1721,22 @@
 dow.
-y +
+width,
  window.
 widt
@@ -1731,21 +1731,17 @@
  window.
-width
+y
 );%0A     
@@ -1908,17 +1908,20 @@
 ontains(
-l
+topL
 eft))%0A  
@@ -1992,17 +1992,20 @@
 ontains(
-r
+topR
 ight))%0A 

Fix window positioning code