]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/MsaHeader.java
1. Fix EDKT433 help context triggered by mouse movement is not displayed properly
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / MsaHeader.java
1 /** @file
2
3 The file is used to create, update MsaHeader of MSA file
4
5 Copyright (c) 2006, Intel Corporation
6 All rights reserved. This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 **/
15
16 package org.tianocore.frameworkwizard.module.ui;
17
18 import java.awt.event.ActionEvent;
19 import java.awt.event.ComponentEvent;
20 import java.awt.event.FocusEvent;
21 import java.awt.event.ItemEvent;
22 import java.util.Vector;
23
24 import javax.swing.ButtonGroup;
25 import javax.swing.JButton;
26 import javax.swing.JCheckBox;
27 import javax.swing.JComboBox;
28 import javax.swing.JLabel;
29 import javax.swing.JPanel;
30 import javax.swing.JScrollPane;
31 import javax.swing.JTextArea;
32 import javax.swing.JTextField;
33
34 import org.tianocore.ExternsDocument;
35 import org.tianocore.ModuleDefinitionsDocument;
36 import org.tianocore.ModuleSurfaceAreaDocument;
37 import org.tianocore.ModuleTypeDef;
38 import org.tianocore.MsaHeaderDocument;
39 import org.tianocore.PcdDriverTypes;
40 import org.tianocore.LicenseDocument.License;
41 import org.tianocore.frameworkwizard.common.DataType;
42 import org.tianocore.frameworkwizard.common.DataValidation;
43 import org.tianocore.frameworkwizard.common.EnumerationData;
44 import org.tianocore.frameworkwizard.common.Log;
45 import org.tianocore.frameworkwizard.common.Tools;
46 import org.tianocore.frameworkwizard.common.Identifications.OpeningModuleType;
47 import org.tianocore.frameworkwizard.common.ui.IInternalFrame;
48 import org.tianocore.frameworkwizard.common.ui.StarLabel;
49 import javax.swing.JRadioButton;
50 import javax.swing.event.DocumentEvent;
51 import javax.swing.event.DocumentListener;
52
53 /**
54 The class is used to create, update MsaHeader of MSA file
55 It extends IInternalFrame
56
57
58
59 **/
60 public class MsaHeader extends IInternalFrame implements DocumentListener {
61
62 ///
63 /// Define class Serial Version UID
64 ///
65 private static final long serialVersionUID = -8152099582923006900L;
66
67 private int dialogWidth = 500;
68
69 private int dialogHeight = 630;
70
71 private final int labelWidth = 155;
72
73 private int valueWidth = 320;
74
75 private final int labelCol = 12;
76
77 private final int valueCol = 168;
78
79 //
80 //Define class members
81 //
82 private JPanel jContentPane = null;
83
84 private JLabel jLabelBaseName = null;
85
86 private JTextField jTextFieldBaseName = null;
87
88 private JLabel jLabelGuid = null;
89
90 private JTextField jTextFieldGuid = null;
91
92 private JLabel jLabelVersion = null;
93
94 private JTextField jTextFieldVersion = null;
95
96 private JButton jButtonGenerateGuid = null;
97
98 private JLabel jLabelLicense = null;
99
100 private JTextArea jTextAreaLicense = null;
101
102 private JLabel jLabelCopyright = null;
103
104 private JLabel jLabelDescription = null;
105
106 private JTextArea jTextAreaDescription = null;
107
108 private JLabel jLabelSpecification = null;
109
110 private JTextField jTextFieldSpecification = null;
111
112 private JButton jButtonOk = null;
113
114 private JButton jButtonCancel = null;
115
116 private JScrollPane jScrollPaneLicense = null;
117
118 private JScrollPane jScrollPaneDescription = null;
119
120 private JLabel jLabelAbstract = null;
121
122 private JTextField jTextFieldAbstract = null;
123
124 private JLabel jLabelModuleType = null;
125
126 private JComboBox jComboBoxModuleType = null;
127
128 private JLabel jLabelArch = null;
129
130 private JLabel jLabelBinaryModule = null;
131
132 private JLabel jLabelOutputFileBasename = null;
133
134 private JTextField jTextFieldOutputFileBasename = null;
135
136 private JScrollPane jScrollPaneCopyright = null;
137
138 private JTextArea jTextAreaCopyright = null;
139
140 private JLabel jLabelURL = null;
141
142 private JTextField jTextFieldURL = null;
143
144 private JScrollPane jScrollPane = null;
145
146 private StarLabel jStarLabel1 = null;
147
148 private StarLabel jStarLabel2 = null;
149
150 private StarLabel jStarLabel4 = null;
151
152 private StarLabel jStarLabel5 = null;
153
154 private StarLabel jStarLabel6 = null;
155
156 private StarLabel jStarLabel7 = null;
157
158 private StarLabel jStarLabel8 = null;
159
160 private StarLabel jStarLabel10 = null;
161
162 private StarLabel jStarLabel12 = null;
163
164 private StarLabel jStarLabel13 = null;
165
166 private StarLabel jStarLabel14 = null;
167
168 private JCheckBox jCheckBoxIa32 = null;
169
170 private JCheckBox jCheckBoxX64 = null;
171
172 private JCheckBox jCheckBoxIpf = null;
173
174 private JCheckBox jCheckBoxEbc = null;
175
176 private JCheckBox jCheckBoxArm = null;
177
178 private JCheckBox jCheckBoxPpc = null;
179
180 private JTextField jComboBoxPcdIsDriver = null;
181
182 private JCheckBox jCheckBoxPcd = null;
183
184 private JCheckBox jCheckBoxFlashMap = null;
185
186 //
187 // Not used for UI
188 //
189 private MsaHeaderDocument.MsaHeader msaHeader = null;
190
191 private ModuleDefinitionsDocument.ModuleDefinitions md = null;
192
193 private ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = null;
194
195 private ExternsDocument.Externs ex = null;
196
197 private OpeningModuleType omt = null;
198
199 private EnumerationData ed = new EnumerationData();
200
201 private JRadioButton jRadioButtonBinaryModuleTrue = null;
202
203 private JRadioButton jRadioButtonBinaryModuleFalse = null;
204
205 /**
206 * This method initializes jCheckBoxIa32
207 *
208 * @return javax.swing.JCheckBox
209 */
210 private JCheckBox getJCheckBoxIa32() {
211 if (jCheckBoxIa32 == null) {
212 jCheckBoxIa32 = new JCheckBox();
213 jCheckBoxIa32.setBounds(new java.awt.Rectangle(valueCol, 505, 55, 20));
214 jCheckBoxIa32.setText("IA32");
215 jCheckBoxIa32.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);
216 }
217 return jCheckBoxIa32;
218 }
219
220 /**
221 * This method initializes jCheckBoxX64
222 *
223 * @return javax.swing.JCheckBox
224 */
225 private JCheckBox getJCheckBoxX64() {
226 if (jCheckBoxX64 == null) {
227 jCheckBoxX64 = new JCheckBox();
228 jCheckBoxX64.setBounds(new java.awt.Rectangle(valueCol + 55, 505, 53, 20));
229 jCheckBoxX64.setText("X64");
230 jCheckBoxX64.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);
231 }
232 return jCheckBoxX64;
233 }
234
235 /**
236 * This method initializes jCheckBoxIpf
237 *
238 * @return javax.swing.JCheckBox
239 */
240 private JCheckBox getJCheckBoxIpf() {
241 if (jCheckBoxIpf == null) {
242 jCheckBoxIpf = new JCheckBox();
243 jCheckBoxIpf.setBounds(new java.awt.Rectangle(valueCol + 110, 505, 52, 20));
244 jCheckBoxIpf.setText("IPF");
245 jCheckBoxIpf.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);
246 }
247 return jCheckBoxIpf;
248 }
249
250 /**
251 * This method initializes jCheckBoxEbc
252 *
253 * @return javax.swing.JCheckBox
254 */
255 private JCheckBox getJCheckBoxEbc() {
256 if (jCheckBoxEbc == null) {
257 jCheckBoxEbc = new JCheckBox();
258 jCheckBoxEbc.setBounds(new java.awt.Rectangle(valueCol + 165, 505, 53, 20));
259 jCheckBoxEbc.setText("EBC");
260 jCheckBoxEbc.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);
261 }
262 return jCheckBoxEbc;
263 }
264
265 /**
266 * This method initializes jCheckBoxArm
267 *
268 * @return javax.swing.JCheckBox
269 */
270 private JCheckBox getJCheckBoxArm() {
271 if (jCheckBoxArm == null) {
272 jCheckBoxArm = new JCheckBox();
273 jCheckBoxArm.setBounds(new java.awt.Rectangle(valueCol + 220, 505, 54, 20));
274 jCheckBoxArm.setText("ARM");
275 jCheckBoxArm.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);
276 }
277 return jCheckBoxArm;
278 }
279
280 /**
281 * This method initializes jCheckBoxPpc
282 *
283 * @return javax.swing.JCheckBox
284 */
285 private JCheckBox getJCheckBoxPpc() {
286 if (jCheckBoxPpc == null) {
287 jCheckBoxPpc = new JCheckBox();
288 jCheckBoxPpc.setBounds(new java.awt.Rectangle(valueCol + 285, 505, 53, 20));
289 jCheckBoxPpc.setText("PPC");
290 jCheckBoxPpc.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);
291 }
292 return jCheckBoxPpc;
293 }
294
295 /**
296 This method initializes jTextFieldBaseName
297
298 @return javax.swing.JTextField jTextFieldBaseName
299
300 **/
301 private JTextField getJTextFieldBaseName() {
302 if (jTextFieldBaseName == null) {
303 jTextFieldBaseName = new JTextField();
304 jTextFieldBaseName.setBounds(new java.awt.Rectangle(valueCol, 10, valueWidth, 20));
305 jTextFieldBaseName.setPreferredSize(new java.awt.Dimension(320, 20));
306 jTextFieldBaseName.addFocusListener(this);
307 jTextFieldBaseName.setToolTipText("A brief Identifier, such as USB I/O Library, of the module");
308 }
309 return jTextFieldBaseName;
310 }
311
312 /**
313 This method initializes jTextFieldGuid
314
315 @return javax.swing.JTextField jTextFieldGuid
316
317 **/
318 private JTextField getJTextFieldGuid() {
319 if (jTextFieldGuid == null) {
320 jTextFieldGuid = new JTextField();
321 jTextFieldGuid.setPreferredSize(new java.awt.Dimension(250, 20));
322 jTextFieldGuid.setLocation(new java.awt.Point(valueCol, 60));
323 jTextFieldGuid.setSize(new java.awt.Dimension(250, 20));
324 jTextFieldGuid.addFocusListener(this);
325 jTextFieldGuid.setToolTipText("Guaranteed Unique Identification Number, Registry Format (8-4-4-4-12)");
326 }
327 return jTextFieldGuid;
328 }
329
330 /**
331 This method initializes jTextFieldVersion
332
333 @return javax.swing.JTextField jTextFieldVersion
334
335 **/
336 private JTextField getJTextFieldVersion() {
337 if (jTextFieldVersion == null) {
338 jTextFieldVersion = new JTextField();
339 jTextFieldVersion.setPreferredSize(new java.awt.Dimension(valueWidth, 20));
340 jTextFieldVersion.setLocation(new java.awt.Point(valueCol, 85));
341 jTextFieldVersion.setSize(new java.awt.Dimension(valueWidth, 20));
342 jTextFieldVersion.addFocusListener(this);
343 jTextFieldVersion.setToolTipText("A Version Number, 1.0, 1, 1.01, 1.0.1");
344 }
345 return jTextFieldVersion;
346 }
347
348 /**
349 This method initializes jButtonGenerateGuid
350
351 @return javax.swing.JButton jButtonGenerateGuid
352
353 **/
354 private JButton getJButtonGenerateGuid() {
355 if (jButtonGenerateGuid == null) {
356 int genGuidCol = valueCol + 285;
357 jButtonGenerateGuid = new JButton();
358 jButtonGenerateGuid.setPreferredSize(new java.awt.Dimension(65, 20));
359 jButtonGenerateGuid.setSize(new java.awt.Dimension(65, 20));
360 jButtonGenerateGuid.setLocation(new java.awt.Point(genGuidCol, 60));
361 jButtonGenerateGuid.setText("GEN");
362 jButtonGenerateGuid.addActionListener(this);
363 }
364 return jButtonGenerateGuid;
365 }
366
367 /**
368 This method initializes jTextAreaLicense
369
370 @return javax.swing.JTextArea jTextAreaLicense
371
372 **/
373 private JTextArea getJTextAreaLicense() {
374 if (jTextAreaLicense == null) {
375 jTextAreaLicense = new JTextArea();
376 jTextAreaLicense.setText("");
377 jTextAreaLicense.setLineWrap(true);
378 jTextAreaLicense.addFocusListener(this);
379 jTextAreaLicense.setWrapStyleWord(true);
380 jTextAreaLicense.setSelectionStart(0);
381 jTextAreaLicense.setSelectionEnd(0);
382 jTextAreaLicense.setToolTipText("The License for this Module.");
383 }
384 return jTextAreaLicense;
385 }
386
387 /**
388 This method initializes jTextAreaDescription
389
390 @return javax.swing.JTextArea jTextAreaDescription
391
392 **/
393 private JTextArea getJTextAreaDescription() {
394 if (jTextAreaDescription == null) {
395 jTextAreaDescription = new JTextArea();
396 jTextAreaDescription.setLineWrap(true);
397 jTextAreaDescription.addFocusListener(this);
398 jTextAreaDescription.setToolTipText("A verbose description of the module.");
399 jTextAreaDescription.setWrapStyleWord(true);
400 jTextAreaDescription.setSelectionStart(0);
401 jTextAreaDescription.setSelectionEnd(0);
402 }
403 return jTextAreaDescription;
404 }
405
406 /**
407 This method initializes jTextFieldSpecification
408
409 @return javax.swing.JTextField jTextFieldSpecification
410
411 **/
412 private JTextField getJTextFieldSpecification() {
413 if (jTextFieldSpecification == null) {
414 int specWidth = valueWidth + 50;
415 jTextFieldSpecification = new JTextField();
416
417 jTextFieldSpecification.setPreferredSize(new java.awt.Dimension(specWidth, 20));
418 jTextFieldSpecification.setText("FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052");
419 jTextFieldSpecification.setBorder(null);
420
421 jTextFieldSpecification.setSize(new java.awt.Dimension(specWidth, 20));
422 jTextFieldSpecification.setLocation(new java.awt.Point(labelCol, dialogHeight - 30));
423 jTextFieldSpecification.setEditable(false);
424 jTextFieldSpecification.addFocusListener(this);
425 }
426 return jTextFieldSpecification;
427 }
428
429 /**
430 This method initializes jButtonOk
431
432 @return javax.swing.JButton jButtonOk
433
434 **/
435 private JButton getJButtonOk() {
436 if (jButtonOk == null) {
437 jButtonOk = new JButton();
438 jButtonOk.setText("OK");
439 jButtonOk.setPreferredSize(new java.awt.Dimension(90, 20));
440 jButtonOk.setBounds(new java.awt.Rectangle(390, 455, 90, 20));
441 jButtonOk.addActionListener(this);
442 jButtonOk.setVisible(false);
443 }
444 return jButtonOk;
445 }
446
447 /**
448 This method initializes jButtonCancel
449
450 @return javax.swing.JButton jButtonCancel
451
452 **/
453 private JButton getJButtonCancel() {
454 if (jButtonCancel == null) {
455 jButtonCancel = new JButton();
456 jButtonCancel.setText("Cancel");
457 jButtonCancel.setBounds(new java.awt.Rectangle(390, 445, 90, 20));
458 jButtonCancel.addActionListener(this);
459 jButtonCancel.setPreferredSize(new java.awt.Dimension(90, 20));
460 jButtonCancel.setVisible(false);
461 }
462 return jButtonCancel;
463 }
464
465 /**
466 This method initializes jScrollPaneLicense
467
468 @return javax.swing.JScrollPane jScrollPaneLicense
469
470 **/
471 private JScrollPane getJScrollPaneLicense() {
472 if (jScrollPaneLicense == null) {
473 jScrollPaneLicense = new JScrollPane();
474 jScrollPaneLicense.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
475 jScrollPaneLicense.setSize(new java.awt.Dimension(valueWidth, 120));
476 jScrollPaneLicense.setLocation(new java.awt.Point(valueCol, 305));
477 jScrollPaneLicense.setViewportView(getJTextAreaLicense());
478 jScrollPaneLicense.setPreferredSize(new java.awt.Dimension(valueWidth, 120));
479 }
480 return jScrollPaneLicense;
481 }
482
483 /**
484 This method initializes jScrollPaneDescription
485
486 @return javax.swing.JScrollPane jScrollPaneDescription
487
488 **/
489 private JScrollPane getJScrollPaneDescription() {
490 if (jScrollPaneDescription == null) {
491 jScrollPaneDescription = new JScrollPane();
492 jScrollPaneDescription.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
493 jScrollPaneDescription.setSize(new java.awt.Dimension(valueWidth, 120));
494 jScrollPaneDescription.setLocation(new java.awt.Point(valueCol, 135));
495 jScrollPaneDescription.setViewportView(getJTextAreaDescription());
496 jScrollPaneDescription.setPreferredSize(new java.awt.Dimension(valueWidth, 120));
497 }
498 return jScrollPaneDescription;
499 }
500
501 /**
502 This method initializes jTextFieldAbstract
503
504 @return javax.swing.JTextField jTextFieldAbstract
505
506 **/
507 private JTextField getJTextFieldAbstract() {
508 if (jTextFieldAbstract == null) {
509 jTextFieldAbstract = new JTextField();
510 jTextFieldAbstract.setPreferredSize(new java.awt.Dimension(valueWidth, 20));
511 jTextFieldAbstract.setLocation(new java.awt.Point(valueCol, 110));
512 jTextFieldAbstract.setSize(new java.awt.Dimension(valueWidth, 20));
513 jTextFieldAbstract.addFocusListener(this);
514 jTextFieldAbstract.setToolTipText("A one sentence description of this module.");
515 }
516 return jTextFieldAbstract;
517 }
518
519 /**
520 This method initializes jComboBoxModuleType
521
522 @return javax.swing.JComboBox jComboBoxModuleType
523
524 **/
525 private JComboBox getJComboBoxModuleType() {
526 if (jComboBoxModuleType == null) {
527 jComboBoxModuleType = new JComboBox();
528 jComboBoxModuleType.setBounds(new java.awt.Rectangle(valueCol, 35, valueWidth, 20));
529 jComboBoxModuleType.setPreferredSize(new java.awt.Dimension(valueWidth, 20));
530 }
531 return jComboBoxModuleType;
532 }
533
534 /**
535 This method initializes jTextFieldURL
536
537 @return javax.swing.JTextField
538
539 **/
540 private JTextField getJTextFieldURL() {
541 if (jTextFieldURL == null) {
542 jTextFieldURL = new JTextField();
543 jTextFieldURL.setPreferredSize(new java.awt.Dimension(valueWidth, 20));
544 jTextFieldURL.setLocation(new java.awt.Point(valueCol, 430));
545 jTextFieldURL.setSize(new java.awt.Dimension(valueWidth, 20));
546 jTextFieldURL.addFocusListener(this);
547 jTextFieldURL.setToolTipText("A URL for the latest version of the license.");
548 }
549 return jTextFieldURL;
550 }
551
552 /**
553 This method initializes jScrollPane
554
555 @return javax.swing.JScrollPane
556
557 **/
558 private JScrollPane getJScrollPane() {
559 if (jScrollPane == null) {
560 jScrollPane = new JScrollPane();
561 jScrollPane.setViewportView(getJContentPane());
562 }
563 return jScrollPane;
564 }
565
566 /**
567 This method initializes jScrollPaneCopyright
568
569 @return javax.swing.JScrollPane
570
571 **/
572 private JScrollPane getJScrollPaneCopyright() {
573 if (jScrollPaneCopyright == null) {
574 jScrollPaneCopyright = new JScrollPane();
575 jScrollPaneCopyright.setBounds(new java.awt.Rectangle(valueCol, 260, valueWidth, 40));
576 jScrollPaneCopyright.setPreferredSize(new java.awt.Dimension(valueWidth, 40));
577 jScrollPaneCopyright.setViewportView(getJTextAreaCopyright());
578 jScrollPaneCopyright.setSize(new java.awt.Dimension(valueWidth, 40));
579 }
580 return jScrollPaneCopyright;
581 }
582
583 /**
584 This method initializes jTextAreaCopyright
585
586 @return javax.swing.JTextArea
587
588 **/
589 private JTextArea getJTextAreaCopyright() {
590 if (jTextAreaCopyright == null) {
591 jTextAreaCopyright = new JTextArea();
592 jTextAreaCopyright.setLineWrap(true);
593 jTextAreaCopyright.addFocusListener(this);
594 jTextAreaCopyright.setWrapStyleWord(true);
595 jTextAreaCopyright.setSelectionStart(0);
596 jTextAreaCopyright.setSelectionEnd(0);
597 jTextAreaCopyright.setBounds(new java.awt.Rectangle(0, 0, valueWidth, 40));
598 jTextAreaCopyright.setToolTipText("One or more copyright lines.");
599 }
600 return jTextAreaCopyright;
601 }
602
603 /**
604 * This method initializes jTextFieldOutputFileBasename
605 *
606 * @return javax.swing.JTextField
607 */
608 private JTextField getJTextFieldOutputFileBasename() {
609 if (jTextFieldOutputFileBasename == null) {
610 jTextFieldOutputFileBasename = new JTextField();
611 jTextFieldOutputFileBasename.setBounds(new java.awt.Rectangle(valueCol, 455, valueWidth, 20));
612 jTextFieldOutputFileBasename.setPreferredSize(new java.awt.Dimension(valueWidth, 20));
613 jTextFieldOutputFileBasename.addFocusListener(this);
614 jTextFieldOutputFileBasename.setToolTipText("Enter a single word for generated output file names.");
615 }
616 return jTextFieldOutputFileBasename;
617 }
618
619 /**
620 * This method initializes jComboBoxPcdIsDriver
621 *
622 * @return javax.swing.JComboBox
623 */
624 private JTextField getJComboBoxPcdIsDriver() {
625 if (jComboBoxPcdIsDriver == null) {
626 jComboBoxPcdIsDriver = new JTextField();
627 jComboBoxPcdIsDriver.setPreferredSize(new java.awt.Dimension(valueWidth, 20));
628 jComboBoxPcdIsDriver.setBounds(new java.awt.Rectangle(valueCol, 530, valueWidth, 20));
629 jComboBoxPcdIsDriver.setEnabled(false);
630 jComboBoxPcdIsDriver.setVisible(false);
631 }
632 return jComboBoxPcdIsDriver;
633 }
634
635 /**
636 This is the default constructor
637
638 **/
639 public MsaHeader() {
640 super();
641 init();
642 this.setVisible(true);
643 }
644
645 /**
646 This is the override edit constructor
647
648 @param inMsaHeader The input data of MsaHeaderDocument.MsaHeader
649
650 **/
651 public MsaHeader(OpeningModuleType inMsa) {
652 super();
653 this.omt = inMsa;
654 this.msa = omt.getXmlMsa();
655
656 //
657 // Set module definitions default value
658 //
659 if (msa.getModuleDefinitions() == null) {
660 ModuleDefinitionsDocument.ModuleDefinitions md = ModuleDefinitionsDocument.ModuleDefinitions.Factory
661 .newInstance();
662 md.setOutputFileBasename(msa.getMsaHeader().getModuleName());
663 md.setBinaryModule(false);
664 md.setSupportedArchitectures(ed.getVSupportedArchitectures());
665 msa.setModuleDefinitions(md);
666 }
667
668 //
669 // Init items of Header, Definitions and Externs
670 //
671 init(msa.getMsaHeader());
672 init(msa.getModuleDefinitions());
673 init(msa.getExterns());
674 this.addListeners();
675
676 this.setVisible(true);
677 this.setViewMode(false);
678 }
679
680 /**
681 Disable all components when the mode is view
682
683 @param isView true - The view mode; false - The non-view mode
684
685 **/
686 public void setViewMode(boolean isView) {
687 if (isView) {
688 this.jTextFieldBaseName.setEnabled(!isView);
689 this.jTextFieldGuid.setEnabled(!isView);
690 this.jTextFieldVersion.setEnabled(!isView);
691 this.jTextAreaLicense.setEnabled(!isView);
692 this.jTextAreaCopyright.setEnabled(!isView);
693 this.jTextAreaDescription.setEnabled(!isView);
694 this.jTextFieldSpecification.setEnabled(!isView);
695 this.jTextFieldAbstract.setEnabled(!isView);
696 this.jComboBoxModuleType.setEnabled(!isView);
697 this.jButtonCancel.setEnabled(!isView);
698 this.jButtonGenerateGuid.setEnabled(!isView);
699 this.jButtonOk.setEnabled(!isView);
700 }
701 }
702
703 /**
704 This method initializes this
705
706 **/
707 private void init() {
708 this.setSize(dialogWidth, dialogHeight);
709 this.setPreferredSize(new java.awt.Dimension(dialogWidth, dialogHeight));
710 this.setContentPane(getJScrollPane());
711 this.setTitle("Module Surface Area Header");
712 initFrame();
713 }
714
715 /**
716 This method initializes this
717 Fill values to all fields if these values are not empty
718
719 @param inMsaHeader The input data of MsaHeaderDocument.MsaHeader
720
721 **/
722 private void init(MsaHeaderDocument.MsaHeader inMsaHeader) {
723 init();
724 if (inMsaHeader != null) {
725 setMsaHeader(inMsaHeader);
726 if (this.msaHeader.getModuleName() != null) {
727 this.jTextFieldBaseName.setText(this.msaHeader.getModuleName());
728 }
729 if (this.msaHeader.getModuleType() != null) {
730 this.jComboBoxModuleType.setSelectedItem(this.msaHeader.getModuleType().toString());
731 }
732 if (this.msaHeader.getGuidValue() != null) {
733 this.jTextFieldGuid.setText(this.msaHeader.getGuidValue());
734 }
735 if (this.msaHeader.getVersion() != null) {
736 this.jTextFieldVersion.setText(this.msaHeader.getVersion());
737 }
738 if (this.msaHeader.getAbstract() != null) {
739 this.jTextFieldAbstract.setText(this.msaHeader.getAbstract());
740 }
741 if (this.msaHeader.getDescription() != null) {
742 this.jTextAreaDescription.setText(this.msaHeader.getDescription());
743 jTextAreaDescription.setSelectionStart(0);
744 jTextAreaDescription.setSelectionEnd(0);
745 }
746 if (this.msaHeader.getCopyright() != null) {
747 this.jTextAreaCopyright.setText(this.msaHeader.getCopyright());
748 }
749 if (this.msaHeader.getLicense() != null) {
750 this.jTextAreaLicense.setText(this.msaHeader.getLicense().getStringValue());
751 jTextAreaLicense.setSelectionStart(0);
752 jTextAreaLicense.setSelectionEnd(0);
753 }
754 if (this.msaHeader.getLicense() != null && this.msaHeader.getLicense().getURL() != null) {
755 this.jTextFieldURL.setText(this.msaHeader.getLicense().getURL());
756 }
757 if (this.msaHeader.getSpecification() != null) {
758 this.jTextFieldSpecification.setText(this.msaHeader.getSpecification());
759 }
760 }
761 }
762
763 /**
764 This method initializes this
765 Fill values to all fields if these values are not empty
766
767 @param inMsaHeader The input data of MsaHeaderDocument.MsaHeader
768
769 **/
770 private void init(ModuleDefinitionsDocument.ModuleDefinitions inMd) {
771 if (inMd != null) {
772 this.md = inMd;
773 if (md.getSupportedArchitectures() != null) {
774 this.setSelectedItems(Tools.convertListToVector(md.getSupportedArchitectures()));
775 }
776 if (md.getBinaryModule()) {
777 this.jRadioButtonBinaryModuleTrue.setSelected(true);
778 } else {
779 this.jRadioButtonBinaryModuleFalse.setSelected(true);
780 }
781 if (md.getOutputFileBasename() != null) {
782 this.jTextFieldOutputFileBasename.setText(md.getOutputFileBasename());
783 }
784 }
785 }
786
787 /**
788 This method initializes this
789 Fill values to all fields if these values are not empty
790
791 @param inEx The input data of ExternsDocument.Externs
792
793 **/
794 private void init(ExternsDocument.Externs inEx) {
795 if (inEx != null) {
796 this.ex = inEx;
797 if (ex.getPcdIsDriver() != null) {
798 this.jCheckBoxPcd.setSelected(true);
799 this.jCheckBoxPcd.setEnabled(true);
800 }
801 this.jCheckBoxFlashMap.setSelected(ex.getTianoR8FlashMapH());
802 }
803 }
804
805 /**
806 This method initializes jContentPane
807
808 @return javax.swing.JPanel jContentPane
809
810 **/
811 private JPanel getJContentPane() {
812 if (jContentPane == null) {
813
814 jLabelURL = new JLabel();
815 jLabelURL.setText("License URL");
816 jLabelURL.setLocation(new java.awt.Point(labelCol, 430));
817 jLabelURL.setSize(new java.awt.Dimension(labelWidth, 20));
818 jLabelBaseName = new JLabel();
819 jLabelBaseName.setText("Module Name");
820 jLabelBaseName.setBounds(new java.awt.Rectangle(labelCol, 10, labelWidth, 20));
821 jLabelModuleType = new JLabel();
822 jLabelModuleType.setBounds(new java.awt.Rectangle(labelCol, 35, labelWidth, 20));
823 jLabelModuleType.setText("Module Type");
824 jLabelGuid = new JLabel();
825 jLabelGuid.setText("Guid Value");
826 jLabelGuid.setLocation(new java.awt.Point(labelCol, 60));
827 jLabelGuid.setSize(new java.awt.Dimension(labelWidth, 20));
828 jLabelVersion = new JLabel();
829 jLabelVersion.setText("Version");
830 jLabelVersion.setLocation(new java.awt.Point(labelCol, 85));
831 jLabelVersion.setSize(new java.awt.Dimension(labelWidth, 20));
832 jLabelAbstract = new JLabel();
833 jLabelAbstract.setText("Abstract");
834 jLabelAbstract.setLocation(new java.awt.Point(labelCol, 110));
835 jLabelAbstract.setSize(new java.awt.Dimension(labelWidth, 20));
836 jLabelDescription = new JLabel();
837 jLabelDescription.setText("Description");
838 jLabelDescription.setLocation(new java.awt.Point(labelCol, 135));
839 jLabelDescription.setSize(new java.awt.Dimension(labelWidth, 20));
840 jLabelCopyright = new JLabel();
841 jLabelCopyright.setText("Copyright");
842 jLabelCopyright.setLocation(new java.awt.Point(labelCol, 260));
843 jLabelCopyright.setSize(new java.awt.Dimension(labelWidth, 20));
844 jLabelLicense = new JLabel();
845 jLabelLicense.setText("License");
846 jLabelLicense.setLocation(new java.awt.Point(labelCol, 305));
847 jLabelLicense.setSize(new java.awt.Dimension(labelWidth, 20));
848 jLabelOutputFileBasename = new JLabel();
849 jLabelOutputFileBasename.setBounds(new java.awt.Rectangle(labelCol, 455, labelWidth, 20));
850 jLabelOutputFileBasename.setText("Output File Basename");
851 jLabelBinaryModule = new JLabel();
852 jLabelBinaryModule.setBounds(new java.awt.Rectangle(labelCol, 480, labelWidth, 20));
853 jLabelBinaryModule.setText("Binary Module");
854 jLabelArch = new JLabel();
855 jLabelArch.setBounds(new java.awt.Rectangle(labelCol, 505, labelWidth, 20));
856 jLabelArch.setText("Supported Architectures");
857 jLabelSpecification = new JLabel();
858 jLabelSpecification.setText("Specification");
859 jLabelSpecification.setLocation(new java.awt.Point(labelCol, 530));
860 jLabelSpecification.setSize(new java.awt.Dimension(labelWidth, 20));
861
862 jContentPane = new JPanel();
863 jContentPane.setLayout(null);
864 jContentPane.setPreferredSize(new java.awt.Dimension(dialogWidth - 10, dialogHeight - 10));
865
866 jContentPane.addFocusListener(this);
867
868 jContentPane.add(jLabelBaseName, null);
869 jContentPane.add(getJTextFieldBaseName(), null);
870 jContentPane.add(jLabelGuid, null);
871 jContentPane.add(getJTextFieldGuid(), null);
872 jContentPane.add(jLabelVersion, null);
873 jContentPane.add(getJTextFieldVersion(), null);
874 jContentPane.add(getJButtonGenerateGuid(), null);
875 jContentPane.add(jLabelLicense, null);
876 jContentPane.add(jLabelCopyright, null);
877 jContentPane.add(jLabelDescription, null);
878 jContentPane.add(getJTextFieldSpecification(), null);
879 jContentPane.add(getJButtonOk(), null);
880 jContentPane.add(getJButtonCancel(), null);
881 jContentPane.add(getJScrollPaneLicense(), null);
882 jContentPane.add(getJScrollPaneDescription(), null);
883 jContentPane.add(jLabelAbstract, null);
884 jContentPane.add(getJTextFieldAbstract(), null);
885 jContentPane.add(jLabelModuleType, null);
886 jContentPane.add(getJComboBoxModuleType(), null);
887 jContentPane.add(jLabelURL, null);
888 jContentPane.add(getJTextFieldURL(), null);
889 jContentPane.add(jLabelOutputFileBasename, null);
890 jContentPane.add(getJTextFieldOutputFileBasename(), null);
891 jContentPane.add(jLabelBinaryModule, null);
892 jContentPane.add(jLabelArch, null);
893
894 jStarLabel1 = new StarLabel();
895 jStarLabel1.setLocation(new java.awt.Point(0, 10));
896 jStarLabel2 = new StarLabel();
897 jStarLabel2.setLocation(new java.awt.Point(0, 35));
898 jStarLabel4 = new StarLabel();
899 jStarLabel4.setLocation(new java.awt.Point(0, 60));
900 jStarLabel5 = new StarLabel();
901 jStarLabel5.setLocation(new java.awt.Point(0, 85));
902 jStarLabel6 = new StarLabel();
903 jStarLabel6.setLocation(new java.awt.Point(0, 135));
904 jStarLabel7 = new StarLabel();
905 jStarLabel7.setLocation(new java.awt.Point(0, 260));
906 jStarLabel8 = new StarLabel();
907 jStarLabel8.setLocation(new java.awt.Point(0, 305));
908 jStarLabel10 = new StarLabel();
909 jStarLabel10.setLocation(new java.awt.Point(0, 110));
910 jStarLabel12 = new StarLabel();
911 jStarLabel12.setLocation(new java.awt.Point(0, 455));
912 jStarLabel13 = new StarLabel();
913 jStarLabel13.setLocation(new java.awt.Point(0, 480));
914 jStarLabel14 = new StarLabel();
915 jStarLabel14.setLocation(new java.awt.Point(0, 505));
916
917 jContentPane.add(jStarLabel1, null);
918 jContentPane.add(jStarLabel2, null);
919 jContentPane.add(jStarLabel4, null);
920 jContentPane.add(jStarLabel5, null);
921 jContentPane.add(jStarLabel6, null);
922 jContentPane.add(jStarLabel7, null);
923 jContentPane.add(jStarLabel8, null);
924 jContentPane.add(jStarLabel10, null);
925 jContentPane.add(jStarLabel12, null);
926 jContentPane.add(jStarLabel13, null);
927 jContentPane.add(jStarLabel14, null);
928 jContentPane.add(getJScrollPaneCopyright(), null);
929
930 jContentPane.add(getJCheckBoxIa32(), null);
931 jContentPane.add(getJCheckBoxX64(), null);
932 jContentPane.add(getJCheckBoxIpf(), null);
933 jContentPane.add(getJCheckBoxEbc(), null);
934 jContentPane.add(getJCheckBoxArm(), null);
935 jContentPane.add(getJCheckBoxPpc(), null);
936
937 jContentPane.add(getJCheckBoxPcd(), null);
938 jContentPane.add(getJComboBoxPcdIsDriver(), null);
939 jContentPane.add(getJCheckBoxFlashMap(), null);
940
941 ButtonGroup bg = new ButtonGroup();
942 jContentPane.add(getJRadioButtonBinaryModuleTrue(), null);
943 jContentPane.add(getJRadioButtonBinaryModuleFalse(), null);
944 bg.add(getJRadioButtonBinaryModuleTrue());
945 bg.add(getJRadioButtonBinaryModuleFalse());
946 }
947 return jContentPane;
948 }
949
950 /* (non-Javadoc)
951 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
952 *
953 * Override actionPerformed to listen all actions
954 *
955 */
956 public void actionPerformed(ActionEvent arg0) {
957 if (arg0.getSource() == jButtonGenerateGuid) {
958 jTextFieldGuid.setText(Tools.generateUuidString());
959 jTextFieldGuid.requestFocus();
960 jButtonGenerateGuid.requestFocus();
961 }
962 }
963
964 /**
965 Data validation for all fields
966
967 @retval true - All datas are valid
968 @retval false - At least one data is invalid
969
970 **/
971 public boolean check() {
972 //
973 // Check if all required fields are not empty
974 // and check if all data fields values are valid
975 //
976
977 //
978 // Check Base Name
979 //
980 if (isEmpty(this.jTextFieldBaseName.getText())) {
981 Log.wrn("Update Msa Header", "Name must be entered!");
982 //this.jTextFieldBaseName.requestFocus();
983 return false;
984 }
985 if (!DataValidation.isBaseName(this.jTextFieldBaseName.getText())) {
986 Log.wrn("Update Msa Header", "Incorrect data type for Name, it must start with an alpha character!");
987 //this.jTextFieldBaseName.requestFocus();
988 return false;
989 }
990
991 //
992 // Check Guid
993 //
994 if (isEmpty(this.jTextFieldGuid.getText())) {
995 Log.wrn("Update Msa Header", "The Guid Value must be entered!");
996 //this.jTextFieldGuid.requestFocus();
997 return false;
998 }
999 if (!DataValidation.isGuid((this.jTextFieldGuid).getText())) {
1000 Log.wrn("Update Msa Header", "Incorrect data type for Guid, it must be registry format, 8-4-4-4-12");
1001 //this.jTextFieldGuid.requestFocus();
1002 return false;
1003 }
1004
1005 //
1006 // Check Version
1007 //
1008 if (isEmpty(this.jTextFieldVersion.getText())) {
1009 Log.wrn("Update Msa Header", "Version must be entered!");
1010 //this.jTextFieldVersion.requestFocus();
1011 return false;
1012 }
1013 if (!DataValidation.isVersion(this.jTextFieldVersion.getText())) {
1014 Log.wrn("Update Msa Header", "Incorrect data type for Version, it must start with a digit.");
1015 //this.jTextFieldVersion.requestFocus();
1016 return false;
1017 }
1018
1019 //
1020 // Check Abstact
1021 //
1022 if (isEmpty(this.jTextFieldAbstract.getText())) {
1023 Log.wrn("Update Msa Header", "Abstract must be entered!");
1024 //this.jTextFieldAbstract.requestFocus();
1025 return false;
1026 }
1027 if (!DataValidation.isAbstract(this.jTextFieldAbstract.getText())) {
1028 Log.wrn("Update Msa Header",
1029 "Incorrect data type for Abstract, is should be a sentence describing the module.");
1030 //this.jTextFieldAbstract.requestFocus();
1031 return false;
1032 }
1033
1034 //
1035 // Check Description
1036 //
1037 if (isEmpty(this.jTextAreaDescription.getText())) {
1038 Log.wrn("Update Msa Header", "Description must be entered!");
1039 //this.jTextAreaDescription.requestFocus();
1040 return false;
1041 }
1042
1043 //
1044 // Check Copyright
1045 //
1046 if (isEmpty(this.jTextAreaCopyright.getText())) {
1047 Log.wrn("Update Msa Header", "Copyright must be entered!");
1048 //this.jTextFieldCopyright.requestFocus();
1049 return false;
1050 }
1051
1052 //
1053 // Check License
1054 //
1055 if (isEmpty(this.jTextAreaLicense.getText())) {
1056 Log.wrn("Update Msa Header", "License must be entered!");
1057 //this.jTextAreaLicense.requestFocus();
1058 return false;
1059 }
1060
1061 //
1062 // Check Specification
1063 //
1064 if (isEmpty(this.jTextFieldSpecification.getText())) {
1065 Log.wrn("Update Msa Header", "Specification must exist.");
1066 //this.jTextFieldSpecification.requestFocus();
1067 return false;
1068 }
1069 if (!DataValidation.isSpecification(this.jTextFieldSpecification.getText())) {
1070 // TODO Add code to check the specification number.
1071 // Future releases of Schema may require that we process these files
1072 // differently.
1073 Log.wrn("Update Msa Header", "Incorrect data type for Specification");
1074 //this.jTextFieldSpecification.requestFocus();
1075 return false;
1076 }
1077
1078 return true;
1079 }
1080
1081 /**
1082 Save all components of Msa Header
1083 if exists msaHeader, set the value directly
1084 if not exists msaHeader, new an instance first
1085
1086 **/
1087 public void save() {
1088 try {
1089 msaHeader.setSpecification(this.jTextFieldSpecification.getText());
1090 msa.setMsaHeader(msaHeader);
1091 msa.setModuleDefinitions(md);
1092 this.omt.setSaved(false);
1093 } catch (Exception e) {
1094 Log.wrn("Save Module", e.getMessage());
1095 Log.err("Save Module", e.getMessage());
1096 }
1097 }
1098
1099 /**
1100 This method initializes Module type and Compontent type
1101
1102 **/
1103 private void initFrame() {
1104 EnumerationData ed = new EnumerationData();
1105 Tools.generateComboBoxByVector(jComboBoxModuleType, ed.getVModuleType());
1106 this.setSelectedItems(ed.getVSupportedArchitectures());
1107 }
1108
1109 /**
1110 Get MsaHeaderDocument.MsaHeader
1111
1112 @return MsaHeaderDocument.MsaHeader
1113
1114 **/
1115 public MsaHeaderDocument.MsaHeader getMsaHeader() {
1116 return msaHeader;
1117 }
1118
1119 /**
1120 Set MsaHeaderDocument.MsaHeader
1121
1122 @param msaHeader The input data of MsaHeaderDocument.MsaHeader
1123
1124 **/
1125 public void setMsaHeader(MsaHeaderDocument.MsaHeader msaHeader) {
1126 this.msaHeader = msaHeader;
1127 }
1128
1129 /* (non-Javadoc)
1130 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
1131 *
1132 * Override componentResized to resize all components when frame's size is changed
1133 */
1134 public void componentResized(ComponentEvent arg0) {
1135 int intCurrentWidth = this.getJContentPane().getWidth();
1136 int intPreferredWidth = this.getJContentPane().getPreferredSize().width;
1137
1138 Tools.resizeComponentWidth(this.jTextFieldBaseName, intCurrentWidth, intPreferredWidth);
1139 Tools.resizeComponentWidth(this.jTextFieldGuid, intCurrentWidth, intPreferredWidth + 7);
1140 Tools.resizeComponentWidth(this.jTextFieldVersion, intCurrentWidth, intPreferredWidth);
1141 Tools.resizeComponentWidth(this.jScrollPaneLicense, intCurrentWidth, intPreferredWidth);
1142 Tools.resizeComponentWidth(this.jTextFieldURL, intCurrentWidth, intPreferredWidth);
1143 Tools.resizeComponentWidth(this.jScrollPaneCopyright, intCurrentWidth, intPreferredWidth);
1144 Tools.resizeComponentWidth(this.jScrollPaneDescription, intCurrentWidth, intPreferredWidth);
1145 Tools.resizeComponentWidth(this.jTextFieldSpecification, intCurrentWidth, intPreferredWidth);
1146 Tools.resizeComponentWidth(this.jTextFieldAbstract, intCurrentWidth, intPreferredWidth);
1147 Tools.resizeComponentWidth(this.jComboBoxModuleType, intCurrentWidth, intPreferredWidth);
1148 Tools.resizeComponentWidth(this.jTextFieldOutputFileBasename, intCurrentWidth, intPreferredWidth);
1149 Tools.resizeComponentWidth(this.jComboBoxPcdIsDriver, intCurrentWidth, intPreferredWidth);
1150
1151 Tools.relocateComponentX(this.jButtonGenerateGuid, intCurrentWidth, intPreferredWidth,
1152 DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);
1153 }
1154
1155 public void focusLost(FocusEvent arg0) {
1156 if (this.msaHeader == null) {
1157 msaHeader = MsaHeaderDocument.MsaHeader.Factory.newInstance();
1158 }
1159
1160 //
1161 // Check BaseName
1162 //
1163 if (arg0.getSource() == this.jTextFieldBaseName) {
1164 if (isEmpty(this.jTextFieldBaseName.getText())) {
1165 Log.wrn("Update Msa Header", "The Name must be entered!");
1166 //this.jTextFieldBaseName.requestFocus();
1167 return;
1168 }
1169 if (!DataValidation.isBaseName(this.jTextFieldBaseName.getText())) {
1170 Log.wrn("Update Msa Header", "Incorrect data type for Name, it must begin with an alpha character.");
1171 //this.jTextFieldBaseName.requestFocus();
1172 return;
1173 }
1174 if (!this.jTextFieldBaseName.getText().equals(msaHeader.getModuleName())) {
1175 this.msaHeader.setModuleName(this.jTextFieldBaseName.getText());
1176 } else {
1177 return;
1178 }
1179 }
1180
1181 //
1182 // Check Guid
1183 //
1184 if (arg0.getSource() == this.jTextFieldGuid) {
1185 if (isEmpty(this.jTextFieldGuid.getText())) {
1186 Log.wrn("Update Msa Header", "Guid must be entered!");
1187 //this.jTextFieldGuid.requestFocus();
1188 return;
1189 }
1190 if (!DataValidation.isGuid((this.jTextFieldGuid).getText())) {
1191 Log.wrn("Update Msa Header", "Incorrect data type for Guid, it must be registry format. (8-4-4-4-12)");
1192 //this.jTextFieldGuid.requestFocus();
1193 return;
1194 }
1195 if (!this.jTextFieldGuid.getText().equals(msaHeader.getGuidValue())) {
1196 this.msaHeader.setGuidValue(this.jTextFieldGuid.getText());
1197 } else {
1198 return;
1199 }
1200 }
1201
1202 //
1203 // Check Version
1204 //
1205 if (arg0.getSource() == this.jTextFieldVersion) {
1206 if (isEmpty(this.jTextFieldVersion.getText())) {
1207 Log.wrn("Update Msa Header", "Version must be entered!");
1208 //this.jTextFieldVersion.requestFocus();
1209 return;
1210 }
1211 if (!DataValidation.isVersion(this.jTextFieldVersion.getText())) {
1212 Log.wrn("Update Msa Header", "Incorrect data type for Version, it must start with a digit.");
1213 //this.jTextFieldVersion.requestFocus();
1214 return;
1215 }
1216 if (!this.jTextFieldVersion.getText().equals(msaHeader.getVersion())) {
1217 this.msaHeader.setVersion(this.jTextFieldVersion.getText());
1218 } else {
1219 return;
1220 }
1221 }
1222
1223 //
1224 // Check Abstact
1225 //
1226 if (arg0.getSource() == this.jTextFieldAbstract) {
1227 if (isEmpty(this.jTextFieldAbstract.getText())) {
1228 Log.wrn("Update Msa Header", "Abstract must be entered!");
1229 //this.jTextFieldAbstract.requestFocus();
1230 return;
1231 }
1232 if (!DataValidation.isAbstract(this.jTextFieldAbstract.getText())) {
1233 Log.wrn("Update Msa Header", "Incorrect data type for Abstract, it must be sentence.");
1234 //this.jTextFieldAbstract.requestFocus();
1235 return;
1236 }
1237 if (!this.jTextFieldAbstract.getText().equals(msaHeader.getAbstract())) {
1238 this.msaHeader.setAbstract(this.jTextFieldAbstract.getText());
1239 } else {
1240 return;
1241 }
1242 }
1243
1244 //
1245 // Check Description
1246 //
1247 if (arg0.getSource() == this.jTextAreaDescription) {
1248 if (isEmpty(this.jTextAreaDescription.getText())) {
1249 Log.wrn("Update Msa Header", "Description must be entered!");
1250 //this.jTextAreaDescription.requestFocus();
1251 return;
1252 }
1253 if (!this.jTextAreaDescription.getText().equals(msaHeader.getDescription())) {
1254 this.msaHeader.setDescription(this.jTextAreaDescription.getText());
1255 } else {
1256 return;
1257 }
1258 }
1259
1260 //
1261 // Check Copyright
1262 //
1263 if (arg0.getSource() == this.jTextAreaCopyright) {
1264 if (isEmpty(this.jTextAreaCopyright.getText())) {
1265 Log.wrn("Update Msa Header", "Copyright must be entered!");
1266 //this.jTextFieldCopyright.requestFocus();
1267 return;
1268 }
1269 if (!this.jTextAreaCopyright.getText().equals(msaHeader.getCopyright())) {
1270 this.msaHeader.setCopyright(this.jTextAreaCopyright.getText());
1271 } else {
1272 return;
1273 }
1274 }
1275
1276 //
1277 // Check License
1278 //
1279 if (arg0.getSource() == this.jTextAreaLicense) {
1280 if (isEmpty(this.jTextAreaLicense.getText())) {
1281 Log.wrn("Update Msa Header", "License must be entered!");
1282 //this.jTextAreaLicense.requestFocus();
1283 return;
1284 }
1285 if (this.msaHeader.getLicense() != null) {
1286 if (!this.jTextAreaLicense.getText().equals(msaHeader.getLicense().getStringValue())) {
1287 this.msaHeader.getLicense().setStringValue(this.jTextAreaLicense.getText());
1288 } else {
1289 return;
1290 }
1291 } else {
1292 License mLicense = License.Factory.newInstance();
1293 mLicense.setStringValue(this.jTextAreaLicense.getText());
1294 this.msaHeader.setLicense(mLicense);
1295 }
1296 }
1297
1298 //
1299 // Check License URL
1300 //
1301 if (arg0.getSource() == this.jTextFieldURL) {
1302 if (!isEmpty(this.jTextFieldURL.getText())) {
1303 if (this.msaHeader.getLicense() == null) {
1304 License mLicense = License.Factory.newInstance();
1305 mLicense.setURL(this.jTextFieldURL.getText());
1306 this.msaHeader.setLicense(mLicense);
1307 } else {
1308 if (!this.jTextFieldURL.getText().equals(msaHeader.getLicense().getURL())) {
1309 this.msaHeader.getLicense().setURL(this.jTextFieldURL.getText());
1310 } else {
1311 return;
1312 }
1313 }
1314 }
1315 }
1316
1317 //
1318 // Check Output File Basename
1319 //
1320 if (arg0.getSource() == this.jTextFieldOutputFileBasename) {
1321 if (isEmpty(this.jTextFieldOutputFileBasename.getText())) {
1322 Log.wrn("Update Msa Header", "Output File Basename must be entered!");
1323 // jTextFieldOutputFileBasename.removeFocusListener(this);
1324 // jTextFieldOutputFileBasename.requestFocus();
1325 // jTextFieldOutputFileBasename.addFocusListener(this);
1326 return;
1327 }
1328
1329 if (!DataValidation.isOutputFileBasename(this.jTextFieldOutputFileBasename.getText())) {
1330 Log.wrn("Update Msa Header",
1331 "Incorrect data type for Output File Basename, it must be a valid file name");
1332 return;
1333 }
1334
1335 if (!this.jTextFieldOutputFileBasename.getText().equals(md.getOutputFileBasename())) {
1336 this.md.setOutputFileBasename(this.jTextFieldOutputFileBasename.getText());
1337 } else {
1338 return;
1339 }
1340 }
1341
1342 //
1343 // Check Binary Module Type
1344 //
1345 if (arg0.getSource() == this.jRadioButtonBinaryModuleTrue) {
1346 if (jRadioButtonBinaryModuleTrue.isSelected()) {
1347 if (md.getBinaryModule()) {
1348 return;
1349 } else {
1350 md.setBinaryModule(true);
1351 }
1352 }
1353 }
1354
1355 //
1356 // Check Binary Module Type
1357 //
1358 if (arg0.getSource() == this.jRadioButtonBinaryModuleFalse) {
1359 if (jRadioButtonBinaryModuleFalse.isSelected()) {
1360 if (md.getBinaryModule()) {
1361 md.setBinaryModule(false);
1362 } else {
1363 return;
1364 }
1365 }
1366 }
1367
1368 this.save();
1369 }
1370
1371 private Vector<String> getSelectedItemsVector() {
1372 Vector<String> v = new Vector<String>();
1373 if (this.jCheckBoxIa32.isSelected()) {
1374 v.addElement(jCheckBoxIa32.getText());
1375 }
1376 if (this.jCheckBoxX64.isSelected()) {
1377 v.addElement(jCheckBoxX64.getText());
1378 }
1379 if (this.jCheckBoxIpf.isSelected()) {
1380 v.addElement(jCheckBoxIpf.getText());
1381 }
1382 if (this.jCheckBoxEbc.isSelected()) {
1383 v.addElement(jCheckBoxEbc.getText());
1384 }
1385 if (this.jCheckBoxArm.isSelected()) {
1386 v.addElement(jCheckBoxArm.getText());
1387 }
1388 if (this.jCheckBoxPpc.isSelected()) {
1389 v.addElement(jCheckBoxPpc.getText());
1390 }
1391 return v;
1392 }
1393
1394 private String getSelectedItemsString() {
1395 String s = "";
1396 if (this.jCheckBoxIa32.isSelected()) {
1397 s = s + jCheckBoxIa32.getText() + " ";
1398 }
1399 if (this.jCheckBoxX64.isSelected()) {
1400 s = s + jCheckBoxX64.getText() + " ";
1401 }
1402 if (this.jCheckBoxIpf.isSelected()) {
1403 s = s + jCheckBoxIpf.getText() + " ";
1404 }
1405 if (this.jCheckBoxEbc.isSelected()) {
1406 s = s + jCheckBoxEbc.getText() + " ";
1407 }
1408 if (this.jCheckBoxArm.isSelected()) {
1409 s = s + jCheckBoxArm.getText() + " ";
1410 }
1411 if (this.jCheckBoxPpc.isSelected()) {
1412 s = s + jCheckBoxPpc.getText() + " ";
1413 }
1414 return s.trim();
1415 }
1416
1417 private void setAllItemsSelected(boolean isSelected) {
1418 this.jCheckBoxIa32.setSelected(true);
1419 this.jCheckBoxX64.setSelected(isSelected);
1420 this.jCheckBoxIpf.setSelected(isSelected);
1421 this.jCheckBoxEbc.setSelected(isSelected);
1422 this.jCheckBoxArm.setSelected(isSelected);
1423 this.jCheckBoxPpc.setSelected(isSelected);
1424 }
1425
1426 private void setSelectedItems(Vector<String> v) {
1427 setAllItemsSelected(false);
1428 boolean isIA32Selected = false;
1429 if (v != null) {
1430 for (int index = 0; index < v.size(); index++) {
1431 if (v.get(index).equals(this.jCheckBoxIa32.getText())) {
1432 this.jCheckBoxIa32.setSelected(true);
1433 isIA32Selected = true;
1434 continue;
1435 }
1436 if (v.get(index).equals(this.jCheckBoxIpf.getText())) {
1437 this.jCheckBoxIpf.setSelected(true);
1438 continue;
1439 }
1440 if (v.get(index).equals(this.jCheckBoxX64.getText())) {
1441 this.jCheckBoxX64.setSelected(true);
1442 continue;
1443 }
1444 if (v.get(index).equals(this.jCheckBoxEbc.getText())) {
1445 this.jCheckBoxEbc.setSelected(true);
1446 continue;
1447 }
1448 if (v.get(index).equals(this.jCheckBoxArm.getText())) {
1449 this.jCheckBoxArm.setSelected(true);
1450 continue;
1451 }
1452 if (v.get(index).equals(this.jCheckBoxPpc.getText())) {
1453 this.jCheckBoxPpc.setSelected(true);
1454 continue;
1455 }
1456 }
1457 if (!isIA32Selected) {
1458 this.jCheckBoxIa32.setSelected(false);
1459 }
1460 }
1461 }
1462
1463 /**
1464 * This method initializes jCheckBoxPcd
1465 *
1466 * @return javax.swing.JCheckBox
1467 */
1468 private JCheckBox getJCheckBoxPcd() {
1469 if (jCheckBoxPcd == null) {
1470 jCheckBoxPcd = new JCheckBox();
1471 jCheckBoxPcd.setBounds(new java.awt.Rectangle(labelCol, 530, labelWidth, 20));
1472 jCheckBoxPcd.setText("Is this a PCD Driver?");
1473 jCheckBoxPcd.addFocusListener(this);
1474 jCheckBoxPcd.addActionListener(this);
1475 jCheckBoxPcd.setEnabled(false);
1476 }
1477 return jCheckBoxPcd;
1478 }
1479
1480 /**
1481 * This method initializes jCheckBoxFlashMap
1482 *
1483 * @return javax.swing.JCheckBox
1484 */
1485 private JCheckBox getJCheckBoxFlashMap() {
1486 if (jCheckBoxFlashMap == null) {
1487 jCheckBoxFlashMap = new JCheckBox();
1488 jCheckBoxFlashMap.setBounds(new java.awt.Rectangle(labelCol, 555, 480, 20));
1489 jCheckBoxFlashMap.setText("Does this module require a legacy FlashMap header file?");
1490 }
1491 return jCheckBoxFlashMap;
1492 }
1493
1494 /**
1495 * This method initializes jRadioButtonBinaryModuleTrue
1496 *
1497 * @return javax.swing.JRadioButton
1498 */
1499 private JRadioButton getJRadioButtonBinaryModuleTrue() {
1500 if (jRadioButtonBinaryModuleTrue == null) {
1501 jRadioButtonBinaryModuleTrue = new JRadioButton();
1502 jRadioButtonBinaryModuleTrue.setBounds(new java.awt.Rectangle(valueCol, 480, 140, 20));
1503 jRadioButtonBinaryModuleTrue.setText("True");
1504 jRadioButtonBinaryModuleTrue.setSelected(true);
1505 jRadioButtonBinaryModuleTrue.addFocusListener(this);
1506 jRadioButtonBinaryModuleTrue.setToolTipText("<html>Modules are either source modules <br>"
1507 + "which can be compiled or binary <br>"
1508 + "modules which are linked. <br>"
1509 + "A module cannot contain both. <br>"
1510 + "The GUID numbers should be identical <br>"
1511 + "for a binary and source MSA, <br>"
1512 + "however the BINARY MSA should have <br>"
1513 + "a higher version number.</html>");
1514 }
1515 return jRadioButtonBinaryModuleTrue;
1516 }
1517
1518 /**
1519 * This method initializes jRadioButtonBinaryModuleFalse
1520 *
1521 * @return javax.swing.JRadioButton
1522 */
1523 private JRadioButton getJRadioButtonBinaryModuleFalse() {
1524 if (jRadioButtonBinaryModuleFalse == null) {
1525 jRadioButtonBinaryModuleFalse = new JRadioButton();
1526 jRadioButtonBinaryModuleFalse.setBounds(new java.awt.Rectangle(valueCol + 140, 480, 140, 20));
1527 jRadioButtonBinaryModuleFalse.setText("False");
1528 jRadioButtonBinaryModuleFalse.addFocusListener(this);
1529 jRadioButtonBinaryModuleFalse.setToolTipText("<html>Modules are either source modules which can be compiled or binary <br>"
1530 + "modules which are linked. A module cannot contain both. <br>"
1531 + "The GUID numbers should be identical for a binary and source MSA, <br>"
1532 + "however the BINARY MSA should have a higher version number.</html>");
1533 }
1534 return jRadioButtonBinaryModuleFalse;
1535 }
1536
1537 public void itemStateChanged(ItemEvent arg0) {
1538 //
1539 // Check Supported Arch
1540 //
1541 if (arg0.getSource() == this.jCheckBoxIa32 || arg0.getSource() == this.jCheckBoxIpf
1542 || arg0.getSource() == this.jCheckBoxX64 || arg0.getSource() == this.jCheckBoxEbc
1543 || arg0.getSource() == this.jCheckBoxArm || arg0.getSource() == this.jCheckBoxPpc) {
1544 if (!this.jCheckBoxIa32.isSelected() && !this.jCheckBoxX64.isSelected() && !this.jCheckBoxIpf.isSelected()
1545 && !this.jCheckBoxEbc.isSelected() && !this.jCheckBoxPpc.isSelected()
1546 && !this.jCheckBoxArm.isSelected()) {
1547 Log
1548 .wrn("At lease one Supportted Architecture should be selected! IA32 is selected as default value!");
1549 this.jCheckBoxIa32.setSelected(true);
1550 }
1551
1552 if (!this.getSelectedItemsString().equals(md.getSupportedArchitectures().toString())) {
1553 md.setSupportedArchitectures(this.getSelectedItemsVector());
1554 this.save();
1555 }
1556 }
1557
1558 if (arg0.getSource() == this.jComboBoxModuleType) {
1559 if (this.jComboBoxModuleType.getSelectedItem().equals("PEIM")
1560 || this.jComboBoxModuleType.getSelectedItem().equals("DXE_DRIVER")) {
1561 this.jCheckBoxPcd.setEnabled(true);
1562 if (this.jCheckBoxPcd.isSelected()) {
1563 this.jCheckBoxPcd.setSelected(false);
1564 this.jCheckBoxPcd.setSelected(true);
1565 }
1566 } else {
1567 this.jCheckBoxPcd.setEnabled(false);
1568 this.jCheckBoxPcd.setSelected(false);
1569 }
1570 if (!jComboBoxModuleType.getSelectedItem().toString().equals(msaHeader.getModuleType().toString())) {
1571 msaHeader.setModuleType(ModuleTypeDef.Enum.forString(jComboBoxModuleType.getSelectedItem().toString()));
1572 this.save();
1573 }
1574 }
1575
1576 //
1577 // Check Pcd is Driver
1578 //
1579 if (arg0.getSource() == this.jCheckBoxPcd) {
1580 if (this.jCheckBoxPcd.isSelected()) {
1581 if (this.jComboBoxModuleType.getSelectedItem().toString().equals("DXE_DRIVER")) {
1582 this.jComboBoxPcdIsDriver.setText("DXE_PCD_DRIVER");
1583 this.jComboBoxPcdIsDriver.setEnabled(true);
1584 } else if (this.jComboBoxModuleType.getSelectedItem().toString().equals("PEIM")) {
1585 this.jComboBoxPcdIsDriver.setText("PEI_PCD_DRIVER");
1586 this.jComboBoxPcdIsDriver.setEnabled(true);
1587 }
1588 }
1589
1590 if ((this.ex == null) && this.jCheckBoxPcd.isSelected()) {
1591 this.ex = ExternsDocument.Externs.Factory.newInstance();
1592 this.ex.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getText()));
1593 this.msa.setExterns(this.ex);
1594 } else if ((this.ex != null) && (this.ex.getPcdIsDriver() == null) && this.jCheckBoxPcd.isSelected()) {
1595 this.ex.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getText()));
1596 this.msa.setExterns(this.ex);
1597 } else if ((this.ex != null) && (this.ex.getPcdIsDriver() != null)) {
1598 if (this.jCheckBoxPcd.isSelected()
1599 && !this.jComboBoxPcdIsDriver.getText().toString().equals(this.ex.getPcdIsDriver().toString())) {
1600 this.ex.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getText()));
1601 this.msa.setExterns(this.ex);
1602 }
1603 if (!this.jCheckBoxPcd.isSelected()) {
1604 ExternsDocument.Externs newEx = ExternsDocument.Externs.Factory.newInstance();
1605 if (this.ex.getExternList() != null) {
1606 for (int index = 0; index < this.ex.getExternList().size(); index++) {
1607 newEx.addNewExtern();
1608 newEx.setExternArray(index, this.ex.getExternArray(index));
1609 }
1610 }
1611 if (this.ex.getSpecificationList() != null) {
1612 for (int index = 0; index < this.ex.getSpecificationList().size(); index++) {
1613 newEx.addNewSpecification();
1614 newEx.setSpecificationArray(index, this.ex.getSpecificationArray(index));
1615 }
1616 }
1617 if (this.ex.getTianoR8FlashMapH()) {
1618 newEx.setTianoR8FlashMapH(this.ex.getTianoR8FlashMapH());
1619 }
1620 this.ex = newEx;
1621 this.msa.setExterns(this.ex);
1622 }
1623 }
1624 this.save();
1625 }
1626 //
1627 // Check Flash Map
1628 //
1629 if (arg0.getSource() == this.jCheckBoxFlashMap) {
1630 if ((this.ex == null) && this.jCheckBoxFlashMap.isSelected()) {
1631 this.ex = ExternsDocument.Externs.Factory.newInstance();
1632 this.ex.setTianoR8FlashMapH(this.jCheckBoxFlashMap.isSelected());
1633 this.msa.setExterns(this.ex);
1634 } else if ((this.ex != null) && this.jCheckBoxFlashMap.isSelected()) {
1635 this.ex.setTianoR8FlashMapH(this.jCheckBoxFlashMap.isSelected());
1636 this.msa.setExterns(this.ex);
1637 } else if ((this.ex != null) && !this.jCheckBoxFlashMap.isSelected()) {
1638 ExternsDocument.Externs newEx = ExternsDocument.Externs.Factory.newInstance();
1639 if (this.ex.getExternList() != null) {
1640 for (int index = 0; index < this.ex.getExternList().size(); index++) {
1641 newEx.addNewExtern();
1642 newEx.setExternArray(index, this.ex.getExternArray(index));
1643 }
1644 }
1645 if (this.ex.getSpecificationList() != null) {
1646 for (int index = 0; index < this.ex.getSpecificationList().size(); index++) {
1647 newEx.addNewSpecification();
1648 newEx.setSpecificationArray(index, this.ex.getSpecificationArray(index));
1649 }
1650 }
1651 if (this.ex.getPcdIsDriver() != null) {
1652 newEx.setPcdIsDriver(this.ex.getPcdIsDriver());
1653 }
1654 this.ex = newEx;
1655 this.msa.setExterns(this.ex);
1656 }
1657 this.save();
1658 }
1659 }
1660
1661 private void addListeners() {
1662 this.jTextFieldBaseName.getDocument().addDocumentListener(this);
1663 this.jTextFieldGuid.getDocument().addDocumentListener(this);
1664 this.jTextFieldAbstract.getDocument().addDocumentListener(this);
1665 this.jTextAreaCopyright.getDocument().addDocumentListener(this);
1666 this.jTextAreaDescription.getDocument().addDocumentListener(this);
1667 this.jTextAreaLicense.getDocument().addDocumentListener(this);
1668 this.jTextFieldOutputFileBasename.getDocument().addDocumentListener(this);
1669 this.jTextFieldSpecification.getDocument().addDocumentListener(this);
1670 this.jTextFieldURL.getDocument().addDocumentListener(this);
1671 this.jTextFieldVersion.getDocument().addDocumentListener(this);
1672
1673 this.jComboBoxModuleType.addItemListener(this);
1674
1675 this.jCheckBoxIa32.addItemListener(this);
1676 this.jCheckBoxX64.addItemListener(this);
1677 this.jCheckBoxIpf.addItemListener(this);
1678 this.jCheckBoxEbc.addItemListener(this);
1679 this.jCheckBoxArm.addItemListener(this);
1680 this.jCheckBoxPpc.addItemListener(this);
1681
1682 this.jCheckBoxPcd.addItemListener(this);
1683
1684 this.jCheckBoxFlashMap.addItemListener(this);
1685 }
1686
1687 public void insertUpdate(DocumentEvent e) {
1688 this.omt.setSaved(false);
1689 }
1690
1691 public void removeUpdate(DocumentEvent e) {
1692 this.omt.setSaved(false);
1693 }
1694
1695 public void changedUpdate(DocumentEvent e) {
1696 // Do nothing
1697 }
1698 }