]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/ModuleEditor/src/org/tianocore/packaging/module/ui/ModuleExterns.java
Initial import.
[mirror_edk2.git] / Tools / Source / ModuleEditor / src / org / tianocore / packaging / module / ui / ModuleExterns.java
CommitLineData
878ddf1f 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.packaging.module.ui;\r
16\r
17import java.awt.event.ActionEvent;\r
18import java.awt.event.ItemEvent;\r
19import java.awt.event.ItemListener;\r
20\r
21import javax.swing.JButton;\r
22import javax.swing.JComboBox;\r
23import javax.swing.JLabel;\r
24import javax.swing.JPanel;\r
25import javax.swing.JTextField;\r
26\r
27import org.tianocore.ExternUsage;\r
28import org.tianocore.ExternsDocument;\r
29import org.tianocore.common.DataValidation;\r
30import org.tianocore.common.Log;\r
31import org.tianocore.packaging.common.ui.IComboBox;\r
32import org.tianocore.packaging.common.ui.IInternalFrame;\r
33\r
34/**\r
35 The class is used to create, update DataHub of MSA/MBD file \r
36 It extends IInternalFrame\r
37 \r
38 @since ModuleEditor 1.0\r
39\r
40 **/\r
41public class ModuleExterns extends IInternalFrame implements ItemListener {\r
42\r
43 ///\r
44 /// Define class Serial Version UID\r
45 ///\r
46 private static final long serialVersionUID = -7382008402932047191L;\r
47\r
48 //\r
49 //Define class members\r
50 //\r
51 private ExternsDocument.Externs externs = null;\r
52\r
53 private int location = -1;\r
54\r
55 private JPanel jContentPane = null;\r
56\r
57 private JLabel jLabelName = null;\r
58\r
59 private JLabel jLabelUsage = null;\r
60\r
61 private JComboBox jComboBoxUsage = null;\r
62\r
63 private JButton jButtonOk = null;\r
64\r
65 private JButton jButtonCancel = null;\r
66\r
67 private JLabel jLabelOverrideID = null;\r
68\r
69 private JTextField jTextFieldOverrideID = null;\r
70\r
71 private JPanel jPanelType1 = null;\r
72\r
73 private JLabel jLabelModuleEntryPoint = null;\r
74\r
75 private JLabel jLabelModuleUnloadImage = null;\r
76\r
77 private IComboBox iComboBoxModuleEntryPoint = null;\r
78\r
79 private IComboBox iComboBoxModuleUnloadImage = null;\r
80\r
81 private JPanel jPanelType2 = null;\r
82\r
83 private JLabel jLabelConstructor = null;\r
84\r
85 private JTextField jTextFieldConstructor = null;\r
86\r
87 private JLabel jLabelDestructor = null;\r
88\r
89 private JTextField jTextFieldDestructor = null;\r
90\r
91 private JComboBox jComboBoxType = null;\r
92\r
93 private JPanel jPanelType3 = null;\r
94\r
95 private JLabel jLabelDriverBinding = null;\r
96\r
97 private JLabel jLabelComponentName = null;\r
98\r
99 private IComboBox iComboBoxComponentName = null;\r
100\r
101 private IComboBox iComboBoxDriverBinding = null;\r
102\r
103 private JLabel jLabelDriverConfig = null;\r
104\r
105 private JLabel jLabelDriverDiag = null;\r
106\r
107 private IComboBox iComboBoxDriverDiag = null;\r
108\r
109 private IComboBox iComboBoxDriverConfig = null;\r
110\r
111 private JPanel jPanelType4 = null;\r
112\r
113 private JLabel jLabelSetVirtualAddressMapCallBack = null;\r
114\r
115 private IComboBox iComboBoxSetVirtualAddressMapCallBack = null;\r
116\r
117 private JLabel jLabelExitBootServicesCallBack = null;\r
118\r
119 private IComboBox iComboBoxExitBootServicesCallBack = null;\r
120\r
121 private JPanel jPanelType5 = null;\r
122\r
123 private JLabel jLabelUserDefined = null;\r
124\r
125 private IComboBox iComboBoxUserDefined = null;\r
126\r
127 /**\r
128 This method initializes jComboBoxUsage \r
129 \r
130 @return javax.swing.JComboBox jComboBoxUsage\r
131 \r
132 **/\r
133 private JComboBox getJComboBoxUsage() {\r
134 if (jComboBoxUsage == null) {\r
135 jComboBoxUsage = new JComboBox();\r
136 jComboBoxUsage.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
137 }\r
138 return jComboBoxUsage;\r
139 }\r
140\r
141 /**\r
142 This method initializes jButtonOk \r
143 \r
144 @return javax.swing.JButton jButtonOk\r
145 \r
146 **/\r
147 private JButton getJButtonOk() {\r
148 if (jButtonOk == null) {\r
149 jButtonOk = new JButton();\r
150 jButtonOk.setText("OK");\r
151 jButtonOk.setLocation(new java.awt.Point(290, 215));\r
152 jButtonOk.setSize(new java.awt.Dimension(90, 20));\r
153 jButtonOk.addActionListener(this);\r
154 }\r
155 return jButtonOk;\r
156 }\r
157\r
158 /**\r
159 This method initializes jButtonCancel \r
160 \r
161 @return javax.swing.JButton jButtonCancel\r
162 \r
163 **/\r
164 private JButton getJButtonCancel() {\r
165 if (jButtonCancel == null) {\r
166 jButtonCancel = new JButton();\r
167 jButtonCancel.setText("Cancel");\r
168 jButtonCancel.setLocation(new java.awt.Point(390, 215));\r
169 jButtonCancel.setSize(new java.awt.Dimension(90, 20));\r
170 jButtonCancel.addActionListener(this);\r
171 }\r
172 return jButtonCancel;\r
173 }\r
174\r
175 /**\r
176 This method initializes jTextFieldOverrideID \r
177 \r
178 @return javax.swing.JTextField jTextFieldOverrideID\r
179 \r
180 **/\r
181 private JTextField getJTextFieldOverrideID() {\r
182 if (jTextFieldOverrideID == null) {\r
183 jTextFieldOverrideID = new JTextField();\r
184 jTextFieldOverrideID.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
185 }\r
186 return jTextFieldOverrideID;\r
187 }\r
188\r
189 /**\r
190 This method initializes jPanelType1 \r
191 \r
192 @return javax.swing.JPanel jPanelType1\r
193 \r
194 **/\r
195 private JPanel getJPanelType1() {\r
196 if (jPanelType1 == null) {\r
197 jLabelModuleUnloadImage = new JLabel();\r
198 jLabelModuleUnloadImage.setBounds(new java.awt.Rectangle(15, 30, 140, 20));\r
199 jLabelModuleUnloadImage.setText("Module Unload Image");\r
200 jLabelModuleEntryPoint = new JLabel();\r
201 jLabelModuleEntryPoint.setBounds(new java.awt.Rectangle(15, 5, 140, 20));\r
202 jLabelModuleEntryPoint.setText("Module Entry Point");\r
203 jPanelType1 = new JPanel();\r
204 jPanelType1.setLayout(null);\r
205 jPanelType1.setBounds(new java.awt.Rectangle(0, 105, 490, 55));\r
206 jPanelType1.add(jLabelModuleEntryPoint, null);\r
207 jPanelType1.add(jLabelModuleUnloadImage, null);\r
208 jPanelType1.add(getIComboBoxModuleUnloadImage(), null);\r
209 jPanelType1.add(getIComboBoxModuleEntryPoint(), null);\r
210 }\r
211 return jPanelType1;\r
212 }\r
213\r
214 /**\r
215 This method initializes jComboBoxModuleEntryPoint \r
216 \r
217 @return javax.swing.JComboBox iComboBoxModuleEntryPoint\r
218 \r
219 **/\r
220 private IComboBox getIComboBoxModuleEntryPoint() {\r
221 if (iComboBoxModuleEntryPoint == null) {\r
222 iComboBoxModuleEntryPoint = new IComboBox();\r
223 iComboBoxModuleEntryPoint.setBounds(new java.awt.Rectangle(160, 5, 320, 20));\r
224 }\r
225 return iComboBoxModuleEntryPoint;\r
226 }\r
227\r
228 /**\r
229 This method initializes jComboBoxModuleUnloadImage \r
230 \r
231 @return javax.swing.JComboBox iComboBoxModuleUnloadImage\r
232 \r
233 **/\r
234 private IComboBox getIComboBoxModuleUnloadImage() {\r
235 if (iComboBoxModuleUnloadImage == null) {\r
236 iComboBoxModuleUnloadImage = new IComboBox();\r
237 iComboBoxModuleUnloadImage.setBounds(new java.awt.Rectangle(160, 30, 320, 20));\r
238 }\r
239 return iComboBoxModuleUnloadImage;\r
240 }\r
241\r
242 /**\r
243 This method initializes jPanelType2 \r
244 \r
245 @return javax.swing.JPanel jPanelType2\r
246 \r
247 **/\r
248 private JPanel getJPanelType2() {\r
249 if (jPanelType2 == null) {\r
250 jLabelDestructor = new JLabel();\r
251 jLabelDestructor.setBounds(new java.awt.Rectangle(15, 30, 140, 20));\r
252 jLabelDestructor.setText("Destructor");\r
253 jLabelConstructor = new JLabel();\r
254 jLabelConstructor.setBounds(new java.awt.Rectangle(15, 5, 140, 20));\r
255 jLabelConstructor.setText("Constructor");\r
256 jPanelType2 = new JPanel();\r
257 jPanelType2.setLayout(null);\r
258 jPanelType2.setBounds(new java.awt.Rectangle(0, 105, 490, 55));\r
259 jPanelType2.add(jLabelConstructor, null);\r
260 jPanelType2.add(getJTextFieldConstructor(), null);\r
261 jPanelType2.add(jLabelDestructor, null);\r
262 jPanelType2.add(getJTextFieldDestructor(), null);\r
263 }\r
264 return jPanelType2;\r
265 }\r
266\r
267 /**\r
268 This method initializes jTextFieldConstructor \r
269 \r
270 @return javax.swing.JTextField jTextFieldConstructor\r
271 \r
272 **/\r
273 private JTextField getJTextFieldConstructor() {\r
274 if (jTextFieldConstructor == null) {\r
275 jTextFieldConstructor = new JTextField();\r
276 jTextFieldConstructor.setBounds(new java.awt.Rectangle(160, 5, 320, 20));\r
277 }\r
278 return jTextFieldConstructor;\r
279 }\r
280\r
281 /**\r
282 This method initializes jTextFieldDestructor \r
283 \r
284 @return javax.swing.JTextField jTextFieldDestructor\r
285 \r
286 **/\r
287 private JTextField getJTextFieldDestructor() {\r
288 if (jTextFieldDestructor == null) {\r
289 jTextFieldDestructor = new JTextField();\r
290 jTextFieldDestructor.setBounds(new java.awt.Rectangle(160, 30, 320, 20));\r
291 }\r
292 return jTextFieldDestructor;\r
293 }\r
294\r
295 /**\r
296 This method initializes jComboBoxType \r
297 \r
298 @return javax.swing.JComboBox jComboBoxType\r
299 \r
300 **/\r
301 private JComboBox getJComboBoxType() {\r
302 if (jComboBoxType == null) {\r
303 jComboBoxType = new JComboBox();\r
304 jComboBoxType.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
305 jComboBoxType.addItemListener(this);\r
306 }\r
307 return jComboBoxType;\r
308 }\r
309\r
310 /**\r
311 This method initializes jPanelType3 \r
312 \r
313 @return javax.swing.JPanel jPanelType3\r
314 \r
315 **/\r
316 private JPanel getJPanelType3() {\r
317 if (jPanelType3 == null) {\r
318 jLabelDriverDiag = new JLabel();\r
319 jLabelDriverDiag.setBounds(new java.awt.Rectangle(15, 80, 140, 20));\r
320 jLabelDriverDiag.setText("Driver Diag");\r
321 jLabelDriverConfig = new JLabel();\r
322 jLabelDriverConfig.setBounds(new java.awt.Rectangle(15, 55, 140, 20));\r
323 jLabelDriverConfig.setText("Driver Config");\r
324 jLabelComponentName = new JLabel();\r
325 jLabelComponentName.setBounds(new java.awt.Rectangle(15, 30, 140, 20));\r
326 jLabelComponentName.setText("Component Name");\r
327 jLabelDriverBinding = new JLabel();\r
328 jLabelDriverBinding.setBounds(new java.awt.Rectangle(15, 5, 140, 20));\r
329 jLabelDriverBinding.setText("Driver Binding");\r
330 jPanelType3 = new JPanel();\r
331 jPanelType3.setLayout(null);\r
332 jPanelType3.setBounds(new java.awt.Rectangle(0, 105, 490, 105));\r
333 jPanelType3.add(jLabelDriverBinding, null);\r
334 jPanelType3.add(jLabelComponentName, null);\r
335 jPanelType3.add(getIComboBoxComponentName(), null);\r
336 jPanelType3.add(getIComboBoxDriverBinding(), null);\r
337 jPanelType3.add(jLabelDriverConfig, null);\r
338 jPanelType3.add(jLabelDriverDiag, null);\r
339 jPanelType3.add(getIComboBoxDriverDiag(), null);\r
340 jPanelType3.add(getIComboBoxDriverConfig(), null);\r
341 }\r
342 return jPanelType3;\r
343 }\r
344\r
345 /**\r
346 This method initializes jComboBoxComponentName \r
347 \r
348 @return javax.swing.JComboBox iComboBoxComponentName\r
349 \r
350 **/\r
351 private IComboBox getIComboBoxComponentName() {\r
352 if (iComboBoxComponentName == null) {\r
353 iComboBoxComponentName = new IComboBox();\r
354 iComboBoxComponentName.setBounds(new java.awt.Rectangle(160, 30, 320, 20));\r
355 }\r
356 return iComboBoxComponentName;\r
357 }\r
358\r
359 /**\r
360 This method initializes jComboBoxDriverBinding \r
361 \r
362 @return javax.swing.JComboBox iComboBoxDriverBinding\r
363 \r
364 **/\r
365 private IComboBox getIComboBoxDriverBinding() {\r
366 if (iComboBoxDriverBinding == null) {\r
367 iComboBoxDriverBinding = new IComboBox();\r
368 iComboBoxDriverBinding.setBounds(new java.awt.Rectangle(160, 5, 320, 20));\r
369 }\r
370 return iComboBoxDriverBinding;\r
371 }\r
372\r
373 /**\r
374 This method initializes jComboBoxDriverDiag \r
375 \r
376 @return javax.swing.JComboBox iComboBoxDriverDiag\r
377 \r
378 **/\r
379 private IComboBox getIComboBoxDriverDiag() {\r
380 if (iComboBoxDriverDiag == null) {\r
381 iComboBoxDriverDiag = new IComboBox();\r
382 iComboBoxDriverDiag.setBounds(new java.awt.Rectangle(160, 80, 320, 20));\r
383 }\r
384 return iComboBoxDriverDiag;\r
385 }\r
386\r
387 /**\r
388 This method initializes jComboBoxDriverConfig \r
389 \r
390 @return javax.swing.JComboBox iComboBoxDriverConfig\r
391 \r
392 */\r
393 private IComboBox getIComboBoxDriverConfig() {\r
394 if (iComboBoxDriverConfig == null) {\r
395 iComboBoxDriverConfig = new IComboBox();\r
396 iComboBoxDriverConfig.setBounds(new java.awt.Rectangle(160, 55, 320, 20));\r
397 }\r
398 return iComboBoxDriverConfig;\r
399 }\r
400\r
401 /**\r
402 This method initializes jPanelType4 \r
403 \r
404 @return javax.swing.JPanel jPanelType4\r
405 \r
406 **/\r
407 private JPanel getJPanelType4() {\r
408 if (jPanelType4 == null) {\r
409 jLabelExitBootServicesCallBack = new JLabel();\r
410 jLabelExitBootServicesCallBack.setBounds(new java.awt.Rectangle(15, 30, 200, 20));\r
411 jLabelExitBootServicesCallBack.setText("Exit Boot Services Call Back");\r
412 jLabelSetVirtualAddressMapCallBack = new JLabel();\r
413 jLabelSetVirtualAddressMapCallBack.setBounds(new java.awt.Rectangle(15, 5, 200, 20));\r
414 jLabelSetVirtualAddressMapCallBack.setText("Set Virtual Address Map Call Back");\r
415 jPanelType4 = new JPanel();\r
416 jPanelType4.setLayout(null);\r
417 jPanelType4.setBounds(new java.awt.Rectangle(0, 105, 490, 55));\r
418 jPanelType4.add(jLabelSetVirtualAddressMapCallBack, null);\r
419 jPanelType4.add(getIComboBoxSetVirtualAddressMapCallBack(), null);\r
420 jPanelType4.add(jLabelExitBootServicesCallBack, null);\r
421 jPanelType4.add(getIComboBoxExitBootServicesCallBack(), null);\r
422 }\r
423 return jPanelType4;\r
424 }\r
425\r
426 /**\r
427 This method initializes jComboBoxSetVirtualAddressMapCallBack \r
428 \r
429 @return javax.swing.JComboBox iComboBoxSetVirtualAddressMapCallBack\r
430 \r
431 **/\r
432 private IComboBox getIComboBoxSetVirtualAddressMapCallBack() {\r
433 if (iComboBoxSetVirtualAddressMapCallBack == null) {\r
434 iComboBoxSetVirtualAddressMapCallBack = new IComboBox();\r
435 iComboBoxSetVirtualAddressMapCallBack.setBounds(new java.awt.Rectangle(220, 5, 260, 20));\r
436 }\r
437 return iComboBoxSetVirtualAddressMapCallBack;\r
438 }\r
439\r
440 /**\r
441 This method initializes jComboBoxExitBootServicesCallBack \r
442 \r
443 @return javax.swing.JComboBox iComboBoxExitBootServicesCallBack\r
444 \r
445 **/\r
446 private IComboBox getIComboBoxExitBootServicesCallBack() {\r
447 if (iComboBoxExitBootServicesCallBack == null) {\r
448 iComboBoxExitBootServicesCallBack = new IComboBox();\r
449 iComboBoxExitBootServicesCallBack.setBounds(new java.awt.Rectangle(220, 30, 260, 20));\r
450 }\r
451 return iComboBoxExitBootServicesCallBack;\r
452 }\r
453\r
454 /**\r
455 This method initializes jPanelType5 \r
456 \r
457 @return javax.swing.JPanel jPanelType5\r
458 \r
459 **/\r
460 private JPanel getJPanelType5() {\r
461 if (jPanelType5 == null) {\r
462 jLabelUserDefined = new JLabel();\r
463 jLabelUserDefined.setBounds(new java.awt.Rectangle(15, 5, 140, 20));\r
464 jLabelUserDefined.setText("User Defined");\r
465 jPanelType5 = new JPanel();\r
466 jPanelType5.setLayout(null);\r
467 jPanelType5.setBounds(new java.awt.Rectangle(0, 105, 490, 30));\r
468 jPanelType5.add(jLabelUserDefined, null);\r
469 jPanelType5.add(getIComboBoxUserDefined(), null);\r
470 }\r
471 return jPanelType5;\r
472 }\r
473\r
474 /**\r
475 This method initializes jComboBoxUserDefined \r
476 \r
477 @return javax.swing.JComboBox iComboBoxUserDefined\r
478 \r
479 **/\r
480 private IComboBox getIComboBoxUserDefined() {\r
481 if (iComboBoxUserDefined == null) {\r
482 iComboBoxUserDefined = new IComboBox();\r
483 iComboBoxUserDefined.setBounds(new java.awt.Rectangle(160, 5, 320, 20));\r
484 }\r
485 return iComboBoxUserDefined;\r
486 }\r
487\r
488 public static void main(String[] args) {\r
489\r
490 }\r
491\r
492 /**\r
493 This is the default constructor\r
494 \r
495 **/\r
496 public ModuleExterns() {\r
497 super();\r
498 init();\r
499 this.setVisible(true);\r
500 }\r
501\r
502 /**\r
503 This is the override edit constructor\r
504 \r
505 @param inExterns The input data of ExternsDocument.Externs\r
506 \r
507 **/\r
508 public ModuleExterns(ExternsDocument.Externs inExterns) {\r
509 super();\r
510 init(inExterns);\r
511 this.setVisible(true);\r
512 }\r
513\r
514 /**\r
515 This is the override edit constructor\r
516 \r
517 @param inExterns The input data of ExternsDocument.Externs\r
518 @param type The input data of node type\r
519 @param index The input data of node index\r
520 \r
521 **/\r
522 public ModuleExterns(ExternsDocument.Externs inExterns, int type, int index) {\r
523 super();\r
524 init(inExterns, type, index);\r
525 this.setVisible(true);\r
526 }\r
527\r
528 /**\r
529 This method initializes this\r
530 \r
531 @param inExterns The input data of ExternsDocument.Externs\r
532 \r
533 **/\r
534 private void init(ExternsDocument.Externs inExterns) {\r
535 init();\r
536 this.setExterns(inExterns);\r
537 }\r
538\r
539 /**\r
540 This method initializes this\r
541 Fill values to all fields if these values are not empty\r
542 \r
543 @param inExterns The input data of ExternsDocument.Externs\r
544 @param type The input data of node type\r
545 @param index The input data of node index\r
546 \r
547 **/\r
548 private void init(ExternsDocument.Externs inExterns, int type, int index) {\r
549 init(inExterns);\r
550 this.location = index;\r
551 if (this.externs.getExternList().size() > 0) {\r
552 //\r
553 //Get common fields\r
554 //\r
555 if (this.externs.getExternArray(index).getUsage() != null) {\r
556 this.jComboBoxUsage.setSelectedItem(this.externs.getExternArray(index).getUsage().toString());\r
557 }\r
558 this.jTextFieldOverrideID.setText(String.valueOf(this.externs.getExternArray(index).getOverrideID()));\r
559 //\r
560 //Type 1\r
561 //\r
562 if (this.externs.getExternArray(index).getModuleEntryPointList().size() > 0) {\r
563 this.jComboBoxType.setSelectedIndex(0);\r
564 for (int indexI = 0; indexI < this.externs.getExternArray(index).getModuleEntryPointList().size(); indexI++) {\r
565 this.iComboBoxModuleEntryPoint.addItem(this.externs.getExternArray(index)\r
566 .getModuleEntryPointArray(indexI));\r
567 }\r
568 }\r
569 if (this.externs.getExternArray(index).getModuleUnloadImageList().size() > 0) {\r
570 this.jComboBoxType.setSelectedIndex(0);\r
571 for (int indexI = 0; indexI < this.externs.getExternArray(index).getModuleUnloadImageList().size(); indexI++) {\r
572 this.iComboBoxModuleUnloadImage.addItem(this.externs.getExternArray(index)\r
573 .getModuleUnloadImageArray(indexI));\r
574 }\r
575 }\r
576\r
577 //\r
578 //Type 2\r
579 //\r
580 if (this.externs.getExternArray(index).getConstructor() != null) {\r
581 this.jComboBoxType.setSelectedIndex(1);\r
582 this.jTextFieldConstructor.setText(this.externs.getExternArray(index).getConstructor());\r
583 }\r
584 if (this.externs.getExternArray(index).getDestructor() != null) {\r
585 this.jComboBoxType.setSelectedIndex(1);\r
586 this.jTextFieldDestructor.setText(this.externs.getExternArray(index).getDestructor());\r
587 }\r
588\r
589 //\r
590 //Type 3\r
591 //\r
592 if (this.externs.getExternArray(index).getDriverBindingList().size() > 0) {\r
593 this.jComboBoxType.setSelectedIndex(2);\r
594 for (int indexI = 0; indexI < this.externs.getExternArray(index).getDriverBindingList().size(); indexI++) {\r
595 this.iComboBoxDriverBinding.addItem(this.externs.getExternArray(index)\r
596 .getDriverBindingArray(indexI));\r
597 }\r
598 }\r
599 if (this.externs.getExternArray(index).getComponentNameList().size() > 0) {\r
600 this.jComboBoxType.setSelectedIndex(2);\r
601 for (int indexI = 0; indexI < this.externs.getExternArray(index).getComponentNameList().size(); indexI++) {\r
602 this.iComboBoxComponentName.addItem(this.externs.getExternArray(index)\r
603 .getComponentNameArray(indexI));\r
604 }\r
605 }\r
606 if (this.externs.getExternArray(index).getDriverConfigList().size() > 0) {\r
607 this.jComboBoxType.setSelectedIndex(2);\r
608 for (int indexI = 0; indexI < this.externs.getExternArray(index).getDriverConfigList().size(); indexI++) {\r
609 this.iComboBoxDriverConfig.addItem(this.externs.getExternArray(index).getDriverConfigArray(indexI));\r
610 }\r
611 }\r
612 if (this.externs.getExternArray(index).getDriverDiagList().size() > 0) {\r
613 this.jComboBoxType.setSelectedIndex(2);\r
614 for (int indexI = 0; indexI < this.externs.getExternArray(index).getDriverDiagList().size(); indexI++) {\r
615 this.iComboBoxDriverDiag.addItem(this.externs.getExternArray(index).getDriverDiagArray(indexI));\r
616 }\r
617 }\r
618\r
619 //\r
620 //Type 4\r
621 //\r
622 if (this.externs.getExternArray(index).getSetVirtualAddressMapCallBackList().size() > 0) {\r
623 this.jComboBoxType.setSelectedIndex(3);\r
624 for (int indexI = 0; indexI < this.externs.getExternArray(index).getSetVirtualAddressMapCallBackList()\r
625 .size(); indexI++) {\r
626 this.iComboBoxSetVirtualAddressMapCallBack\r
627 .addItem(this.externs\r
628 .getExternArray(index)\r
629 .getSetVirtualAddressMapCallBackArray(\r
630 indexI));\r
631 }\r
632 }\r
633 if (this.externs.getExternArray(index).getExitBootServicesCallBackList().size() > 0) {\r
634 this.jComboBoxType.setSelectedIndex(3);\r
635 for (int indexI = 0; indexI < this.externs.getExternArray(index).getExitBootServicesCallBackList()\r
636 .size(); indexI++) {\r
637 this.iComboBoxExitBootServicesCallBack\r
638 .addItem(this.externs\r
639 .getExternArray(index)\r
640 .getExitBootServicesCallBackArray(indexI));\r
641 }\r
642 }\r
643\r
644 //\r
645 //Type 5\r
646 //\r
647 if (this.externs.getExternArray(index).getUserDefinedList().size() > 0) {\r
648 this.jComboBoxType.setSelectedIndex(4);\r
649 for (int indexI = 0; indexI < this.externs.getExternArray(index).getUserDefinedList().size(); indexI++) {\r
650 this.iComboBoxUserDefined.addItem(this.externs.getExternArray(index).getUserDefinedArray(indexI));\r
651 }\r
652 }\r
653\r
654 this.jComboBoxType.setEnabled(false);\r
655 switchType();\r
656 }\r
657 }\r
658\r
659 /**\r
660 This method initializes this\r
661 \r
662 **/\r
663 private void init() {\r
664 this.setSize(500, 515);\r
665 this.setContentPane(getJContentPane());\r
666 this.setTitle("Externs");\r
667 initFrame();\r
668 this.setViewMode(false);\r
669 }\r
670\r
671 /**\r
672 Disable all components when the mode is view\r
673 \r
674 @param isView true - The view mode; false - The non-view mode\r
675 \r
676 **/\r
677 public void setViewMode(boolean isView) {\r
678 this.jButtonOk.setVisible(false);\r
679 this.jButtonCancel.setVisible(false);\r
680 if (isView) {\r
681 this.jComboBoxUsage.setEnabled(!isView);\r
682 this.jTextFieldOverrideID.setEnabled(!isView);\r
683 //\r
684 //Type 1\r
685 //\r
686 this.iComboBoxModuleEntryPoint.setEnabled(!isView);\r
687 this.iComboBoxModuleUnloadImage.setEnabled(!isView);\r
688\r
689 //\r
690 //Type 2\r
691 //\r
692 this.jTextFieldConstructor.setEnabled(!isView);\r
693 this.jTextFieldDestructor.setEnabled(!isView);\r
694\r
695 //\r
696 //Type 3\r
697 //\r
698 this.iComboBoxDriverBinding.setEnabled(!isView);\r
699 this.iComboBoxComponentName.setEnabled(!isView);\r
700 this.iComboBoxDriverConfig.setEnabled(!isView);\r
701 this.iComboBoxDriverDiag.setEnabled(!isView);\r
702\r
703 //\r
704 //Type 4\r
705 //\r
706 this.iComboBoxSetVirtualAddressMapCallBack.setEnabled(!isView);\r
707 this.iComboBoxExitBootServicesCallBack.setEnabled(!isView);\r
708\r
709 //\r
710 //Type 5\r
711 //\r
712 this.iComboBoxUserDefined.setEnabled(!isView);\r
713\r
714 this.jComboBoxType.setEnabled(!isView);\r
715 this.jButtonCancel.setEnabled(!isView);\r
716 this.jButtonOk.setEnabled(!isView);\r
717 }\r
718 }\r
719\r
720 /**\r
721 This method initializes jContentPane\r
722 \r
723 @return javax.swing.JPanel jContentPane\r
724 \r
725 **/\r
726 private JPanel getJContentPane() {\r
727 if (jContentPane == null) {\r
728 jLabelOverrideID = new JLabel();\r
729 jLabelOverrideID.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
730 jLabelOverrideID.setText("Override ID");\r
731 jLabelUsage = new JLabel();\r
732 jLabelUsage.setText("Usage");\r
733 jLabelUsage.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
734 jLabelName = new JLabel();\r
735 jLabelName.setText("Choose Type");\r
736 jLabelName.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
737 jContentPane = new JPanel();\r
738 jContentPane.setLayout(null);\r
739 jContentPane.setSize(new java.awt.Dimension(490, 244));\r
740 jContentPane.add(getJPanelType2(), null);\r
741 jContentPane.add(jLabelName, null);\r
742 jContentPane.add(getJComboBoxType(), null);\r
743 jContentPane.add(getJPanelType3(), null);\r
744 jContentPane.add(getJPanelType4(), null);\r
745 jContentPane.add(getJPanelType5(), null);\r
746 jContentPane.add(jLabelUsage, null);\r
747 jContentPane.add(getJComboBoxUsage(), null);\r
748 jContentPane.add(getJButtonOk(), null);\r
749 jContentPane.add(getJButtonCancel(), null);\r
750 jContentPane.add(jLabelOverrideID, null);\r
751 jContentPane.add(getJTextFieldOverrideID(), null);\r
752\r
753 jContentPane.add(getJPanelType1(), null);\r
754 }\r
755 return jContentPane;\r
756 }\r
757\r
758 /**\r
759 This method initializes Usage type and Externs type\r
760 \r
761 **/\r
762 private void initFrame() {\r
763 jComboBoxUsage.addItem("ALWAYS_CONSUMED");\r
764 jComboBoxUsage.addItem("ALWAYS_PRODUCED");\r
765\r
766 jComboBoxType.addItem("Type 1");\r
767 jComboBoxType.addItem("Type 2");\r
768 jComboBoxType.addItem("Type 3");\r
769 jComboBoxType.addItem("Type 4");\r
770 jComboBoxType.addItem("Type 5");\r
771\r
772 jPanelType1.setVisible(true);\r
773 jPanelType2.setVisible(false);\r
774 jPanelType3.setVisible(false);\r
775 jPanelType4.setVisible(false);\r
776 jPanelType5.setVisible(false);\r
777 }\r
778\r
779 /* (non-Javadoc)\r
780 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
781 *\r
782 * Override actionPerformed to listen all actions\r
783 * \r
784 */\r
785 public void actionPerformed(ActionEvent arg0) {\r
786 if (arg0.getSource() == jButtonOk) {\r
787 this.setEdited(true);\r
788 this.save();\r
789 this.dispose();\r
790 }\r
791\r
792 if (arg0.getSource() == jButtonCancel) {\r
793 this.dispose();\r
794 }\r
795 }\r
796\r
797 public void itemStateChanged(ItemEvent arg0) {\r
798 if (arg0.getSource() == jComboBoxType) {\r
799 if (arg0.getStateChange() == ItemEvent.SELECTED) {\r
800 switchType();\r
801 }\r
802 }\r
803 }\r
804\r
805 /**\r
806 Show/Hide relevant fields via select different types\r
807 \r
808 **/\r
809 private void switchType() {\r
810 if (jComboBoxType.getSelectedIndex() == 0) {\r
811 jPanelType1.setVisible(true);\r
812 jPanelType2.setVisible(false);\r
813 jPanelType3.setVisible(false);\r
814 jPanelType4.setVisible(false);\r
815 jPanelType5.setVisible(false);\r
816 }\r
817 if (jComboBoxType.getSelectedIndex() == 1) {\r
818 jPanelType1.setVisible(false);\r
819 jPanelType2.setVisible(true);\r
820 jPanelType3.setVisible(false);\r
821 jPanelType4.setVisible(false);\r
822 jPanelType5.setVisible(false);\r
823 }\r
824 if (jComboBoxType.getSelectedIndex() == 2) {\r
825 jPanelType1.setVisible(false);\r
826 jPanelType2.setVisible(false);\r
827 jPanelType3.setVisible(true);\r
828 jPanelType4.setVisible(false);\r
829 jPanelType5.setVisible(false);\r
830 }\r
831 if (jComboBoxType.getSelectedIndex() == 3) {\r
832 jPanelType1.setVisible(false);\r
833 jPanelType2.setVisible(false);\r
834 jPanelType3.setVisible(false);\r
835 jPanelType4.setVisible(true);\r
836 jPanelType5.setVisible(false);\r
837 }\r
838 if (jComboBoxType.getSelectedIndex() == 4) {\r
839 jPanelType1.setVisible(false);\r
840 jPanelType2.setVisible(false);\r
841 jPanelType3.setVisible(false);\r
842 jPanelType4.setVisible(false);\r
843 jPanelType5.setVisible(true);\r
844 }\r
845 }\r
846\r
847 /**\r
848 Set ExternsDocument.Externs\r
849 \r
850 @return ExternsDocument.Externs\r
851 \r
852 \r
853 **/\r
854 public ExternsDocument.Externs getExterns() {\r
855 return externs;\r
856 }\r
857\r
858 /**\r
859 Get ExternsDocument.Externs\r
860 \r
861 @param externs The input ExternsDocument.Externs\r
862 \r
863 **/\r
864 public void setExterns(ExternsDocument.Externs externs) {\r
865 this.externs = externs;\r
866 }\r
867\r
868 /**\r
869 Data validation for all fields\r
870 \r
871 @retval true - All datas are valid\r
872 @retval false - At least one data is invalid\r
873 \r
874 **/\r
875 public boolean check() {\r
876 //\r
877 // Check if all fields have correct data types \r
878 //\r
879 if (this.jComboBoxType.getSelectedIndex() == 1) {\r
880 if (!isEmpty(this.jTextFieldConstructor.getText())\r
881 && !DataValidation.isConstructor(this.jTextFieldConstructor.getText())) {\r
882 Log.err("Incorrect data type for Constructor");\r
883 return false;\r
884 }\r
885 if (!isEmpty(this.jTextFieldDestructor.getText())\r
886 && !DataValidation.isDestructor(this.jTextFieldDestructor.getText())) {\r
887 Log.err("Incorrect data type for Destructor");\r
888 return false;\r
889 }\r
890 }\r
891\r
892 if (!isEmpty(this.jTextFieldOverrideID.getText())\r
893 && !DataValidation.isOverrideID(this.jTextFieldOverrideID.getText())) {\r
894 Log.err("Incorrect data type for Override ID");\r
895 return false;\r
896 }\r
897\r
898 return true;\r
899 }\r
900\r
901 /**\r
902 Save all components of Externs\r
903 if exists externs, set the value directly\r
904 if not exists externs, new an instance first\r
905 \r
906 **/\r
907 public void save() {\r
908 try {\r
909 if (this.externs == null) {\r
910 externs = ExternsDocument.Externs.Factory.newInstance();\r
911 }\r
912 ExternsDocument.Externs.Extern extern = ExternsDocument.Externs.Extern.Factory.newInstance();\r
913 //\r
914 //Save common fields\r
915 //\r
916 extern.setUsage(ExternUsage.Enum.forString(jComboBoxUsage.getSelectedItem().toString()));\r
917 if (!isEmpty(this.jTextFieldOverrideID.getText())) {\r
918 extern.setOverrideID(Integer.parseInt(this.jTextFieldOverrideID.getText()));\r
919 }\r
920\r
921 //\r
922 //Save type 1\r
923 //\r
924 if (this.jComboBoxType.getSelectedIndex() == 0) {\r
925 if (this.iComboBoxModuleEntryPoint.getItemCount() > 0) {\r
926 for (int index = 0; index < this.iComboBoxModuleEntryPoint.getItemCount(); index++) {\r
927 extern.addNewModuleEntryPoint();\r
928 extern.setModuleEntryPointArray(index, this.iComboBoxModuleEntryPoint.getItemAt(index)\r
929 .toString());\r
930 }\r
931 }\r
932 if (this.iComboBoxModuleEntryPoint.getItemCount() > 0) {\r
933 for (int index = 0; index < this.iComboBoxModuleUnloadImage.getItemCount(); index++) {\r
934 extern.addNewModuleUnloadImage();\r
935 extern.setModuleUnloadImageArray(index, this.iComboBoxModuleUnloadImage.getItemAt(index)\r
936 .toString());\r
937 }\r
938 }\r
939 }\r
940\r
941 //\r
942 //Save type 2\r
943 //\r
944 if (this.jComboBoxType.getSelectedIndex() == 1) {\r
945 if (!isEmpty(this.jTextFieldConstructor.getText())) {\r
946 extern.setConstructor(this.jTextFieldConstructor.getText());\r
947 }\r
948 if (!isEmpty(this.jTextFieldDestructor.getText())) {\r
949 extern.setDestructor(this.jTextFieldDestructor.getText());\r
950 }\r
951 }\r
952\r
953 //\r
954 //Save type 3\r
955 //\r
956 if (this.jComboBoxType.getSelectedIndex() == 2) {\r
957 if (this.iComboBoxDriverBinding.getItemCount() > 0) {\r
958 for (int index = 0; index < this.iComboBoxDriverBinding.getItemCount(); index++) {\r
959 extern.addNewDriverBinding();\r
960 extern.setDriverBindingArray(index, this.iComboBoxDriverBinding.getItemAt(index).toString());\r
961 }\r
962 }\r
963 if (this.iComboBoxComponentName.getItemCount() > 0) {\r
964 for (int index = 0; index < this.iComboBoxComponentName.getItemCount(); index++) {\r
965 extern.addNewComponentName();\r
966 extern.setComponentNameArray(index, this.iComboBoxComponentName.getItemAt(index).toString());\r
967 }\r
968 }\r
969 if (this.iComboBoxDriverConfig.getItemCount() > 0) {\r
970 for (int index = 0; index < this.iComboBoxDriverConfig.getItemCount(); index++) {\r
971 extern.addNewDriverConfig();\r
972 extern.setDriverConfigArray(index, this.iComboBoxDriverConfig.getItemAt(index).toString());\r
973 }\r
974 }\r
975 if (this.iComboBoxDriverDiag.getItemCount() > 0) {\r
976 for (int index = 0; index < this.iComboBoxDriverDiag.getItemCount(); index++) {\r
977 extern.addNewDriverDiag();\r
978 extern.setDriverDiagArray(index, this.iComboBoxDriverDiag.getItemAt(index).toString());\r
979 }\r
980 }\r
981 }\r
982\r
983 //\r
984 //Save type 4\r
985 //\r
986 if (this.jComboBoxType.getSelectedIndex() == 3) {\r
987 if (this.iComboBoxSetVirtualAddressMapCallBack.getItemCount() > 0) {\r
988 for (int index = 0; index < this.iComboBoxSetVirtualAddressMapCallBack.getItemCount(); index++) {\r
989 extern.addNewSetVirtualAddressMapCallBack();\r
990 extern\r
991 .setSetVirtualAddressMapCallBackArray(\r
992 index,\r
993 this.iComboBoxSetVirtualAddressMapCallBack\r
994 .getItemAt(\r
995 index)\r
996 .toString());\r
997 }\r
998 }\r
999 if (this.iComboBoxExitBootServicesCallBack.getItemCount() > 0) {\r
1000 for (int index = 0; index < this.iComboBoxExitBootServicesCallBack.getItemCount(); index++) {\r
1001 extern.addNewExitBootServicesCallBack();\r
1002 extern.setExitBootServicesCallBackArray(index,\r
1003 this.iComboBoxExitBootServicesCallBack.getItemAt(index)\r
1004 .toString());\r
1005 }\r
1006 }\r
1007 }\r
1008 //\r
1009 //Save type 5\r
1010 //\r
1011 if (this.jComboBoxType.getSelectedIndex() == 4) {\r
1012 if (this.iComboBoxUserDefined.getItemCount() > 0) {\r
1013 for (int index = 0; index < this.iComboBoxUserDefined.getItemCount(); index++) {\r
1014 extern.addNewUserDefined();\r
1015 extern.setUserDefinedArray(index, this.iComboBoxUserDefined.getItemAt(index).toString());\r
1016 }\r
1017 }\r
1018 }\r
1019\r
1020 if (location > -1) {\r
1021 externs.setExternArray(location, extern);\r
1022 } else {\r
1023 externs.addNewExtern();\r
1024 externs.setExternArray(externs.getExternList().size() - 1, extern);\r
1025 }\r
1026 } catch (Exception e) {\r
1027 Log.err("Update Externs", e.getMessage());\r
1028 }\r
1029 }\r
1030}\r