]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/ModuleEditor/src/org/tianocore/packaging/module/ui/ModuleSourceFiles.java
Initial import.
[mirror_edk2.git] / Tools / Source / ModuleEditor / src / org / tianocore / packaging / module / ui / ModuleSourceFiles.java
CommitLineData
878ddf1f 1/** @file\r
2 \r
3 The file is used to create, update SourceFile 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.JFileChooser;\r
26import javax.swing.JLabel;\r
27import javax.swing.JPanel;\r
28import javax.swing.JTextField;\r
29\r
30import org.tianocore.FilenameDocument;\r
31import org.tianocore.SourceFilesDocument;\r
32import org.tianocore.SupportedArchitectures;\r
33import org.tianocore.ToolChains;\r
34import org.tianocore.common.DataType;\r
35import org.tianocore.common.DataValidation;\r
36import org.tianocore.common.Log;\r
37import org.tianocore.common.Tools;\r
38import org.tianocore.packaging.common.ui.IDefaultMutableTreeNode;\r
39import org.tianocore.packaging.common.ui.IInternalFrame;\r
40import org.tianocore.packaging.common.ui.StarLabel;\r
41import org.tianocore.packaging.workspace.common.Workspace;\r
42import javax.swing.JScrollPane;\r
43import javax.swing.JTextArea;\r
44\r
45/**\r
46 The class is used to create, update SourceFile of MSA/MBD file\r
47 It extends IInternalFrame\r
48 \r
49 @since ModuleEditor 1.0\r
50\r
51 **/\r
52public class ModuleSourceFiles extends IInternalFrame implements ItemListener {\r
53\r
54 ///\r
55 /// Define class Serial Version UID\r
56 ///\r
57 private static final long serialVersionUID = -6765742852142775378L;\r
58\r
59 //\r
60 // Define class members\r
61 //\r
62 private SourceFilesDocument.SourceFiles sourceFiles = null;\r
63\r
64 private int location = -1;\r
65 \r
66 private int intSelectedItemId = 0;\r
67\r
68 //\r
69 // 1 - Add; 2 - Update\r
70 //\r
71 private int operation = -1;\r
72\r
73 private Workspace ws = new Workspace();\r
74\r
75 private Vector<String> vFileName = new Vector<String>();\r
76\r
77 private Vector<String> vGuid = new Vector<String>();\r
78\r
79 private Vector<String> vPath = new Vector<String>();\r
80\r
81 private Vector<String> vFileType = new Vector<String>();\r
82\r
83 private Vector<String> vToolChain = new Vector<String>();\r
84\r
85 private Vector<String> vOverrideID = new Vector<String>();\r
86\r
87 private JPanel jContentPane = null;\r
88\r
89 private JButton jButtonOk = null;\r
90\r
91 private JButton jButtonCancel = null;\r
92\r
93 private JLabel jLabelFileName = null;\r
94\r
95 private JTextField jTextFieldFileName = null;\r
96\r
97 private JButton jButtonOpenFile = null;\r
98\r
99 private JLabel jLabelGuid = null;\r
100\r
101 private JTextField jTextFieldGuid = null;\r
102\r
103 private JButton jButtonGenerateGuid = null;\r
104\r
105 private JComboBox jComboBoxArch = null;\r
106\r
107 private JLabel jLabelPath = null;\r
108\r
109 private JTextField jTextFieldPath = null;\r
110\r
111 private JLabel jLabelFileType = null;\r
112\r
113 private JTextField jTextFieldFileType = null;\r
114\r
115 private JLabel jLabelOverrideID = null;\r
116\r
117 private JTextField jTextFieldOverrideID = null;\r
118\r
119 private StarLabel jStarLabel1 = null;\r
120\r
121 private JComboBox jComboBoxFileList = null;\r
122\r
123 private JButton jButtonAdd = null;\r
124\r
125 private JButton jButtonRemove = null;\r
126\r
127 private JButton jButtonUpdate = null;\r
128\r
129 private JCheckBox jCheckBoxArch = null;\r
130\r
131 private JLabel jLabelToolChain = null;\r
132\r
133 private JComboBox jComboBoxToolChain = null;\r
134\r
135 private JScrollPane jScrollPaneFileList = null;\r
136\r
137 private JTextArea jTextAreaFileList = null;\r
138\r
139 /**\r
140 This method initializes jButtonOk \r
141 \r
142 @return javax.swing.JButton jButtonOk\r
143 \r
144 **/\r
145 private JButton getJButton() {\r
146 if (jButtonOk == null) {\r
147 jButtonOk = new JButton();\r
148 jButtonOk.setText("OK");\r
149 jButtonOk.setBounds(new java.awt.Rectangle(290, 340, 90, 20));\r
150 jButtonOk.addActionListener(this);\r
151 }\r
152 return jButtonOk;\r
153 }\r
154\r
155 /**\r
156 This method initializes jButtonCancel \r
157 \r
158 @return javax.swing.JButton jButtonCancel\r
159 \r
160 **/\r
161 private JButton getJButton1() {\r
162 if (jButtonCancel == null) {\r
163 jButtonCancel = new JButton();\r
164 jButtonCancel.setText("Cancel");\r
165 jButtonCancel.setBounds(new java.awt.Rectangle(390, 340, 90, 20));\r
166 jButtonCancel.setPreferredSize(new java.awt.Dimension(90, 20));\r
167 jButtonCancel.addActionListener(this);\r
168 }\r
169 return jButtonCancel;\r
170 }\r
171\r
172 /**\r
173 This method initializes jTextFieldFileName \r
174 \r
175 @return javax.swing.JTextField jTextFieldFileName\r
176 \r
177 **/\r
178 private JTextField getJTextFieldSourceFilesDirectory() {\r
179 if (jTextFieldFileName == null) {\r
180 jTextFieldFileName = new JTextField();\r
181 jTextFieldFileName.setBounds(new java.awt.Rectangle(140,10,250,20));\r
182 }\r
183 return jTextFieldFileName;\r
184 }\r
185\r
186 /**\r
187 This method initializes jButtonOpenFile \r
188 \r
189 @return javax.swing.JButton jButtonOpenFile\r
190 \r
191 **/\r
192 private JButton getJButtonOpenFile() {\r
193 if (jButtonOpenFile == null) {\r
194 jButtonOpenFile = new JButton();\r
195 jButtonOpenFile.setText("Browse");\r
196 jButtonOpenFile.setBounds(new java.awt.Rectangle(395,10,85,20));\r
197 jButtonOpenFile.addActionListener(this);\r
198 }\r
199 return jButtonOpenFile;\r
200 }\r
201\r
202 /**\r
203 This method initializes jTextFieldGuid \r
204 \r
205 @return javax.swing.JTextField jTextFieldGuid\r
206 \r
207 **/\r
208 private JTextField getJTextFieldGuid() {\r
209 if (jTextFieldGuid == null) {\r
210 jTextFieldGuid = new JTextField();\r
211 jTextFieldGuid.setBounds(new java.awt.Rectangle(140,35,250,20));\r
212 }\r
213 return jTextFieldGuid;\r
214 }\r
215\r
216 /**\r
217 This method initializes jButtonGenerateGuid \r
218 \r
219 @return javax.swing.JButton jButtonGenerateGuid\r
220 \r
221 **/\r
222 private JButton getJButtonGenerateGuid() {\r
223 if (jButtonGenerateGuid == null) {\r
224 jButtonGenerateGuid = new JButton();\r
225 jButtonGenerateGuid.setBounds(new java.awt.Rectangle(395,35,85,20));\r
226 jButtonGenerateGuid.setText("GEN");\r
227 jButtonGenerateGuid.addActionListener(this);\r
228 }\r
229 return jButtonGenerateGuid;\r
230 }\r
231\r
232 /**\r
233 This method initializes jComboBoxArch \r
234 \r
235 @return javax.swing.JComboBox jComboBoxArch\r
236 \r
237 **/\r
238 private JComboBox getJComboBoxArch() {\r
239 if (jComboBoxArch == null) {\r
240 jComboBoxArch = new JComboBox();\r
241 jComboBoxArch.setBounds(new java.awt.Rectangle(140, 160, 340, 20));\r
242 jComboBoxArch.setEnabled(false);\r
243 }\r
244 return jComboBoxArch;\r
245 }\r
246\r
247 /**\r
248 This method initializes jTextFieldPath \r
249 \r
250 @return javax.swing.JTextField jTextFieldPath\r
251 \r
252 **/\r
253 private JTextField getJTextFieldPath() {\r
254 if (jTextFieldPath == null) {\r
255 jTextFieldPath = new JTextField();\r
256 jTextFieldPath.setBounds(new java.awt.Rectangle(140, 60, 340, 20));\r
257 }\r
258 return jTextFieldPath;\r
259 }\r
260\r
261 /**\r
262 This method initializes jTextFieldFileType \r
263 \r
264 @return javax.swing.JTextField jTextFieldFileType\r
265 \r
266 **/\r
267 private JTextField getJTextFieldFileType() {\r
268 if (jTextFieldFileType == null) {\r
269 jTextFieldFileType = new JTextField();\r
270 jTextFieldFileType.setBounds(new java.awt.Rectangle(140, 85, 340, 20));\r
271 }\r
272 return jTextFieldFileType;\r
273 }\r
274\r
275 /**\r
276 This method initializes jTextFieldOverrideID \r
277 \r
278 @return javax.swing.JTextField jTextFieldOverrideID\r
279 \r
280 **/\r
281 private JTextField getJTextFieldOverrideID() {\r
282 if (jTextFieldOverrideID == null) {\r
283 jTextFieldOverrideID = new JTextField();\r
284 jTextFieldOverrideID.setBounds(new java.awt.Rectangle(140, 135, 50, 20));\r
285 }\r
286 return jTextFieldOverrideID;\r
287 }\r
288\r
289 /**\r
290 This method initializes jComboBoxFileList \r
291 \r
292 @return javax.swing.JComboBox jComboBoxFileList\r
293 \r
294 **/\r
295 private JComboBox getJComboBoxFileList() {\r
296 if (jComboBoxFileList == null) {\r
297 jComboBoxFileList = new JComboBox();\r
298 jComboBoxFileList.setBounds(new java.awt.Rectangle(15, 185, 210, 20));\r
299 jComboBoxFileList.addItemListener(this);\r
300 jComboBoxFileList.addActionListener(this);\r
301 }\r
302 return jComboBoxFileList;\r
303 }\r
304\r
305 /**\r
306 This method initializes jButtonAdd \r
307 \r
308 @return javax.swing.JButton jButtonAdd\r
309 \r
310 **/\r
311 private JButton getJButtonAdd() {\r
312 if (jButtonAdd == null) {\r
313 jButtonAdd = new JButton();\r
314 jButtonAdd.setBounds(new java.awt.Rectangle(230, 185, 80, 20));\r
315 jButtonAdd.setText("Add");\r
316 jButtonAdd.addActionListener(this);\r
317 }\r
318 return jButtonAdd;\r
319 }\r
320\r
321 /**\r
322 This method initializes jButtonRemove \r
323 \r
324 @return javax.swing.JButton jButtonRemove\r
325 \r
326 **/\r
327 private JButton getJButtonRemove() {\r
328 if (jButtonRemove == null) {\r
329 jButtonRemove = new JButton();\r
330 jButtonRemove.setBounds(new java.awt.Rectangle(400, 185, 80, 20));\r
331 jButtonRemove.setText("Remove");\r
332 jButtonRemove.addActionListener(this);\r
333 }\r
334 return jButtonRemove;\r
335 }\r
336\r
337 /**\r
338 This method initializes jButtonUpdate \r
339 \r
340 @return javax.swing.JButton jButtonUpdate\r
341 \r
342 **/\r
343 private JButton getJButtonUpdate() {\r
344 if (jButtonUpdate == null) {\r
345 jButtonUpdate = new JButton();\r
346 jButtonUpdate.setBounds(new java.awt.Rectangle(315, 185, 80, 20));\r
347 jButtonUpdate.setText("Update");\r
348 jButtonUpdate.addActionListener(this);\r
349 }\r
350 return jButtonUpdate;\r
351 }\r
352\r
353 /**\r
354 This method initializes jCheckBoxArch \r
355 \r
356 @return javax.swing.JCheckBox jCheckBoxArch\r
357 \r
358 **/\r
359 private JCheckBox getJCheckBoxArch() {\r
360 if (jCheckBoxArch == null) {\r
361 jCheckBoxArch = new JCheckBox();\r
362 jCheckBoxArch.setBounds(new java.awt.Rectangle(15, 160, 120, 20));\r
363 jCheckBoxArch.setText("Specific Arch");\r
364 jCheckBoxArch.addActionListener(this);\r
365 }\r
366 return jCheckBoxArch;\r
367 }\r
368\r
369 /**\r
370 This method initializes jComboBoxToolChain \r
371 \r
372 @return javax.swing.JComboBox jComboBoxToolChain\r
373 \r
374 **/\r
375 private JComboBox getJComboBoxToolChain() {\r
376 if (jComboBoxToolChain == null) {\r
377 jComboBoxToolChain = new JComboBox();\r
378 jComboBoxToolChain.setBounds(new java.awt.Rectangle(140, 110, 340, 20));\r
379 }\r
380 return jComboBoxToolChain;\r
381 }\r
382\r
383 /**\r
384 * This method initializes jScrollPaneFileList \r
385 * \r
386 * @return javax.swing.JScrollPane \r
387 */\r
388 private JScrollPane getJScrollPaneFileList() {\r
389 if (jScrollPaneFileList == null) {\r
390 jScrollPaneFileList = new JScrollPane();\r
391 jScrollPaneFileList.setBounds(new java.awt.Rectangle(15,210,465,240));\r
392 jScrollPaneFileList.setViewportView(getJTextAreaFileList());\r
393 }\r
394 return jScrollPaneFileList;\r
395 }\r
396\r
397 /**\r
398 * This method initializes jTextAreaFileList \r
399 * \r
400 * @return javax.swing.JTextArea \r
401 */\r
402 private JTextArea getJTextAreaFileList() {\r
403 if (jTextAreaFileList == null) {\r
404 jTextAreaFileList = new JTextArea();\r
405 jTextAreaFileList.setEditable(false);\r
406 }\r
407 return jTextAreaFileList;\r
408 }\r
409\r
410 public static void main(String[] args) {\r
411\r
412 }\r
413\r
414 /**\r
415 This is the default constructor\r
416 \r
417 **/\r
418 public ModuleSourceFiles() {\r
419 super();\r
420 init();\r
421 this.setVisible(true);\r
422 }\r
423\r
424 /**\r
425 This is the override edit constructor\r
426 \r
427 @param inSourceFiles The input data of SourceFilesDocument.SourceFiles\r
428 \r
429 **/\r
430 public ModuleSourceFiles(SourceFilesDocument.SourceFiles inSourceFiles) {\r
431 super();\r
432 init(inSourceFiles);\r
433 this.setVisible(true);\r
434 }\r
435\r
436 /**\r
437 This is the override edit constructor\r
438 \r
439 @param inSourceFiles The input data of SourceFilesDocument.SourceFiles\r
440 @param type The input data of node type\r
441 @param index The input data of node index\r
442 @param inOperation The input data of current operation type\r
443 \r
444 **/\r
445 public ModuleSourceFiles(SourceFilesDocument.SourceFiles inSourceFiles, int type, int index, int inOperation) {\r
446 super();\r
447 init(inSourceFiles, type, index, inOperation);\r
448 this.operation = inOperation;\r
449 this.setVisible(true);\r
450 }\r
451\r
452 /**\r
453 This method initializes this\r
454 \r
455 @param inSourceFiles The input data of SourceFilesDocument.SourceFiles\r
456 \r
457 **/\r
458 private void init(SourceFilesDocument.SourceFiles inSourceFiles) {\r
459 init();\r
460 this.setSourceFiles(inSourceFiles);\r
461 }\r
462\r
463 /** \r
464 This method initializes this\r
465 Fill values to all fields if these values are not empty\r
466 \r
467 \r
468 @param inSourceFiles The input data of SourceFilesDocument.SourceFiles\r
469 @param type The input data of node type\r
470 @param index The input data of node index\r
471 @param inOperation The input data of current operation type\r
472 \r
473 **/\r
474 private void init(SourceFilesDocument.SourceFiles inSourceFiles, int type, int index, int inOperation) {\r
475 init(inSourceFiles);\r
476 this.location = index;\r
477 this.operation = inOperation;\r
478\r
479 //\r
480 // When update\r
481 //\r
482 if (operation == 2) {\r
483 this.jCheckBoxArch.setEnabled(false);\r
484 this.jComboBoxArch.setEnabled(false);\r
485\r
486 if (type == IDefaultMutableTreeNode.SOURCEFILES_FILENAME) {\r
487 if (this.sourceFiles.getFilenameList().size() > 0) {\r
488 for (int indexI = 0; indexI < this.sourceFiles.getFilenameList().size(); indexI++) {\r
489 if (this.sourceFiles.getFilenameArray(indexI).getStringValue() != null) {\r
490 vFileName.addElement(this.sourceFiles.getFilenameArray(indexI).getStringValue());\r
491 } else {\r
492 vFileName.addElement("");\r
493 }\r
494 if (this.sourceFiles.getFilenameArray(indexI).getGuid() != null) {\r
495 vGuid.addElement(this.sourceFiles.getFilenameArray(indexI).getGuid());\r
496 } else {\r
497 vGuid.addElement("");\r
498 }\r
499 if (this.sourceFiles.getFilenameArray(indexI).getPath() != null) {\r
500 vPath.addElement(this.sourceFiles.getFilenameArray(indexI).getPath());\r
501 } else {\r
502 vPath.addElement("");\r
503 }\r
504 if (this.sourceFiles.getFilenameArray(indexI).getFileType() != null) {\r
505 vFileType.addElement(this.sourceFiles.getFilenameArray(indexI).getFileType());\r
506 } else {\r
507 vFileType.addElement("");\r
508 }\r
509 if (this.sourceFiles.getFilenameArray(indexI).getToolChain() != null) {\r
510 vToolChain.addElement(this.sourceFiles.getFilenameArray(indexI).getToolChain().toString());\r
511 } else {\r
512 vToolChain.addElement(DataType.EMPTY_SELECT_ITEM);\r
513 }\r
514 vOverrideID.addElement(String.valueOf(this.sourceFiles.getFilenameArray(indexI).getOverrideID()));\r
515 jComboBoxFileList.addItem(this.sourceFiles.getFilenameArray(indexI).getStringValue());\r
516 }\r
517 }\r
518 }\r
519 if (type == IDefaultMutableTreeNode.SOURCEFILES_ARCH_ITEM) {\r
520 this.jCheckBoxArch.setSelected(true);\r
521 this.jComboBoxArch.setSelectedItem(this.sourceFiles.getArchArray(index).getArchType().toString());\r
522 for (int indexI = 0; indexI < this.sourceFiles.getArchArray(index).getFilenameList().size(); indexI++) {\r
523 if (this.sourceFiles.getArchArray(index).getFilenameArray(indexI).getStringValue() != null) {\r
524 vFileName.addElement(this.sourceFiles.getArchArray(index).getFilenameArray(indexI)\r
525 .getStringValue());\r
526 } else {\r
527 vFileName.addElement("");\r
528 }\r
529 if (this.sourceFiles.getArchArray(index).getFilenameArray(indexI).getGuid() != null) {\r
530 vGuid.addElement(this.sourceFiles.getArchArray(index).getFilenameArray(indexI).getGuid());\r
531 } else {\r
532 vGuid.addElement("");\r
533 }\r
534 if (this.sourceFiles.getArchArray(index).getFilenameArray(indexI).getPath() != null) {\r
535 vPath.addElement(this.sourceFiles.getArchArray(index).getFilenameArray(indexI).getPath());\r
536 } else {\r
537 vPath.addElement("");\r
538 }\r
539 if (this.sourceFiles.getArchArray(index).getFilenameArray(indexI).getFileType() != null) {\r
540 vFileType.addElement(this.sourceFiles.getArchArray(index).getFilenameArray(indexI)\r
541 .getFileType());\r
542 } else {\r
543 vFileType.addElement("");\r
544 }\r
545 if (this.sourceFiles.getArchArray(index).getFilenameArray(indexI).getToolChain() != null) {\r
546 vToolChain.addElement(this.sourceFiles.getArchArray(index).getFilenameArray(indexI)\r
547 .getToolChain().toString());\r
548 } else {\r
549 vToolChain.addElement("");\r
550 }\r
551 vOverrideID.addElement(String.valueOf(this.sourceFiles.getArchArray(index).getFilenameArray(indexI)\r
552 .getOverrideID()));\r
553 jComboBoxFileList.addItem(this.sourceFiles.getArchArray(index).getFilenameArray(indexI)\r
554 .getStringValue());\r
555 }\r
556 }\r
557 //\r
558 // Update the file list\r
559 //\r
560 reloadFileListArea();\r
561 }\r
562 }\r
563\r
564 /**\r
565 This method initializes this\r
566 \r
567 **/\r
568 private void init() {\r
569 this.setSize(500, 515);\r
570 this.setContentPane(getJContentPane());\r
571 this.setTitle("Source Files");\r
572 initFrame();\r
573 this.setViewMode(false);\r
574 }\r
575\r
576 /**\r
577 Disable all components when the mode is view\r
578 \r
579 @param isView true - The view mode; false - The non-view mode\r
580 \r
581 **/\r
582 public void setViewMode(boolean isView) {\r
583 this.jButtonOk.setVisible(false);\r
584 this.jButtonCancel.setVisible(false);\r
585 if (isView) {\r
586 this.jButtonOk.setEnabled(!isView);\r
587 this.jButtonCancel.setEnabled(!isView);\r
588 this.jTextFieldFileName.setEnabled(!isView);\r
589 this.jButtonOpenFile.setEnabled(!isView);\r
590 this.jTextFieldGuid.setEnabled(!isView);\r
591 this.jButtonGenerateGuid.setEnabled(!isView);\r
592 this.jTextFieldPath.setEnabled(!isView);\r
593 this.jTextFieldFileType.setEnabled(!isView);\r
594 this.jComboBoxToolChain.setEnabled(!isView);\r
595 this.jTextFieldOverrideID.setEnabled(!isView);\r
596\r
597 this.jButtonAdd.setEnabled(!isView);\r
598 this.jButtonRemove.setEnabled(!isView);\r
599 this.jButtonUpdate.setEnabled(!isView);\r
600 this.jCheckBoxArch.setEnabled(!isView);\r
601 }\r
602 }\r
603\r
604 /**\r
605 This method initializes jContentPane\r
606 \r
607 @return javax.swing.JPanel jContentPane\r
608 \r
609 **/\r
610 private JPanel getJContentPane() {\r
611 if (jContentPane == null) {\r
612 jLabelToolChain = new JLabel();\r
613 jLabelToolChain.setBounds(new java.awt.Rectangle(15, 110, 120, 20));\r
614 jLabelToolChain.setText("Tool Chain");\r
615 jLabelOverrideID = new JLabel();\r
616 jLabelOverrideID.setBounds(new java.awt.Rectangle(15, 135, 120, 20));\r
617 jLabelOverrideID.setText("Override ID");\r
618 jLabelFileType = new JLabel();\r
619 jLabelFileType.setBounds(new java.awt.Rectangle(15, 85, 120, 20));\r
620 jLabelFileType.setText("File Type");\r
621 jLabelPath = new JLabel();\r
622 jLabelPath.setBounds(new java.awt.Rectangle(15, 60, 120, 20));\r
623 jLabelPath.setText("Path");\r
624 jLabelGuid = new JLabel();\r
625 jLabelGuid.setBounds(new java.awt.Rectangle(15, 35, 120, 20));\r
626 jLabelGuid.setText("Guid");\r
627 jLabelFileName = new JLabel();\r
628 jLabelFileName.setText("File Name");\r
629 jLabelFileName.setBounds(new java.awt.Rectangle(15, 10, 120, 20));\r
630 jContentPane = new JPanel();\r
631 jContentPane.setLayout(null);\r
632 jContentPane.setSize(new java.awt.Dimension(480,400));\r
633 jContentPane.add(getJButton(), null);\r
634 jContentPane.add(getJButton1(), null);\r
635 jContentPane.add(jLabelFileName, null);\r
636 jContentPane.add(getJTextFieldSourceFilesDirectory(), null);\r
637 jContentPane.add(getJButtonOpenFile(), null);\r
638 jContentPane.add(jLabelGuid, null);\r
639 jContentPane.add(getJTextFieldGuid(), null);\r
640 jContentPane.add(getJButtonGenerateGuid(), null);\r
641 jContentPane.add(getJComboBoxArch(), null);\r
642 jContentPane.add(jLabelPath, null);\r
643 jContentPane.add(getJTextFieldPath(), null);\r
644 jContentPane.add(jLabelFileType, null);\r
645 jContentPane.add(getJTextFieldFileType(), null);\r
646 jContentPane.add(jLabelOverrideID, null);\r
647 jContentPane.add(getJTextFieldOverrideID(), null);\r
648 jStarLabel1 = new StarLabel();\r
649 jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
650\r
651 jContentPane.add(jStarLabel1, null);\r
652 jContentPane.add(getJComboBoxFileList(), null);\r
653 jContentPane.add(getJButtonAdd(), null);\r
654 jContentPane.add(getJButtonRemove(), null);\r
655 jContentPane.add(getJButtonUpdate(), null);\r
656 jContentPane.add(getJCheckBoxArch(), null);\r
657 jContentPane.add(jLabelToolChain, null);\r
658 jContentPane.add(getJComboBoxToolChain(), null);\r
659\r
660 jContentPane.add(getJScrollPaneFileList(), null);\r
661 }\r
662 return jContentPane;\r
663 }\r
664\r
665 /* (non-Javadoc)\r
666 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
667 *\r
668 * Override actionPerformed to listen all actions\r
669 * \r
670 */\r
671 public void actionPerformed(ActionEvent arg0) {\r
672 if (arg0.getSource() == jButtonOk) {\r
673 this.setEdited(true);\r
674 this.save();\r
675 this.dispose();\r
676 }\r
677 if (arg0.getSource() == jButtonCancel) {\r
678 this.dispose();\r
679 }\r
680 if (arg0.getSource() == jButtonGenerateGuid) {\r
681 jTextFieldGuid.setText(Tools.generateUuidString());\r
682 }\r
683 if (arg0.getSource() == jButtonOpenFile) {\r
684 selectFile();\r
685 }\r
686 if (arg0.getSource() == jButtonAdd) {\r
687 if (!checkAdd()) {\r
688 return;\r
689 }\r
690 addToList();\r
691 }\r
692 if (arg0.getSource() == jButtonRemove) {\r
693 removeFromList();\r
694 }\r
695 if (arg0.getSource() == jButtonUpdate) {\r
696 if (!checkAdd()) {\r
697 return;\r
698 }\r
699 updateForList();\r
700 }\r
701\r
702 //\r
703 //When and only when checked Arch box then can choose different arch types\r
704 //\r
705 if (arg0.getSource() == jCheckBoxArch) {\r
706 if (this.jCheckBoxArch.isSelected()) {\r
707 this.jComboBoxArch.setEnabled(true);\r
708 } else {\r
709 this.jComboBoxArch.setEnabled(false);\r
710 }\r
711 }\r
712 }\r
713\r
714 /**\r
715 This method initializes Usage type and Arch type\r
716 \r
717 **/\r
718 private void initFrame() {\r
719 jComboBoxArch.addItem("ALL");\r
720 jComboBoxArch.addItem("EBC");\r
721 jComboBoxArch.addItem("ARM");\r
722 jComboBoxArch.addItem("IA32");\r
723 jComboBoxArch.addItem("X64");\r
724 jComboBoxArch.addItem("IPF");\r
725 jComboBoxArch.addItem("PPC");\r
726\r
727 jComboBoxToolChain.addItem(DataType.EMPTY_SELECT_ITEM);\r
728 jComboBoxToolChain.addItem("MSFT");\r
729 jComboBoxToolChain.addItem("INTEL");\r
730 jComboBoxToolChain.addItem("GCC");\r
731 jComboBoxToolChain.addItem("CYGWIN");\r
732 }\r
733\r
734 /**\r
735 Add current item to Vector\r
736 \r
737 **/\r
738 private void addToList() {\r
739 intSelectedItemId = vFileName.size();\r
740 vFileName.addElement(this.jTextFieldFileName.getText());\r
741 vGuid.addElement(this.jTextFieldGuid.getText());\r
742 vPath.addElement(this.jTextFieldPath.getText());\r
743 vFileType.addElement(this.jTextFieldFileType.getText());\r
744 vToolChain.addElement(this.jComboBoxToolChain.getSelectedItem().toString());\r
745 vOverrideID.addElement(this.jTextFieldOverrideID.getText());\r
746 jComboBoxFileList.addItem(this.jTextFieldFileName.getText());\r
747 jComboBoxFileList.setSelectedItem(this.jTextFieldFileName.getText());\r
748 \r
749 //\r
750 // Reset select item index\r
751 //\r
752 intSelectedItemId = vFileName.size();\r
753 \r
754 //\r
755 // Reload all fields of selected item\r
756 //\r
757 reloadFromList();\r
758 }\r
759\r
760 /**\r
761 Remove current item from Vector\r
762 \r
763 **/\r
764 private void removeFromList() {\r
765 int intTempIndex = intSelectedItemId;\r
766 if (vFileName.size() < 1) {\r
767 return;\r
768 }\r
769 \r
770 jComboBoxFileList.removeItemAt(intSelectedItemId);\r
771 \r
772 vFileName.removeElementAt(intTempIndex);\r
773 vGuid.removeElementAt(intTempIndex);\r
774 vPath.removeElementAt(intTempIndex);\r
775 vFileType.removeElementAt(intTempIndex);\r
776 vToolChain.removeElementAt(intTempIndex);\r
777 vOverrideID.removeElementAt(intTempIndex);\r
778 \r
779 //\r
780 // Reload all fields of selected item\r
781 //\r
782 reloadFromList();\r
783 }\r
784\r
785 /**\r
786 Update current item of Vector\r
787 \r
788 **/\r
789 private void updateForList() {\r
790 //\r
791 // Backup selected item index\r
792 //\r
793 int intTempIndex = intSelectedItemId;\r
794 vFileName.setElementAt(this.jTextFieldFileName.getText(), intSelectedItemId);\r
795 vGuid.setElementAt(this.jTextFieldGuid.getText(), intSelectedItemId);\r
796 vPath.setElementAt(this.jTextFieldPath.getText(), intSelectedItemId);\r
797 vFileType.setElementAt(this.jTextFieldFileType.getText(), intSelectedItemId);\r
798 vToolChain.setElementAt(this.jComboBoxToolChain.getSelectedItem().toString(), intSelectedItemId);\r
799 vOverrideID.setElementAt(this.jTextFieldOverrideID.getText(), intSelectedItemId);\r
800 jComboBoxFileList.removeAllItems();\r
801 for (int index = 0; index < vFileName.size(); index++) {\r
802 jComboBoxFileList.addItem(vFileName.elementAt(index));\r
803 }\r
804 \r
805 //\r
806 // Restore selected item index\r
807 //\r
808 intSelectedItemId = intTempIndex;\r
809 \r
810 //\r
811 // Reset select item index\r
812 //\r
813 jComboBoxFileList.setSelectedIndex(intSelectedItemId);\r
814 \r
815 //\r
816 // Reload all fields of selected item\r
817 //\r
818 reloadFromList();\r
819 }\r
820\r
821 /**\r
822 Refresh all fields' values of selected item of Vector\r
823 \r
824 **/\r
825 private void reloadFromList() {\r
826 if (vFileName.size() > 0) {\r
827 //\r
828 // Get selected item index\r
829 //\r
830 intSelectedItemId = jComboBoxFileList.getSelectedIndex();\r
831 \r
832 this.jTextFieldFileName.setText(vFileName.elementAt(intSelectedItemId).toString());\r
833 this.jTextFieldGuid.setText(vGuid.elementAt(intSelectedItemId).toString());\r
834 this.jTextFieldPath.setText(vPath.elementAt(intSelectedItemId).toString());\r
835 this.jTextFieldFileType.setText(vFileType.elementAt(intSelectedItemId).toString());\r
836 this.jComboBoxToolChain.setSelectedItem(vToolChain.elementAt(intSelectedItemId).toString());\r
837 this.jTextFieldOverrideID.setText(vOverrideID.elementAt(intSelectedItemId).toString()); \r
838 } else {\r
839 this.jTextFieldFileName.setText("");\r
840 this.jTextFieldGuid.setText("");\r
841 this.jTextFieldPath.setText("");\r
842 this.jTextFieldFileType.setText("");\r
843 this.jComboBoxToolChain.setSelectedItem(DataType.EMPTY_SELECT_ITEM);\r
844 this.jTextFieldOverrideID.setText("");\r
845 }\r
846 \r
847 reloadFileListArea();\r
848 }\r
849\r
850 /* (non-Javadoc)\r
851 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)\r
852 *\r
853 * Reflesh the frame when selected item changed\r
854 * \r
855 */\r
856 public void itemStateChanged(ItemEvent arg0) {\r
857 if (arg0.getStateChange() == ItemEvent.SELECTED) {\r
858 reloadFromList();\r
859 }\r
860 }\r
861\r
862 /**\r
863 Get SourceFilesDocument.SourceFiles\r
864 \r
865 @return SourceFilesDocument.SourceFiles\r
866 \r
867 **/\r
868 public SourceFilesDocument.SourceFiles getSourceFiles() {\r
869 return sourceFiles;\r
870 }\r
871\r
872 /**\r
873 Set SourceFilesDocument.SourceFiles\r
874 \r
875 @param sourceFiles The input data of SourceFilesDocument.SourceFiles\r
876 \r
877 **/\r
878 public void setSourceFiles(SourceFilesDocument.SourceFiles sourceFiles) {\r
879 this.sourceFiles = sourceFiles;\r
880 }\r
881\r
882 /**\r
883 Data validation for all fields\r
884 \r
885 @retval true - All datas are valid\r
886 @retval false - At least one data is invalid\r
887 \r
888 **/\r
889 public boolean check() {\r
890 if (this.jComboBoxFileList.getItemCount() < 1) {\r
891 Log.err("Must have one file at least!");\r
892 return false;\r
893 }\r
894 return true;\r
895 }\r
896\r
897 /**\r
898 Data validation for all fields\r
899 \r
900 @retval true - All datas are valid\r
901 @retval false - At least one data is invalid\r
902 \r
903 **/\r
904 public boolean checkAdd() {\r
905 //\r
906 // Check if all required fields are not empty\r
907 //\r
908 if (isEmpty(this.jTextFieldFileName.getText())) {\r
909 Log.err("File Name couldn't be empty");\r
910 return false;\r
911 }\r
912\r
913 //\r
914 // Check if all fields have correct data types \r
915 //\r
916 if (!DataValidation.isFileName(this.jTextFieldFileName.getText())) {\r
917 Log.err("Incorrect data type for File Name");\r
918 return false;\r
919 }\r
920 if (!isEmpty(this.jTextFieldGuid.getText()) && !DataValidation.isGuid(this.jTextFieldGuid.getText())) {\r
921 Log.err("Incorrect data type for Guid");\r
922 return false;\r
923 }\r
924 if (!isEmpty(this.jTextFieldPath.getText()) && !DataValidation.isPath(this.jTextFieldPath.getText())) {\r
925 Log.err("Incorrect data type for Path");\r
926 return false;\r
927 }\r
928 if (!isEmpty(this.jTextFieldOverrideID.getText())\r
929 && !DataValidation.isOverrideID(this.jTextFieldOverrideID.getText())) {\r
930 Log.err("Incorrect data type for Override ID");\r
931 return false;\r
932 }\r
933\r
934 return true;\r
935 }\r
936\r
937 /**\r
938 Save all components of SourceFiles\r
939 if exists sourceFiles, set the value directly\r
940 if not exists sourceFiles, new an instance first\r
941 \r
942 **/\r
943 public void save() {\r
944 try {\r
945 if (this.sourceFiles == null) {\r
946 sourceFiles = SourceFilesDocument.SourceFiles.Factory.newInstance();\r
947 }\r
948 //\r
949 //Save as file name\r
950 //\r
951 if (!this.jCheckBoxArch.isSelected()) {\r
952 if (this.operation == 2) { //Add new filename\r
953 //\r
954 //First remove all existed filename\r
955 //\r
956 if (sourceFiles.getFilenameList().size() > 0) {\r
957 for (int index = sourceFiles.getFilenameList().size() - 1; index >= 0; index--) {\r
958 sourceFiles.removeFilename(index);\r
959 }\r
960 }\r
961 }\r
962 for (int index = 0; index < vFileName.size(); index++) {\r
963 FilenameDocument.Filename filename = FilenameDocument.Filename.Factory.newInstance();\r
964 if (!isEmpty(vFileName.elementAt(index).toString())) {\r
965 filename.setStringValue(vFileName.elementAt(index).toString());\r
966 }\r
967 if (!isEmpty(vGuid.elementAt(index).toString())) {\r
968 filename.setGuid(vGuid.elementAt(index).toString());\r
969 }\r
970 if (!isEmpty(vPath.elementAt(index).toString())) {\r
971 filename.setPath(vPath.elementAt(index).toString());\r
972 }\r
973 if (!isEmpty(vFileType.elementAt(index).toString())) {\r
974 filename.setFileType(vFileType.elementAt(index).toString());\r
975 }\r
976 if (!vToolChain.elementAt(index).toString().equals(DataType.EMPTY_SELECT_ITEM)) {\r
977 filename.setToolChain(ToolChains.Enum.forString(vToolChain.elementAt(index).toString()));\r
978 }\r
979 if (!isEmpty(vOverrideID.elementAt(index).toString())) {\r
980 filename.setOverrideID(Integer.parseInt(vOverrideID.elementAt(index).toString()));\r
981 }\r
982 sourceFiles.addNewFilename();\r
983 sourceFiles.setFilenameArray(sourceFiles.getFilenameList().size() - 1, filename);\r
984 }\r
985 }\r
986 //\r
987 //Save as Arch\r
988 //\r
989 if (this.jCheckBoxArch.isSelected()) {\r
990 SourceFilesDocument.SourceFiles.Arch arch = SourceFilesDocument.SourceFiles.Arch.Factory.newInstance();\r
991 if (this.operation == 2) {\r
992 //\r
993 //First remove all existed filename\r
994 //\r
995 for (int index = sourceFiles.getArchArray(location).getFilenameList().size() - 1; index >= 0; index--) {\r
996 sourceFiles.getArchArray(location).removeFilename(index);\r
997 }\r
998 }\r
999 for (int index = 0; index < vFileName.size(); index++) {\r
1000 FilenameDocument.Filename filename = FilenameDocument.Filename.Factory.newInstance();\r
1001 if (!isEmpty(vFileName.elementAt(index).toString())) {\r
1002 filename.setStringValue(vFileName.elementAt(index).toString());\r
1003 }\r
1004 if (!isEmpty(vGuid.elementAt(index).toString())) {\r
1005 filename.setGuid(vGuid.elementAt(index).toString());\r
1006 }\r
1007 if (!isEmpty(vPath.elementAt(index).toString())) {\r
1008 filename.setPath(vPath.elementAt(index).toString());\r
1009 }\r
1010 if (!isEmpty(vFileType.elementAt(index).toString())) {\r
1011 filename.setFileType(vFileType.elementAt(index).toString());\r
1012 }\r
1013 if (!vToolChain.elementAt(index).toString().equals(DataType.EMPTY_SELECT_ITEM)) {\r
1014 filename.setToolChain(ToolChains.Enum.forString(vToolChain.elementAt(index).toString()));\r
1015 }\r
1016 if (!isEmpty(vOverrideID.elementAt(index).toString())) {\r
1017 filename.setOverrideID(Integer.parseInt(vOverrideID.elementAt(index).toString()));\r
1018 }\r
1019 arch.addNewFilename();\r
1020 arch.setFilenameArray(arch.getFilenameList().size() - 1, filename);\r
1021 }\r
1022 arch\r
1023 .setArchType(SupportedArchitectures.Enum.forString(this.jComboBoxArch.getSelectedItem().toString()));\r
1024 if (location > -1) {\r
1025 sourceFiles.setArchArray(location, arch);\r
1026 } else {\r
1027 sourceFiles.addNewArch();\r
1028 sourceFiles.setArchArray(sourceFiles.getArchList().size() - 1, arch);\r
1029 }\r
1030 }\r
1031 } catch (Exception e) {\r
1032 Log.err("Update Source Files", e.getMessage());\r
1033 }\r
1034 }\r
1035\r
1036 /**\r
1037 Display a file open browser to let user select file\r
1038 \r
1039 **/\r
1040 private void selectFile() {\r
1041 JFileChooser fc = new JFileChooser(ws.getCurrentWorkspace());\r
1042\r
1043 int result = fc.showOpenDialog(new JPanel());\r
1044 if (result == JFileChooser.APPROVE_OPTION) {\r
1045 this.jTextFieldFileName.setText(fc.getSelectedFile().getName());\r
1046 }\r
1047 }\r
1048 \r
1049 /**\r
1050 Update file list pane via the elements of Vector\r
1051 \r
1052 **/\r
1053 private void reloadFileListArea() {\r
1054 String strFileList = "";\r
1055 for (int index = 0; index < vFileName.size(); index++) {\r
1056 strFileList = strFileList + vFileName.elementAt(index).toString() + DataType.UNXI_LINE_SEPARATOR;\r
1057 }\r
1058 this.jTextAreaFileList.setText(strFileList);\r
1059 }\r
1060}\r