Package com.gargoylesoftware.base.gui
Class ReflectedAction
- java.lang.Object
-
- javax.swing.AbstractAction
-
- com.gargoylesoftware.base.gui.ReflectedAction
-
- All Implemented Interfaces:
java.awt.event.ActionListener
,java.io.Serializable
,java.lang.Cloneable
,java.util.EventListener
,javax.swing.Action
public class ReflectedAction extends javax.swing.AbstractAction
A swing "action" that uses reflection to find and invoke a given target method.ReflectedAction is a Swing "action" that uses reflection to call a specific target method when the action is fired. Actions are often implemented using inner classes which can be very inefficient in terms of performance and deployment size. This action is a tiny bit slower when it is actually fired but is smaller and generally faster otherwise due to the fact that those inner classes are no longer needed.
Action searchAction = new ReflectedAction(this, "performSearch");
- Version:
- $Revision: 1.4 $
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String
methodName_
private java.lang.Object
object_
private static long
serialVersionUID
-
Constructor Summary
Constructors Constructor Description ReflectedAction(java.lang.Object object, java.lang.String methodName)
Create a reflected action with an object and the name of the method that will be invoked on that object when the action is fired.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
actionPerformed(java.awt.event.ActionEvent event)
The action has been fired so now we use reflection to invoke the method that was specified previously.protected void
assertNotNull(java.lang.String fieldName, java.lang.Object object)
Throw an exception if the specified object is nullprotected void
exceptionThrown(java.lang.Exception exception)
Callback that will be invoked if an exception is thrown during the reflected method call.private java.lang.reflect.Method
findMethodOnObject(java.lang.Object object, java.lang.String methodName)
Return the Method object that corresponds to the specified method name.-
Methods inherited from class javax.swing.AbstractAction
addPropertyChangeListener, clone, firePropertyChange, getKeys, getPropertyChangeListeners, getValue, isEnabled, putValue, removePropertyChangeListener, setEnabled
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
object_
private final java.lang.Object object_
-
methodName_
private final java.lang.String methodName_
-
-
Constructor Detail
-
ReflectedAction
public ReflectedAction(java.lang.Object object, java.lang.String methodName) throws java.lang.IllegalArgumentException
Create a reflected action with an object and the name of the method that will be invoked on that object when the action is fired.- Parameters:
object
- The object upon which we will invoke a method when the action is firedmethodName
- The name of the method that we will invoke. This method must take either no parameters or one parameter which is an ActionEvent.- Throws:
java.lang.IllegalArgumentException
- if there are no matching methods.
-
-
Method Detail
-
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent event)
The action has been fired so now we use reflection to invoke the method that was specified previously.- Parameters:
event
- The ActionEvent
-
findMethodOnObject
private java.lang.reflect.Method findMethodOnObject(java.lang.Object object, java.lang.String methodName)
Return the Method object that corresponds to the specified method name. The method may take either no arguments or may take an ActionEvent.- Parameters:
object
- The object that contains the methodmethodName
- The name of the method that we're looking for- Returns:
- The method that matches the specified name.
- Throws:
java.lang.IllegalArgumentException
- If there aren't any methods that match.java.lang.SecurityException
- If we do not have access to this method.
-
exceptionThrown
protected void exceptionThrown(java.lang.Exception exception)
Callback that will be invoked if an exception is thrown during the reflected method call.Override this to provide custom error handling. Default behaviour is to print a stack trace.
- Parameters:
exception
- The exception
-
assertNotNull
protected final void assertNotNull(java.lang.String fieldName, java.lang.Object object)
Throw an exception if the specified object is null- Parameters:
fieldName
- The name of the paremeter we are checkingobject
- The value of the parameter we are checking
-
-