diff --git a/projects/samskivert/src/java/com/samskivert/swing/ToolTipManager.java b/projects/samskivert/src/java/com/samskivert/swing/ToolTipManager.java deleted file mode 100644 index 0ca03164..00000000 --- a/projects/samskivert/src/java/com/samskivert/swing/ToolTipManager.java +++ /dev/null @@ -1,298 +0,0 @@ -// -// $Id: ToolTipManager.java,v 1.6 2001/12/17 19:00:18 mdb 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; - -import javax.swing.*; -import javax.swing.event.*; - -import com.samskivert.Log; -import com.samskivert.util.*; - -/** - * The tool tip manager provides generic facilities for container - * objects to display "tool tips" associated with the objects they - * contain. - * - *

The container object should construct a tool tip manager for - * itself, implement the {@link ToolTipObserver} interface and then - * add calls to {@link #handleMouseEntered}, {@link - * #handleMouseExited}, {@link #handleMouseClicked} and {@link - * #handleMouseMoved} as appropriate within its code to notify the - * manager of relevant user events. - * - *

The manager will then turn around and call {@link - * ToolTipObserver#showToolTip} or {@link ToolTipObserver#hideToolTip} - * as necessary, taking into account standard tool tip timing and - * semantics. - */ -public class ToolTipManager implements Interval, AncestorListener -{ - /** - * Construct a tool tip manager for the given observer. - * - * @param obs the tool tip observer. - */ - public ToolTipManager (ToolTipObserver obs) - { - // save off a reference to the observer - _obs = obs; - - // set up our starting state - _lastmove = System.currentTimeMillis(); - _lastx = _lasty = -1; - _fastshow = false; - _tipdelay = DEF_TIP_DELAY; - - // register the tip action interval immediately if the - // component is already showing on-screen - JComponent target = _obs.getComponent(); - if (target.isShowing()) { - registerInterval(); - } - - // listen to the view's ancestor events - target.addAncestorListener(this); - } - - /** - * Called by the IntervalManager whenever our - * interval expires. - */ - public void intervalExpired (int id, Object arg) - { - // disable fast tool tip display if we've been outside of an - // object for sufficiently long - if (_fastshow && _curobj == null) { - long now = System.currentTimeMillis(); - _fastshow = (now - _lastmove < _tipdelay); - } - - // show or hide the tool tip as appropriate - handleTipAction(); - } - - /** - * Register the tip action interval with the interval manager. - */ - protected void registerInterval () - { - // register ourselves with the interval manager - IntervalManager.register(this, TIP_INTERVAL, null, true); - } - - /** - * Handle showing or hiding a tip as necessary. - */ - protected void handleTipAction () - { - // bail if there's nothing doing - if (_action == A_NONE) return; - - // do nothing if it's not yet time for us to act - if (!isShowTime()) return; - - // throw a task on the AWT thread to handle tip actions - SwingUtilities.invokeLater(new TipTask(_curobj, _action)); - - // clear out our action state - _action = A_NONE; - - // speed future tool tips on their way - _fastshow = true; - } - - /** - * Return whether sufficient time has passed since the last mouse - * movement to allow us to show a tool tip. - */ - protected boolean isShowTime () - { - long now = System.currentTimeMillis(); - return (_fastshow || (now - _lastmove >= _tipdelay)); - } - - protected void updateObject (ToolTipProvider target) - { - _curobj = target; - _lastmove = System.currentTimeMillis(); - - // update tip display immediately if the time is right - handleTipAction(); - } - - /** - * Handle mouse entered events for a given object. The {@link - * ToolTipObserver} should call this method whenever an object it - * manages is entered. - * - * @param target the object entered. - * @param x the mouse x-position. - * @param y the mouse y-position. - */ - public void handleMouseEntered (ToolTipProvider target, int x, int y) - { - _action = A_SHOW; - updateObject(target); - _lastx = x; - _lasty = y; - } - - /** - * Handle mouse exited events for a given object. The {@link - * ToolTipObserver} should call this method whenever an object it - * manages is exited. - */ - public void handleMouseExited () - { - _action = A_HIDE; - updateObject(null); - } - - /** - * Handle mouse clicked events for a given object. The {@link - * ToolTipObserver} should call this method whenever an object it - * manages is clicked on. - * - * @param target the object clicked on. - */ - public void handleMouseClicked (ToolTipProvider target) - { - _action = A_HIDE; - updateObject(target); - - // disable fast tip display on mouse-click - _fastshow = false; - } - - /** - * Handle mouse moved events. The {@link ToolTipObserver} should - * call this method whenever the mouse is moved within its - * container bounds. - * - * @param x the mouse x-position. - * @param y the mouse y-position. - */ - public void handleMouseMoved (int x, int y) - { - // just update the last moved time since we don't perform any - // tip antics purely as a result of mouse movement - _lastmove = System.currentTimeMillis(); - - // and save the mouse position - _lastx = x; - _lasty = y; - } - - /** - * Set the milliseconds to wait before showing a tool tip. - * - * @param delay the milliseconds to wait. - */ - public void setShowDelay (int delay) - { - if (delay < TIP_INTERVAL) { - Log.warning("Tip show delay must be >= " + TIP_INTERVAL + " ms."); - return; - } - - _tipdelay = delay; - } - - /** - * A class to encapsulate tool tip observer notification to be - * performed on the AWT thread. - */ - class TipTask implements Runnable - { - public TipTask (ToolTipProvider obj, int action) - { - _obj = obj; - _action = action; - } - - public void run () - { - switch (_action) { - case A_SHOW: _obs.showToolTip(_obj, _lastx, _lasty); break; - case A_HIDE: _obs.hideToolTip(); break; - } - } - - protected ToolTipProvider _obj; - protected int _action; - } - - /** AncestorListener interface methods. */ - - public void ancestorAdded (AncestorEvent event) - { - if (_iid == -1) { - // register the tip action interval since we're now visible - registerInterval(); - } - } - - public void ancestorRemoved (AncestorEvent event) - { - // un-register the tip action interval since we're now hidden - if (_iid != -1) { - IntervalManager.remove(_iid); - _iid = -1; - } - } - - public void ancestorMoved (AncestorEvent event) { } - - /** Delay in milliseconds between intervals. */ - protected static final int TIP_INTERVAL = 200; - - /** Default delay between tip-related actions. */ - protected static final int DEF_TIP_DELAY = 1000; - - /** Action constants. */ - protected static final int A_NONE = 0; - protected static final int A_SHOW = 1; - protected static final int A_HIDE = 2; - - /** The minimum delay in milliseconds before showing a tip. */ - protected long _tipdelay; - - /** The last time a mouse move we care about was made. */ - protected long _lastmove; - - /** The current object the mouse is within. */ - protected ToolTipProvider _curobj; - - /** The last known mouse position. */ - protected int _lastx, _lasty; - - /** The next tool tip action to perform. */ - protected int _action; - - /** Whether tips should be shown quickly due to other recent tips. */ - protected boolean _fastshow; - - /** The tool tip observer. */ - protected ToolTipObserver _obs; - - /** The tip action interval id. */ - protected int _iid = -1; -} diff --git a/projects/samskivert/src/java/com/samskivert/swing/ToolTipObserver.java b/projects/samskivert/src/java/com/samskivert/swing/ToolTipObserver.java deleted file mode 100644 index 4d16c644..00000000 --- a/projects/samskivert/src/java/com/samskivert/swing/ToolTipObserver.java +++ /dev/null @@ -1,54 +0,0 @@ -// -// $Id: ToolTipObserver.java,v 1.4 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; - -import javax.swing.JComponent; - -/** - * An interface to be implemented by container objects that would like - * to be notified by the {@link ToolTipManager} when they should - * display tool tips associated with the objects that they manage. - */ -public interface ToolTipObserver -{ - /** - * Called when the tool tip associated with the given provider - * should be displayed. - * - * @param tipper the tool tip provider. - * @param x the last mouse x-position. - * @param y the last mouse y-position. - */ - public void showToolTip (ToolTipProvider tipper, int x, int y); - - /** - * Called when any visible tool tip should be hidden and so the - * observer is likely to want to repaint itself without the tip. - */ - public void hideToolTip (); - - /** - * Return the component associated with the observer so that the - * tool tip manager can restrict monitoring the component to when - * it's actually visible. - */ - public JComponent getComponent (); -} diff --git a/projects/samskivert/src/java/com/samskivert/swing/ToolTipProvider.java b/projects/samskivert/src/java/com/samskivert/swing/ToolTipProvider.java deleted file mode 100644 index ca2e023b..00000000 --- a/projects/samskivert/src/java/com/samskivert/swing/ToolTipProvider.java +++ /dev/null @@ -1,46 +0,0 @@ -// -// $Id: ToolTipProvider.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; - -import java.awt.*; - -/** - * An interface to be implemented by objects that may have a tool tip - * associated with themselves. - */ -public interface ToolTipProvider -{ - /** - * Render a tool tip for this object to the given graphics context. - * - * @param g the graphics context. - * @param x the x-position at which the tip should be drawn. - * @param y the y-position at which the tip should be drawn. - */ - public void paintToolTip (Graphics g, int x, int y); - - /** - * Return the dimensions of the tool tip. - * - * @param g the graphics context to which the tip will be rendered. - */ - public Dimension getToolTipSize (Graphics g); -}