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
.Rectangle
;
19 import java
.awt
.event
.ActionEvent
;
20 import java
.awt
.event
.ComponentEvent
;
21 import java
.awt
.event
.FocusAdapter
;
22 import java
.awt
.event
.FocusEvent
;
24 import javax
.swing
.JButton
;
25 import javax
.swing
.JLabel
;
26 import javax
.swing
.JPanel
;
27 import javax
.swing
.JScrollPane
;
28 import javax
.swing
.JTextArea
;
29 import javax
.swing
.JTextField
;
31 import org
.tianocore
.PackageSurfaceAreaDocument
;
32 import org
.tianocore
.frameworkwizard
.common
.DataValidation
;
33 import org
.tianocore
.frameworkwizard
.common
.Log
;
34 import org
.tianocore
.frameworkwizard
.common
.Tools
;
35 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
36 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
39 The class is used to create, update spdHeader of Spd file
40 It extends IInternalFrame
42 @since PackageEditor 1.0
45 public class SpdHeader
extends IInternalFrame
{
48 /// Define class Serial Version UID
50 private static final long serialVersionUID
= -8152099582923006900L;
53 //Define class members
55 private JPanel jContentPane
= null;
57 private JLabel jLabelBaseName
= null;
59 private JTextField jTextFieldBaseName
= null;
61 private JLabel jLabelGuid
= null;
63 private JTextField jTextFieldGuid
= null;
65 private JLabel jLabelVersion
= null;
67 private JTextField jTextFieldVersion
= null;
69 private JButton jButtonGenerateGuid
= null;
71 private JLabel jLabelLicense
= null;
73 private JTextArea jTextAreaLicense
= null;
75 private JLabel jLabelCopyright
= null;
77 private JLabel jLabelDescription
= null;
79 private JTextArea jTextAreaDescription
= null;
81 private JLabel jLabelSpecification
= null;
83 private JTextField jTextFieldSpecification
= null;
85 private JButton jButtonOk
= null;
87 private JButton jButtonCancel
= null;
89 private JScrollPane jScrollPaneLicense
= null;
91 private JScrollPane jScrollPaneDescription
= null;
93 private JLabel jLabelAbstract
= null;
95 private JTextField jTextFieldAbstract
= null;
97 private StarLabel jStarLabel1
= null;
99 private StarLabel jStarLabel2
= null;
101 private StarLabel jStarLabel3
= null;
103 private StarLabel jStarLabel4
= null;
105 private StarLabel jStarLabel5
= null;
107 private StarLabel jStarLabel6
= null;
109 private StarLabel jStarLabel7
= null;
111 private StarLabel jStarLabel9
= null;
113 private SpdFileContents sfc
= null;
115 private JTextField jTextFieldCopyright
= null;
117 private JScrollPane topScrollPane
= null;
119 private JLabel jLabel
= null;
121 private JTextField jTextField
= null;
124 This method initializes jTextFieldBaseName
126 @return javax.swing.JTextField jTextFieldBaseName
129 private JTextField
getJTextFieldBaseName() {
130 if (jTextFieldBaseName
== null) {
131 jTextFieldBaseName
= new JTextField();
132 jTextFieldBaseName
.setBounds(new java
.awt
.Rectangle(160, 10, 320, 20));
133 jTextFieldBaseName
.setPreferredSize(new java
.awt
.Dimension(320,20));
134 jTextFieldBaseName
.addFocusListener(new FocusAdapter(){
135 public void focusLost(FocusEvent e
){
136 sfc
.setSpdHdrPkgName(jTextFieldBaseName
.getText());
140 return jTextFieldBaseName
;
144 This method initializes jTextFieldGuid
146 @return javax.swing.JTextField jTextFieldGuid
149 private JTextField
getJTextFieldGuid() {
150 if (jTextFieldGuid
== null) {
151 jTextFieldGuid
= new JTextField();
152 jTextFieldGuid
.setBounds(new java
.awt
.Rectangle(160, 35, 250, 20));
153 jTextFieldGuid
.setPreferredSize(new java
.awt
.Dimension(250,20));
154 jTextFieldGuid
.addFocusListener(new FocusAdapter(){
155 public void focusLost(FocusEvent e
){
156 sfc
.setSpdHdrGuidValue(jTextFieldGuid
.getText());
160 return jTextFieldGuid
;
164 This method initializes jTextFieldVersion
166 @return javax.swing.JTextField jTextFieldVersion
169 private JTextField
getJTextFieldVersion() {
170 if (jTextFieldVersion
== null) {
171 jTextFieldVersion
= new JTextField();
172 jTextFieldVersion
.setBounds(new java
.awt
.Rectangle(160, 60, 320, 20));
173 jTextFieldVersion
.setPreferredSize(new java
.awt
.Dimension(320,20));
174 jTextFieldVersion
.addFocusListener(new FocusAdapter(){
175 public void focusLost(FocusEvent e
){
176 sfc
.setSpdHdrVer(jTextFieldVersion
.getText());
180 return jTextFieldVersion
;
184 This method initializes jButtonGenerateGuid
186 @return javax.swing.JButton jButtonGenerateGuid
189 private JButton
getJButtonGenerateGuid() {
190 if (jButtonGenerateGuid
== null) {
191 jButtonGenerateGuid
= new JButton();
192 jButtonGenerateGuid
.setBounds(new java
.awt
.Rectangle(415, 35, 65, 20));
193 jButtonGenerateGuid
.setText("GEN");
194 jButtonGenerateGuid
.addActionListener(this);
196 return jButtonGenerateGuid
;
200 This method initializes jTextAreaLicense
202 @return javax.swing.JTextArea jTextAreaLicense
205 private JTextArea
getJTextAreaLicense() {
206 if (jTextAreaLicense
== null) {
207 jTextAreaLicense
= new JTextArea();
208 jTextAreaLicense
.setText("");
209 jTextAreaLicense
.setPreferredSize(new java
.awt
.Dimension(317,77));
210 jTextAreaLicense
.setLineWrap(true);
211 jTextAreaLicense
.addFocusListener(new FocusAdapter(){
212 public void focusLost(FocusEvent e
){
213 sfc
.setSpdHdrLicense(jTextAreaLicense
.getText());
217 return jTextAreaLicense
;
221 This method initializes jTextAreaDescription
223 @return javax.swing.JTextArea jTextAreaDescription
226 private JTextArea
getJTextAreaDescription() {
227 if (jTextAreaDescription
== null) {
228 jTextAreaDescription
= new JTextArea();
229 jTextAreaDescription
.setLineWrap(true);
230 jTextAreaDescription
.setPreferredSize(new java
.awt
.Dimension(317,77));
231 jTextAreaDescription
.addFocusListener(new FocusAdapter(){
232 public void focusLost(FocusEvent e
){
233 sfc
.setSpdHdrDescription(jTextAreaDescription
.getText());
237 return jTextAreaDescription
;
241 This method initializes jTextFieldSpecification
243 @return javax.swing.JTextField jTextFieldSpecification
246 private JTextField
getJTextFieldSpecification() {
247 if (jTextFieldSpecification
== null) {
248 jTextFieldSpecification
= new JTextField();
249 jTextFieldSpecification
.setBounds(new java
.awt
.Rectangle(160, 305, 320, 20));
250 jTextFieldSpecification
.setEditable(false);
251 jTextFieldSpecification
.setPreferredSize(new java
.awt
.Dimension(320,20));
252 jTextFieldSpecification
.addFocusListener(new FocusAdapter(){
253 public void focusLost(FocusEvent e
){
254 sfc
.setSpdHdrSpec(jTextFieldSpecification
.getText());
258 return jTextFieldSpecification
;
262 This method initializes jButtonOk
264 @return javax.swing.JButton jButtonOk
267 private JButton
getJButtonOk() {
268 if (jButtonOk
== null) {
269 jButtonOk
= new JButton();
270 jButtonOk
.setText("OK");
271 jButtonOk
.setBounds(new java
.awt
.Rectangle(290, 445, 90, 20));
272 jButtonOk
.setVisible(false);
273 jButtonOk
.addActionListener(this);
279 This method initializes jButtonCancel
281 @return javax.swing.JButton jButtonCancel
284 private JButton
getJButtonCancel() {
285 if (jButtonCancel
== null) {
286 jButtonCancel
= new JButton();
287 jButtonCancel
.setText("Cancel");
288 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390, 445, 90, 20));
289 jButtonCancel
.setVisible(false);
290 jButtonCancel
.addActionListener(this);
292 return jButtonCancel
;
296 This method initializes jScrollPaneLicense
298 @return javax.swing.JScrollPane jScrollPaneLicense
301 private JScrollPane
getJScrollPaneLicense() {
302 if (jScrollPaneLicense
== null) {
303 jScrollPaneLicense
= new JScrollPane();
304 jScrollPaneLicense
.setBounds(new java
.awt
.Rectangle(160, 85, 320, 80));
305 jScrollPaneLicense
.setHorizontalScrollBarPolicy(javax
.swing
.JScrollPane
.HORIZONTAL_SCROLLBAR_NEVER
);
306 jScrollPaneLicense
.setPreferredSize(new java
.awt
.Dimension(320,80));
307 jScrollPaneLicense
.setViewportView(getJTextAreaLicense());
309 return jScrollPaneLicense
;
313 This method initializes jScrollPaneDescription
315 @return javax.swing.JScrollPane jScrollPaneDescription
318 private JScrollPane
getJScrollPaneDescription() {
319 if (jScrollPaneDescription
== null) {
320 jScrollPaneDescription
= new JScrollPane();
321 jScrollPaneDescription
.setBounds(new java
.awt
.Rectangle(160, 220, 320, 80));
322 jScrollPaneDescription
.setHorizontalScrollBarPolicy(javax
.swing
.JScrollPane
.HORIZONTAL_SCROLLBAR_NEVER
);
323 jScrollPaneDescription
.setViewportView(getJTextAreaDescription());
325 return jScrollPaneDescription
;
329 This method initializes jTextFieldAbstract
331 @return javax.swing.JTextField jTextFieldAbstract
334 private JTextField
getJTextFieldAbstract() {
335 if (jTextFieldAbstract
== null) {
336 jTextFieldAbstract
= new JTextField();
337 jTextFieldAbstract
.setBounds(new java
.awt
.Rectangle(160,195,320,20));
338 jTextFieldAbstract
.setPreferredSize(new java
.awt
.Dimension(320, 20));
339 jTextFieldAbstract
.addFocusListener(new FocusAdapter(){
340 public void focusLost(FocusEvent e
){
341 sfc
.setSpdHdrAbs(jTextFieldAbstract
.getText());
345 return jTextFieldAbstract
;
349 This method initializes jTextFieldCopyright
351 @return javax.swing.JTextField jTextFieldCopyright
354 private JTextField
getJTextFieldCopyright() {
355 if (jTextFieldCopyright
== null) {
356 jTextFieldCopyright
= new JTextField();
357 jTextFieldCopyright
.setBounds(new java
.awt
.Rectangle(160,330,320, 20));
358 jTextFieldCopyright
.setPreferredSize(new java
.awt
.Dimension(320,20));
359 jTextFieldCopyright
.addFocusListener(new FocusAdapter(){
360 public void focusLost(FocusEvent e
){
361 sfc
.setSpdHdrCopyright(jTextFieldCopyright
.getText());
365 return jTextFieldCopyright
;
369 * This method initializes jTextField
371 * @return javax.swing.JTextField
373 private JTextField
getJTextField() {
374 if (jTextField
== null) {
375 jTextField
= new JTextField();
376 jTextField
.setBounds(new java
.awt
.Rectangle(160,170,320,20));
377 jTextField
.setPreferredSize(new java
.awt
.Dimension(320, 20));
378 jTextField
.addFocusListener(new FocusAdapter(){
379 public void focusLost(FocusEvent e
){
380 sfc
.setSpdHdrLicense(jTextAreaLicense
.getText());
381 sfc
.setSpdHdrUrl(jTextField
.getText());
388 public static void main(String
[] args
) {
389 new SpdHeader().setVisible(true);
393 This is the default constructor
399 this.setVisible(true);
403 This is the override edit constructor
405 @param inspdHeader The input data of spdHeaderDocument.spdHeader
408 public SpdHeader(PackageSurfaceAreaDocument
.PackageSurfaceArea inPsa
) {
410 sfc
= new SpdFileContents(inPsa
);
414 This method initializes this
417 private void init() {
418 this.setContentPane(getTopScrollPane());
419 this.setTitle("Package Surface Area Header");
424 This method initializes this
425 Fill values to all fields if these values are not empty
427 @param inspdHeader The input data of spdHeaderDocument.spdHeader
430 private void init(SpdFileContents sfc
) {
431 if (sfc
.getSpdHdrPkgName() != null) {
432 jTextFieldBaseName
.setText(sfc
.getSpdHdrPkgName());
434 if (sfc
.getSpdHdrGuidValue() != null) {
435 jTextFieldGuid
.setText(sfc
.getSpdHdrGuidValue());
437 if (sfc
.getSpdHdrVer() != null) {
438 jTextFieldVersion
.setText(sfc
.getSpdHdrVer());
440 if (sfc
.getSpdHdrLicense() != null) {
441 jTextAreaLicense
.setText(sfc
.getSpdHdrLicense());
443 if (sfc
.getSpdHdrUrl() != null) {
444 jTextField
.setText(sfc
.getSpdHdrUrl());
446 if (sfc
.getSpdHdrCopyright() != null) {
447 jTextFieldCopyright
.setText(sfc
.getSpdHdrCopyright());
449 if (sfc
.getSpdHdrAbs() != null) {
450 jTextFieldAbstract
.setText(sfc
.getSpdHdrAbs());
452 if (sfc
.getSpdHdrDescription() != null) {
453 jTextAreaDescription
.setText(sfc
.getSpdHdrDescription());
455 if (sfc
.getSpdHdrSpec() != null) {
456 jTextFieldSpecification
.setText(sfc
.getSpdHdrSpec());
462 This method initializes jContentPane
464 @return javax.swing.JPanel jContentPane
467 private JPanel
getJContentPane() {
468 if (jContentPane
== null) {
469 jLabel
= new JLabel();
470 jLabel
.setBounds(new java
.awt
.Rectangle(15,170,140,20));
471 jLabel
.setText("URL");
472 jContentPane
= new JPanel();
473 jContentPane
.setLayout(null);
474 jContentPane
.setLocation(new java
.awt
.Point(0, 0));
475 jContentPane
.setPreferredSize(new java
.awt
.Dimension(500, 524));
476 jLabelAbstract
= new JLabel();
477 jLabelAbstract
.setBounds(new java
.awt
.Rectangle(15, 220, 140, 20));
478 jLabelAbstract
.setText("Description");
479 jLabelSpecification
= new JLabel();
480 jLabelSpecification
.setText("Specification");
481 jLabelSpecification
.setBounds(new java
.awt
.Rectangle(15, 305, 140, 20));
482 jLabelDescription
= new JLabel();
483 jLabelDescription
.setText("Abstract");
484 jLabelDescription
.setBounds(new java
.awt
.Rectangle(15, 195, 140, 20));
485 jLabelCopyright
= new JLabel();
486 jLabelCopyright
.setText("Copyright");
487 jLabelCopyright
.setBounds(new java
.awt
.Rectangle(15, 330, 140, 20));
488 jLabelLicense
= new JLabel();
489 jLabelLicense
.setText("License");
490 jLabelLicense
.setBounds(new java
.awt
.Rectangle(15, 85, 140, 20));
491 jLabelVersion
= new JLabel();
492 jLabelVersion
.setText("Version");
493 jLabelVersion
.setBounds(new java
.awt
.Rectangle(15, 60, 140, 20));
494 jLabelGuid
= new JLabel();
495 jLabelGuid
.setPreferredSize(new java
.awt
.Dimension(25, 15));
496 jLabelGuid
.setBounds(new java
.awt
.Rectangle(15, 35, 140, 20));
497 jLabelGuid
.setText("Guid");
498 jLabelBaseName
= new JLabel();
499 jLabelBaseName
.setText("Package Name");
500 jLabelBaseName
.setBounds(new java
.awt
.Rectangle(15, 10, 140, 20));
501 jContentPane
.add(jLabelBaseName
, null);
502 jContentPane
.add(getJTextFieldBaseName(), null);
503 jContentPane
.add(jLabelGuid
, null);
504 jContentPane
.add(getJTextFieldGuid(), null);
505 jContentPane
.add(jLabelVersion
, null);
506 jContentPane
.add(getJTextFieldVersion(), null);
507 jContentPane
.add(getJButtonGenerateGuid(), null);
508 jContentPane
.add(jLabelLicense
, null);
509 jContentPane
.add(jLabelCopyright
, null);
510 jContentPane
.add(jLabelDescription
, null);
511 jContentPane
.add(jLabelSpecification
, null);
512 jContentPane
.add(getJTextFieldSpecification(), null);
513 jContentPane
.add(getJButtonOk(), null);
514 jContentPane
.add(getJButtonCancel(), null);
515 jContentPane
.add(getJScrollPaneLicense(), null);
516 jContentPane
.add(getJScrollPaneDescription(), null);
517 jContentPane
.add(jLabelAbstract
, null);
518 jContentPane
.add(getJTextFieldAbstract(), null);
519 jStarLabel1
= new StarLabel();
520 jStarLabel1
.setLocation(new java
.awt
.Point(0, 10));
521 jStarLabel2
= new StarLabel();
522 jStarLabel2
.setLocation(new java
.awt
.Point(0, 35));
523 jStarLabel3
= new StarLabel();
524 jStarLabel3
.setLocation(new java
.awt
.Point(0, 60));
525 jStarLabel4
= new StarLabel();
526 jStarLabel4
.setLocation(new java
.awt
.Point(0, 85));
527 jStarLabel5
= new StarLabel();
528 jStarLabel5
.setLocation(new java
.awt
.Point(0, 330));
529 jStarLabel6
= new StarLabel();
530 jStarLabel6
.setLocation(new java
.awt
.Point(0, 195));
531 jStarLabel7
= new StarLabel();
532 jStarLabel7
.setLocation(new java
.awt
.Point(0, 305));
533 jStarLabel7
.setEnabled(false);
534 jStarLabel9
= new StarLabel();
535 jStarLabel9
.setLocation(new java
.awt
.Point(0, 220));
536 jContentPane
.add(jStarLabel1
, null);
537 jContentPane
.add(jStarLabel2
, null);
538 jContentPane
.add(jStarLabel3
, null);
539 jContentPane
.add(jStarLabel4
, null);
540 jContentPane
.add(jStarLabel5
, null);
541 jContentPane
.add(jStarLabel6
, null);
542 jContentPane
.add(jStarLabel7
, null);
543 jContentPane
.add(jStarLabel9
, null);
544 jContentPane
.add(getJTextFieldCopyright(), null);
546 jContentPane
.add(jLabel
, null);
547 jContentPane
.add(getJTextField(), null);
553 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
555 * Override actionPerformed to listen all actions
558 public void actionPerformed(ActionEvent arg0
) {
559 if (arg0
.getSource() == jButtonOk
) {
561 this.setEdited(true);
563 if (arg0
.getSource() == jButtonCancel
) {
564 this.setEdited(false);
566 if (arg0
.getSource() == jButtonGenerateGuid
) {
567 //ToDo: invoke GuidValueEditor
568 jTextFieldGuid
.setText(Tools
.generateUuidString());
569 sfc
.setSpdHdrGuidValue(jTextFieldGuid
.getText());
574 Data validation for all fields
576 @retval true - All datas are valid
577 @retval false - At least one data is invalid
580 public boolean check() {
582 // Check if all required fields are not empty
584 if (isEmpty(this.jTextFieldBaseName
.getText())) {
585 Log
.err("Base Name couldn't be empty");
588 if (isEmpty(this.jTextFieldGuid
.getText())) {
589 Log
.err("Guid couldn't be empty");
592 if (isEmpty(this.jTextFieldVersion
.getText())) {
593 Log
.err("Version couldn't be empty");
596 if (isEmpty(this.jTextAreaLicense
.getText())) {
597 Log
.err("License couldn't be empty");
600 if (isEmpty(this.jTextFieldCopyright
.getText())) {
601 Log
.err("Copyright couldn't be empty");
604 if (isEmpty(this.jTextAreaDescription
.getText())) {
605 Log
.err("Description couldn't be empty");
608 if (isEmpty(this.jTextFieldAbstract
.getText())) {
609 Log
.err("Abstract couldn't be empty");
614 // Check if all fields have correct data types
616 if (!DataValidation
.isBaseName(this.jTextFieldBaseName
.getText())) {
617 Log
.err("Incorrect data type for Base Name");
620 if (!DataValidation
.isGuid((this.jTextFieldGuid
).getText())) {
621 Log
.err("Incorrect data type for Guid");
624 if (!DataValidation
.isAbstract(this.jTextFieldAbstract
.getText())) {
625 Log
.err("Incorrect data type for Abstract");
628 if (!DataValidation
.isCopyright(this.jTextFieldCopyright
.getText())) {
629 Log
.err("Incorrect data type for Copyright");
636 Save all components of Spd Header
637 if exists spdHeader, set the value directly
638 if not exists spdHeader, new an instance first
644 } catch (Exception e
) {
645 Log
.err("Save Package", e
.getMessage());
650 This method initializes Package type and Compontent type
653 private void initFrame() {
658 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
660 * Override componentResized to resize all components when frame's size is changed
662 public void componentResized(ComponentEvent arg0
) {
663 int intPreferredWidth
= 500;
664 int intCurrentWidth
= this.getJContentPane().getWidth();
666 resizeComponentWidth(this.jTextFieldBaseName
, intCurrentWidth
,intPreferredWidth
);
667 resizeComponentWidth(this.jTextFieldGuid
, intCurrentWidth
,intPreferredWidth
);
668 resizeComponentWidth(this.jTextFieldVersion
, 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
;