/*
* $Id$
*
* Copyright (c) 1998-2005 The Regents of the University of California.
* All rights reserved. See the file COPYRIGHT for details.
*
*/
package ptolemy.apps.vergil.graph;
import ptolemy.kernel.*;
import ptolemy.kernel.util.*;
import diva.canvas.event.LayerEvent;
import diva.canvas.event.LayerEventMulticaster;
import diva.canvas.event.LayerListener;
import diva.canvas.event.LayerMotionListener;
import diva.canvas.event.MouseFilter;
import diva.canvas.interactor.*;
import diva.graph.*;
import java.awt.event.MouseEvent;
import java.util.Hashtable;
/**
* An abstract class that implements Interactor. This class provides
* simple implementations of most of the required methods of
* interactors. The listener methods are all implemented,
* to make it easier to implement interactor subclasses.
*
* @version $Revision$
* @author John Reekie
*/
public class MetaInteractor extends CompositeEntity implements Interactor {
/** The consuming flag.
*/
private boolean _consuming = true;
/** The flag that says that layer events are enabled
*/
private boolean _enabled = true;
/** The flag that says that layer motion events are enabled
*/
private boolean _motionEnabled = false;
/** The mouse filter
*/
private MouseFilter _mouseFilter = MouseFilter.defaultFilter;
public MetaInteractor(CompositeEntity container, String name)
throws IllegalActionException, NameDuplicationException {
super(container, name);
}
/** Test if the interactor accepts the given event. This default
* implementation returns true if the interactor is enabled
* and the mouse filter accepts the event.
*/
public boolean accept(LayerEvent event) {
return isEnabled() && getMouseFilter().accept(event);
}
/** Get the mouse filter used by this interactor to
* decide whether to accept an event. The result may
* be null.
*/
public MouseFilter getMouseFilter() {
return _mouseFilter;
}
/** Test the consuming flag of this interactor. If this flag is
* set, the interactor consumes all input events that get past its
* mouse filter.
*/
public boolean isConsuming() {
return _consuming;
}
/** Test the enabled flag of this role. If true, the role
* is prepared to handle layer events.
*/
public boolean isEnabled() {
return _enabled;
}
/** Test the motion enabled flag of this role. If true, the role
* is prepared to handle layer motion events.
*/
public boolean isMotionEnabled() {
return _motionEnabled;
}
/** Do nothing.
*/
public void mouseDragged(LayerEvent layerEvent) {
// empty
}
/** Do nothing.
*/
public void mouseEntered(LayerEvent layerEvent) {
// empty
}
/** Do nothing.
*/
public void mouseExited(LayerEvent layerEvent) {
// empty
}
/** Do nothing.
*/
public void mouseMoved(LayerEvent layerEvent) {
// empty
}
/** Do nothing.
*/
public void mousePressed(LayerEvent layerEvent) {
// empty
}
/** Do nothing.
*/
public void mouseReleased(LayerEvent layerEvent) {
// empty
}
/** Do nothing.
*/
public void mouseClicked(LayerEvent layerEvent) {
//empty
}
/** Set the consuming flag of this layer. If this flag is
* set, the interactor consumes all events that get past its mouse
* filter. By default, the flag is true.
*/
public void setConsuming(boolean flag) {
_consuming = flag;
}
/** Set the enabled flag of this role. If true, the role
* is prepared to handle layer events. The default setting
* of this flag is <b>true</b>.
*/
public void setEnabled(boolean flag) {
_enabled = flag;
}
/** Set the motion enabled flag of this role. If true, the role
* is prepared to handle layer motion events. The default setting
* of this flag is <b>false</b>.
*/
protected void setMotionEnabled(boolean flag) {
_motionEnabled = flag;
}
/** Set the mouse filter of this interactor.
*/
public void setMouseFilter(MouseFilter filter) {
_mouseFilter = filter;
}
}