]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleExterns.java
Removed Requirement for having a FarList element in the FrameworkDatabase.db file...
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / ModuleExterns.java
CommitLineData
a13899c5 1/** @file\r
2 \r
3 The file is used to create, update DataHub 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.frameworkwizard.module.ui;\r
16\r
17import java.awt.event.ActionEvent;\r
18import java.awt.event.ComponentEvent;\r
19import java.awt.event.ItemEvent;\r
20import java.awt.event.ItemListener;\r
21import java.util.Vector;\r
22\r
23import javax.swing.JButton;\r
24import javax.swing.JComboBox;\r
25import javax.swing.JLabel;\r
26import javax.swing.JPanel;\r
27import javax.swing.JScrollPane;\r
28import javax.swing.JTextArea;\r
29import javax.swing.JTextField;\r
30\r
31import org.tianocore.ExternsDocument;\r
32import org.tianocore.PcdDriverTypes;\r
33import org.tianocore.ExternsDocument.Externs;\r
34import org.tianocore.ExternsDocument.Externs.Extern;\r
35import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
36import org.tianocore.frameworkwizard.common.DataType;\r
37import org.tianocore.frameworkwizard.common.DataValidation;\r
38import org.tianocore.frameworkwizard.common.EnumerationData;\r
39import org.tianocore.frameworkwizard.common.Log;\r
a13899c5 40import org.tianocore.frameworkwizard.common.Tools;\r
79cb6fdb 41import org.tianocore.frameworkwizard.common.Identifications.OpeningModuleType;\r
a13899c5 42import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
43import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
79cb6fdb 44import org.tianocore.frameworkwizard.module.Identifications.Externs.ExternsIdentification;\r
45import org.tianocore.frameworkwizard.module.Identifications.Externs.ExternsVector;\r
a13899c5 46\r
47/**\r
48 The class is used to create, update DataHub of MSA/MBD file \r
49 It extends IInternalFrame\r
50 \r
51\r
52\r
53 **/\r
54public class ModuleExterns extends IInternalFrame implements ItemListener {\r
55\r
56 ///\r
57 /// Define class Serial Version UID\r
58 ///\r
59 private static final long serialVersionUID = -7382008402932047191L;\r
60\r
61 //\r
62 //Define class members\r
63 //\r
64 private JPanel jContentPane = null;\r
65\r
66 private JLabel jLabelName = null;\r
67\r
68 private JComboBox jComboBoxType = null;\r
69\r
70 private JTextArea jTextAreaList = null;\r
71\r
72 private JComboBox jComboBoxList = null;\r
73\r
74 private JButton jButtonAdd = null;\r
75\r
76 private JButton jButtonRemove = null;\r
77\r
78 private JButton jButtonUpdate = null;\r
79\r
80 private JScrollPane jScrollPane = null;\r
81\r
82 private JScrollPane jScrollPaneList = null;\r
83\r
84 private JLabel jLabelPcdIsDriver = null;\r
85\r
86 private JComboBox jComboBoxPcdIsDriver = null;\r
87\r
88 private JLabel jLabelC_Name = null;\r
89\r
90 private JTextField jTextFieldC_Name = null;\r
91\r
92 private JLabel jLabelFeatureFlag = null;\r
93\r
94 private JLabel jLabelArch = null;\r
95\r
96 private JTextField jTextFieldFeatureFlag = null;\r
97\r
98 private ICheckBoxList iCheckBoxListArch = null;\r
99\r
100 private JScrollPane jScrollPaneArch = null;\r
101\r
102 //\r
103 // Not used by UI\r
104 //\r
105 private int intSelectedItemId = 0;\r
106\r
107 private OpeningModuleType omt = null;\r
108\r
109 private ModuleSurfaceArea msa = null;\r
110\r
111 private ExternsDocument.Externs externs = null;\r
112\r
113 private ExternsIdentification id = null;\r
114\r
115 private ExternsVector vid = new ExternsVector();\r
116\r
117 private EnumerationData ed = new EnumerationData();\r
118\r
119 /**\r
120 This method initializes jComboBoxType \r
121 \r
122 @return javax.swing.JComboBox jComboBoxType\r
123 \r
124 **/\r
125 private JComboBox getJComboBoxType() {\r
126 if (jComboBoxType == null) {\r
127 jComboBoxType = new JComboBox();\r
128 jComboBoxType.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
129 jComboBoxType.setPreferredSize(new java.awt.Dimension(320, 20));\r
130 }\r
131 return jComboBoxType;\r
132 }\r
133\r
134 /**\r
135 This method initializes jComboBoxFileList \r
136 \r
137 @return javax.swing.JComboBox jComboBoxFileList\r
138 \r
139 **/\r
140 private JComboBox getJComboBoxList() {\r
141 if (jComboBoxList == null) {\r
142 jComboBoxList = new JComboBox();\r
143 jComboBoxList.setBounds(new java.awt.Rectangle(15, 195, 210, 20));\r
144 jComboBoxList.addItemListener(this);\r
145 jComboBoxList.addActionListener(this);\r
146 jComboBoxList.setPreferredSize(new java.awt.Dimension(210, 20));\r
147 }\r
148 return jComboBoxList;\r
149 }\r
150\r
151 /**\r
152 This method initializes jButtonAdd \r
153 \r
154 @return javax.swing.JButton jButtonAdd\r
155 \r
156 **/\r
157 private JButton getJButtonAdd() {\r
158 if (jButtonAdd == null) {\r
159 jButtonAdd = new JButton();\r
160 jButtonAdd.setBounds(new java.awt.Rectangle(230, 195, 80, 20));\r
161 jButtonAdd.setText("Add");\r
162 jButtonAdd.addActionListener(this);\r
163 jButtonAdd.setPreferredSize(new java.awt.Dimension(80, 20));\r
164 }\r
165 return jButtonAdd;\r
166 }\r
167\r
168 /**\r
169 This method initializes jButtonRemove \r
170 \r
171 @return javax.swing.JButton jButtonRemove\r
172 \r
173 **/\r
174 private JButton getJButtonRemove() {\r
175 if (jButtonRemove == null) {\r
176 jButtonRemove = new JButton();\r
177 jButtonRemove.setBounds(new java.awt.Rectangle(400, 195, 80, 20));\r
178 jButtonRemove.setText("Remove");\r
179 jButtonRemove.addActionListener(this);\r
180 jButtonRemove.setPreferredSize(new java.awt.Dimension(80, 20));\r
181 }\r
182 return jButtonRemove;\r
183 }\r
184\r
185 /**\r
186 This method initializes jButtonUpdate \r
187 \r
188 @return javax.swing.JButton jButtonUpdate\r
189 \r
190 **/\r
191 private JButton getJButtonUpdate() {\r
192 if (jButtonUpdate == null) {\r
193 jButtonUpdate = new JButton();\r
194 jButtonUpdate.setBounds(new java.awt.Rectangle(315, 195, 80, 20));\r
195 jButtonUpdate.setPreferredSize(new java.awt.Dimension(80, 20));\r
196 jButtonUpdate.setText("Update");\r
197 jButtonUpdate.addActionListener(this);\r
198 }\r
199 return jButtonUpdate;\r
200 }\r
201\r
202 /**\r
203 * This method initializes jScrollPaneFileList \r
204 * \r
205 * @return javax.swing.JScrollPane \r
206 */\r
207 private JScrollPane getJScrollPaneList() {\r
208 if (jScrollPaneList == null) {\r
209 jScrollPaneList = new JScrollPane();\r
210 jScrollPaneList.setBounds(new java.awt.Rectangle(15, 220, 465, 240));\r
211 jScrollPaneList.setViewportView(getJTextAreaList());\r
212 jScrollPaneList.setPreferredSize(new java.awt.Dimension(465, 240));\r
213 }\r
214 return jScrollPaneList;\r
215 }\r
216\r
217 /**\r
218 This method initializes jScrollPane \r
219 \r
220 @return javax.swing.JScrollPane \r
221 */\r
222 private JScrollPane getJScrollPane() {\r
223 if (jScrollPane == null) {\r
224 jScrollPane = new JScrollPane();\r
225 jScrollPane.setViewportView(getJContentPane());\r
226 }\r
227 return jScrollPane;\r
228 }\r
229\r
230 /**\r
231 * This method initializes jTextAreaFileList \r
232 * \r
233 * @return javax.swing.JTextArea \r
234 */\r
235 private JTextArea getJTextAreaList() {\r
236 if (jTextAreaList == null) {\r
237 jTextAreaList = new JTextArea();\r
238 jTextAreaList.setEditable(false);\r
239 }\r
240 return jTextAreaList;\r
241 }\r
242\r
243 /**\r
244 * This method initializes jComboBoxPcdIsDriver \r
245 * \r
246 * @return javax.swing.JComboBox \r
247 */\r
248 private JComboBox getJComboBoxPcdIsDriver() {\r
249 if (jComboBoxPcdIsDriver == null) {\r
250 jComboBoxPcdIsDriver = new JComboBox();\r
251 jComboBoxPcdIsDriver.setLocation(new java.awt.Point(160, 10));\r
252 jComboBoxPcdIsDriver.setPreferredSize(new java.awt.Dimension(320, 20));\r
253 jComboBoxPcdIsDriver.setSize(new java.awt.Dimension(320, 20));\r
254 jComboBoxPcdIsDriver.addItemListener(this);\r
255 }\r
256 return jComboBoxPcdIsDriver;\r
257 }\r
258\r
259 /**\r
260 This method initializes jTextFieldC_Name \r
261 \r
262 @return javax.swing.JTextField \r
263 \r
264 **/\r
265 private JTextField getJTextFieldC_Name() {\r
266 if (jTextFieldC_Name == null) {\r
267 jTextFieldC_Name = new JTextField();\r
268 jTextFieldC_Name.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
269 jTextFieldC_Name.setPreferredSize(new java.awt.Dimension(320,20));\r
270 }\r
271 return jTextFieldC_Name;\r
272 }\r
273\r
274 /**\r
275 This method initializes jTextFieldFeatureFlag \r
276 \r
277 @return javax.swing.JTextField \r
278 \r
279 **/\r
280 private JTextField getJTextFieldFeatureFlag() {\r
281 if (jTextFieldFeatureFlag == null) {\r
282 jTextFieldFeatureFlag = new JTextField();\r
283 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
284 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
285 }\r
286 return jTextFieldFeatureFlag;\r
287 }\r
288\r
289 /**\r
290 This method initializes iCheckBoxListArch \r
291\r
292 @return ICheckBoxList \r
293 **/\r
294 private ICheckBoxList getICheckBoxListSupportedArchitectures() {\r
295 if (iCheckBoxListArch == null) {\r
296 iCheckBoxListArch = new ICheckBoxList();\r
297 iCheckBoxListArch.addFocusListener(this);\r
298 iCheckBoxListArch.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);\r
299 }\r
300 return iCheckBoxListArch;\r
301 }\r
302\r
303 /**\r
304 This method initializes jScrollPaneArch \r
305\r
306 @return javax.swing.JScrollPane \r
307\r
308 **/\r
309 private JScrollPane getJScrollPaneArch() {\r
310 if (jScrollPaneArch == null) {\r
311 jScrollPaneArch = new JScrollPane();\r
312 jScrollPaneArch.setBounds(new java.awt.Rectangle(160, 110, 320, 80));\r
313 jScrollPaneArch.setPreferredSize(new java.awt.Dimension(320, 80));\r
314 jScrollPaneArch.setViewportView(getICheckBoxListSupportedArchitectures());\r
315 }\r
316 return jScrollPaneArch;\r
317 }\r
318\r
319 public static void main(String[] args) {\r
320\r
321 }\r
322\r
323 /**\r
324 This method initializes this\r
325 \r
326 **/\r
327 private void init() {\r
328 this.setSize(500, 515);\r
329 this.setContentPane(getJScrollPane());\r
330 this.setTitle("Externs");\r
331 initFrame();\r
332 }\r
333\r
334 /**\r
335 This method initializes this\r
336 Fill values to all fields if these values are not empty\r
337 \r
338 @param inPackageDependencies\r
339\r
340 **/\r
341 private void init(Externs inExterns) {\r
342 init();\r
343 this.externs = inExterns;\r
344\r
345 if (this.externs != null) {\r
346 //\r
347 // Get PcdIsDriver\r
348 //\r
349 if (this.externs.getPcdIsDriver() != null) {\r
350 this.jComboBoxPcdIsDriver.setSelectedItem(this.externs.getPcdIsDriver().toString());\r
351 }\r
352 \r
353 //\r
354 // Get specification\r
355 //\r
356 if (this.externs.getSpecificationList().size() > 0) {\r
357 for (int index = 0; index < this.externs.getSpecificationList().size(); index++) {\r
358 String arg0 = externs.getSpecificationList().get(index);\r
359 String arg1 = EnumerationData.EXTERNS_SPECIFICATION;\r
360\r
361 id = new ExternsIdentification(arg0, arg1, null, null);\r
362 vid.addExterns(id);\r
363 }\r
364 }\r
365\r
366 //\r
367 // Get Externs list\r
368 //\r
369 if (this.externs.getExternList().size() > 0) {\r
370 for (int index = 0; index < this.externs.getExternList().size(); index++) {\r
371 String arg0 = null;\r
372 String arg1 = null;\r
373 if (this.externs.getExternList().get(index).getModuleEntryPoint() != null) {\r
374 arg0 = this.externs.getExternList().get(index).getModuleEntryPoint();\r
375 arg1 = EnumerationData.EXTERNS_MODULE_ENTRY_POINT;\r
376 }\r
377 if (this.externs.getExternList().get(index).getModuleUnloadImage() != null) {\r
378 arg0 = this.externs.getExternList().get(index).getModuleUnloadImage();\r
379 arg1 = EnumerationData.EXTERNS_MODULE_UNLOAD_IMAGE;\r
380 }\r
381\r
382 if (this.externs.getExternList().get(index).getConstructor() != null) {\r
383 arg0 = this.externs.getExternList().get(index).getConstructor();\r
384 arg1 = EnumerationData.EXTERNS_CONSTRUCTOR;\r
385 }\r
386 if (this.externs.getExternList().get(index).getDestructor() != null) {\r
387 arg0 = this.externs.getExternList().get(index).getDestructor();\r
388 arg1 = EnumerationData.EXTERNS_DESTRUCTOR;\r
389 }\r
390\r
391 if (this.externs.getExternList().get(index).getDriverBinding() != null) {\r
392 arg0 = this.externs.getExternList().get(index).getDriverBinding();\r
393 arg1 = EnumerationData.EXTERNS_DRIVER_BINDING;\r
394 }\r
395 if (this.externs.getExternList().get(index).getComponentName() != null) {\r
396 arg0 = this.externs.getExternList().get(index).getComponentName();\r
397 arg1 = EnumerationData.EXTERNS_COMPONENT_NAME;\r
398 }\r
399 if (this.externs.getExternList().get(index).getDriverConfig() != null) {\r
400 arg0 = this.externs.getExternList().get(index).getDriverConfig();\r
401 arg1 = EnumerationData.EXTERNS_DRIVER_CONFIG;\r
402 }\r
403 if (this.externs.getExternList().get(index).getDriverDiag() != null) {\r
404 arg0 = this.externs.getExternList().get(index).getDriverDiag();\r
405 arg1 = EnumerationData.EXTERNS_DRIVER_DIAG;\r
406 }\r
407\r
408 if (this.externs.getExternList().get(index).getSetVirtualAddressMapCallBack() != null) {\r
409 arg0 = this.externs.getExternList().get(index).getSetVirtualAddressMapCallBack();\r
410 arg1 = EnumerationData.EXTERNS_SET_VIRTUAL_ADDRESS_MAP_CALL_BACK;\r
411 }\r
412 if (this.externs.getExternList().get(index).getExitBootServicesCallBack() != null) {\r
413 arg0 = this.externs.getExternList().get(index).getExitBootServicesCallBack();\r
414 arg1 = EnumerationData.EXTERNS_EXIT_BOOT_SERVICES_CALL_BACK;\r
415 }\r
416\r
417 String arg2 = externs.getExternList().get(index).getFeatureFlag();\r
418 Vector<String> arg3 = Tools\r
419 .convertListToVector(externs.getExternList().get(index).getSupArchList());\r
420\r
421 id = new ExternsIdentification(arg0, arg1, arg2, arg3);\r
422 vid.addExterns(id);\r
423 }\r
424 }\r
425 }\r
426 //\r
427 // Update the list\r
428 //\r
429 Tools.generateComboBoxByVector(jComboBoxList, vid.getExternsName());\r
430 reloadListArea();\r
431 }\r
432\r
433 /**\r
434 This is the default constructor\r
435 \r
436 **/\r
437 public ModuleExterns() {\r
438 super();\r
439 init();\r
440 this.setVisible(true);\r
441 }\r
442\r
443 /**\r
444 This is the override edit constructor\r
445 \r
446 @param inExterns The input data of ExternsDocument.Externs\r
447 \r
448 **/\r
449 public ModuleExterns(OpeningModuleType inOmt) {\r
450 super();\r
451 this.omt = inOmt;\r
452 this.msa = omt.getXmlMsa();\r
453 init(msa.getExterns());\r
454 this.setVisible(true);\r
455 }\r
456\r
457 /**\r
458 This method initializes jContentPane\r
459 \r
460 @return javax.swing.JPanel jContentPane\r
461 \r
462 **/\r
463 private JPanel getJContentPane() {\r
464 if (jContentPane == null) {\r
465 jLabelC_Name = new JLabel();\r
466 jLabelC_Name.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
467 jLabelC_Name.setText("Value");\r
468 jLabelPcdIsDriver = new JLabel();\r
469 jLabelPcdIsDriver.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
470 jLabelPcdIsDriver.setText("Pcd Is Driver");\r
471 jLabelName = new JLabel();\r
472 jLabelName.setText("Choose Type");\r
473 jLabelName.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
474 jLabelArch = new JLabel();\r
475 jLabelArch.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
476 jLabelArch.setText("Arch");\r
477 jLabelFeatureFlag = new JLabel();\r
478 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
479 jLabelFeatureFlag.setText("Feature Flag");\r
480\r
481 jContentPane = new JPanel();\r
482 jContentPane.setLayout(null);\r
483 jContentPane.setPreferredSize(new java.awt.Dimension(490, 475));\r
484\r
485 jContentPane.add(jLabelName, null);\r
486 jContentPane.add(getJComboBoxType(), null);\r
487 jContentPane.add(jLabelFeatureFlag, null);\r
488 jContentPane.add(jLabelArch, null);\r
489 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
490 jContentPane.add(getJScrollPaneArch(), null);\r
491 \r
492 jContentPane.add(getJComboBoxList(), null);\r
493 jContentPane.add(getJButtonAdd(), null);\r
494 jContentPane.add(getJButtonRemove(), null);\r
495 jContentPane.add(getJButtonUpdate(), null);\r
496 jContentPane.add(getJScrollPaneList(), null);\r
497 jContentPane.add(jLabelPcdIsDriver, null);\r
498 jContentPane.add(getJComboBoxPcdIsDriver(), null);\r
499 jContentPane.add(jLabelC_Name, null);\r
500 jContentPane.add(getJTextFieldC_Name(), null);\r
501 }\r
502 return jContentPane;\r
503 }\r
504\r
505 /**\r
506 This method initializes Usage type and Externs type\r
507 \r
508 **/\r
509 private void initFrame() {\r
510 Tools.generateComboBoxByVector(this.jComboBoxType, ed.getVExternTypes());\r
511 Tools.generateComboBoxByVector(this.jComboBoxPcdIsDriver, ed.getVPcdDriverTypes());\r
512 this.iCheckBoxListArch.setAllItems(ed.getVSupportedArchitectures());\r
513 }\r
514\r
515 /* (non-Javadoc)\r
516 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
517 *\r
518 * Override actionPerformed to listen all actions\r
519 * \r
520 */\r
521 public void actionPerformed(ActionEvent arg0) {\r
522 if (arg0.getSource() == jButtonAdd) {\r
523 if (!checkAdd()) {\r
524 return;\r
525 }\r
526 addToList();\r
527 }\r
528 if (arg0.getSource() == jButtonRemove) {\r
529 removeFromList();\r
530 }\r
531 if (arg0.getSource() == jButtonUpdate) {\r
532 if (!checkAdd()) {\r
533 return;\r
534 }\r
535 updateForList();\r
536 }\r
537 }\r
538\r
539 /**\r
540 Data validation for all fields\r
541 \r
542 @retval true - All datas are valid\r
543 @retval false - At least one data is invalid\r
544 \r
545 **/\r
546 public boolean checkAdd() {\r
547 //\r
548 // Check if all fields have correct data types \r
549 //\r
550\r
551 //\r
552 // Check CName \r
553 //\r
554 if (isEmpty(this.jTextFieldC_Name.getText())) {\r
555 Log.err("Value couldn't be empty");\r
556 return false;\r
557 }\r
558\r
559 if (!isEmpty(this.jTextFieldC_Name.getText())) {\r
560 if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_SPECIFICATION)) {\r
561 if (!DataValidation.isSentence(this.jTextFieldC_Name.getText())) {\r
562 Log.err("Incorrect data type for Specification");\r
563 return false;\r
564 } \r
565 } else {\r
566 if (!DataValidation.isC_NameType(this.jTextFieldC_Name.getText())) {\r
567 Log.err("Incorrect data type for C_Name");\r
568 return false;\r
569 } \r
570 }\r
571 }\r
572\r
573 //\r
574 // Check FeatureFlag\r
575 //\r
576 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
577 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
578 Log.err("Incorrect data type for Feature Flag");\r
579 return false;\r
580 }\r
581 }\r
582\r
583 return true;\r
584 }\r
585\r
586 /**\r
587 Save all components of Externs\r
588 if exists externs, set the value directly\r
589 if not exists externs, new an instance first\r
590 \r
591 **/\r
592 public void save() {\r
593 try {\r
594 int count = this.vid.size();\r
595\r
596 this.externs = Externs.Factory.newInstance();\r
597 //\r
598 // Save PcdIsDriver first\r
599 //\r
600 if (!this.jComboBoxPcdIsDriver.getSelectedItem().toString().equals(DataType.EMPTY_SELECT_ITEM)) {\r
601 externs.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getSelectedItem()\r
602 .toString()));\r
603 }\r
604\r
605 if (count > 0) {\r
606 for (int index = 0; index < count; index++) {\r
607 //\r
608 // Save specfication\r
609 //\r
610 if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_SPECIFICATION)) {\r
611 if (!isEmpty(vid.getExterns(index).getName())) {\r
612 this.externs.addNewSpecification();\r
613 this.externs.setSpecificationArray(externs.getSpecificationList().size() - 1,\r
614 vid.getExterns(index).getName());\r
615 }\r
616 } else {\r
617 //\r
618 // Save extern\r
619 //\r
620 Extern e = Extern.Factory.newInstance();\r
621\r
622 if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_MODULE_ENTRY_POINT)) {\r
623 if (!isEmpty(vid.getExterns(index).getName())) {\r
624 e.setModuleEntryPoint(vid.getExterns(index).getName());\r
625 }\r
626 }\r
627 if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_MODULE_UNLOAD_IMAGE)) {\r
628 if (!isEmpty(vid.getExterns(index).getName())) {\r
629 e.setModuleUnloadImage(vid.getExterns(index).getName());\r
630 }\r
631 }\r
632\r
633 if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_CONSTRUCTOR)) {\r
634 if (!isEmpty(vid.getExterns(index).getName())) {\r
635 e.setConstructor(vid.getExterns(index).getName());\r
636 }\r
637 }\r
638 if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_DESTRUCTOR)) {\r
639 if (!isEmpty(vid.getExterns(index).getName())) {\r
640 e.setDestructor(vid.getExterns(index).getName());\r
641 }\r
642 }\r
643\r
644 if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_DRIVER_BINDING)) {\r
645 if (!isEmpty(vid.getExterns(index).getName())) {\r
646 e.setDriverBinding(vid.getExterns(index).getName());\r
647 }\r
648 }\r
649 if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_COMPONENT_NAME)) {\r
650 if (!isEmpty(vid.getExterns(index).getName())) {\r
651 e.setComponentName(vid.getExterns(index).getName());\r
652 }\r
653 }\r
654 if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_DRIVER_CONFIG)) {\r
655 if (!isEmpty(vid.getExterns(index).getName())) {\r
656 e.setDriverConfig(vid.getExterns(index).getName());\r
657 }\r
658 }\r
659 if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_DRIVER_DIAG)) {\r
660 if (!isEmpty(vid.getExterns(index).getName())) {\r
661 e.setDriverDiag(vid.getExterns(index).getName());\r
662 }\r
663 }\r
664\r
665 if (vid.getExterns(index).getType()\r
666 .equals(EnumerationData.EXTERNS_SET_VIRTUAL_ADDRESS_MAP_CALL_BACK)) {\r
667 if (!isEmpty(vid.getExterns(index).getName())) {\r
668 e.setSetVirtualAddressMapCallBack(vid.getExterns(index).getName());\r
669 }\r
670 }\r
671 if (vid.getExterns(index).getType()\r
672 .equals(EnumerationData.EXTERNS_EXIT_BOOT_SERVICES_CALL_BACK)) {\r
673 if (!isEmpty(vid.getExterns(index).getName())) {\r
674 e.setExitBootServicesCallBack(vid.getExterns(index).getName());\r
675 }\r
676 }\r
677\r
678 if (!isEmpty(vid.getExterns(index).getFeatureFlag())) {\r
679 e.setFeatureFlag(vid.getExterns(index).getFeatureFlag());\r
680 }\r
681 if (vid.getExterns(index).getSupArchList() != null\r
682 && vid.getExterns(index).getSupArchList().size() > 0) {\r
683 e.setSupArchList(vid.getExterns(index).getSupArchList());\r
684 }\r
685\r
686 this.externs.addNewExtern();\r
687 this.externs.setExternArray(this.externs.getExternList().size() - 1, e);\r
688 }\r
689 }\r
690 }\r
691\r
692 this.msa.setExterns(externs);\r
693 this.omt.setSaved(false);\r
694 } catch (Exception e) {\r
695 Log.err("Update Externs", e.getMessage());\r
696 }\r
697 }\r
698\r
699 /* (non-Javadoc)\r
700 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)\r
701 * \r
702 * Override componentResized to resize all components when frame's size is changed\r
703 */\r
704 public void componentResized(ComponentEvent arg0) {\r
705 int intCurrentWidth = this.getJContentPane().getWidth();\r
706 int intCurrentHeight = this.getJContentPane().getHeight();\r
707 int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
708 int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
709\r
710 resizeComponentWidth(this.jComboBoxPcdIsDriver, intCurrentWidth, intPreferredWidth);\r
711 resizeComponentWidth(this.jComboBoxType, intCurrentWidth, intPreferredWidth);\r
712 resizeComponentWidth(this.jTextFieldC_Name, intCurrentWidth, intPreferredWidth);\r
713 resizeComponentWidth(this.jTextFieldFeatureFlag, intCurrentWidth, intPreferredWidth);\r
714 resizeComponentWidth(this.jScrollPaneArch, intCurrentWidth, intPreferredWidth);\r
715\r
716 resizeComponentWidth(jComboBoxList, intCurrentWidth, intPreferredWidth);\r
717 resizeComponent(jScrollPaneList, intCurrentWidth, intCurrentHeight, intPreferredWidth, intPreferredHeight);\r
718\r
719 relocateComponentX(jButtonAdd, intCurrentWidth, intPreferredWidth, DataType.SPACE_TO_RIGHT_FOR_ADD_BUTTON);\r
720 relocateComponentX(jButtonRemove, intCurrentWidth, intPreferredWidth, DataType.SPACE_TO_RIGHT_FOR_REMOVE_BUTTON);\r
721 relocateComponentX(jButtonUpdate, intCurrentWidth, intPreferredWidth, DataType.SPACE_TO_RIGHT_FOR_UPDATE_BUTTON);\r
722 }\r
723\r
724 private ExternsIdentification getCurrentExterns() {\r
725 String arg0 = this.jTextFieldC_Name.getText();\r
726 String arg1 = this.jComboBoxType.getSelectedItem().toString();\r
727\r
728 String arg2 = this.jTextFieldFeatureFlag.getText();\r
729 Vector<String> arg3 = this.iCheckBoxListArch.getAllCheckedItemsString();\r
730\r
731 id = new ExternsIdentification(arg0, arg1, arg2, arg3);\r
732 return id;\r
733 }\r
734\r
735 /**\r
736 Add current item to Vector\r
737 \r
738 **/\r
739 private void addToList() {\r
740 intSelectedItemId = vid.size();\r
741\r
742 vid.addExterns(getCurrentExterns());\r
743\r
744 jComboBoxList.addItem(id.getName());\r
745 jComboBoxList.setSelectedItem(id.getName());\r
746\r
747 //\r
748 // Reset select item index\r
749 //\r
750 intSelectedItemId = vid.size();\r
751\r
752 //\r
753 // Reload all fields of selected item\r
754 //\r
755 reloadFromList();\r
756\r
757 // \r
758 // Save to memory\r
759 //\r
760 save();\r
761 }\r
762\r
763 /**\r
764 Remove current item from Vector\r
765 \r
766 **/\r
767 private void removeFromList() {\r
768 //\r
769 // Check if exist items\r
770 //\r
771 if (this.vid.size() < 1) {\r
772 return;\r
773 }\r
774\r
775 int intTempIndex = intSelectedItemId;\r
776\r
777 jComboBoxList.removeItemAt(intSelectedItemId);\r
778\r
779 vid.removeExterns(intTempIndex);\r
780\r
781 //\r
782 // Reload all fields of selected item\r
783 //\r
784 reloadFromList();\r
785\r
786 // \r
787 // Save to memory\r
788 //\r
789 save();\r
790 }\r
791\r
792 /**\r
793 Update current item of Vector\r
794 \r
795 **/\r
796 private void updateForList() {\r
797 //\r
798 // Check if exist items\r
799 //\r
800 if (this.vid.size() < 1) {\r
801 return;\r
802 }\r
803\r
804 //\r
805 // Backup selected item index\r
806 //\r
807 int intTempIndex = intSelectedItemId;\r
808\r
809 vid.updateExterns(getCurrentExterns(), intTempIndex);\r
810\r
811 jComboBoxList.removeAllItems();\r
812 for (int index = 0; index < vid.size(); index++) {\r
813 jComboBoxList.addItem(vid.getExterns(index).getName());\r
814 }\r
815\r
816 //\r
817 // Restore selected item index\r
818 //\r
819 intSelectedItemId = intTempIndex;\r
820\r
821 //\r
822 // Reset select item index\r
823 //\r
824 jComboBoxList.setSelectedIndex(intSelectedItemId);\r
825\r
826 //\r
827 // Reload all fields of selected item\r
828 //\r
829 reloadFromList();\r
830\r
831 // \r
832 // Save to memory\r
833 //\r
834 save();\r
835 }\r
836\r
837 /**\r
838 Refresh all fields' values of selected item of Vector\r
839 \r
840 **/\r
841 private void reloadFromList() {\r
842 if (vid.size() > 0) {\r
843 //\r
844 // Get selected item index\r
845 //\r
846 intSelectedItemId = jComboBoxList.getSelectedIndex();\r
847\r
848 this.jTextFieldC_Name.setText(vid.getExterns(intSelectedItemId).getName());\r
849 this.jComboBoxType.setSelectedItem(vid.getExterns(intSelectedItemId).getType());\r
850\r
851 jTextFieldFeatureFlag.setText(vid.getExterns(intSelectedItemId).getFeatureFlag());\r
852 iCheckBoxListArch.setAllItemsUnchecked();\r
853 iCheckBoxListArch.initCheckedItem(true, vid.getExterns(intSelectedItemId).getSupArchList());\r
854\r
855 } else {\r
856 }\r
857\r
858 reloadListArea();\r
859 }\r
860\r
861 /**\r
862 Update list area pane via the elements of Vector\r
863 \r
864 **/\r
865 private void reloadListArea() {\r
866 String strListItem = "";\r
867 for (int index = 0; index < vid.size(); index++) {\r
868 strListItem = strListItem + vid.getExterns(index).getName() + DataType.UNIX_LINE_SEPARATOR;\r
869 }\r
870 this.jTextAreaList.setText(strListItem);\r
871 }\r
872\r
873 /* (non-Javadoc)\r
874 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)\r
875 *\r
876 * Reflesh the frame when selected item changed\r
877 * \r
878 */\r
879 public void itemStateChanged(ItemEvent arg0) {\r
880 if (arg0.getSource() == this.jComboBoxList && arg0.getStateChange() == ItemEvent.SELECTED) {\r
881 reloadFromList();\r
882 }\r
883 if (arg0.getSource() == this.jComboBoxPcdIsDriver && arg0.getStateChange() == ItemEvent.SELECTED && externs != null) {\r
884 String s = this.jComboBoxPcdIsDriver.getSelectedItem().toString();\r
885 if (s.equals(DataType.EMPTY_SELECT_ITEM)) {\r
886 this.externs.setPcdIsDriver(null);\r
887 } else {\r
888 this.externs.setPcdIsDriver(PcdDriverTypes.Enum.forString(s));\r
889 }\r
890 this.msa.setExterns(externs);\r
891 this.omt.setSaved(false);\r
892 }\r
893 }\r
894}\r