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