01: import java.awt.event.*;
02: import javax.swing.*;
03: 
04: /**
05:    This action places a greeting into a text field 
06:    and afterwards disables itself and enables its 
07:    opposite action.
08: */
09: public class GreetingAction extends AbstractAction
10: {
11:    /**
12:       Constructs a greeting action.
13:       @param greeting the string to add to the text area
14:       @param textArea the text area to which to add the greeting
15:    */      
16:    public GreetingAction(String greeting, JTextArea textArea)
17:    {
18:       this.greeting = greeting;
19:       this.textArea = textArea;
20:    }
21: 
22:    /**
23:       Sets the opposite action.
24:       @param action the action to be enabled after this action was
25:       carried out
26:    */
27:    public void setOpposite(Action action)
28:    {
29:       oppositeAction = action;
30:    }
31: 
32:    public void actionPerformed(ActionEvent event)
33:    {
34:       textArea.append(greeting);
35:       textArea.append("\n");
36:       if (oppositeAction != null)
37:       {
38:          setEnabled(false);
39:          oppositeAction.setEnabled(true);
40:       }
41:    }
42: 
43:    private String greeting;
44:    private JTextArea textArea;
45:    private Action oppositeAction;
46: }