]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/ExternsDlg.java
1. Fix EDKT321 A module's all top level elements' arch should be in range of the...
[mirror_edk2.git] / Tools / 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
737 if (!isEmpty(this.jTextFieldConstructor.getText())) {\r
738 if (!DataValidation.isC_NameType(this.jTextFieldConstructor.getText())) {\r
739 Log.wrn("Update Externs", "Incorrect data type for Constructor");\r
740 return false;\r
06a19cee 741 }\r
742 }\r
3b7a9058 743 if (!isEmpty(this.jTextFieldDestructor.getText())) {\r
744 if (!DataValidation.isC_NameType(this.jTextFieldDestructor.getText())) {\r
745 Log.wrn("Update Externs", "Incorrect data type for Destructor");\r
746 return false;\r
747 }\r
748 }\r
749 }\r
06a19cee 750\r
3b7a9058 751 //\r
752 // Check driver\r
753 //\r
754 if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_DRIVER)) {\r
755 if (isEmpty(this.jTextFieldDriverBinding.getText())) {\r
756 Log.wrn("Update Externs", "DriverBinding must have a value");\r
757 return false;\r
758 }\r
759 if (!isEmpty(this.jTextFieldDriverBinding.getText())) {\r
760 if (!DataValidation.isC_NameType(this.jTextFieldDriverBinding.getText())) {\r
761 Log.wrn("Update Externs", "Incorrect data type for DriverBinding");\r
762 return false;\r
763 }\r
764 }\r
765 if (!isEmpty(this.jTextFieldComponentName.getText())) {\r
766 if (!DataValidation.isC_NameType(this.jTextFieldComponentName.getText())) {\r
767 Log.wrn("Update Externs", "Incorrect data type for ComponentName");\r
768 return false;\r
769 }\r
770 }\r
771 if (!isEmpty(this.jTextFieldDriverConfig.getText())) {\r
772 if (!DataValidation.isC_NameType(this.jTextFieldDriverConfig.getText())) {\r
773 Log.wrn("Update Externs", "Incorrect data type for DriverConfig");\r
774 return false;\r
775 }\r
776 }\r
777 if (!isEmpty(this.jTextFieldDriverDiagnostic.getText())) {\r
778 if (!DataValidation.isC_NameType(this.jTextFieldDriverDiagnostic.getText())) {\r
779 Log.wrn("Update Externs", "Incorrect data type for DriverDiagnostic");\r
06a19cee 780 return false;\r
781 }\r
782 }\r
3b7a9058 783 }\r
784\r
785 //\r
786 // Check call back\r
787 //\r
788 if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_CALL_BACK)) {\r
789 if (isEmpty(this.jTextFieldVirtualAddressMap.getText())\r
790 && isEmpty(this.jTextFieldExitBootServices.getText())) {\r
791 Log.wrn("Update Externs", "At least one of VirtualAddressMap or ExitBootServices should have a value");\r
792 return false;\r
793 }\r
794 if (!isEmpty(this.jTextFieldVirtualAddressMap.getText())) {\r
795 if (!DataValidation.isC_NameType(this.jTextFieldVirtualAddressMap.getText())) {\r
796 Log.wrn("Update Externs", "Incorrect data type for Virtual Address Map");\r
797 return false;\r
798 }\r
799 }\r
800 if (!isEmpty(this.jTextFieldExitBootServices.getText())) {\r
801 if (!DataValidation.isC_NameType(this.jTextFieldExitBootServices.getText())) {\r
802 Log.wrn("Update Externs", "Incorrect data type for Exit Boot Services");\r
803 return false;\r
804 }\r
805 }\r
806 }\r
807\r
808 //\r
809 // Check FeatureFlag\r
810 //\r
811 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
812 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
813 Log.wrn("Update Externs", "Incorrect data type for Feature Flag");\r
06a19cee 814 return false;\r
815 }\r
816 }\r
817\r
818 return true;\r
819 }\r
820\r
821 private ExternsIdentification getCurrentExterns() {\r
822 String arg0 = "";\r
3b7a9058 823 String arg1 = "";\r
824 String arg2 = "";\r
825 String arg3 = "";\r
826\r
827 String type = this.jComboBoxType.getSelectedItem().toString();\r
828 String featureFlag = this.jTextFieldFeatureFlag.getText();\r
829 Vector<String> arch = this.jArchCheckBox.getSelectedItemsVector();\r
830\r
831 if (type.equals(EnumerationData.EXTERNS_SPECIFICATION)) {\r
832 arg0 = this.jTextFieldSpecification.getText();\r
833 id = new ExternsIdentification(arg0, type);\r
06a19cee 834 }\r
06a19cee 835\r
3b7a9058 836 if (type.equals(EnumerationData.EXTERNS_IMAGE)) {\r
837 arg0 = this.jTextFieldModuleEntryPoint.getText();\r
838 arg1 = this.jTextFieldModuleUnloadImage.getText();\r
839 id = new ExternsIdentification(arg0, arg1, type, featureFlag, arch);\r
840 }\r
841\r
842 if (type.equals(EnumerationData.EXTERNS_LIBRARY)) {\r
843 arg0 = this.jTextFieldConstructor.getText();\r
844 arg1 = this.jTextFieldDestructor.getText();\r
845 id = new ExternsIdentification(arg0, arg1, type, featureFlag, arch);\r
846 }\r
847\r
848 if (type.equals(EnumerationData.EXTERNS_DRIVER)) {\r
849 arg0 = this.jTextFieldDriverBinding.getText();\r
850 arg1 = this.jTextFieldComponentName.getText();\r
851 arg2 = this.jTextFieldDriverConfig.getText();\r
852 arg3 = this.jTextFieldDriverDiagnostic.getText();\r
853 id = new ExternsIdentification(arg0, arg1, arg2, arg3, type, featureFlag, arch);\r
854 }\r
855\r
856 if (type.equals(EnumerationData.EXTERNS_CALL_BACK)) {\r
857 arg0 = this.jTextFieldVirtualAddressMap.getText();\r
858 arg1 = this.jTextFieldExitBootServices.getText();\r
859 id = new ExternsIdentification(arg0, arg1, type, featureFlag, arch);\r
860 }\r
06a19cee 861\r
06a19cee 862 return id;\r
863 }\r
864\r
865 /* (non-Javadoc)\r
866 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)\r
867 *\r
868 * Reflesh the frame when selected item changed\r
869 * \r
870 */\r
871 public void itemStateChanged(ItemEvent arg0) {\r
872 if (arg0.getSource() == jComboBoxType && arg0.getStateChange() == ItemEvent.SELECTED) {\r
3b7a9058 873 if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_SPECIFICATION)) {\r
874 this.jPanelSpecification.setVisible(true);\r
875 this.jPanelImage.setVisible(false);\r
876 this.jPanelLibrary.setVisible(false);\r
877 this.jPanelDriver.setVisible(false);\r
878 this.jPanelCallBack.setVisible(false);\r
c8b748bf 879 this.jLabelArch.setEnabled(false);\r
880 this.jArchCheckBox.setAllItemsEnabled(false);\r
3b7a9058 881 this.jLabelArch.setLocation(12, 62);\r
882 this.jArchCheckBox.setLocation(168, 62);\r
883 this.jLabelFeatureFlag.setLocation(12, 87);\r
884 this.jTextFieldFeatureFlag.setLocation(168, 87);\r
885 } else if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_IMAGE)) {\r
886 this.jPanelSpecification.setVisible(false);\r
887 this.jPanelImage.setVisible(true);\r
888 this.jPanelLibrary.setVisible(false);\r
889 this.jPanelDriver.setVisible(false);\r
890 this.jPanelCallBack.setVisible(false);\r
891 this.jLabelArch.setEnabled(true);\r
e08433ef 892 this.jArchCheckBox.setEnabledItems(this.vArchList);\r
3b7a9058 893 this.jLabelArch.setLocation(12, 87);\r
894 this.jArchCheckBox.setLocation(168, 87);\r
895 this.jLabelFeatureFlag.setLocation(12, 112);\r
896 this.jTextFieldFeatureFlag.setLocation(168, 112);\r
897 } else if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_LIBRARY)) {\r
898 this.jPanelSpecification.setVisible(false);\r
899 this.jPanelImage.setVisible(false);\r
900 this.jPanelLibrary.setVisible(true);\r
901 this.jPanelDriver.setVisible(false);\r
902 this.jPanelCallBack.setVisible(false);\r
903 this.jLabelArch.setEnabled(true);\r
e08433ef 904 this.jArchCheckBox.setEnabledItems(this.vArchList);\r
3b7a9058 905 this.jLabelArch.setLocation(12, 87);\r
906 this.jArchCheckBox.setLocation(168, 87);\r
907 this.jLabelFeatureFlag.setLocation(12, 112);\r
908 this.jTextFieldFeatureFlag.setLocation(168, 112);\r
909 } else if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_DRIVER)) {\r
910 this.jPanelSpecification.setVisible(false);\r
911 this.jPanelImage.setVisible(false);\r
912 this.jPanelLibrary.setVisible(false);\r
913 this.jPanelDriver.setVisible(true);\r
914 this.jPanelCallBack.setVisible(false);\r
915 this.jLabelArch.setEnabled(true);\r
e08433ef 916 this.jArchCheckBox.setEnabledItems(this.vArchList);\r
3b7a9058 917 this.jLabelArch.setLocation(12, 137);\r
918 this.jArchCheckBox.setLocation(168, 137);\r
919 this.jLabelFeatureFlag.setLocation(12, 162);\r
920 this.jTextFieldFeatureFlag.setLocation(168, 162);\r
921 } else if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_CALL_BACK)) {\r
922 this.jPanelSpecification.setVisible(false);\r
923 this.jPanelImage.setVisible(false);\r
924 this.jPanelLibrary.setVisible(false);\r
925 this.jPanelDriver.setVisible(false);\r
926 this.jPanelCallBack.setVisible(true);\r
c8b748bf 927 this.jLabelArch.setEnabled(true);\r
e08433ef 928 this.jArchCheckBox.setEnabledItems(this.vArchList);\r
3b7a9058 929 this.jLabelArch.setLocation(12, 87);\r
930 this.jArchCheckBox.setLocation(168, 87);\r
931 this.jLabelFeatureFlag.setLocation(12, 112);\r
932 this.jTextFieldFeatureFlag.setLocation(168, 112);\r
06a19cee 933 }\r
934 }\r
935 }\r
936\r
937 public ExternsIdentification getId() {\r
938 return id;\r
939 }\r
940\r
941 public void setId(ExternsIdentification id) {\r
942 this.id = id;\r
943 }\r
944}\r