KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > uk > ac > roe > antigen > dialogs > TargetChoiceFrame


1 package uk.ac.roe.antigen.dialogs;
2
3 import java.awt.BorderLayout JavaDoc;
4 import java.awt.Color JavaDoc;
5 import java.awt.event.ActionEvent JavaDoc;
6 import java.awt.event.ActionListener JavaDoc;
7 import java.util.ArrayList JavaDoc;
8 import java.util.Hashtable JavaDoc;
9 import java.util.Iterator JavaDoc;
10 import java.util.List JavaDoc;
11 import java.util.Vector JavaDoc;
12
13 import javax.swing.BorderFactory JavaDoc;
14 import javax.swing.BoxLayout JavaDoc;
15 import javax.swing.ImageIcon JavaDoc;
16 import javax.swing.JButton JavaDoc;
17 import javax.swing.JCheckBox JavaDoc;
18 import javax.swing.JLabel JavaDoc;
19 import javax.swing.JPanel JavaDoc;
20 import javax.swing.JScrollPane JavaDoc;
21 import javax.swing.border.BevelBorder JavaDoc;
22 import javax.swing.border.TitledBorder JavaDoc;
23
24 import org.apache.tools.ant.Project;
25 import org.apache.tools.ant.Target;
26
27 import uk.ac.roe.antigen.builder.TargetChooser;
28 import uk.ac.roe.antigen.utils.Config;
29
30 public class TargetChoiceFrame extends AntigenFrame implements TargetChooser {
31     
32     private JLabel JavaDoc jLabel1;
33
34     private JPanel JavaDoc optionsPanel;
35
36     /**
37      * Auto-generated main method to display this JDialog
38      */

39     public static void main(String JavaDoc[] args) {
40         Config.load("/config.properties");
41         Config.setProperty(ANTIGEN_TARGETS,"foo,bar,not,eek");
42         Config.setProperty(ANTIGEN_TARGET_+"foo.selected","true");
43         Config.setProperty(ANTIGEN_TARGET_+"bar.selected","false");
44         Config.setProperty(ANTIGEN_TARGET_+"not.selected","true");
45         
46         Project project2 = new Project();
47         Target target = new Target();
48         target.setName("foo");
49         target.setDescription("Foos description");
50         project2.addTarget(target);
51       
52         target = new Target();
53         target.setName("bar");
54         project2.addTarget(target);
55         target = new Target();
56         target.setName("eek");
57         project2.addTarget(target);
58         
59         TargetChooser inst = new TargetChoiceFrame(project2);
60
61         List JavaDoc targets = inst.showAndWaitForResponse();
62         System.out.println("Selected tasks:");
63         Iterator JavaDoc it = targets.iterator();
64         while ( it.hasNext()) {
65             String JavaDoc taskName=(String JavaDoc) it.next();
66             System.out.println(taskName);
67         }
68     }
69
70
71     private Project project;
72
73     public TargetChoiceFrame(Project project) {
74         super();
75         this.project=project;
76         setUpTasks();
77         initGUI2();
78     }
79
80     /**
81      * Parse the list of targets and set up the checkboxes accordingly
82      */

83     private void setUpTasks() {
84         String JavaDoc targetString = Config.getProperty(ANTIGEN_TARGETS);
85         logger.fine("Found targets: "+targetString);
86         if (targetString==null) {
87                 return;
88         }
89         Hashtable JavaDoc projectTargets = project.getTargets();
90         String JavaDoc[] targets = targetString.split(",");
91         logger.fine("Split into "+targets.length);
92         for (int i = 0; i<targets.length;++i) {
93            String JavaDoc targetName = targets[i];
94            Target target = (Target) projectTargets.get(targetName);
95            if (target!=null) {
96             String JavaDoc description = target.getDescription();
97             String JavaDoc selectedOpt = Config.getProperty(ANTIGEN_TARGET_+targetName+".selected");
98             boolean selected = true;
99             if ("false".equals(selectedOpt)) {
100               selected = false;
101             }
102             taskDescs.add(new TaskDescription(targetName, description, selected));
103             logger.fine("Target "+ targetName +" found ("+description+"). Is selected initially? "+selected);
104            } else {
105             logger.fine("Target "+targetName+" not found in project, skipping");
106            }
107         }
108         
109     }
110
111     private void initGUI2() {
112         try {
113
114             workPanel.setLayout(new BorderLayout JavaDoc());
115             workPanel.setBackground(Color.white);
116             String JavaDoc borderTitle = Config.getProperty(
117                     "antigen.dialog.bordertitle", "antigen");
118             workPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory
119                     .createEtchedBorder(BevelBorder.RAISED, null, null),
120                     borderTitle, TitledBorder.LEADING, TitledBorder.TOP,
121                     new java.awt.Font JavaDoc("Eurostile", 0, 12), new java.awt.Color JavaDoc(
122                             0, 0, 255)));
123
124             jLabel1 = new JLabel JavaDoc();
125             jLabel1.setText("Please select the tasks you wish to execute:");
126             workPanel.add(jLabel1, BorderLayout.NORTH);
127
128             optionsPanel = new JPanel JavaDoc();
129             JScrollPane JavaDoc scroller = new JScrollPane JavaDoc();
130             scroller.setAutoscrolls(true);
131             scroller.setOpaque(false);
132             scroller.setViewportView(optionsPanel);
133             workPanel.add(scroller, BorderLayout.CENTER);
134
135             optionsPanel.setOpaque(false);
136             optionsPanel
137                     .setLayout(new BoxLayout JavaDoc(optionsPanel, BoxLayout.Y_AXIS));
138             Iterator JavaDoc it = taskDescs.iterator();
139             while (it.hasNext()) {
140                 TaskDescription description = (TaskDescription) it.next();
141                 JCheckBox JavaDoc checkBox = description.getCheckBox();
142                 checkBox.setOpaque(false);
143                 optionsPanel.add(checkBox);
144
145             }
146             {
147                 JPanel JavaDoc buttons2 = new JPanel JavaDoc();
148                 southPanel.add(buttons2,BorderLayout.SOUTH);
149                 buttons2.setOpaque(false);
150                 {
151                     JButton JavaDoc jButton1 = new JButton JavaDoc();
152                     buttons2.add(jButton1);
153                     jButton1.setText("Next");
154                     jButton1.setIcon(new ImageIcon JavaDoc(getClass().getClassLoader()
155                             .getResource("img/rightarrow.png")));
156                     jButton1.addActionListener(new ActionListener JavaDoc() {
157                         public void actionPerformed(ActionEvent JavaDoc evt) {
158                             OKpressed = true;
159                         }
160                     });
161                 }
162             }
163         } catch (Exception JavaDoc e) {
164             e.printStackTrace();
165         }
166     }
167
168     private List JavaDoc taskDescs = new ArrayList JavaDoc();
169     private class TaskDescription {
170         private String JavaDoc name;
171
172         private String JavaDoc description;
173
174         private JCheckBox JavaDoc checkBox;
175
176         public TaskDescription(String JavaDoc name, String JavaDoc description, boolean defaultEnabled) {
177             this.name = name;
178             this.description = description;
179             assert name !=null;
180             String JavaDoc label = description !=null ? description : name ;
181             this.checkBox = new JCheckBox JavaDoc(label,defaultEnabled);
182         }
183         /**
184          * @return Returns the checkBox.
185          */

186         public JCheckBox JavaDoc getCheckBox() {
187             return checkBox;
188         }
189         /**
190          * @return Returns the description.
191          */

192         public String JavaDoc getDescription() {
193             return description;
194         }
195         /**
196          * @return Returns the name.
197          */

198         public String JavaDoc getName() {
199             return name;
200         }
201     }
202
203     boolean OKpressed = false;
204
205     /**
206      * Display the dialog and return an array of the selected options
207      *
208      * @return
209      */

210     public Vector JavaDoc showAndWaitForResponse() {
211         show();
212         while (!OKpressed) {
213             try {
214                 Thread.sleep(200);
215             } catch (InterruptedException JavaDoc ie) {
216             }
217         }
218         dispose();
219         Vector JavaDoc theChosen = new Vector JavaDoc();
220         Iterator JavaDoc it = taskDescs.iterator();
221         while (it.hasNext()) {
222          TaskDescription description = (TaskDescription) it.next();
223          JCheckBox JavaDoc box = description.getCheckBox();
224          if (box.isSelected()) {
225           theChosen.add(description.getName());
226          }
227         }
228         return theChosen;
229     }
230
231     /*
232      * (non-Javadoc)
233      *
234      * @see uk.ac.roe.antigen.dialogs.AntigenFrame#shutDown()
235      */

236     public void shutDown() {
237         logger.info("TargetChoiceFrame closing");
238
239     }
240
241 }
Popular Tags