Added a CommandButton which submits CommandEvents when it fires actions.
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1041 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -0,0 +1,93 @@
|
|||||||
|
//
|
||||||
|
// $Id: CommandButton.java,v 1.1 2003/01/29 22:20:14 ray Exp $
|
||||||
|
|
||||||
|
package com.samskivert.swing;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import javax.swing.JButton;
|
||||||
|
|
||||||
|
import com.samskivert.swing.event.CommandEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A button that fires CommandEvents when it is actioned.
|
||||||
|
*/
|
||||||
|
public class CommandButton extends JButton
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Set the argument of the CommandEvents which we generate.
|
||||||
|
*/
|
||||||
|
public void setActionArgument (Object arg)
|
||||||
|
{
|
||||||
|
_argument = arg;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the argument that we'll use when we generate CommandEvents.
|
||||||
|
*/
|
||||||
|
public Object getActionArgument ()
|
||||||
|
{
|
||||||
|
return _argument;
|
||||||
|
}
|
||||||
|
|
||||||
|
// documentation inherited
|
||||||
|
protected void fireActionPerformed (ActionEvent event)
|
||||||
|
{
|
||||||
|
Object[] listeners = listenerList.getListenerList();
|
||||||
|
ActionEvent e = null;
|
||||||
|
// Process the listeners last to first, notfiying
|
||||||
|
// those that are interested in this event
|
||||||
|
for (int ii = listeners.length - 2; ii >= 0; ii -= 2) {
|
||||||
|
if (listeners[ii] == ActionListener.class) {
|
||||||
|
// Lazily create the event:
|
||||||
|
if (e == null) {
|
||||||
|
e = createEventToFire(event);
|
||||||
|
}
|
||||||
|
((ActionListener) listeners[ii + 1]).actionPerformed(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the event to fire from the prototype.
|
||||||
|
* If this method were broken out in AbstractButton, we wouldn't even
|
||||||
|
* have had to override fireActionPerformed().
|
||||||
|
*/
|
||||||
|
protected ActionEvent createEventToFire (ActionEvent proto)
|
||||||
|
{
|
||||||
|
String actionCommand = proto.getActionCommand();
|
||||||
|
if (actionCommand == null) {
|
||||||
|
actionCommand = getActionCommand();
|
||||||
|
}
|
||||||
|
|
||||||
|
Object arg = (proto instanceof CommandEvent)
|
||||||
|
? arg = ((CommandEvent) proto).getArgument()
|
||||||
|
: null;
|
||||||
|
|
||||||
|
// if we were passed an actionevent, or if it was a
|
||||||
|
// command event with a null arg..
|
||||||
|
if (arg == null) {
|
||||||
|
// use ours
|
||||||
|
arg = getActionArgument();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (arg == null) {
|
||||||
|
// just create a plain actionEvent
|
||||||
|
return new ActionEvent(CommandButton.this,
|
||||||
|
ActionEvent.ACTION_PERFORMED,
|
||||||
|
actionCommand,
|
||||||
|
proto.getWhen(),
|
||||||
|
proto.getModifiers());
|
||||||
|
} else {
|
||||||
|
// if we found an arg somewhere, create a commandevent
|
||||||
|
return new CommandEvent(CommandButton.this,
|
||||||
|
actionCommand,
|
||||||
|
arg,
|
||||||
|
proto.getWhen(),
|
||||||
|
proto.getModifiers());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The CommandEvent argument for our actions. */
|
||||||
|
protected Object _argument;
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: CommandEvent.java,v 1.3 2003/01/03 23:07:33 mdb Exp $
|
// $Id: CommandEvent.java,v 1.4 2003/01/29 22:20:14 ray Exp $
|
||||||
|
|
||||||
package com.samskivert.swing.event;
|
package com.samskivert.swing.event;
|
||||||
|
|
||||||
@@ -19,6 +19,14 @@ public class CommandEvent extends ActionEvent
|
|||||||
_argument = argument;
|
_argument = argument;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CommandEvent (
|
||||||
|
Object source, String command, Object argument,
|
||||||
|
long when, int modifiers)
|
||||||
|
{
|
||||||
|
super(source, ActionEvent.ACTION_PERFORMED, command, when, modifiers);
|
||||||
|
_argument = argument;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the argument provided to the command event at construct
|
* Returns the argument provided to the command event at construct
|
||||||
* time.
|
* time.
|
||||||
|
|||||||
Reference in New Issue
Block a user