Moved static methods to the top of the class; added configureAction() which
complements createActionButton() but gives you control over creating the button (and works for any AbstractButton derivation). git-svn-id: https://samskivert.googlecode.com/svn/trunk@1904 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -27,6 +27,7 @@ import java.awt.event.ActionListener;
|
|||||||
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
|
import javax.swing.AbstractButton;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
|
|
||||||
@@ -99,6 +100,70 @@ public abstract class Controller
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Posts the specified action to the nearest controller in scope. The
|
||||||
|
* controller search begins with the source component of the action and
|
||||||
|
* traverses up the component tree looking for a controller to handle the
|
||||||
|
* action. The controller location and action event processing is
|
||||||
|
* guaranteed to take place on the AWT thread regardless of what thread
|
||||||
|
* calls <code>postAction</code> and that processing will not occur
|
||||||
|
* immediately but is instead appended to the AWT event dispatch queue for
|
||||||
|
* processing.
|
||||||
|
*/
|
||||||
|
public static void postAction (ActionEvent action)
|
||||||
|
{
|
||||||
|
// slip things onto the event queue for later
|
||||||
|
EventQueue.invokeLater(new ActionInvoker(action));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Like {@link #postAction(ActionEvent)} except that it constructs the
|
||||||
|
* action event for you with the supplied source component and string
|
||||||
|
* command. The <code>id</code> of the event will always be set to
|
||||||
|
* zero.
|
||||||
|
*/
|
||||||
|
public static void postAction (Component source, String command)
|
||||||
|
{
|
||||||
|
// slip things onto the event queue for later
|
||||||
|
ActionEvent event = new ActionEvent(source, 0, command);
|
||||||
|
EventQueue.invokeLater(new ActionInvoker(event));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Like {@link #postAction(ActionEvent)} except that it constructs a
|
||||||
|
* {@link CommandEvent} with the supplied source component, string
|
||||||
|
* command and argument.
|
||||||
|
*/
|
||||||
|
public static void postAction (
|
||||||
|
Component source, String command, Object argument)
|
||||||
|
{
|
||||||
|
// slip things onto the event queue for later
|
||||||
|
CommandEvent event = new CommandEvent(source, command, argument);
|
||||||
|
EventQueue.invokeLater(new ActionInvoker(event));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a button and configures it with the specified label and action
|
||||||
|
* command and adds {@link #DISPATCHER} as an action listener.
|
||||||
|
*/
|
||||||
|
public static JButton createActionButton (String label, String command)
|
||||||
|
{
|
||||||
|
JButton button = new JButton(label);
|
||||||
|
configureAction(button, command);
|
||||||
|
return button;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configures the supplied button with the {@link #DISPATCHER} action
|
||||||
|
* listener and the specified action command (which, if it is a method name
|
||||||
|
* will be looked up dynamically on the matching controller).
|
||||||
|
*/
|
||||||
|
public static void configureAction (AbstractButton button, String action)
|
||||||
|
{
|
||||||
|
button.setActionCommand(action);
|
||||||
|
button.addActionListener(DISPATCHER);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lets this controller know about the panel that it is controlling.
|
* Lets this controller know about the panel that it is controlling.
|
||||||
*/
|
*/
|
||||||
@@ -313,60 +378,6 @@ public abstract class Controller
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Posts the specified action to the nearest controller in scope. The
|
|
||||||
* controller search begins with the source component of the action and
|
|
||||||
* traverses up the component tree looking for a controller to handle the
|
|
||||||
* action. The controller location and action event processing is
|
|
||||||
* guaranteed to take place on the AWT thread regardless of what thread
|
|
||||||
* calls <code>postAction</code> and that processing will not occur
|
|
||||||
* immediately but is instead appended to the AWT event dispatch queue for
|
|
||||||
* processing.
|
|
||||||
*/
|
|
||||||
public static void postAction (ActionEvent action)
|
|
||||||
{
|
|
||||||
// slip things onto the event queue for later
|
|
||||||
EventQueue.invokeLater(new ActionInvoker(action));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Like {@link #postAction(ActionEvent)} except that it constructs the
|
|
||||||
* action event for you with the supplied source component and string
|
|
||||||
* command. The <code>id</code> of the event will always be set to
|
|
||||||
* zero.
|
|
||||||
*/
|
|
||||||
public static void postAction (Component source, String command)
|
|
||||||
{
|
|
||||||
// slip things onto the event queue for later
|
|
||||||
ActionEvent event = new ActionEvent(source, 0, command);
|
|
||||||
EventQueue.invokeLater(new ActionInvoker(event));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Like {@link #postAction(ActionEvent)} except that it constructs a
|
|
||||||
* {@link CommandEvent} with the supplied source component, string
|
|
||||||
* command and argument.
|
|
||||||
*/
|
|
||||||
public static void postAction (
|
|
||||||
Component source, String command, Object argument)
|
|
||||||
{
|
|
||||||
// slip things onto the event queue for later
|
|
||||||
CommandEvent event = new CommandEvent(source, command, argument);
|
|
||||||
EventQueue.invokeLater(new ActionInvoker(event));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a button and configures it with the specified label and
|
|
||||||
* action command and adds {@link #DISPATCHER} as an action listener.
|
|
||||||
*/
|
|
||||||
public static JButton createActionButton (String label, String command)
|
|
||||||
{
|
|
||||||
JButton button = new JButton(label);
|
|
||||||
button.setActionCommand(command);
|
|
||||||
button.addActionListener(DISPATCHER);
|
|
||||||
return button;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is used to dispatch action events to controllers within
|
* This class is used to dispatch action events to controllers within
|
||||||
* the context of the AWT event dispatch mechanism.
|
* the context of the AWT event dispatch mechanism.
|
||||||
|
|||||||
Reference in New Issue
Block a user