/*
* Copyright 2003-2010 Tufts University Licensed under the
* Educational Community License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may
* obtain a copy of the License at
*
* http://www.osedu.org/licenses/ECL-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an "AS IS"
* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package tufts.vue;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* VueToolPopupAdapter
*
* This calss handles support for activating a popuup menu for the radio
* button tool menu of the VUE Toolbar.
*
* T@author scottb
* @deprecated -- no longer used -- smf 2004-01-29 19:42.02
**/
public class VueToolPopupAdapter extends MouseAdapter {
/** The popup menu to be displayed **/
private JPopupMenu mPopup;
/**
* Constructor
*
* Creates an adapter with the passed popup menu
*
* @param pPopup the popup menu to display
**/
// public VueToolPopupAdapter( JPopupMenu pPopup) {
public VueToolPopupAdapter( JPopupMenu pPopup) {
super();
setPopup( pPopup);
}
/**
* setPopupMenu
*
* This method sets the popup menu to display
*
* @param pPopup the popup menu to display
**/
public void setPopup(JPopupMenu pPopup) {
mPopup = pPopup;
}
/**
* getPopupMenu
* this method returns the current popup menu used by the adapter
* @return the popup menu
**/
public JPopupMenu getPopupMenu() {
return mPopup;
}
/**
* mousePressed
* Thimethod will handle the mouse press event and cause the
* popup to display at the proper location of th
**/
private boolean mMenuWasShowing = false;
public void mousePressed(MouseEvent e) {
debug(e.paramString() + " on " + e.getSource());
// For most things, we'd pop up the menu at x, yy below,
//int x = e.getX();
//int y = e.getY();
// but this time, we use the compoent's lower left as the spot so
// it looks like a drop down menu
if (!mPopup.isVisible()) {
mMenuWasShowing = false;
// this almost working, but not because MenuSelectionManager now
// SOMETIMES doesn't clear the old menu (probabaly thinks it's
// already hidden after we overrode it's attempts to hide it)
//if (mPopup instanceof PaletteButton.PBPopupMenu) {
// ((PaletteButton.PBPopupMenu)mPopup).setVisibleLocked(true);
//}
showPopup(e);
} else {
mMenuWasShowing = true;
//mPopup.setVisible(false);
}
}
/**
* mouse Released
* This handles the mouse release events
*
* @param MouseEvent e the event
**/
public void mouseReleased(MouseEvent e) {
debug(e.paramString() + " on " + e.getSource());
// if for any reason we never get this mouse released event,
// the pop-up menu will stay stuck on the screen till we
// do get one...
//if (mPopup instanceof PaletteButton.PBPopupMenu)
// ((PaletteButton.PBPopupMenu)mPopup).setVisibleLocked(false);
if ( mPopup.isVisible() ) {
///////mPopup.setVisible( false);
//Component c = e.getComponent();
// if the palette buttons can take focus, you have
// to do this or they don't get clicked -- we've turned
// off taking focus which improves pop-up menu behaviour.
//debug(e.paramString() + "\tclicking " + c);
//((PaletteButton) c).doClick();
} else {
// this puts it back, but we need to not do this if was just showing
// so we can still toggle it's display on/off
if (!mMenuWasShowing)
showPopup(e);
//if (sDebug) System.out.println("\tpop-up not visible");
}
}
private void showPopup(MouseEvent e)
{
if (sDebug) System.out.println("\tshowing " + mPopup);
Component c = e.getComponent();
mPopup.show(c, 0, c.getBounds().height);
}
/**
* mouseClicked
* This handles the mouse clicked events
*
* @param MouseEvent e the event
**/
public void mouseClicked(MouseEvent e) {
debug(e.paramString() + " on " + e.getSource());
}
private static boolean sDebug = false;
private void debug( String pStr) {
if( sDebug ) {
System.out.println("VueToolPopupAdapter " + Integer.toHexString(hashCode()) + ": " +pStr);
}
}
}