]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/ModuleEditor/src/org/tianocore/packaging/module/ui/ModuleIncludes.java
Initial import.
[mirror_edk2.git] / Tools / Source / ModuleEditor / src / org / tianocore / packaging / module / ui / ModuleIncludes.java
CommitLineData
878ddf1f 1/** @file\r
2 \r
3 The file is used to create, update Include of MSA/MBD file\r
4 \r
5 Copyright (c) 2006, Intel Corporation\r
6 All rights reserved. This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10 \r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13 \r
14 **/\r
15package org.tianocore.packaging.module.ui;\r
16\r
17import java.awt.event.ActionEvent;\r
18import java.awt.event.ItemEvent;\r
19import java.awt.event.ItemListener;\r
20import java.util.Vector;\r
21\r
22import javax.swing.JButton;\r
23import javax.swing.JCheckBox;\r
24import javax.swing.JComboBox;\r
25import javax.swing.JLabel;\r
26import javax.swing.JPanel;\r
27import javax.swing.JTextField;\r
28\r
29import org.tianocore.IncludesDocument;\r
30import org.tianocore.PackageNameDocument;\r
31import org.tianocore.PackageType;\r
32import org.tianocore.PackageUsage;\r
33import org.tianocore.SupportedArchitectures;\r
34import org.tianocore.common.DataValidation;\r
35import org.tianocore.common.Log;\r
36import org.tianocore.packaging.common.ui.IDefaultMutableTreeNode;\r
37import org.tianocore.packaging.common.ui.IInternalFrame;\r
38import org.tianocore.packaging.common.ui.StarLabel;\r
39\r
40/**\r
41 The class is used to create, update Include of MSA/MBD file\r
42 It extends IInternalFrame\r
43 \r
44 @since ModuleEditor 1.0\r
45\r
46 **/\r
47public class ModuleIncludes extends IInternalFrame implements ItemListener {\r
48\r
49 ///\r
50 /// Define class Serial Version UID\r
51 ///\r
52 private static final long serialVersionUID = 3465193035145152131L;\r
53\r
54 //\r
55 //Define class members\r
56 //\r
57 private IncludesDocument.Includes includes = null;\r
58\r
59 private int location = -1;\r
60 \r
61 private int intSelectedItemId = 0;\r
62\r
63 //\r
64 // 1 - Add; 2 - Update\r
65 //\r
66 private int operation = -1;\r
67\r
68 private Vector<String> vPackageName = new Vector<String>();\r
69\r
70 private Vector<String> vUsage = new Vector<String>();\r
71\r
72 private Vector<String> vPackageType = new Vector<String>();\r
73\r
74 private Vector<String> vUpdatedDate = new Vector<String>();\r
75\r
76 private JPanel jContentPane = null;\r
77\r
78 private JButton jButtonOk = null;\r
79\r
80 private JButton jButtonCancel = null;\r
81\r
82 private JLabel jLabelPackageName = null;\r
83\r
84 private JLabel jLabelPackageType = null;\r
85\r
86 private JComboBox jComboBoxPackageType = null;\r
87\r
88 private JLabel jLabelUsage = null;\r
89\r
90 private JComboBox jComboBoxUsage = null;\r
91\r
92 private StarLabel jStarLabel1 = null;\r
93\r
94 private JTextField jTextFieldPackageName = null;\r
95\r
96 private JComboBox jComboBoxFileList = null;\r
97\r
98 private JButton jButtonAdd = null;\r
99\r
100 private JButton jButtonUpdate = null;\r
101\r
102 private JButton jButtonRemove = null;\r
103\r
104 private JLabel jLabelUpdatedDate = null;\r
105\r
106 private JTextField jTextFieldUpdatedDate = null;\r
107\r
108 private JCheckBox jCheckBoxArch = null;\r
109\r
110 private JComboBox jComboBoxArch = null;\r
111\r
112 /**\r
113 This method initializes jButtonOk \r
114 \r
115 @return javax.swing.JButton jButtonOk\r
116 \r
117 **/\r
118 private JButton getJButton() {\r
119 if (jButtonOk == null) {\r
120 jButtonOk = new JButton();\r
121 jButtonOk.setText("OK");\r
122 jButtonOk.setBounds(new java.awt.Rectangle(290, 165, 90, 20));\r
123 jButtonOk.addActionListener(this);\r
124\r
125 }\r
126 return jButtonOk;\r
127 }\r
128\r
129 /**\r
130 This method initializes jButtonCancel \r
131 \r
132 @return javax.swing.JButton jButtonCancel\r
133 \r
134 **/\r
135 private JButton getJButton1() {\r
136 if (jButtonCancel == null) {\r
137 jButtonCancel = new JButton();\r
138 jButtonCancel.setText("Cancel");\r
139 jButtonCancel.setBounds(new java.awt.Rectangle(390, 165, 90, 20));\r
140 jButtonCancel.addActionListener(this);\r
141 }\r
142 return jButtonCancel;\r
143 }\r
144\r
145 /**\r
146 This method initializes jComboBoxPackageType \r
147 \r
148 @return javax.swing.JComboBox jComboBoxPackageType\r
149 \r
150 **/\r
151 private JComboBox getJComboBoxPackageType() {\r
152 if (jComboBoxPackageType == null) {\r
153 jComboBoxPackageType = new JComboBox();\r
154 jComboBoxPackageType.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
155 }\r
156 return jComboBoxPackageType;\r
157 }\r
158\r
159 /**\r
160 This method initializes jComboBoxUsage \r
161 \r
162 @return javax.swing.JComboBox jComboBoxUsage\r
163 \r
164 **/\r
165 private JComboBox getJComboBoxUsage() {\r
166 if (jComboBoxUsage == null) {\r
167 jComboBoxUsage = new JComboBox();\r
168 jComboBoxUsage.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
169 }\r
170 return jComboBoxUsage;\r
171 }\r
172\r
173 /**\r
174 This method initializes jTextFieldPackageName \r
175 \r
176 @return javax.swing.JTextField jTextFieldPackageName\r
177 \r
178 **/\r
179 private JTextField getJTextFieldPackageName() {\r
180 if (jTextFieldPackageName == null) {\r
181 jTextFieldPackageName = new JTextField();\r
182 jTextFieldPackageName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
183 }\r
184 return jTextFieldPackageName;\r
185 }\r
186\r
187 /**\r
188 This method initializes jComboBoxFileList \r
189 \r
190 @return javax.swing.JComboBox jComboBoxFileList\r
191 \r
192 **/\r
193 private JComboBox getJComboBoxFileList() {\r
194 if (jComboBoxFileList == null) {\r
195 jComboBoxFileList = new JComboBox();\r
196 jComboBoxFileList.setBounds(new java.awt.Rectangle(15, 110, 210, 20));\r
197 jComboBoxFileList.addActionListener(this);\r
198 jComboBoxFileList.addItemListener(this);\r
199 }\r
200 return jComboBoxFileList;\r
201 }\r
202\r
203 /**\r
204 This method initializes jButtonAdd \r
205 \r
206 @return javax.swing.JButton jButtonAdd\r
207 \r
208 **/\r
209 private JButton getJButtonAdd() {\r
210 if (jButtonAdd == null) {\r
211 jButtonAdd = new JButton();\r
212 jButtonAdd.setBounds(new java.awt.Rectangle(230, 110, 80, 20));\r
213 jButtonAdd.setText("Add");\r
214 jButtonAdd.addActionListener(this);\r
215 }\r
216 return jButtonAdd;\r
217 }\r
218\r
219 /**\r
220 This method initializes jButtonUpdate \r
221 \r
222 @return javax.swing.JButton jButtonUpdate\r
223 \r
224 **/\r
225 private JButton getJButtonUpdate() {\r
226 if (jButtonUpdate == null) {\r
227 jButtonUpdate = new JButton();\r
228 jButtonUpdate.setBounds(new java.awt.Rectangle(315, 110, 80, 20));\r
229 jButtonUpdate.setText("Update");\r
230 jButtonUpdate.addActionListener(this);\r
231 }\r
232 return jButtonUpdate;\r
233 }\r
234\r
235 /**\r
236 This method initializes jButtonRemove \r
237 \r
238 @return javax.swing.JButton jButtonRemove\r
239 \r
240 **/\r
241 private JButton getJButtonRemove() {\r
242 if (jButtonRemove == null) {\r
243 jButtonRemove = new JButton();\r
244 jButtonRemove.setBounds(new java.awt.Rectangle(400, 110, 80, 20));\r
245 jButtonRemove.setText("Remove");\r
246 jButtonRemove.addActionListener(this);\r
247 }\r
248 return jButtonRemove;\r
249 }\r
250\r
251 /**\r
252 This method initializes jTextFieldUpdatedDate \r
253 \r
254 @return javax.swing.JTextField jTextFieldUpdatedDate\r
255 \r
256 **/\r
257 private JTextField getJTextFieldUpdatedDate() {\r
258 if (jTextFieldUpdatedDate == null) {\r
259 jTextFieldUpdatedDate = new JTextField();\r
260 jTextFieldUpdatedDate.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
261 }\r
262 return jTextFieldUpdatedDate;\r
263 }\r
264\r
265 /**\r
266 This method initializes jCheckBoxArch \r
267 \r
268 @return javax.swing.JCheckBox jCheckBoxArch\r
269 \r
270 **/\r
271 private JCheckBox getJCheckBoxArch() {\r
272 if (jCheckBoxArch == null) {\r
273 jCheckBoxArch = new JCheckBox();\r
274 jCheckBoxArch.setBounds(new java.awt.Rectangle(10, 135, 120, 20));\r
275 jCheckBoxArch.setText("Specific Arch");\r
276 jCheckBoxArch.addActionListener(this);\r
277 }\r
278 return jCheckBoxArch;\r
279 }\r
280\r
281 /**\r
282 This method initializes jComboBoxArch \r
283 \r
284 @return javax.swing.JComboBox jComboBoxArch\r
285 \r
286 **/\r
287 private JComboBox getJComboBoxArch() {\r
288 if (jComboBoxArch == null) {\r
289 jComboBoxArch = new JComboBox();\r
290 jComboBoxArch.setBounds(new java.awt.Rectangle(140, 135, 340, 20));\r
291 jComboBoxArch.setEnabled(false);\r
292 }\r
293 return jComboBoxArch;\r
294 }\r
295\r
296 public static void main(String[] args) {\r
297\r
298 }\r
299\r
300 /**\r
301 This is the default constructor\r
302 \r
303 **/\r
304 public ModuleIncludes() {\r
305 super();\r
306 init();\r
307 this.setVisible(true);\r
308 }\r
309\r
310 /**\r
311 This is the override edit constructor\r
312 \r
313 @param inIncludes The input data of IncludesDocument.Includes\r
314 \r
315 **/\r
316 public ModuleIncludes(IncludesDocument.Includes inIncludes) {\r
317 super();\r
318 init(inIncludes);\r
319 this.setVisible(true);\r
320 }\r
321\r
322 /**\r
323 This is the override edit constructor\r
324 \r
325 @param inIncludes The input data of IncludesDocument.Includes\r
326 @param type The input data of node type\r
327 @param index The input data of node index\r
328 \r
329 **/\r
330 public ModuleIncludes(IncludesDocument.Includes inIncludes, int type, int index) {\r
331 super();\r
332 this.setVisible(true);\r
333 }\r
334\r
335 /**\r
336 This is the override edit constructor\r
337 \r
338 @param inIncludes The input data of IncludesDocument.Includes\r
339 @param type The input data of node type\r
340 @param index The input data of node index\r
341 @param inOperation The input data of current operation type\r
342 \r
343 **/\r
344 public ModuleIncludes(IncludesDocument.Includes inIncludes, int type, int index, int inOperation) {\r
345 super();\r
346 init(inIncludes, type, index, inOperation);\r
347 this.operation = inOperation;\r
348 this.setVisible(true);\r
349 }\r
350\r
351 /**\r
352 This method initializes this\r
353 \r
354 @param inIncludes\r
355 \r
356 **/\r
357 private void init(IncludesDocument.Includes inIncludes) {\r
358 init();\r
359 this.setIncludes(inIncludes);\r
360 }\r
361\r
362 /**\r
363 This method initializes this\r
364 Fill values to all fields if these values are not empty\r
365 \r
366 @param inIncludes The input data of IncludesDocument.Includes\r
367 @param type The input data of node type\r
368 @param index The input data of node index\r
369 @param inOperation The input data of current operation type\r
370 \r
371 **/\r
372 private void init(IncludesDocument.Includes inIncludes, int type, int index, int inOperation) {\r
373 init(inIncludes);\r
374 this.location = index;\r
375 this.operation = inOperation;\r
376\r
377 if (operation == 2) {\r
378 this.jCheckBoxArch.setEnabled(false);\r
379 this.jComboBoxArch.setEnabled(false);\r
380\r
381 if (type == IDefaultMutableTreeNode.INCLUDES_PACKAGENAME) {\r
382 if (this.includes.getPackageNameList().size() > 0) {\r
383 for (int indexI = 0; indexI < this.includes.getPackageNameList().size(); indexI++) {\r
384 if (this.includes.getPackageNameArray(indexI).getStringValue() != null) {\r
385 vPackageName.addElement(this.includes.getPackageNameArray(indexI).getStringValue());\r
386 } else {\r
387 vPackageName.addElement("");\r
388 }\r
389 if (this.includes.getPackageNameArray(indexI).getUsage() != null) {\r
390 vUsage.addElement(this.includes.getPackageNameArray(indexI).getUsage().toString());\r
391 } else {\r
392 vUsage.addElement("ALWAYS_CONSUMED");\r
393 }\r
394 if (this.includes.getPackageNameArray(indexI).getPackageType() != null) {\r
395 vPackageType.addElement(this.includes.getPackageNameArray(indexI).getPackageType()\r
396 .toString());\r
397 } else {\r
398 vPackageType.addElement("SOURCE");\r
399 }\r
400 if (this.includes.getPackageNameArray(indexI).getUpdatedDate() != null) {\r
401 vUpdatedDate.addElement(this.includes.getPackageNameArray(indexI).getUpdatedDate());\r
402 } else {\r
403 vUpdatedDate.addElement("");\r
404 }\r
405 jComboBoxFileList.addItem(this.includes.getPackageNameArray(indexI).getStringValue());\r
406 }\r
407 }\r
408 }\r
409 if (type == IDefaultMutableTreeNode.INCLUDES_ARCH_ITEM) {\r
410 this.jCheckBoxArch.setSelected(true);\r
411 this.jComboBoxArch.setSelectedItem(this.includes.getArchArray(index).getArchType().toString());\r
412 for (int indexI = 0; indexI < this.includes.getArchArray(index).getPackageNameList().size(); indexI++) {\r
413 if (this.includes.getArchArray(index).getPackageNameArray(indexI).getStringValue() != null) {\r
414 vPackageName.addElement(this.includes.getArchArray(index).getPackageNameArray(indexI)\r
415 .getStringValue());\r
416 } else {\r
417 vPackageName.addElement("");\r
418 }\r
419 if (this.includes.getArchArray(index).getPackageNameArray(indexI).getUsage() != null) {\r
420 vUsage.addElement(this.includes.getArchArray(index).getPackageNameArray(indexI).getUsage()\r
421 .toString());\r
422 } else {\r
423 vUsage.addElement("");\r
424 }\r
425 if (this.includes.getArchArray(index).getPackageNameArray(indexI).getPackageType() != null) {\r
426 vPackageType.addElement(this.includes.getArchArray(index).getPackageNameArray(indexI)\r
427 .getPackageType().toString());\r
428 } else {\r
429 vPackageType.addElement("");\r
430 }\r
431 if (this.includes.getArchArray(index).getPackageNameArray(indexI).getUpdatedDate() != null) {\r
432 vUpdatedDate.addElement(this.includes.getArchArray(index).getPackageNameArray(indexI)\r
433 .getUpdatedDate());\r
434 } else {\r
435 vUpdatedDate.addElement("");\r
436 }\r
437 jComboBoxFileList.addItem(this.includes.getArchArray(index).getPackageNameArray(indexI)\r
438 .getStringValue());\r
439 }\r
440 }\r
441 }\r
442 }\r
443\r
444 /**\r
445 This method initializes this\r
446 \r
447 **/\r
448 private void init() {\r
449 this.setSize(500, 515);\r
450 this.setContentPane(getJContentPane());\r
451 this.setTitle("Includes");\r
452 initFrame();\r
453 this.setViewMode(false);\r
454 }\r
455\r
456 /**\r
457 Disable all components when the mode is view\r
458 \r
459 @param isView true - The view mode; false - The non-view mode\r
460 \r
461 **/\r
462 public void setViewMode(boolean isView) {\r
463 this.jButtonOk.setVisible(false);\r
464 this.jButtonCancel.setVisible(false);\r
465 if (isView) {\r
466 this.jComboBoxPackageType.setEnabled(!isView);\r
467 this.jComboBoxUsage.setEnabled(!isView);\r
468 this.jTextFieldPackageName.setEnabled(!isView);\r
469 this.jButtonAdd.setEnabled(!isView);\r
470 this.jButtonUpdate.setEnabled(!isView);\r
471 this.jButtonRemove.setEnabled(!isView);\r
472 this.jTextFieldUpdatedDate.setEnabled(!isView);\r
473 this.jCheckBoxArch.setEnabled(!isView);\r
474 this.jComboBoxArch.setEnabled(!isView);\r
475\r
476 this.jButtonCancel.setEnabled(!isView);\r
477 this.jButtonOk.setEnabled(!isView);\r
478 }\r
479 }\r
480\r
481 /**\r
482 This method initializes jContentPane\r
483 \r
484 @return javax.swing.JPanel jContentPane\r
485 \r
486 **/\r
487 private JPanel getJContentPane() {\r
488 if (jContentPane == null) {\r
489 jLabelUpdatedDate = new JLabel();\r
490 jLabelUpdatedDate.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
491 jLabelUpdatedDate.setText("Updated Date");\r
492 jLabelUsage = new JLabel();\r
493 jLabelUsage.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
494 jLabelUsage.setText("Usage");\r
495 jLabelPackageType = new JLabel();\r
496 jLabelPackageType.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
497 jLabelPackageType.setText("Package Type");\r
498 jLabelPackageName = new JLabel();\r
499 jLabelPackageName.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
500 jLabelPackageName.setText("Package Name");\r
501 jContentPane = new JPanel();\r
502 jContentPane.setLayout(null);\r
503 jContentPane.add(getJButton(), null);\r
504 jContentPane.add(getJButton1(), null);\r
505 jContentPane.add(jLabelPackageName, null);\r
506 jContentPane.add(jLabelPackageType, null);\r
507 jContentPane.add(getJComboBoxPackageType(), null);\r
508 jContentPane.add(jLabelUsage, null);\r
509 jContentPane.add(getJComboBoxUsage(), null);\r
510\r
511 jStarLabel1 = new StarLabel();\r
512 jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
513\r
514 jContentPane.add(jStarLabel1, null);\r
515 jContentPane.add(getJTextFieldPackageName(), null);\r
516 jContentPane.add(getJComboBoxFileList(), null);\r
517 jContentPane.add(getJButtonAdd(), null);\r
518 jContentPane.add(getJButtonUpdate(), null);\r
519 jContentPane.add(getJButtonRemove(), null);\r
520 jContentPane.add(jLabelUpdatedDate, null);\r
521 jContentPane.add(getJTextFieldUpdatedDate(), null);\r
522 jContentPane.add(getJCheckBoxArch(), null);\r
523 jContentPane.add(getJComboBoxArch(), null);\r
524 }\r
525 return jContentPane;\r
526 }\r
527\r
528 /* (non-Javadoc)\r
529 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
530 *\r
531 * Override actionPerformed to listen all actions\r
532 * \r
533 */\r
534 public void actionPerformed(ActionEvent arg0) {\r
535 if (arg0.getSource() == jButtonOk) {\r
536 this.setEdited(true);\r
537 this.save();\r
538 this.dispose();\r
539 }\r
540 if (arg0.getSource() == jButtonCancel) {\r
541 this.dispose();\r
542 }\r
543 if (arg0.getSource() == jButtonAdd) {\r
544 if (!checkAdd()) {\r
545 return;\r
546 }\r
547 addToList();\r
548 }\r
549 if (arg0.getSource() == jButtonRemove) {\r
550 removeFromList();\r
551 }\r
552 if (arg0.getSource() == jButtonUpdate) {\r
553 if (!checkAdd()) {\r
554 return;\r
555 }\r
556 updateForList();\r
557 }\r
558\r
559 //\r
560 //When and only when checked Arch box then can choose different arch types\r
561 //\r
562 if (arg0.getSource() == jCheckBoxArch) {\r
563 if (this.jCheckBoxArch.isSelected()) {\r
564 this.jComboBoxArch.setEnabled(true);\r
565 } else {\r
566 this.jComboBoxArch.setEnabled(false);\r
567 }\r
568 }\r
569 }\r
570\r
571 /**\r
572 This method initializes Usage type, Package type and Arch type\r
573 \r
574 **/\r
575 private void initFrame() {\r
576 jComboBoxUsage.addItem("ALWAYS_CONSUMED");\r
577 jComboBoxUsage.addItem("ALWAYS_PRODUCED");\r
578 jComboBoxUsage.addItem("DEFAULT");\r
579\r
580 jComboBoxPackageType.addItem("SOURCE");\r
581 jComboBoxPackageType.addItem("BINARY");\r
582 jComboBoxPackageType.addItem("MIXED");\r
583\r
584 jComboBoxArch.addItem("ALL");\r
585 jComboBoxArch.addItem("EBC");\r
586 jComboBoxArch.addItem("ARM");\r
587 jComboBoxArch.addItem("IA32");\r
588 jComboBoxArch.addItem("X64");\r
589 jComboBoxArch.addItem("IPF");\r
590 jComboBoxArch.addItem("PPC");\r
591 }\r
592\r
593 /**\r
594 Add current item to Vector\r
595 \r
596 **/\r
597 private void addToList() {\r
598 intSelectedItemId = vPackageName.size();\r
599 vPackageName.addElement(this.jTextFieldPackageName.getText());\r
600 vUsage.addElement(this.jComboBoxUsage.getSelectedItem().toString());\r
601 vPackageType.addElement(this.jComboBoxPackageType.getSelectedItem().toString());\r
602 vUpdatedDate.addElement(this.jTextFieldUpdatedDate.getText());\r
603 jComboBoxFileList.addItem(this.jTextFieldPackageName.getText());\r
604 jComboBoxFileList.setSelectedItem(this.jTextFieldPackageName.getText());\r
605 \r
606 //\r
607 // Reset select item index\r
608 //\r
609 intSelectedItemId = vPackageName.size();\r
610 \r
611 //\r
612 // Reload all fields of selected item\r
613 //\r
614 reloadFromList();\r
615 }\r
616\r
617 /**\r
618 Remove item from Vector\r
619 \r
620 **/\r
621 private void removeFromList() {\r
622 int intTempIndex = intSelectedItemId;\r
623 if (vPackageName.size() < 1) {\r
624 return;\r
625 }\r
626 \r
627 jComboBoxFileList.removeItemAt(intSelectedItemId);\r
628 \r
629 vPackageName.removeElementAt(intTempIndex);\r
630 vUsage.removeElementAt(intTempIndex);\r
631 vPackageType.removeElementAt(intTempIndex);\r
632 vUpdatedDate.removeElementAt(intTempIndex);\r
633 \r
634 //\r
635 // Reload all fields of selected item\r
636 //\r
637 reloadFromList();\r
638 }\r
639\r
640 /**\r
641 Update current item of Vector\r
642 \r
643 **/\r
644 private void updateForList() {\r
645 //\r
646 // Backup selected item index\r
647 //\r
648 int intTempIndex = intSelectedItemId;\r
649 \r
650 vPackageName.setElementAt(this.jTextFieldPackageName.getText(), intSelectedItemId);\r
651 vUsage.setElementAt(this.jComboBoxUsage.getSelectedItem().toString(), intSelectedItemId);\r
652 vPackageType.setElementAt(this.jComboBoxPackageType.getSelectedItem().toString(), intSelectedItemId);\r
653 vUpdatedDate.setElementAt(this.jTextFieldUpdatedDate.getText(), intSelectedItemId);\r
654 \r
655 jComboBoxFileList.removeAllItems();\r
656 for (int index = 0; index < vPackageName.size(); index++) {\r
657 jComboBoxFileList.addItem(vPackageName.elementAt(index));\r
658 }\r
659 \r
660 //\r
661 // Restore selected item index\r
662 //\r
663 intSelectedItemId = intTempIndex;\r
664 \r
665 //\r
666 // Reset select item index\r
667 //\r
668 jComboBoxFileList.setSelectedIndex(intSelectedItemId);\r
669 \r
670 //\r
671 // Reload all fields of selected item\r
672 //\r
673 reloadFromList();\r
674 }\r
675\r
676 /**\r
677 Refresh all fields' values of selected item of Vector\r
678 \r
679 **/\r
680 private void reloadFromList() {\r
681 if (vPackageName.size() > 0) {\r
682 //\r
683 // Get selected item index\r
684 //\r
685 intSelectedItemId = jComboBoxFileList.getSelectedIndex();\r
686 \r
687 this.jTextFieldPackageName.setText(vPackageName.elementAt(intSelectedItemId).toString());\r
688 this.jComboBoxUsage.setSelectedItem(vUsage.elementAt(intSelectedItemId).toString());\r
689 this.jComboBoxPackageType.setSelectedItem(vPackageType.elementAt(intSelectedItemId).toString());\r
690 this.jTextFieldUpdatedDate.setText(vUpdatedDate.elementAt(intSelectedItemId).toString());\r
691 } else {\r
692 this.jTextFieldPackageName.setText("");\r
693 this.jComboBoxUsage.setSelectedItem("");\r
694 this.jComboBoxPackageType.setSelectedItem("");\r
695 this.jTextFieldUpdatedDate.setText("");\r
696 }\r
697 }\r
698\r
699 /**\r
700 Get IncludesDocument.Includes\r
701 \r
702 @return IncludesDocument.Includes\r
703 \r
704 **/\r
705 public IncludesDocument.Includes getIncludes() {\r
706 return includes;\r
707 }\r
708\r
709 /**\r
710 Set IncludesDocument.Includes\r
711 \r
712 @param includes IncludesDocument.Includes\r
713 \r
714 **/\r
715 public void setIncludes(IncludesDocument.Includes includes) {\r
716 this.includes = includes;\r
717 }\r
718\r
719 /* (non-Javadoc)\r
720 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)\r
721 *\r
722 * Reflesh the frame when selected item changed\r
723 * \r
724 */\r
725 public void itemStateChanged(ItemEvent arg0) {\r
726 if (arg0.getStateChange() == ItemEvent.SELECTED) {\r
727 reloadFromList();\r
728 }\r
729 }\r
730\r
731 /**\r
732 Data validation for all fields\r
733 \r
734 @retval true - All datas are valid\r
735 @retval false - At least one data is invalid\r
736 \r
737 **/\r
738 public boolean check() {\r
739 if (this.jComboBoxFileList.getItemCount() < 1) {\r
740 Log.err("Must have one include at least!");\r
741 return false;\r
742 }\r
743 return true;\r
744 }\r
745\r
746 /**\r
747 Data validation for all fields before add current item to Vector\r
748 \r
749 @retval true - All datas are valid\r
750 @retval false - At least one data is invalid\r
751 \r
752 **/\r
753 public boolean checkAdd() {\r
754 //\r
755 // Check if all required fields are not empty\r
756 //\r
757 if (isEmpty(this.jTextFieldPackageName.getText())) {\r
758 Log.err("File Name couldn't be empty");\r
759 return false;\r
760 }\r
761\r
762 //\r
763 // Check if all fields have correct data types \r
764 //\r
765 if (!DataValidation.isPackageName(this.jTextFieldPackageName.getText())) {\r
766 Log.err("Incorrect data type for Package Name");\r
767 return false;\r
768 }\r
769 if (!isEmpty(this.jTextFieldUpdatedDate.getText())\r
770 && !DataValidation.isDateType(this.jTextFieldUpdatedDate.getText())) {\r
771 Log.err("Incorrect data type for Update Date");\r
772 return false;\r
773 }\r
774\r
775 return true;\r
776 }\r
777\r
778 /**\r
779 Save all components of Includes\r
780 if exists includes, set the value directly\r
781 if not exists includes, new an instance first\r
782 \r
783 **/\r
784 public void save() {\r
785 try {\r
786 if (this.includes == null) {\r
787 includes = IncludesDocument.Includes.Factory.newInstance();\r
788 }\r
789 //\r
790 //Save as file name\r
791 //\r
792 if (!this.jCheckBoxArch.isSelected()) {\r
793 if (this.operation == 2) { //Add new packageName\r
794 //\r
795 //First remove all existed packageName\r
796 //\r
797 if (includes.getPackageNameList().size() > 0) {\r
798 for (int index = includes.getPackageNameList().size() - 1; index >= 0; index--) {\r
799 includes.removePackageName(index);\r
800 }\r
801 }\r
802 }\r
803 for (int index = 0; index < vPackageName.size(); index++) {\r
804 PackageNameDocument.PackageName packageName = PackageNameDocument.PackageName.Factory.newInstance();\r
805 if (!isEmpty(vPackageName.elementAt(index).toString())) {\r
806 packageName.setStringValue(vPackageName.elementAt(index).toString());\r
807 }\r
808 if (!isEmpty(vUsage.elementAt(index).toString())) {\r
809 packageName.setUsage(PackageUsage.Enum.forString(vUsage.elementAt(index).toString()));\r
810 }\r
811 if (!isEmpty(vPackageType.elementAt(index).toString())) {\r
812 packageName\r
813 .setPackageType(PackageType.Enum.forString(vPackageType.elementAt(index).toString()));\r
814 }\r
815 if (!isEmpty(vUpdatedDate.elementAt(index).toString())) {\r
816 packageName.setUpdatedDate(vUpdatedDate.elementAt(index).toString());\r
817 }\r
818 includes.addNewPackageName();\r
819 includes.setPackageNameArray(includes.getPackageNameList().size() - 1, packageName);\r
820 }\r
821 }\r
822 //\r
823 //Save as Arch\r
824 //\r
825 if (this.jCheckBoxArch.isSelected()) {\r
826 IncludesDocument.Includes.Arch arch = IncludesDocument.Includes.Arch.Factory.newInstance();\r
827 if (this.operation == 2) {\r
828 //\r
829 //First remove all existed filename\r
830 //\r
831 for (int index = includes.getArchArray(location).getPackageNameList().size() - 1; index >= 0; index--) {\r
832 includes.getArchArray(location).removePackageName(index);\r
833 }\r
834 }\r
835\r
836 for (int index = 0; index < vPackageName.size(); index++) {\r
837 PackageNameDocument.PackageName packageName = PackageNameDocument.PackageName.Factory.newInstance();\r
838 if (!isEmpty(vPackageName.elementAt(index).toString())) {\r
839 packageName.setStringValue(vPackageName.elementAt(index).toString());\r
840 }\r
841 if (!isEmpty(vUsage.elementAt(index).toString())) {\r
842 packageName.setUsage(PackageUsage.Enum.forString(vUsage.elementAt(index).toString()));\r
843 }\r
844 if (!isEmpty(vPackageType.elementAt(index).toString())) {\r
845 packageName\r
846 .setPackageType(PackageType.Enum.forString(vPackageType.elementAt(index).toString()));\r
847 }\r
848 if (!isEmpty(vUpdatedDate.elementAt(index).toString())) {\r
849 packageName.setUpdatedDate(vUpdatedDate.elementAt(index).toString());\r
850 }\r
851 arch.addNewPackageName();\r
852 arch.setPackageNameArray(arch.getPackageNameList().size() - 1, packageName);\r
853 }\r
854 arch\r
855 .setArchType(SupportedArchitectures.Enum.forString(this.jComboBoxArch.getSelectedItem().toString()));\r
856 if (location > -1) {\r
857 includes.setArchArray(location, arch);\r
858 } else {\r
859 includes.addNewArch();\r
860 includes.setArchArray(includes.getArchList().size() - 1, arch);\r
861 }\r
862 }\r
863 } catch (Exception e) {\r
864 Log.err("Update Source Files", e.getMessage());\r
865 }\r
866 }\r
867}\r