/*
* WPCleaner: A tool to help on Wikipedia maintenance tasks.
* Copyright (C) 2013 Nicolas Vervelle
*
* See README.txt file for licensing information.
*/
package org.wikipediacleaner.gui.swing.component;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
/**
* A base class for all popup listeners.
*/
public abstract class AbstractPopupListener implements MouseListener, KeyListener {
// ==========================================================================
// KeyListener methods
// ==========================================================================
/**
* Show popup menu in response to a key event.
*
* @param e Event.
*/
protected abstract void showPopup(KeyEvent e);
/**
* Check conditions for displaying a popup menu in response to a key event.
*
* @param e Event.
*/
private void maybeShowPopup(KeyEvent e) {
if (e == null) {
return;
}
if (e.getKeyCode() != KeyEvent.VK_CONTEXT_MENU) {
return;
}
showPopup(e);
}
/**
* Invoked when a key has been typed.
*
* @param e Event.
* @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent)
*/
@Override
public void keyTyped(KeyEvent e) {
// Nothing to do
}
/**
* Invoked when a key has been pressed.
*
* @param e Event.
* @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)
*/
@Override
public void keyPressed(KeyEvent e) {
// Nothing to do
}
/**
* Invoked when a key has been released.
*
* @param e Event.
* @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
*/
@Override
public void keyReleased(KeyEvent e) {
maybeShowPopup(e);
}
// ==========================================================================
// MouseListener methods
// ==========================================================================
/**
* Show popup menu in response to a mouse event.
*
* @param e Event.
*/
protected abstract void showPopup(MouseEvent e);
/**
* Check conditions for displaying a popup menu in response to a mouse event.
*
* @param e Event.
*/
private void maybeShowPopup(MouseEvent e) {
if (e == null) {
return;
}
if (!e.isPopupTrigger()) {
return;
}
showPopup(e);
}
/**
* Invoked when the mouse button has been clicked (pressed
* and released) on a component.
*
* @param e Event.
* @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
*/
@Override
public void mouseClicked(MouseEvent e) {
maybeShowPopup(e);
}
/**
* Invoked when a mouse button has been pressed on a component.
*
* @param e Event.
* @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
*/
@Override
public void mousePressed(MouseEvent e) {
maybeShowPopup(e);
}
/**
* Invoked when a mouse button has been released on a component.
*
* @param e Event.
* @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
*/
@Override
public void mouseReleased(MouseEvent e) {
maybeShowPopup(e);
}
/**
* Invoked when the mouse enters a component.
*
* @param e Event.
* @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
*/
@Override
public void mouseEntered(MouseEvent e) {
// Nothing to do
}
/**
* Invoked when the mouse exits a component.
*
* @param e Event.
* @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
*/
@Override
public void mouseExited(MouseEvent e) {
// Nothing to do
}
}