Renamed getToolTipPosition() to the more generally-useful fitRectInRect()
and moved to SwingUtil. git-svn-id: https://samskivert.googlecode.com/svn/trunk@777 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: SwingUtil.java,v 1.9 2002/06/05 23:15:26 ray Exp $
|
// $Id: SwingUtil.java,v 1.10 2002/06/14 07:55:11 shaper Exp $
|
||||||
//
|
//
|
||||||
// samskivert library - useful routines for java programs
|
// samskivert library - useful routines for java programs
|
||||||
// Copyright (C) 2001 Michael Bayne
|
// Copyright (C) 2001 Michael Bayne
|
||||||
@@ -78,6 +78,42 @@ public class SwingUtil
|
|||||||
g.drawString(str, xpos, ypos);
|
g.drawString(str, xpos, ypos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the most reasonable position for the specified rectangle to
|
||||||
|
* be placed at so as to maximize its containment by the specified
|
||||||
|
* bounding rectangle while still placing it as near its original
|
||||||
|
* coordinates as possible.
|
||||||
|
*
|
||||||
|
* @param rect the rectangle to be positioned.
|
||||||
|
* @param bounds the containing rectangle.
|
||||||
|
*/
|
||||||
|
public static Point fitRectInRect (
|
||||||
|
Rectangle rect, Rectangle bounds)
|
||||||
|
{
|
||||||
|
// make sure left edge is within bounds
|
||||||
|
Rectangle erect = new Rectangle(rect);
|
||||||
|
if (erect.x < bounds.x) {
|
||||||
|
erect.x = bounds.x;
|
||||||
|
}
|
||||||
|
|
||||||
|
// make sure top edge is within bounds
|
||||||
|
if (erect.y < bounds.y) {
|
||||||
|
erect.y = bounds.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
// do our best to fit entire rectangle into bounds horizontally
|
||||||
|
if ((erect.x + erect.width) > (bounds.x + bounds.width)) {
|
||||||
|
erect.x = (bounds.x + bounds.width) - erect.width;
|
||||||
|
}
|
||||||
|
|
||||||
|
// do our best to fit entire rect into bounds vertically
|
||||||
|
if ((erect.y + erect.height) > (bounds.y + bounds.height)) {
|
||||||
|
erect.y = (bounds.y + bounds.height) - erect.height;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Point(erect.x, erect.y);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a polygon representing the rectangle defined by the
|
* Return a polygon representing the rectangle defined by the
|
||||||
* specified upper left coordinate and the supplied dimensions.
|
* specified upper left coordinate and the supplied dimensions.
|
||||||
|
|||||||
@@ -1,67 +0,0 @@
|
|||||||
//
|
|
||||||
// $Id: ToolTipUtil.java,v 1.2 2001/12/14 18:58:29 shaper Exp $
|
|
||||||
//
|
|
||||||
// samskivert library - useful routines for java programs
|
|
||||||
// Copyright (C) 2001 Walter Korman
|
|
||||||
//
|
|
||||||
// This library is free software; you can redistribute it and/or modify it
|
|
||||||
// under the terms of the GNU Lesser General Public License as published
|
|
||||||
// by the Free Software Foundation; either version 2.1 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// This library is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
// Lesser General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Lesser General Public
|
|
||||||
// License along with this library; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
|
|
||||||
package com.samskivert.swing.util;
|
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Miscellaneous useful tool tip related utility functions.
|
|
||||||
*/
|
|
||||||
public class ToolTipUtil
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Returns an eminently reasonable position at which the tool tip
|
|
||||||
* may be displayed so as to maximize its visibility while still
|
|
||||||
* placing it as near the relevant mouse position as is feasible.
|
|
||||||
*
|
|
||||||
* @param x the mouse x-position associated with the tool tip.
|
|
||||||
* @param y the mouse y-position associated with the tool tip.
|
|
||||||
* @param tip the tool tip dimensions.
|
|
||||||
* @param bounds the tool tip container's bounding rectangle.
|
|
||||||
*/
|
|
||||||
public static Point getTipPosition (
|
|
||||||
int x, int y, Dimension tip, Rectangle bounds)
|
|
||||||
{
|
|
||||||
Rectangle tiprect = new Rectangle(x, y, tip.width, tip.height);
|
|
||||||
|
|
||||||
// make sure left edge of tip is within bounds
|
|
||||||
if (tiprect.x < bounds.x) {
|
|
||||||
tiprect.x = bounds.x;
|
|
||||||
}
|
|
||||||
|
|
||||||
// make sure top edge of tip is within bounds
|
|
||||||
if (tiprect.y < bounds.y) {
|
|
||||||
tiprect.y = bounds.y;
|
|
||||||
}
|
|
||||||
|
|
||||||
// do our best to fit entire tip into bounds horizontally
|
|
||||||
if ((tiprect.x + tiprect.width) > (bounds.x + bounds.width)) {
|
|
||||||
tiprect.x = (bounds.x + bounds.width) - tiprect.width;
|
|
||||||
}
|
|
||||||
|
|
||||||
// do our best to fit entire tip into bounds vertically
|
|
||||||
if ((tiprect.y + tiprect.height) > (bounds.y + bounds.height)) {
|
|
||||||
tiprect.y = (bounds.y + bounds.height) - tiprect.height;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new Point(tiprect.x, tiprect.y);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user