3 The file is used to create, update spdHeader of Spd file
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
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.
16 package org
.tianocore
.frameworkwizard
.packaging
.ui
;
18 import java
.awt
.event
.ActionEvent
;
19 import java
.awt
.event
.ComponentEvent
;
20 import java
.awt
.event
.FocusAdapter
;
21 import java
.awt
.event
.FocusEvent
;
23 import javax
.swing
.JButton
;
24 import javax
.swing
.JFrame
;
25 import javax
.swing
.JLabel
;
26 import javax
.swing
.JOptionPane
;
27 import javax
.swing
.JPanel
;
28 import javax
.swing
.JScrollPane
;
29 import javax
.swing
.JTextArea
;
30 import javax
.swing
.JTextField
;
33 import org
.tianocore
.PackageSurfaceAreaDocument
;
34 import org
.tianocore
.frameworkwizard
.common
.DataValidation
;
35 import org
.tianocore
.frameworkwizard
.common
.Tools
;
36 import org
.tianocore
.frameworkwizard
.common
.Identifications
.OpeningPackageType
;
37 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
38 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
41 The class is used to create, update spdHeader of Spd file
42 It extends IInternalFrame
44 @since PackageEditor 1.0
47 public class SpdHeader
extends IInternalFrame
{
50 /// Define class Serial Version UID
52 private static final long serialVersionUID
= -8152099582923006900L;
55 //Define class members
59 private JPanel jContentPane
= null;
61 private JLabel jLabelBaseName
= null;
63 private JTextField jTextFieldBaseName
= null;
65 private JLabel jLabelGuid
= null;
67 private JTextField jTextFieldGuid
= null;
69 private JLabel jLabelVersion
= null;
71 private JTextField jTextFieldVersion
= null;
73 private JButton jButtonGenerateGuid
= null;
75 private JLabel jLabelLicense
= null;
77 private JTextArea jTextAreaLicense
= null;
79 private JLabel jLabelCopyright
= null;
81 private JLabel jLabelDescription
= null;
83 private JTextArea jTextAreaDescription
= null;
85 private JLabel jLabelSpecification
= null;
87 private JTextField jTextFieldSpecification
= null;
89 private JButton jButtonOk
= null;
91 private JButton jButtonCancel
= null;
93 private JScrollPane jScrollPaneLicense
= null;
95 private JScrollPane jScrollPaneDescription
= null;
97 private JLabel jLabelAbstract
= null;
99 private JTextField jTextFieldAbstract
= null;
101 private StarLabel jStarLabel1
= null;
103 private StarLabel jStarLabel2
= null;
105 private StarLabel jStarLabel3
= null;
107 private StarLabel jStarLabel4
= null;
109 private StarLabel jStarLabel5
= null;
111 private StarLabel jStarLabel6
= null;
113 private StarLabel jStarLabel7
= null;
115 private StarLabel jStarLabel9
= null;
117 private SpdFileContents sfc
= null;
119 private OpeningPackageType docConsole
= null;
121 private JTextField jTextFieldCopyright
= null;
123 private JScrollPane topScrollPane
= null;
125 private JLabel jLabel
= null;
127 private JTextField jTextField
= null;
130 This method initializes jTextFieldBaseName
132 @return javax.swing.JTextField jTextFieldBaseName
135 private JTextField
getJTextFieldBaseName() {
136 if (jTextFieldBaseName
== null) {
137 jTextFieldBaseName
= new JTextField();
138 jTextFieldBaseName
.setBounds(new java
.awt
.Rectangle(160, 10, 320, 20));
139 jTextFieldBaseName
.setPreferredSize(new java
.awt
.Dimension(320,20));
140 jTextFieldBaseName
.addFocusListener(new FocusAdapter(){
141 public void focusLost(FocusEvent e
){
142 if (!DataValidation
.isUiNameType(jTextFieldBaseName
.getText())) {
143 JOptionPane
.showMessageDialog(frame
, "Package Name is NOT UiNameType.");
146 if (jTextFieldBaseName
.getText().equals(sfc
.getSpdHdrPkgName())) {
149 docConsole
.setSaved(false);
150 sfc
.setSpdHdrPkgName(jTextFieldBaseName
.getText());
154 return jTextFieldBaseName
;
158 This method initializes jTextFieldGuid
160 @return javax.swing.JTextField jTextFieldGuid
163 private JTextField
getJTextFieldGuid() {
164 if (jTextFieldGuid
== null) {
165 jTextFieldGuid
= new JTextField();
166 jTextFieldGuid
.setBounds(new java
.awt
.Rectangle(160, 35, 250, 20));
167 jTextFieldGuid
.setPreferredSize(new java
.awt
.Dimension(250,20));
168 jTextFieldGuid
.addFocusListener(new FocusAdapter(){
169 public void focusLost(FocusEvent e
){
170 if (!DataValidation
.isGuid(jTextFieldGuid
.getText())) {
171 JOptionPane
.showMessageDialog(frame
, "Guid is NOT GuidType.");
174 if (jTextFieldGuid
.getText().equals(sfc
.getSpdHdrGuidValue())) {
177 docConsole
.setSaved(false);
178 sfc
.setSpdHdrGuidValue(jTextFieldGuid
.getText());
182 return jTextFieldGuid
;
186 This method initializes jTextFieldVersion
188 @return javax.swing.JTextField jTextFieldVersion
191 private JTextField
getJTextFieldVersion() {
192 if (jTextFieldVersion
== null) {
193 jTextFieldVersion
= new JTextField();
194 jTextFieldVersion
.setBounds(new java
.awt
.Rectangle(160, 60, 320, 20));
195 jTextFieldVersion
.setPreferredSize(new java
.awt
.Dimension(320,20));
196 jTextFieldVersion
.addFocusListener(new FocusAdapter(){
197 public void focusLost(FocusEvent e
){
198 if (!DataValidation
.isVersion(jTextFieldVersion
.getText())) {
199 JOptionPane
.showMessageDialog(frame
, "Version is NOT version type.");
202 if (jTextFieldVersion
.getText().equals(sfc
.getSpdHdrVer())){
205 docConsole
.setSaved(false);
206 sfc
.setSpdHdrVer(jTextFieldVersion
.getText());
210 return jTextFieldVersion
;
214 This method initializes jButtonGenerateGuid
216 @return javax.swing.JButton jButtonGenerateGuid
219 private JButton
getJButtonGenerateGuid() {
220 if (jButtonGenerateGuid
== null) {
221 jButtonGenerateGuid
= new JButton();
222 jButtonGenerateGuid
.setBounds(new java
.awt
.Rectangle(415, 35, 65, 20));
223 jButtonGenerateGuid
.setText("GEN");
224 jButtonGenerateGuid
.addActionListener(this);
226 return jButtonGenerateGuid
;
230 This method initializes jTextAreaLicense
232 @return javax.swing.JTextArea jTextAreaLicense
235 private JTextArea
getJTextAreaLicense() {
236 if (jTextAreaLicense
== null) {
237 jTextAreaLicense
= new JTextArea();
238 jTextAreaLicense
.setText("");
239 jTextAreaLicense
.setLineWrap(true);
240 jTextAreaLicense
.addFocusListener(new FocusAdapter(){
241 public void focusLost(FocusEvent e
){
242 if (jTextAreaLicense
.getText().length() == 0) {
243 JOptionPane
.showMessageDialog(frame
, "License contents could NOT be empty.");
246 if (jTextAreaLicense
.getText().equals(sfc
.getSpdHdrLicense())) {
249 docConsole
.setSaved(false);
250 sfc
.setSpdHdrLicense(jTextAreaLicense
.getText());
254 return jTextAreaLicense
;
258 This method initializes jTextAreaDescription
260 @return javax.swing.JTextArea jTextAreaDescription
263 private JTextArea
getJTextAreaDescription() {
264 if (jTextAreaDescription
== null) {
265 jTextAreaDescription
= new JTextArea();
266 jTextAreaDescription
.setLineWrap(true);
267 jTextAreaDescription
.addFocusListener(new FocusAdapter(){
268 public void focusLost(FocusEvent e
){
269 if (jTextAreaDescription
.getText().length() == 0) {
270 JOptionPane
.showMessageDialog(frame
, "Description contents could NOT be empty.");
273 if (jTextAreaDescription
.getText().equals(sfc
.getSpdHdrDescription())) {
276 docConsole
.setSaved(false);
277 sfc
.setSpdHdrDescription(jTextAreaDescription
.getText());
281 return jTextAreaDescription
;
285 This method initializes jTextFieldSpecification
287 @return javax.swing.JTextField jTextFieldSpecification
290 private JTextField
getJTextFieldSpecification() {
291 if (jTextFieldSpecification
== null) {
292 jTextFieldSpecification
= new JTextField();
293 jTextFieldSpecification
.setBounds(new java
.awt
.Rectangle(161,330,320,20));
294 jTextFieldSpecification
.setEditable(false);
295 jTextFieldSpecification
.setPreferredSize(new java
.awt
.Dimension(320,20));
296 jTextFieldSpecification
.addFocusListener(new FocusAdapter(){
297 public void focusLost(FocusEvent e
){
298 sfc
.setSpdHdrSpec(jTextFieldSpecification
.getText());
302 return jTextFieldSpecification
;
306 This method initializes jButtonOk
308 @return javax.swing.JButton jButtonOk
311 private JButton
getJButtonOk() {
312 if (jButtonOk
== null) {
313 jButtonOk
= new JButton();
314 jButtonOk
.setText("OK");
315 jButtonOk
.setBounds(new java
.awt
.Rectangle(290, 445, 90, 20));
316 jButtonOk
.setVisible(false);
317 jButtonOk
.addActionListener(this);
323 This method initializes jButtonCancel
325 @return javax.swing.JButton jButtonCancel
328 private JButton
getJButtonCancel() {
329 if (jButtonCancel
== null) {
330 jButtonCancel
= new JButton();
331 jButtonCancel
.setText("Cancel");
332 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390, 445, 90, 20));
333 jButtonCancel
.setVisible(false);
334 jButtonCancel
.addActionListener(this);
336 return jButtonCancel
;
340 This method initializes jScrollPaneLicense
342 @return javax.swing.JScrollPane jScrollPaneLicense
345 private JScrollPane
getJScrollPaneLicense() {
346 if (jScrollPaneLicense
== null) {
347 jScrollPaneLicense
= new JScrollPane();
348 jScrollPaneLicense
.setBounds(new java
.awt
.Rectangle(161,108,320,80));
349 jScrollPaneLicense
.setHorizontalScrollBarPolicy(javax
.swing
.JScrollPane
.HORIZONTAL_SCROLLBAR_NEVER
);
350 jScrollPaneLicense
.setPreferredSize(new java
.awt
.Dimension(320,80));
351 jScrollPaneLicense
.setViewportView(getJTextAreaLicense());
353 return jScrollPaneLicense
;
357 This method initializes jScrollPaneDescription
359 @return javax.swing.JScrollPane jScrollPaneDescription
362 private JScrollPane
getJScrollPaneDescription() {
363 if (jScrollPaneDescription
== null) {
364 jScrollPaneDescription
= new JScrollPane();
365 jScrollPaneDescription
.setBounds(new java
.awt
.Rectangle(160,244,320,80));
366 jScrollPaneDescription
.setHorizontalScrollBarPolicy(javax
.swing
.JScrollPane
.HORIZONTAL_SCROLLBAR_NEVER
);
367 jScrollPaneDescription
.setViewportView(getJTextAreaDescription());
369 return jScrollPaneDescription
;
373 This method initializes jTextFieldAbstract
375 @return javax.swing.JTextField jTextFieldAbstract
378 private JTextField
getJTextFieldAbstract() {
379 if (jTextFieldAbstract
== null) {
380 jTextFieldAbstract
= new JTextField();
381 jTextFieldAbstract
.setBounds(new java
.awt
.Rectangle(161,220,320,20));
382 jTextFieldAbstract
.setPreferredSize(new java
.awt
.Dimension(320, 20));
383 jTextFieldAbstract
.addFocusListener(new FocusAdapter(){
384 public void focusLost(FocusEvent e
){
385 if (!DataValidation
.isAbstract(jTextFieldAbstract
.getText())) {
386 JOptionPane
.showMessageDialog(frame
, "Abstract could NOT be empty.");
389 if (jTextFieldAbstract
.getText().equals(sfc
.getSpdHdrAbs())) {
392 docConsole
.setSaved(false);
393 sfc
.setSpdHdrAbs(jTextFieldAbstract
.getText());
397 return jTextFieldAbstract
;
401 This method initializes jTextFieldCopyright
403 @return javax.swing.JTextField jTextFieldCopyright
406 private JTextField
getJTextFieldCopyright() {
407 if (jTextFieldCopyright
== null) {
408 jTextFieldCopyright
= new JTextField();
409 jTextFieldCopyright
.setBounds(new java
.awt
.Rectangle(160,86,320,20));
410 jTextFieldCopyright
.setPreferredSize(new java
.awt
.Dimension(320,20));
411 jTextFieldCopyright
.addFocusListener(new FocusAdapter(){
412 public void focusLost(FocusEvent e
){
413 if (!DataValidation
.isCopyright(jTextFieldCopyright
.getText())) {
414 JOptionPane
.showMessageDialog(frame
, "Copyright contents could not be empty.");
417 if (jTextFieldCopyright
.getText().equals(sfc
.getSpdHdrCopyright())) {
420 docConsole
.setSaved(false);
421 sfc
.setSpdHdrCopyright(jTextFieldCopyright
.getText());
425 return jTextFieldCopyright
;
429 * This method initializes jTextField
431 * @return javax.swing.JTextField
433 private JTextField
getJTextField() {
434 if (jTextField
== null) {
435 jTextField
= new JTextField();
436 jTextField
.setBounds(new java
.awt
.Rectangle(161,195,320,20));
437 jTextField
.setPreferredSize(new java
.awt
.Dimension(320, 20));
438 jTextField
.addFocusListener(new FocusAdapter(){
439 public void focusLost(FocusEvent e
){
440 if (jTextField
.getText().length() == 0 && sfc
.getSpdHdrUrl() == null) {
443 if (jTextField
.getText().equals(sfc
.getSpdHdrUrl())) {
446 sfc
.setSpdHdrLicense(jTextAreaLicense
.getText());
447 sfc
.setSpdHdrUrl(jTextField
.getText());
448 docConsole
.setSaved(false);
455 public static void main(String
[] args
) {
456 new SpdHeader().setVisible(true);
460 This is the default constructor
466 this.setVisible(true);
470 This is the override edit constructor
472 @param inspdHeader The input data of spdHeaderDocument.spdHeader
475 public SpdHeader(PackageSurfaceAreaDocument
.PackageSurfaceArea inPsa
) {
477 sfc
= new SpdFileContents(inPsa
);
481 public SpdHeader(OpeningPackageType opt
){
482 this(opt
.getXmlSpd());
486 This method initializes this
489 private void init() {
490 this.setContentPane(getTopScrollPane());
491 this.setTitle("Package Surface Area Header");
496 This method initializes this
497 Fill values to all fields if these values are not empty
499 @param inspdHeader The input data of spdHeaderDocument.spdHeader
502 private void init(SpdFileContents sfc
) {
503 if (sfc
.getSpdHdrPkgName() != null) {
504 jTextFieldBaseName
.setText(sfc
.getSpdHdrPkgName());
506 if (sfc
.getSpdHdrGuidValue() != null) {
507 jTextFieldGuid
.setText(sfc
.getSpdHdrGuidValue());
509 if (sfc
.getSpdHdrVer() != null) {
510 jTextFieldVersion
.setText(sfc
.getSpdHdrVer());
512 if (sfc
.getSpdHdrLicense() != null) {
513 jTextAreaLicense
.setText(sfc
.getSpdHdrLicense());
515 if (sfc
.getSpdHdrUrl() != null) {
516 jTextField
.setText(sfc
.getSpdHdrUrl());
518 if (sfc
.getSpdHdrCopyright() != null) {
519 jTextFieldCopyright
.setText(sfc
.getSpdHdrCopyright());
521 if (sfc
.getSpdHdrAbs() != null) {
522 jTextFieldAbstract
.setText(sfc
.getSpdHdrAbs());
524 if (sfc
.getSpdHdrDescription() != null) {
525 jTextAreaDescription
.setText(sfc
.getSpdHdrDescription());
527 if (sfc
.getSpdHdrSpec() != null) {
528 jTextFieldSpecification
.setText(sfc
.getSpdHdrSpec());
530 sfc
.setSpdHdrSpec(jTextFieldSpecification
.getText());
532 if (!sfc
.getSpdPkgDefsRdOnly().equals("true")) {
533 sfc
.setSpdPkgDefsRdOnly("false");
535 if (!sfc
.getSpdPkgDefsRePkg().equals("true")) {
536 sfc
.setSpdPkgDefsRePkg("false");
542 This method initializes jContentPane
544 @return javax.swing.JPanel jContentPane
547 private JPanel
getJContentPane() {
548 if (jContentPane
== null) {
549 jLabel
= new JLabel();
550 jLabel
.setBounds(new java
.awt
.Rectangle(16,195,140,20));
551 jLabel
.setText("URL");
552 jContentPane
= new JPanel();
553 jContentPane
.setLayout(null);
554 jContentPane
.setLocation(new java
.awt
.Point(0, 0));
555 jContentPane
.setPreferredSize(new java
.awt
.Dimension(500, 524));
556 jLabelAbstract
= new JLabel();
557 jLabelAbstract
.setBounds(new java
.awt
.Rectangle(16,245,140,20));
558 jLabelAbstract
.setText("Description");
559 jLabelSpecification
= new JLabel();
560 jLabelSpecification
.setText("Specification");
561 jLabelSpecification
.setBounds(new java
.awt
.Rectangle(16,330,140,20));
562 jLabelDescription
= new JLabel();
563 jLabelDescription
.setText("Abstract");
564 jLabelDescription
.setBounds(new java
.awt
.Rectangle(16,220,140,20));
565 jLabelCopyright
= new JLabel();
566 jLabelCopyright
.setText("Copyright");
567 jLabelCopyright
.setBounds(new java
.awt
.Rectangle(15,86,140,20));
568 jLabelLicense
= new JLabel();
569 jLabelLicense
.setText("License");
570 jLabelLicense
.setBounds(new java
.awt
.Rectangle(16,110,140,20));
571 jLabelVersion
= new JLabel();
572 jLabelVersion
.setText("Version");
573 jLabelVersion
.setBounds(new java
.awt
.Rectangle(15, 60, 140, 20));
574 jLabelGuid
= new JLabel();
575 jLabelGuid
.setPreferredSize(new java
.awt
.Dimension(25, 15));
576 jLabelGuid
.setBounds(new java
.awt
.Rectangle(15, 35, 140, 20));
577 jLabelGuid
.setText("Guid");
578 jLabelBaseName
= new JLabel();
579 jLabelBaseName
.setText("Package Name");
580 jLabelBaseName
.setBounds(new java
.awt
.Rectangle(15, 10, 140, 20));
581 jContentPane
.add(jLabelBaseName
, null);
582 jContentPane
.add(getJTextFieldBaseName(), null);
583 jContentPane
.add(jLabelGuid
, null);
584 jContentPane
.add(getJTextFieldGuid(), null);
585 jContentPane
.add(jLabelVersion
, null);
586 jContentPane
.add(getJTextFieldVersion(), null);
587 jContentPane
.add(getJButtonGenerateGuid(), null);
588 jContentPane
.add(jLabelLicense
, null);
589 jContentPane
.add(jLabelCopyright
, null);
590 jContentPane
.add(jLabelDescription
, null);
591 jContentPane
.add(jLabelSpecification
, null);
592 jContentPane
.add(getJTextFieldSpecification(), null);
593 jContentPane
.add(getJButtonOk(), null);
594 jContentPane
.add(getJButtonCancel(), null);
595 jContentPane
.add(getJScrollPaneLicense(), null);
596 jContentPane
.add(getJScrollPaneDescription(), null);
597 jContentPane
.add(jLabelAbstract
, null);
598 jContentPane
.add(getJTextFieldAbstract(), null);
599 jStarLabel1
= new StarLabel();
600 jStarLabel1
.setLocation(new java
.awt
.Point(0, 10));
601 jStarLabel2
= new StarLabel();
602 jStarLabel2
.setLocation(new java
.awt
.Point(0, 35));
603 jStarLabel3
= new StarLabel();
604 jStarLabel3
.setLocation(new java
.awt
.Point(0, 60));
605 jStarLabel4
= new StarLabel();
606 jStarLabel4
.setLocation(new java
.awt
.Point(1,110));
607 jStarLabel5
= new StarLabel();
608 jStarLabel5
.setLocation(new java
.awt
.Point(0,86));
609 jStarLabel6
= new StarLabel();
610 jStarLabel6
.setLocation(new java
.awt
.Point(1,220));
611 jStarLabel7
= new StarLabel();
612 jStarLabel7
.setLocation(new java
.awt
.Point(1,330));
613 jStarLabel7
.setEnabled(false);
614 jStarLabel9
= new StarLabel();
615 jStarLabel9
.setLocation(new java
.awt
.Point(1,245));
616 jContentPane
.add(jStarLabel1
, null);
617 jContentPane
.add(jStarLabel2
, null);
618 jContentPane
.add(jStarLabel3
, null);
619 jContentPane
.add(jStarLabel4
, null);
620 jContentPane
.add(jStarLabel5
, null);
621 jContentPane
.add(jStarLabel6
, null);
622 jContentPane
.add(jStarLabel7
, null);
623 jContentPane
.add(jStarLabel9
, null);
624 jContentPane
.add(getJTextFieldCopyright(), null);
626 jContentPane
.add(jLabel
, null);
627 jContentPane
.add(getJTextField(), null);
633 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
635 * Override actionPerformed to listen all actions
638 public void actionPerformed(ActionEvent arg0
) {
640 if (arg0
.getSource() == jButtonGenerateGuid
) {
641 //ToDo: invoke GuidValueEditor
642 jTextFieldGuid
.setText(Tools
.generateUuidString());
643 docConsole
.setSaved(false);
644 sfc
.setSpdHdrGuidValue(jTextFieldGuid
.getText());
649 This method initializes Package type and Compontent type
652 private void initFrame() {
657 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
659 * Override componentResized to resize all components when frame's size is changed
661 public void componentResized(ComponentEvent arg0
) {
662 int intPreferredWidth
= 500;
663 int intCurrentWidth
= this.getJContentPane().getWidth();
665 resizeComponentWidth(this.jTextFieldBaseName
, intCurrentWidth
,intPreferredWidth
);
666 resizeComponentWidth(this.jTextFieldGuid
, intCurrentWidth
,intPreferredWidth
);
667 resizeComponentWidth(this.jTextFieldVersion
, intCurrentWidth
,intPreferredWidth
);
668 resizeComponentWidth(this.jTextField
, intCurrentWidth
,intPreferredWidth
);
669 resizeComponentWidth(this.jScrollPaneLicense
, intCurrentWidth
,intPreferredWidth
);
670 resizeComponentWidth(this.jTextFieldCopyright
, intCurrentWidth
,intPreferredWidth
);
671 resizeComponentWidth(this.jScrollPaneDescription
, intCurrentWidth
,intPreferredWidth
);
672 resizeComponentWidth(this.jTextFieldSpecification
, intCurrentWidth
,intPreferredWidth
);
673 resizeComponentWidth(this.jTextFieldAbstract
, intCurrentWidth
,intPreferredWidth
);
674 relocateComponentX(this.jButtonGenerateGuid
, intCurrentWidth
, jButtonGenerateGuid
.getWidth(),30);
677 private JScrollPane
getTopScrollPane() {
678 if (topScrollPane
== null){
679 topScrollPane
= new JScrollPane();
680 topScrollPane
.setViewportView(getJContentPane());
682 return topScrollPane
;