KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > uk > ac > roe > antigen > ant > PlainTextGUIInputHandler


1 package uk.ac.roe.antigen.ant;
2
3 import java.awt.Dimension JavaDoc;
4 import java.awt.GridBagLayout JavaDoc;
5 import java.awt.GridBagConstraints JavaDoc;
6 import java.awt.LayoutManager JavaDoc;
7 import java.awt.Toolkit JavaDoc;
8
9 import java.awt.event.ActionListener JavaDoc;
10 import java.awt.event.ActionEvent JavaDoc;
11 import java.awt.event.KeyAdapter JavaDoc;
12 import java.awt.event.KeyEvent JavaDoc;
13 import java.util.Enumeration JavaDoc;
14 import java.util.Hashtable JavaDoc;
15
16 import javax.swing.JButton JavaDoc;
17 import javax.swing.JDialog JavaDoc;
18 import javax.swing.JTextField JavaDoc;
19 import javax.swing.JLabel JavaDoc;
20
21 import org.apache.tools.ant.BuildException;
22 import org.apache.tools.ant.Project;
23 import org.apache.tools.ant.ProjectComponent;
24 import org.apache.tools.ant.Target;
25 import org.apache.tools.ant.Task;
26 import org.apache.tools.ant.input.DefaultInputHandler;
27 import org.apache.tools.ant.input.InputRequest;
28 import org.apache.tools.ant.input.InputHandler;
29 import org.apache.tools.ant.input.MultipleChoiceInputRequest;
30
31
32 public class PlainTextGUIInputHandler
33    extends DefaultInputHandler {
34     /**
35      * The JDialog that contains the component in which the input
36      * is typed.
37      */

38     protected JDialog JavaDoc dlgInput;
39
40     /**
41      * The layout of the dialog.
42      */

43     protected LayoutManager JavaDoc layout;
44
45     /**
46      * The label of the input component.
47      */

48     protected JLabel JavaDoc lblInput;
49
50     /**
51      * The JComponent where the input is typed.
52      */

53     protected JTextField JavaDoc fldInput;
54
55     /**
56      * The JButton that will passed the input to the input request.
57      */

58     protected JButton JavaDoc btnSubmit;
59
60     /**
61      * Default no-arg constructor.
62      * Initializes the graphiacal components.
63      */

64     public PlainTextGUIInputHandler() {
65         dlgInput = new JDialog JavaDoc();
66         dlgInput.setModal(true);
67         layout = new GridBagLayout JavaDoc();
68         lblInput = new JLabel JavaDoc();
69         fldInput = new JTextField JavaDoc();
70         btnSubmit = new JButton JavaDoc();
71     }
72
73  
74     protected void addWidgets() {
75         dlgInput.getContentPane().setLayout(layout);
76
77         GridBagConstraints JavaDoc gbc = new GridBagConstraints JavaDoc();
78         gbc.gridx = 0;
79         gbc.gridy = 0;
80         gbc.anchor = GridBagConstraints.WEST;
81         gbc.insets.left = 5;
82         gbc.insets.right = 5;
83         gbc.insets.bottom = 5;
84         gbc.insets.top = 5;
85         dlgInput.getContentPane().add(lblInput, gbc);
86
87         gbc.gridx = 1;
88         gbc.insets.bottom = 0;
89         gbc.insets.top = 0;
90         gbc.fill = GridBagConstraints.HORIZONTAL;
91         dlgInput.getContentPane().add(fldInput, gbc);
92
93         gbc.gridx = 0;
94         gbc.gridy = 1;
95         gbc.gridwidth = 2;
96         gbc.fill = GridBagConstraints.NONE;
97         gbc.anchor = GridBagConstraints.CENTER;
98         gbc.insets.bottom = 5;
99         dlgInput.getContentPane().add(btnSubmit, gbc);
100     }
101
102     public void handleInput(InputRequest request) {
103         addWidgets();
104         setEventListeners(request);
105
106         
107         
108         
109         dlgInput.setTitle(getPrompt(request));
110         lblInput.setText(getPrompt(request));
111         fldInput.setPreferredSize(lblInput.getPreferredSize());
112         fldInput.setText(getDefault(request));
113         btnSubmit.setText("Submit");
114         
115         if (request instanceof MultipleChoiceInputRequest) {
116          btnSubmit.setText("Multiple choice");
117         }
118         
119         dlgInput.pack();
120         dlgInput.setLocation(getDialogLocation().width, getDialogLocation().height);
121         dlgInput.show();
122     }
123
124     /**
125      * @param request
126      * @return
127      */

128     private String JavaDoc getDefault(InputRequest request) {
129         return request.getDefault();
130     }
131
132
133     /**
134      * Sets AWT Listeners to the components which will recieve or
135      * submit the events.
136      *
137      * @param request the InputRequest object, where the contents
138      * of the input component will be set.
139      */

140     protected void setEventListeners(final InputRequest request) {
141         btnSubmit.addActionListener(
142             new ActionListener JavaDoc() {
143             public void actionPerformed(ActionEvent JavaDoc e) {
144                 request.setInput(fldInput.getText());
145                 dlgInput.dispose();
146             }
147         });
148
149         fldInput.addKeyListener(
150             new KeyAdapter JavaDoc() {
151             public void keyPressed(KeyEvent JavaDoc e) {
152                 if (e.getKeyCode() == KeyEvent.VK_ENTER) {
153                     request.setInput(fldInput.getText());
154                     dlgInput.dispose();
155                 }
156             }
157         });
158     }
159
160     /**
161      * Calculates the desired location of the dialog on the screen.
162      * By default it is in the center of the screen.
163      *
164      * @return the desired location of the dialog on the screen
165      */

166     protected Dimension JavaDoc getDialogLocation() {
167         Dimension JavaDoc screenDim = Toolkit.getDefaultToolkit().getScreenSize();
168         Dimension JavaDoc dlgInputDim = dlgInput.getSize();
169         int dlgInputX = (int)
170             ((screenDim.getWidth() - dlgInputDim.getWidth()) / 2);
171         int dlgInputY = (int)
172             ((screenDim.getHeight() - dlgInputDim.getHeight()) / 2);
173         return new Dimension JavaDoc(dlgInputX, dlgInputY);
174     }
175
176 }
177
Popular Tags