]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/ExternsDlg.java
remove unnecessary check for NULL pointer.
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / dialog / ExternsDlg.java
CommitLineData
06a19cee 1/** @file\r
2 \r
c6344823 3 The file is used to create, update Externs section of the MSA file\r
06a19cee 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.dialog;\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.JComboBox;\r
24import javax.swing.JLabel;\r
25import javax.swing.JPanel;\r
26import javax.swing.JScrollPane;\r
27import javax.swing.JTextField;\r
28\r
29import org.tianocore.frameworkwizard.common.DataType;\r
30import org.tianocore.frameworkwizard.common.DataValidation;\r
31import org.tianocore.frameworkwizard.common.EnumerationData;\r
32import org.tianocore.frameworkwizard.common.Log;\r
33import org.tianocore.frameworkwizard.common.Tools;\r
34import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
35import org.tianocore.frameworkwizard.common.ui.IDialog;\r
36import org.tianocore.frameworkwizard.common.ui.IFrame;\r
3b7a9058 37import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
e08433ef 38import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
06a19cee 39import org.tianocore.frameworkwizard.module.Identifications.Externs.ExternsIdentification;\r
e08433ef 40import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
06a19cee 41\r
42/**\r
9e857952 43 * The class is used to create, update Externs section of the MSA file\r
44 * \r
45 * It extends IDialog\r
46 * \r
47 */\r
06a19cee 48public class ExternsDlg extends IDialog implements ItemListener {\r
49\r
50 ///\r
51 /// Define class Serial Version UID\r
52 ///\r
53 private static final long serialVersionUID = -7382008402932047191L;\r
54\r
55 //\r
56 //Define class members\r
57 //\r
58 private JPanel jContentPane = null;\r
59\r
60 private JLabel jLabelName = null;\r
61\r
62 private JComboBox jComboBoxType = null;\r
63\r
64 private JScrollPane jScrollPane = null;\r
65\r
3b7a9058 66 private JLabel jLabelSpecification = null;\r
06a19cee 67\r
3b7a9058 68 private JTextField jTextFieldSpecification = null;\r
06a19cee 69\r
70 private JLabel jLabelFeatureFlag = null;\r
71\r
72 private JLabel jLabelArch = null;\r
73\r
74 private JTextField jTextFieldFeatureFlag = null;\r
75\r
76 private ArchCheckBox jArchCheckBox = null;\r
77\r
78 private JButton jButtonOk = null;\r
79\r
80 private JButton jButtonCancel = null;\r
81\r
3b7a9058 82 private StarLabel jStarLabel1 = null;\r
83\r
84 private JPanel jPanelSpecification = null;\r
85\r
86 private JPanel jPanelImage = null;\r
87\r
88 private JPanel jPanelDriver = null;\r
89\r
90 private JPanel jPanelLibrary = null;\r
91\r
92 private JPanel jPanelCallBack = null;\r
93\r
94 private JLabel jLabelModuleEntryPoint = null;\r
95\r
96 private JTextField jTextFieldModuleEntryPoint = null;\r
97\r
98 private JLabel jLabelModuleUnloadImage = null;\r
99\r
100 private JTextField jTextFieldModuleUnloadImage = null;\r
101\r
102 private JLabel jLabelDriverBinding = null;\r
103\r
104 private JTextField jTextFieldDriverBinding = null;\r
105\r
106 private JLabel jLabelComponentName = null;\r
107\r
108 private JTextField jTextFieldComponentName = null;\r
109\r
110 private JLabel jLabelDriverConfig = null;\r
111\r
112 private JTextField jTextFieldDriverConfig = null;\r
113\r
114 private JLabel jLabelDriverDiagnostic = null;\r
115\r
116 private JTextField jTextFieldDriverDiagnostic = null;\r
117\r
118 private JLabel jLabelConstructor = null;\r
119\r
120 private JTextField jTextFieldConstructor = null;\r
121\r
122 private JLabel jLabelDestructor = null;\r
123\r
124 private JTextField jTextFieldDestructor = null;\r
125\r
126 private JLabel jLabelVirtualAddressMap = null;\r
127\r
128 private JTextField jTextFieldVirtualAddressMap = null;\r
129\r
130 private JLabel jLabelExitBootServices = null;\r
131\r
132 private JTextField jTextFieldExitBootServices = null;\r
133\r
06a19cee 134 //\r
135 // Not used by UI\r
136 //\r
137 private ExternsIdentification id = null;\r
138\r
139 private EnumerationData ed = new EnumerationData();\r
e08433ef 140 \r
141 private WorkspaceTools wt = new WorkspaceTools();\r
142 \r
143 private Vector<String> vArchList = new Vector<String>();\r
06a19cee 144\r
145 /**\r
146 This method initializes jComboBoxType \r
147 \r
148 @return javax.swing.JComboBox jComboBoxType\r
149 \r
150 **/\r
151 private JComboBox getJComboBoxType() {\r
152 if (jComboBoxType == null) {\r
153 jComboBoxType = new JComboBox();\r
c6344823 154 jComboBoxType.setBounds(new java.awt.Rectangle(168, 12, 320, 20));\r
06a19cee 155 jComboBoxType.setPreferredSize(new java.awt.Dimension(320, 20));\r
156 jComboBoxType.addItemListener(this);\r
157 }\r
158 return jComboBoxType;\r
159 }\r
160\r
161 /**\r
162 This method initializes jScrollPane \r
163 \r
164 @return javax.swing.JScrollPane \r
165 */\r
166 private JScrollPane getJScrollPane() {\r
167 if (jScrollPane == null) {\r
168 jScrollPane = new JScrollPane();\r
169 jScrollPane.setViewportView(getJContentPane());\r
170 }\r
171 return jScrollPane;\r
172 }\r
173\r
06a19cee 174 /**\r
175 This method initializes jTextFieldC_Name \r
176 \r
177 @return javax.swing.JTextField \r
178 \r
179 **/\r
3b7a9058 180 private JTextField getJTextFieldSpecification() {\r
181 if (jTextFieldSpecification == null) {\r
182 jTextFieldSpecification = new JTextField();\r
183 jTextFieldSpecification.setPreferredSize(new java.awt.Dimension(320, 20));\r
184 jTextFieldSpecification.setBounds(new java.awt.Rectangle(168, 0, 320, 20));\r
06a19cee 185 }\r
3b7a9058 186 return jTextFieldSpecification;\r
06a19cee 187 }\r
188\r
189 /**\r
190 This method initializes jTextFieldFeatureFlag \r
191 \r
192 @return javax.swing.JTextField \r
193 \r
194 **/\r
195 private JTextField getJTextFieldFeatureFlag() {\r
196 if (jTextFieldFeatureFlag == null) {\r
197 jTextFieldFeatureFlag = new JTextField();\r
21b42c66 198 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(168, 87, 320, 20));\r
06a19cee 199 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
21b42c66 200 jTextFieldFeatureFlag.setEnabled(false);\r
06a19cee 201 }\r
202 return jTextFieldFeatureFlag;\r
203 }\r
204\r
205 /**\r
206 This method initializes jButtonOk \r
207 \r
208 @return javax.swing.JButton \r
209 \r
210 **/\r
211 private JButton getJButtonOk() {\r
212 if (jButtonOk == null) {\r
213 jButtonOk = new JButton();\r
3b7a9058 214 jButtonOk.setBounds(new java.awt.Rectangle(300, 187, 90, 20));\r
06a19cee 215 jButtonOk.setText("Ok");\r
216 jButtonOk.addActionListener(this);\r
217 }\r
218 return jButtonOk;\r
219 }\r
220\r
221 /**\r
222 This method initializes jButtonCancel \r
223 \r
224 @return javax.swing.JButton \r
225 \r
226 **/\r
227 private JButton getJButtonCancel() {\r
228 if (jButtonCancel == null) {\r
229 jButtonCancel = new JButton();\r
3b7a9058 230 jButtonCancel.setBounds(new java.awt.Rectangle(400, 187, 90, 20));\r
06a19cee 231 jButtonCancel.setText("Cancel");\r
232 jButtonCancel.addActionListener(this);\r
233 }\r
234 return jButtonCancel;\r
235 }\r
236\r
3b7a9058 237 /**\r
238 * This method initializes jPanelSpecification \r
239 * \r
240 * @return javax.swing.JPanel \r
241 */\r
242 private JPanel getJPanelSpecification() {\r
243 if (jPanelSpecification == null) {\r
244 jPanelSpecification = new JPanel();\r
245 jPanelSpecification.setBounds(new java.awt.Rectangle(0, 37, 505, 20));\r
246 jPanelSpecification.setLayout(null);\r
247\r
248 jLabelSpecification = new JLabel();\r
249 jLabelSpecification.setBounds(new java.awt.Rectangle(12, 0, 140, 20));\r
250 jLabelSpecification.setText("Specification Name");\r
251\r
252 jPanelSpecification.add(jLabelSpecification, null);\r
253 jPanelSpecification.add(getJTextFieldSpecification(), null);\r
254 }\r
255 return jPanelSpecification;\r
256 }\r
257\r
258 /**\r
259 * This method initializes jPanelImage \r
260 * \r
261 * @return javax.swing.JPanel \r
262 */\r
263 private JPanel getJPanelImage() {\r
264 if (jPanelImage == null) {\r
265 jLabelModuleUnloadImage = new JLabel();\r
266 jLabelModuleUnloadImage.setBounds(new java.awt.Rectangle(12, 25, 140, 20));\r
267 jLabelModuleUnloadImage.setText("Module Unload Image");\r
268 jLabelModuleEntryPoint = new JLabel();\r
269 jLabelModuleEntryPoint.setBounds(new java.awt.Rectangle(12, 0, 140, 20));\r
270 jLabelModuleEntryPoint.setText("Module Entry Point");\r
271 jPanelImage = new JPanel();\r
272 jPanelImage.setBounds(new java.awt.Rectangle(0, 37, 505, 45));\r
273 jPanelImage.setLayout(null);\r
274 jPanelImage.add(jLabelModuleEntryPoint, null);\r
275 jPanelImage.add(getJTextFieldModuleEntryPoint(), null);\r
276 jPanelImage.add(jLabelModuleUnloadImage, null);\r
277 jPanelImage.add(getJTextFieldModuleUnloadImage(), null);\r
278 }\r
279 return jPanelImage;\r
280 }\r
281\r
282 /**\r
283 * This method initializes jPanelDriver \r
284 * \r
285 * @return javax.swing.JPanel \r
286 */\r
287 private JPanel getJPanelDriver() {\r
288 if (jPanelDriver == null) {\r
289 jStarLabel1 = new StarLabel();\r
290 jStarLabel1.setLocation(new java.awt.Point(0, 0));\r
291 jLabelDriverDiagnostic = new JLabel();\r
292 jLabelDriverDiagnostic.setBounds(new java.awt.Rectangle(12, 75, 140, 20));\r
293 jLabelDriverDiagnostic.setText("Driver Diagnostic");\r
294 jLabelDriverConfig = new JLabel();\r
295 jLabelDriverConfig.setBounds(new java.awt.Rectangle(12, 50, 140, 20));\r
296 jLabelDriverConfig.setText("Driver Config");\r
297 jLabelComponentName = new JLabel();\r
298 jLabelComponentName.setBounds(new java.awt.Rectangle(12, 25, 140, 20));\r
299 jLabelComponentName.setText("Component Name");\r
300 jLabelDriverBinding = new JLabel();\r
301 jLabelDriverBinding.setBounds(new java.awt.Rectangle(12, 0, 140, 20));\r
302 jLabelDriverBinding.setText("Driver Binding");\r
303 jPanelDriver = new JPanel();\r
304 jPanelDriver.setBounds(new java.awt.Rectangle(0, 37, 505, 95));\r
305 jPanelDriver.setLayout(null);\r
306 jPanelDriver.add(jStarLabel1, null);\r
307 jPanelDriver.add(jLabelDriverBinding, null);\r
308 jPanelDriver.add(getJTextFieldDriverBinding(), null);\r
309 jPanelDriver.add(jLabelComponentName, null);\r
310 jPanelDriver.add(getJTextFieldComponentName(), null);\r
311 jPanelDriver.add(jLabelDriverConfig, null);\r
312 jPanelDriver.add(getJTextFieldDriverConfig(), null);\r
313 jPanelDriver.add(jLabelDriverDiagnostic, null);\r
314 jPanelDriver.add(getJTextFieldDriverDiagnostic(), null);\r
315 }\r
316 return jPanelDriver;\r
317 }\r
318\r
319 /**\r
320 * This method initializes jPanelLibrary \r
321 * \r
322 * @return javax.swing.JPanel \r
323 */\r
324 private JPanel getJPanelLibrary() {\r
325 if (jPanelLibrary == null) {\r
326 jLabelDestructor = new JLabel();\r
327 jLabelDestructor.setBounds(new java.awt.Rectangle(12, 25, 140, 20));\r
328 jLabelDestructor.setText("Destructor");\r
329 jLabelConstructor = new JLabel();\r
330 jLabelConstructor.setBounds(new java.awt.Rectangle(12, 0, 140, 20));\r
331 jLabelConstructor.setText("Constructor");\r
332 jPanelLibrary = new JPanel();\r
333 jPanelLibrary.setBounds(new java.awt.Rectangle(0, 37, 505, 45));\r
334 jPanelLibrary.setLayout(null);\r
335 jPanelLibrary.add(jLabelConstructor, null);\r
336 jPanelLibrary.add(getJTextFieldConstructor(), null);\r
337 jPanelLibrary.add(jLabelDestructor, null);\r
338 jPanelLibrary.add(getJTextFieldDestructor(), null);\r
339 }\r
340 return jPanelLibrary;\r
341 }\r
342\r
343 /**\r
344 * This method initializes jPanelCallBack \r
345 * \r
346 * @return javax.swing.JPanel \r
347 */\r
348 private JPanel getJPanelCallBack() {\r
349 if (jPanelCallBack == null) {\r
350 jLabelExitBootServices = new JLabel();\r
351 jLabelExitBootServices.setBounds(new java.awt.Rectangle(12, 25, 140, 20));\r
352 jLabelExitBootServices.setText("Exit Boot Services");\r
353 jLabelVirtualAddressMap = new JLabel();\r
354 jLabelVirtualAddressMap.setBounds(new java.awt.Rectangle(12, 0, 140, 20));\r
355 jLabelVirtualAddressMap.setText("Virtual Address Map");\r
356 jPanelCallBack = new JPanel();\r
357 jPanelCallBack.setBounds(new java.awt.Rectangle(0, 37, 505, 45));\r
358 jPanelCallBack.setLayout(null);\r
359 jPanelCallBack.add(jLabelVirtualAddressMap, null);\r
360 jPanelCallBack.add(getJTextFieldVirtualAddressMap(), null);\r
361 jPanelCallBack.add(jLabelExitBootServices, null);\r
362 jPanelCallBack.add(getJTextFieldExitBootServices(), null);\r
363 }\r
364 return jPanelCallBack;\r
365 }\r
366\r
367 /**\r
368 * This method initializes jTextFieldModuleEntryPoint \r
369 * \r
370 * @return javax.swing.JTextField \r
371 */\r
372 private JTextField getJTextFieldModuleEntryPoint() {\r
373 if (jTextFieldModuleEntryPoint == null) {\r
374 jTextFieldModuleEntryPoint = new JTextField();\r
375 jTextFieldModuleEntryPoint.setBounds(new java.awt.Rectangle(168, 0, 320, 20));\r
376 }\r
377 return jTextFieldModuleEntryPoint;\r
378 }\r
379\r
380 /**\r
381 * This method initializes jTextFieldModuleUnloadImage \r
382 * \r
383 * @return javax.swing.JTextField \r
384 */\r
385 private JTextField getJTextFieldModuleUnloadImage() {\r
386 if (jTextFieldModuleUnloadImage == null) {\r
387 jTextFieldModuleUnloadImage = new JTextField();\r
388 jTextFieldModuleUnloadImage.setBounds(new java.awt.Rectangle(168, 25, 320, 20));\r
389 }\r
390 return jTextFieldModuleUnloadImage;\r
391 }\r
392\r
393 /**\r
394 * This method initializes jTextFieldDriverBinding \r
395 * \r
396 * @return javax.swing.JTextField \r
397 */\r
398 private JTextField getJTextFieldDriverBinding() {\r
399 if (jTextFieldDriverBinding == null) {\r
400 jTextFieldDriverBinding = new JTextField();\r
401 jTextFieldDriverBinding.setBounds(new java.awt.Rectangle(168, 0, 320, 20));\r
402 }\r
403 return jTextFieldDriverBinding;\r
404 }\r
405\r
406 /**\r
407 * This method initializes jTextFieldComponentName \r
408 * \r
409 * @return javax.swing.JTextField \r
410 */\r
411 private JTextField getJTextFieldComponentName() {\r
412 if (jTextFieldComponentName == null) {\r
413 jTextFieldComponentName = new JTextField();\r
414 jTextFieldComponentName.setBounds(new java.awt.Rectangle(168, 25, 320, 20));\r
415 }\r
416 return jTextFieldComponentName;\r
417 }\r
418\r
419 /**\r
420 * This method initializes jTextFieldDriverConfig \r
421 * \r
422 * @return javax.swing.JTextField \r
423 */\r
424 private JTextField getJTextFieldDriverConfig() {\r
425 if (jTextFieldDriverConfig == null) {\r
426 jTextFieldDriverConfig = new JTextField();\r
427 jTextFieldDriverConfig.setBounds(new java.awt.Rectangle(168, 50, 320, 20));\r
428 }\r
429 return jTextFieldDriverConfig;\r
430 }\r
431\r
432 /**\r
433 * This method initializes jTextFieldDriverDiagnostic \r
434 * \r
435 * @return javax.swing.JTextField \r
436 */\r
437 private JTextField getJTextFieldDriverDiagnostic() {\r
438 if (jTextFieldDriverDiagnostic == null) {\r
439 jTextFieldDriverDiagnostic = new JTextField();\r
440 jTextFieldDriverDiagnostic.setBounds(new java.awt.Rectangle(168, 75, 320, 20));\r
441 }\r
442 return jTextFieldDriverDiagnostic;\r
443 }\r
444\r
445 /**\r
446 * This method initializes jTextFieldConstructor \r
447 * \r
448 * @return javax.swing.JTextField \r
449 */\r
450 private JTextField getJTextFieldConstructor() {\r
451 if (jTextFieldConstructor == null) {\r
452 jTextFieldConstructor = new JTextField();\r
453 jTextFieldConstructor.setBounds(new java.awt.Rectangle(168, 0, 320, 20));\r
454 }\r
455 return jTextFieldConstructor;\r
456 }\r
457\r
458 /**\r
459 * This method initializes jTextFieldDestructor \r
460 * \r
461 * @return javax.swing.JTextField \r
462 */\r
463 private JTextField getJTextFieldDestructor() {\r
464 if (jTextFieldDestructor == null) {\r
465 jTextFieldDestructor = new JTextField();\r
466 jTextFieldDestructor.setBounds(new java.awt.Rectangle(168, 25, 320, 20));\r
467 }\r
468 return jTextFieldDestructor;\r
469 }\r
470\r
471 /**\r
472 * This method initializes jTextFieldVirtualAddressMap \r
473 * \r
474 * @return javax.swing.JTextField \r
475 */\r
476 private JTextField getJTextFieldVirtualAddressMap() {\r
477 if (jTextFieldVirtualAddressMap == null) {\r
478 jTextFieldVirtualAddressMap = new JTextField();\r
479 jTextFieldVirtualAddressMap.setBounds(new java.awt.Rectangle(168, 0, 320, 20));\r
480 }\r
481 return jTextFieldVirtualAddressMap;\r
482 }\r
483\r
484 /**\r
485 * This method initializes jTextFieldExitBootServices \r
486 * \r
487 * @return javax.swing.JTextField \r
488 */\r
489 private JTextField getJTextFieldExitBootServices() {\r
490 if (jTextFieldExitBootServices == null) {\r
491 jTextFieldExitBootServices = new JTextField();\r
492 jTextFieldExitBootServices.setBounds(new java.awt.Rectangle(168, 25, 320, 20));\r
493 }\r
494 return jTextFieldExitBootServices;\r
495 }\r
496\r
06a19cee 497 public static void main(String[] args) {\r
498\r
499 }\r
500\r
501 /**\r
502 This method initializes this\r
503 \r
504 **/\r
505 private void init() {\r
3b7a9058 506 this.setSize(515, 250);\r
06a19cee 507 this.setContentPane(getJScrollPane());\r
508 this.setTitle("Externs");\r
509 initFrame();\r
510 this.centerWindow();\r
511 }\r
512\r
513 /**\r
514 This method initializes this\r
515 Fill values to all fields if these values are not empty\r
516 \r
517 @param inExternsId\r
518\r
519 **/\r
e08433ef 520 private void init(ExternsIdentification inExternsId, ModuleIdentification mid) {\r
06a19cee 521 init();\r
522 this.id = inExternsId;\r
e08433ef 523 \r
524 //\r
525 // Init arch with module's arch\r
526 //\r
527 this.vArchList = wt.getModuleArch(mid);\r
06a19cee 528\r
529 if (this.id != null) {\r
3b7a9058 530 String type = id.getType();\r
531 //\r
532 // Filter the type to lock down the type\r
533 //\r
534 this.jComboBoxType.removeAllItems();\r
535 this.jComboBoxType.addItem(type);\r
536\r
06a19cee 537 this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
538 this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
3b7a9058 539\r
540 //\r
541 // Init specification\r
542 //\r
543 if (type.equals(EnumerationData.EXTERNS_SPECIFICATION)) {\r
544 this.jTextFieldSpecification.setText(id.getName0());\r
545 }\r
546\r
547 //\r
548 // Init image\r
549 //\r
550 if (type.equals(EnumerationData.EXTERNS_IMAGE)) {\r
551 this.jTextFieldModuleEntryPoint.setText(id.getName0());\r
552 this.jTextFieldModuleUnloadImage.setText(id.getName1());\r
553 }\r
554\r
555 //\r
556 // Init library\r
557 //\r
558 if (type.equals(EnumerationData.EXTERNS_LIBRARY)) {\r
559 this.jTextFieldConstructor.setText(id.getName0());\r
560 this.jTextFieldDestructor.setText(id.getName1());\r
561 }\r
562\r
563 //\r
564 // Init driver\r
565 //\r
566 if (type.equals(EnumerationData.EXTERNS_DRIVER)) {\r
567 this.jTextFieldDriverBinding.setText(id.getName0());\r
568 this.jTextFieldComponentName.setText(id.getName1());\r
569 this.jTextFieldDriverConfig.setText(id.getName2());\r
570 this.jTextFieldDriverDiagnostic.setText(id.getName3());\r
571 }\r
572\r
573 //\r
574 // Init library\r
575 //\r
576 if (type.equals(EnumerationData.EXTERNS_CALL_BACK)) {\r
577 this.jTextFieldVirtualAddressMap.setText(id.getName0());\r
578 this.jTextFieldExitBootServices.setText(id.getName1());\r
579 }\r
06a19cee 580 }\r
581 }\r
582\r
583 /**\r
584 This is the override edit constructor\r
585 \r
586 @param inBootModesIdentification\r
587 @param iFrame\r
588 \r
589 **/\r
e08433ef 590 public ExternsDlg(ExternsIdentification inExternsIdentification, IFrame iFrame, ModuleIdentification mid) {\r
06a19cee 591 super(iFrame, true);\r
e08433ef 592 init(inExternsIdentification, mid);\r
06a19cee 593 }\r
594\r
595 /**\r
596 This method initializes jContentPane\r
597 \r
598 @return javax.swing.JPanel jContentPane\r
599 \r
600 **/\r
601 private JPanel getJContentPane() {\r
602 if (jContentPane == null) {\r
603 jArchCheckBox = new ArchCheckBox();\r
21b42c66 604 jArchCheckBox.setBounds(new java.awt.Rectangle(168, 62, 320, 20));\r
06a19cee 605 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
3b7a9058 606\r
06a19cee 607 jLabelName = new JLabel();\r
ccb063b1 608 jLabelName.setText("Choose Extern Type");\r
3b7a9058 609 jLabelName.setBounds(new java.awt.Rectangle(12, 12, 155, 20));\r
06a19cee 610 jLabelArch = new JLabel();\r
3b7a9058 611 jLabelArch.setBounds(new java.awt.Rectangle(12, 62, 155, 20));\r
ccb063b1 612 jLabelArch.setText("Supported Architectures");\r
06a19cee 613 jLabelFeatureFlag = new JLabel();\r
3b7a9058 614 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(12, 87, 155, 20));\r
ccb063b1 615 jLabelFeatureFlag.setText("Feature Flag Expression");\r
21b42c66 616 jLabelFeatureFlag.setEnabled(false);\r
06a19cee 617\r
618 jContentPane = new JPanel();\r
619 jContentPane.setLayout(null);\r
3b7a9058 620 jContentPane.setPreferredSize(new java.awt.Dimension(505, 200));\r
06a19cee 621\r
622 jContentPane.add(jLabelName, null);\r
623 jContentPane.add(getJComboBoxType(), null);\r
624 jContentPane.add(jLabelFeatureFlag, null);\r
625 jContentPane.add(jLabelArch, null);\r
626 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
627\r
06a19cee 628 jContentPane.add(jArchCheckBox, null);\r
629 jContentPane.add(getJButtonOk(), null);\r
630 jContentPane.add(getJButtonCancel(), null);\r
3b7a9058 631\r
632 jContentPane.add(getJPanelSpecification(), null);\r
633 jContentPane.add(getJPanelImage(), null);\r
634 jContentPane.add(getJPanelDriver(), null);\r
635 jContentPane.add(getJPanelLibrary(), null);\r
636 jContentPane.add(getJPanelCallBack(), null);\r
06a19cee 637 }\r
638 return jContentPane;\r
639 }\r
640\r
641 /**\r
642 This method initializes Usage type and Externs type\r
643 \r
644 **/\r
645 private void initFrame() {\r
646 Tools.generateComboBoxByVector(this.jComboBoxType, ed.getVExternTypes());\r
3b7a9058 647 this.jPanelSpecification.setVisible(true);\r
648 this.jPanelImage.setVisible(false);\r
649 this.jPanelLibrary.setVisible(false);\r
650 this.jPanelDriver.setVisible(false);\r
651 this.jPanelCallBack.setVisible(false);\r
06a19cee 652 }\r
653\r
654 /* (non-Javadoc)\r
655 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
656 *\r
657 * Override actionPerformed to listen all actions\r
658 * \r
659 */\r
660 public void actionPerformed(ActionEvent arg0) {\r
661 if (arg0.getSource() == jButtonOk) {\r
662 if (checkAdd()) {\r
3b7a9058 663 this.getCurrentExterns();\r
06a19cee 664 this.returnType = DataType.RETURN_TYPE_OK;\r
665 this.setVisible(false);\r
666 }\r
667 }\r
668\r
669 if (arg0.getSource() == jButtonCancel) {\r
670 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
671 this.setVisible(false);\r
672 }\r
673 }\r
674\r
675 /**\r
676 Data validation for all fields\r
677 \r
678 @retval true - All datas are valid\r
679 @retval false - At least one data is invalid\r
680 \r
681 **/\r
682 public boolean checkAdd() {\r
683 //\r
684 // Check if all fields have correct data types \r
685 //\r
686\r
687 //\r
3b7a9058 688 // Check specification\r
06a19cee 689 //\r
3b7a9058 690 if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_SPECIFICATION)) {\r
691 if (isEmpty(this.jTextFieldSpecification.getText())) {\r
692 Log.wrn("Update Externs", "Please type specification's name");\r
693 return false;\r
694 }\r
695 if (!DataValidation.isSentence(this.jTextFieldSpecification.getText())) {\r
696 Log.wrn("Update Externs", "Incorrect data type for Specification");\r
697 return false;\r
698 }\r
699\r
06a19cee 700 //\r
3b7a9058 701 // No need to check feature flag, return true directly here.\r
06a19cee 702 //\r
3b7a9058 703 return true;\r
704 }\r
705\r
706 //\r
707 // Check image\r
708 //\r
709 if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_IMAGE)) {\r
710 if (isEmpty(this.jTextFieldModuleEntryPoint.getText())\r
711 && isEmpty(this.jTextFieldModuleUnloadImage.getText())) {\r
712 Log.wrn("Update Externs", "At least one of ModuleEntryPoint or ModuleUnloadImage should have a value");\r
06a19cee 713 return false;\r
714 }\r
3b7a9058 715 if (!isEmpty(this.jTextFieldModuleEntryPoint.getText())) {\r
716 if (!DataValidation.isC_NameType(this.jTextFieldModuleEntryPoint.getText())) {\r
717 Log.wrn("Update Externs", "Incorrect data type for Module Entry Point");\r
718 return false;\r
719 }\r
720 }\r
721 if (!isEmpty(this.jTextFieldModuleUnloadImage.getText())) {\r
722 if (!DataValidation.isC_NameType(this.jTextFieldModuleUnloadImage.getText())) {\r
723 Log.wrn("Update Externs", "Incorrect data type for Module Unload Image");\r
724 return false;\r
725 }\r
726 }\r
727 }\r
06a19cee 728\r
3b7a9058 729 //\r
730 // Check library\r
731 //\r
732 if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_LIBRARY)) {\r
733 if (isEmpty(this.jTextFieldConstructor.getText()) && isEmpty(this.jTextFieldDestructor.getText())) {\r
734 Log.wrn("Update Externs", "At least one of Constructor or Destructor should have a value");\r
735 return false;\r
736 }\r
aa197375 737 if (isEmpty(this.jTextFieldConstructor.getText()) && !isEmpty(this.jTextFieldDestructor.getText())) {\r
738 Log.wrn("Update Externs", "You must define a Constructor at the same time when you declare a Destructor");\r
739 return false;\r
740 }\r
3b7a9058 741 if (!isEmpty(this.jTextFieldConstructor.getText())) {\r
742 if (!DataValidation.isC_NameType(this.jTextFieldConstructor.getText())) {\r
743 Log.wrn("Update Externs", "Incorrect data type for Constructor");\r
744 return false;\r
06a19cee 745 }\r
746 }\r
3b7a9058 747 if (!isEmpty(this.jTextFieldDestructor.getText())) {\r
748 if (!DataValidation.isC_NameType(this.jTextFieldDestructor.getText())) {\r
749 Log.wrn("Update Externs", "Incorrect data type for Destructor");\r
750 return false;\r
751 }\r
752 }\r
753 }\r
06a19cee 754\r
3b7a9058 755 //\r
756 // Check driver\r
757 //\r
758 if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_DRIVER)) {\r
759 if (isEmpty(this.jTextFieldDriverBinding.getText())) {\r
760 Log.wrn("Update Externs", "DriverBinding must have a value");\r
761 return false;\r
762 }\r
763 if (!isEmpty(this.jTextFieldDriverBinding.getText())) {\r
764 if (!DataValidation.isC_NameType(this.jTextFieldDriverBinding.getText())) {\r
765 Log.wrn("Update Externs", "Incorrect data type for DriverBinding");\r
766 return false;\r
767 }\r
768 }\r
769 if (!isEmpty(this.jTextFieldComponentName.getText())) {\r
770 if (!DataValidation.isC_NameType(this.jTextFieldComponentName.getText())) {\r
771 Log.wrn("Update Externs", "Incorrect data type for ComponentName");\r
772 return false;\r
773 }\r
774 }\r
775 if (!isEmpty(this.jTextFieldDriverConfig.getText())) {\r
776 if (!DataValidation.isC_NameType(this.jTextFieldDriverConfig.getText())) {\r
777 Log.wrn("Update Externs", "Incorrect data type for DriverConfig");\r
778 return false;\r
779 }\r
780 }\r
781 if (!isEmpty(this.jTextFieldDriverDiagnostic.getText())) {\r
782 if (!DataValidation.isC_NameType(this.jTextFieldDriverDiagnostic.getText())) {\r
783 Log.wrn("Update Externs", "Incorrect data type for DriverDiagnostic");\r
06a19cee 784 return false;\r
785 }\r
786 }\r
3b7a9058 787 }\r
788\r
789 //\r
790 // Check call back\r
791 //\r
792 if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_CALL_BACK)) {\r
793 if (isEmpty(this.jTextFieldVirtualAddressMap.getText())\r
794 && isEmpty(this.jTextFieldExitBootServices.getText())) {\r
795 Log.wrn("Update Externs", "At least one of VirtualAddressMap or ExitBootServices should have a value");\r
796 return false;\r
797 }\r
798 if (!isEmpty(this.jTextFieldVirtualAddressMap.getText())) {\r
799 if (!DataValidation.isC_NameType(this.jTextFieldVirtualAddressMap.getText())) {\r
800 Log.wrn("Update Externs", "Incorrect data type for Virtual Address Map");\r
801 return false;\r
802 }\r
803 }\r
804 if (!isEmpty(this.jTextFieldExitBootServices.getText())) {\r
805 if (!DataValidation.isC_NameType(this.jTextFieldExitBootServices.getText())) {\r
806 Log.wrn("Update Externs", "Incorrect data type for Exit Boot Services");\r
807 return false;\r
808 }\r
809 }\r
810 }\r
811\r
812 //\r
813 // Check FeatureFlag\r
814 //\r
815 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
816 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
817 Log.wrn("Update Externs", "Incorrect data type for Feature Flag");\r
06a19cee 818 return false;\r
819 }\r
820 }\r
821\r
822 return true;\r
823 }\r
824\r
825 private ExternsIdentification getCurrentExterns() {\r
826 String arg0 = "";\r
3b7a9058 827 String arg1 = "";\r
828 String arg2 = "";\r
829 String arg3 = "";\r
830\r
831 String type = this.jComboBoxType.getSelectedItem().toString();\r
832 String featureFlag = this.jTextFieldFeatureFlag.getText();\r
833 Vector<String> arch = this.jArchCheckBox.getSelectedItemsVector();\r
834\r
835 if (type.equals(EnumerationData.EXTERNS_SPECIFICATION)) {\r
836 arg0 = this.jTextFieldSpecification.getText();\r
837 id = new ExternsIdentification(arg0, type);\r
06a19cee 838 }\r
06a19cee 839\r
3b7a9058 840 if (type.equals(EnumerationData.EXTERNS_IMAGE)) {\r
841 arg0 = this.jTextFieldModuleEntryPoint.getText();\r
842 arg1 = this.jTextFieldModuleUnloadImage.getText();\r
843 id = new ExternsIdentification(arg0, arg1, type, featureFlag, arch);\r
844 }\r
845\r
846 if (type.equals(EnumerationData.EXTERNS_LIBRARY)) {\r
847 arg0 = this.jTextFieldConstructor.getText();\r
848 arg1 = this.jTextFieldDestructor.getText();\r
849 id = new ExternsIdentification(arg0, arg1, type, featureFlag, arch);\r
850 }\r
851\r
852 if (type.equals(EnumerationData.EXTERNS_DRIVER)) {\r
853 arg0 = this.jTextFieldDriverBinding.getText();\r
854 arg1 = this.jTextFieldComponentName.getText();\r
855 arg2 = this.jTextFieldDriverConfig.getText();\r
856 arg3 = this.jTextFieldDriverDiagnostic.getText();\r
857 id = new ExternsIdentification(arg0, arg1, arg2, arg3, type, featureFlag, arch);\r
858 }\r
859\r
860 if (type.equals(EnumerationData.EXTERNS_CALL_BACK)) {\r
861 arg0 = this.jTextFieldVirtualAddressMap.getText();\r
862 arg1 = this.jTextFieldExitBootServices.getText();\r
863 id = new ExternsIdentification(arg0, arg1, type, featureFlag, arch);\r
864 }\r
06a19cee 865\r
06a19cee 866 return id;\r
867 }\r
868\r
869 /* (non-Javadoc)\r
870 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)\r
871 *\r
872 * Reflesh the frame when selected item changed\r
873 * \r
874 */\r
875 public void itemStateChanged(ItemEvent arg0) {\r
876 if (arg0.getSource() == jComboBoxType && arg0.getStateChange() == ItemEvent.SELECTED) {\r
3b7a9058 877 if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_SPECIFICATION)) {\r
878 this.jPanelSpecification.setVisible(true);\r
879 this.jPanelImage.setVisible(false);\r
880 this.jPanelLibrary.setVisible(false);\r
881 this.jPanelDriver.setVisible(false);\r
882 this.jPanelCallBack.setVisible(false);\r
c8b748bf 883 this.jLabelArch.setEnabled(false);\r
884 this.jArchCheckBox.setAllItemsEnabled(false);\r
3b7a9058 885 this.jLabelArch.setLocation(12, 62);\r
886 this.jArchCheckBox.setLocation(168, 62);\r
887 this.jLabelFeatureFlag.setLocation(12, 87);\r
888 this.jTextFieldFeatureFlag.setLocation(168, 87);\r
889 } else if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_IMAGE)) {\r
890 this.jPanelSpecification.setVisible(false);\r
891 this.jPanelImage.setVisible(true);\r
892 this.jPanelLibrary.setVisible(false);\r
893 this.jPanelDriver.setVisible(false);\r
894 this.jPanelCallBack.setVisible(false);\r
895 this.jLabelArch.setEnabled(true);\r
e08433ef 896 this.jArchCheckBox.setEnabledItems(this.vArchList);\r
3b7a9058 897 this.jLabelArch.setLocation(12, 87);\r
898 this.jArchCheckBox.setLocation(168, 87);\r
899 this.jLabelFeatureFlag.setLocation(12, 112);\r
900 this.jTextFieldFeatureFlag.setLocation(168, 112);\r
901 } else if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_LIBRARY)) {\r
902 this.jPanelSpecification.setVisible(false);\r
903 this.jPanelImage.setVisible(false);\r
904 this.jPanelLibrary.setVisible(true);\r
905 this.jPanelDriver.setVisible(false);\r
906 this.jPanelCallBack.setVisible(false);\r
907 this.jLabelArch.setEnabled(true);\r
e08433ef 908 this.jArchCheckBox.setEnabledItems(this.vArchList);\r
3b7a9058 909 this.jLabelArch.setLocation(12, 87);\r
910 this.jArchCheckBox.setLocation(168, 87);\r
911 this.jLabelFeatureFlag.setLocation(12, 112);\r
912 this.jTextFieldFeatureFlag.setLocation(168, 112);\r
913 } else if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_DRIVER)) {\r
914 this.jPanelSpecification.setVisible(false);\r
915 this.jPanelImage.setVisible(false);\r
916 this.jPanelLibrary.setVisible(false);\r
917 this.jPanelDriver.setVisible(true);\r
918 this.jPanelCallBack.setVisible(false);\r
919 this.jLabelArch.setEnabled(true);\r
e08433ef 920 this.jArchCheckBox.setEnabledItems(this.vArchList);\r
3b7a9058 921 this.jLabelArch.setLocation(12, 137);\r
922 this.jArchCheckBox.setLocation(168, 137);\r
923 this.jLabelFeatureFlag.setLocation(12, 162);\r
924 this.jTextFieldFeatureFlag.setLocation(168, 162);\r
925 } else if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_CALL_BACK)) {\r
926 this.jPanelSpecification.setVisible(false);\r
927 this.jPanelImage.setVisible(false);\r
928 this.jPanelLibrary.setVisible(false);\r
929 this.jPanelDriver.setVisible(false);\r
930 this.jPanelCallBack.setVisible(true);\r
c8b748bf 931 this.jLabelArch.setEnabled(true);\r
e08433ef 932 this.jArchCheckBox.setEnabledItems(this.vArchList);\r
3b7a9058 933 this.jLabelArch.setLocation(12, 87);\r
934 this.jArchCheckBox.setLocation(168, 87);\r
935 this.jLabelFeatureFlag.setLocation(12, 112);\r
936 this.jTextFieldFeatureFlag.setLocation(168, 112);\r
06a19cee 937 }\r
938 }\r
939 }\r
940\r
941 public ExternsIdentification getId() {\r
942 return id;\r
943 }\r
944\r
945 public void setId(ExternsIdentification id) {\r
946 this.id = id;\r
947 }\r
948}\r