3 The file is used to create, update FpdHeader of Fpd 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
.platform
.ui
;
18 import java
.awt
.Dimension
;
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
;
33 import org
.tianocore
.PlatformSurfaceAreaDocument
;
35 import org
.tianocore
.frameworkwizard
.common
.DataValidation
;
36 import org
.tianocore
.frameworkwizard
.common
.Log
;
37 import org
.tianocore
.frameworkwizard
.common
.Tools
;
38 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
39 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
42 The class is used to create, update FpdHeader of Fpd file
43 It extends IInternalFrame
45 @since PackageEditor 1.0
48 public class FpdHeader
extends IInternalFrame
{
51 /// Define class Serial Version UID
53 private static final long serialVersionUID
= -8152099582923006900L;
56 //Define class members
58 private JPanel jContentPane
= null; // @jve:decl-index=0:visual-constraint="10,53"
60 private JLabel jLabelBaseName
= null;
62 private JTextField jTextFieldBaseName
= null;
64 private JLabel jLabelGuid
= null;
66 private JTextField jTextFieldGuid
= null;
68 private JLabel jLabelVersion
= null;
70 private JTextField jTextFieldVersion
= null;
72 private JButton jButtonGenerateGuid
= null;
74 private JLabel jLabelLicense
= null;
76 private JTextArea jTextAreaLicense
= null;
78 private JLabel jLabelCopyright
= null;
80 private JLabel jLabelDescription
= null;
82 private JTextArea jTextAreaDescription
= null;
84 private JLabel jLabelSpecification
= null;
86 private JTextField jTextFieldSpecification
= null;
88 private JButton jButtonOk
= null;
90 private JButton jButtonCancel
= null;
92 private JScrollPane jScrollPaneLicense
= null;
94 private JScrollPane jScrollPaneDescription
= null;
96 private JLabel jLabelAbstract
= null;
98 private JTextField jTextFieldAbstract
= null;
100 private StarLabel jStarLabel1
= null;
102 private StarLabel jStarLabel2
= null;
104 private StarLabel jStarLabel3
= null;
106 private StarLabel jStarLabel4
= null;
108 private StarLabel jStarLabel5
= null;
110 private StarLabel jStarLabel6
= null;
112 private StarLabel jStarLabel7
= null;
114 private StarLabel jStarLabel8
= null;
116 private StarLabel jStarLabel9
= null;
118 private JTextField jTextFieldCopyright
= null;
120 private JLabel jLabel
= null;
122 private JTextField jTextField
= null;
124 private FpdFileContents ffc
= null;
127 This method initializes jTextFieldBaseName
129 @return javax.swing.JTextField jTextFieldBaseName
132 private JTextField
getJTextFieldBaseName() {
133 if (jTextFieldBaseName
== null) {
134 jTextFieldBaseName
= new JTextField();
135 jTextFieldBaseName
.setBounds(new java
.awt
.Rectangle(160, 10, 320, 20));
136 jTextFieldBaseName
.setPreferredSize(new java
.awt
.Dimension(320,20));
137 jTextFieldBaseName
.addFocusListener(new FocusAdapter(){
138 public void focusLost(FocusEvent e
) {
139 ffc
.setFpdHdrPlatformName(jTextFieldBaseName
.getText());
143 return jTextFieldBaseName
;
147 This method initializes jTextFieldGuid
149 @return javax.swing.JTextField jTextFieldGuid
152 private JTextField
getJTextFieldGuid() {
153 if (jTextFieldGuid
== null) {
154 jTextFieldGuid
= new JTextField();
155 jTextFieldGuid
.setBounds(new java
.awt
.Rectangle(160, 35, 250, 20));
156 jTextFieldGuid
.setPreferredSize(new java
.awt
.Dimension(250,20));
157 jTextFieldGuid
.addFocusListener(new FocusAdapter(){
158 public void focusLost(FocusEvent e
) {
159 ffc
.setFpdHdrGuidValue(jTextFieldGuid
.getText());
163 return jTextFieldGuid
;
167 This method initializes jTextFieldVersion
169 @return javax.swing.JTextField jTextFieldVersion
172 private JTextField
getJTextFieldVersion() {
173 if (jTextFieldVersion
== null) {
174 jTextFieldVersion
= new JTextField();
175 jTextFieldVersion
.setBounds(new java
.awt
.Rectangle(160, 60, 320, 20));
176 jTextFieldVersion
.setPreferredSize(new java
.awt
.Dimension(320,20));
177 jTextFieldVersion
.addFocusListener(new FocusAdapter(){
178 public void focusLost(FocusEvent e
) {
179 ffc
.setFpdHdrVer(jTextFieldVersion
.getText());
183 return jTextFieldVersion
;
187 This method initializes jButtonGenerateGuid
189 @return javax.swing.JButton jButtonGenerateGuid
192 private JButton
getJButtonGenerateGuid() {
193 if (jButtonGenerateGuid
== null) {
194 jButtonGenerateGuid
= new JButton();
195 jButtonGenerateGuid
.setBounds(new java
.awt
.Rectangle(415, 35, 65, 20));
196 jButtonGenerateGuid
.setText("GEN");
197 jButtonGenerateGuid
.addActionListener(this);
199 return jButtonGenerateGuid
;
203 This method initializes jTextAreaLicense
205 @return javax.swing.JTextArea jTextAreaLicense
208 private JTextArea
getJTextAreaLicense() {
209 if (jTextAreaLicense
== null) {
210 jTextAreaLicense
= new JTextArea();
211 jTextAreaLicense
.setText("");
212 jTextAreaLicense
.setPreferredSize(new java
.awt
.Dimension(317,77));
213 jTextAreaLicense
.setLineWrap(true);
214 jTextAreaLicense
.addFocusListener(new FocusAdapter(){
215 public void focusLost(FocusEvent e
) {
216 ffc
.setFpdHdrLicense(jTextAreaLicense
.getText());
220 return jTextAreaLicense
;
224 This method initializes jTextAreaDescription
226 @return javax.swing.JTextArea jTextAreaDescription
229 private JTextArea
getJTextAreaDescription() {
230 if (jTextAreaDescription
== null) {
231 jTextAreaDescription
= new JTextArea();
232 jTextAreaDescription
.setLineWrap(true);
233 jTextAreaDescription
.setPreferredSize(new java
.awt
.Dimension(317,77));
234 jTextAreaDescription
.addFocusListener(new FocusAdapter(){
235 public void focusLost(FocusEvent e
) {
236 ffc
.setFpdHdrDescription(jTextAreaDescription
.getText());
240 return jTextAreaDescription
;
244 This method initializes jTextFieldSpecification
246 @return javax.swing.JTextField jTextFieldSpecification
249 private JTextField
getJTextFieldSpecification() {
250 if (jTextFieldSpecification
== null) {
251 jTextFieldSpecification
= new JTextField();
252 jTextFieldSpecification
.setBounds(new java
.awt
.Rectangle(160, 305, 320, 20));
253 jTextFieldSpecification
.setEditable(false);
254 jTextFieldSpecification
.setPreferredSize(new java
.awt
.Dimension(320,20));
255 jTextFieldSpecification
.addFocusListener(new FocusAdapter(){
256 public void focusLost(FocusEvent e
) {
257 ffc
.setFpdHdrSpec(jTextFieldSpecification
.getText());
261 return jTextFieldSpecification
;
265 This method initializes jButtonOk
267 @return javax.swing.JButton jButtonOk
270 private JButton
getJButtonOk() {
271 if (jButtonOk
== null) {
272 jButtonOk
= new JButton();
273 jButtonOk
.setText("OK");
274 jButtonOk
.setBounds(new java
.awt
.Rectangle(290,351,90,20));
275 jButtonOk
.setVisible(false);
276 jButtonOk
.addActionListener(this);
282 This method initializes jButtonCancel
284 @return javax.swing.JButton jButtonCancel
287 private JButton
getJButtonCancel() {
288 if (jButtonCancel
== null) {
289 jButtonCancel
= new JButton();
290 jButtonCancel
.setText("Cancel");
291 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390,351,90,20));
292 jButtonCancel
.setVisible(false);
293 jButtonCancel
.addActionListener(this);
295 return jButtonCancel
;
299 This method initializes jScrollPaneLicense
301 @return javax.swing.JScrollPane jScrollPaneLicense
304 private JScrollPane
getJScrollPaneLicense() {
305 if (jScrollPaneLicense
== null) {
306 jScrollPaneLicense
= new JScrollPane();
307 jScrollPaneLicense
.setBounds(new java
.awt
.Rectangle(160, 85, 320, 80));
308 jScrollPaneLicense
.setHorizontalScrollBarPolicy(javax
.swing
.JScrollPane
.HORIZONTAL_SCROLLBAR_NEVER
);
309 jScrollPaneLicense
.setPreferredSize(new java
.awt
.Dimension(320,80));
310 jScrollPaneLicense
.setViewportView(getJTextAreaLicense());
312 return jScrollPaneLicense
;
316 This method initializes jScrollPaneDescription
318 @return javax.swing.JScrollPane jScrollPaneDescription
321 private JScrollPane
getJScrollPaneDescription() {
322 if (jScrollPaneDescription
== null) {
323 jScrollPaneDescription
= new JScrollPane();
324 jScrollPaneDescription
.setBounds(new java
.awt
.Rectangle(160, 220, 320, 80));
325 jScrollPaneDescription
.setHorizontalScrollBarPolicy(javax
.swing
.JScrollPane
.HORIZONTAL_SCROLLBAR_NEVER
);
326 jScrollPaneDescription
.setViewportView(getJTextAreaDescription());
328 return jScrollPaneDescription
;
332 This method initializes jTextFieldAbstract
334 @return javax.swing.JTextField jTextFieldAbstract
337 private JTextField
getJTextFieldAbstract() {
338 if (jTextFieldAbstract
== null) {
339 jTextFieldAbstract
= new JTextField();
340 jTextFieldAbstract
.setBounds(new java
.awt
.Rectangle(160,195,320,20));
341 jTextFieldAbstract
.setPreferredSize(new java
.awt
.Dimension(320, 20));
342 jTextFieldAbstract
.addFocusListener(new FocusAdapter(){
343 public void focusLost(FocusEvent e
) {
344 ffc
.setFpdHdrAbs(jTextFieldAbstract
.getText());
348 return jTextFieldAbstract
;
352 This method initializes jTextFieldCopyright
354 @return javax.swing.JTextField jTextFieldCopyright
357 private JTextField
getJTextFieldCopyright() {
358 if (jTextFieldCopyright
== null) {
359 jTextFieldCopyright
= new JTextField();
360 jTextFieldCopyright
.setBounds(new java
.awt
.Rectangle(160,330,320, 20));
361 jTextFieldCopyright
.setPreferredSize(new java
.awt
.Dimension(320,20));
362 jTextFieldCopyright
.addFocusListener(new FocusAdapter(){
363 public void focusLost(FocusEvent e
) {
364 ffc
.setFpdHdrCopyright(jTextFieldCopyright
.getText());
368 return jTextFieldCopyright
;
372 * This method initializes jTextField
374 * @return javax.swing.JTextField
376 private JTextField
getJTextField() {
377 if (jTextField
== null) {
378 jTextField
= new JTextField();
379 jTextField
.setBounds(new java
.awt
.Rectangle(160,170,320,20));
380 jTextField
.setPreferredSize(new Dimension(320, 20));
381 jTextField
.addFocusListener(new FocusAdapter(){
382 public void focusLost(FocusEvent e
){
383 ffc
.setFpdHdrLicense(jTextAreaLicense
.getText());
384 ffc
.setFpdHdrUrl(jTextField
.getText());
391 public static void main(String
[] args
) {
392 new FpdHeader().setVisible(true);
396 This is the default constructor
402 this.setVisible(true);
406 This is the override edit constructor
408 @param inFpdHeader The input data of FpdHeaderDocument.FpdHeader
411 public FpdHeader(PlatformSurfaceAreaDocument
.PlatformSurfaceArea inFpd
) {
413 ffc
= new FpdFileContents(inFpd
);
419 This method initializes this
422 private void init() {
423 //this.setSize(500, 515);
424 this.setContentPane(getJContentPane());
425 this.setTitle("Package Surface Area Header");
431 This method initializes this
432 Fill values to all fields if these values are not empty
434 @param inFpdHeader The input data of FpdHeaderDocument.FpdHeader
437 private void init(FpdFileContents ffc
) {
439 if (ffc
.getFpdHdrPlatformName() != null) {
440 jTextFieldBaseName
.setText(ffc
.getFpdHdrPlatformName());
442 if (ffc
.getFpdHdrGuidValue() != null) {
443 jTextFieldGuid
.setText(ffc
.getFpdHdrGuidValue());
445 if (ffc
.getFpdHdrVer() != null) {
446 jTextFieldVersion
.setText(ffc
.getFpdHdrVer());
448 if (ffc
.getFpdHdrLicense() != null) {
449 jTextAreaLicense
.setText(ffc
.getFpdHdrLicense());
451 if (ffc
.getFpdHdrAbs() != null) {
452 jTextFieldAbstract
.setText(ffc
.getFpdHdrAbs());
454 if (ffc
.getFpdHdrUrl() != null) {
455 jTextField
.setText(ffc
.getFpdHdrUrl());
457 if (ffc
.getFpdHdrCopyright() != null) {
458 jTextFieldCopyright
.setText(ffc
.getFpdHdrCopyright());
460 if (ffc
.getFpdHdrDescription() != null) {
461 jTextAreaDescription
.setText(ffc
.getFpdHdrDescription());
463 if (ffc
.getFpdHdrSpec() != null) {
464 jTextFieldSpecification
.setText(ffc
.getFpdHdrSpec());
470 This method initializes jContentPane
472 @return javax.swing.JPanel jContentPane
475 private JPanel
getJContentPane() {
476 if (jContentPane
== null) {
477 jLabel
= new JLabel();
478 jLabel
.setBounds(new java
.awt
.Rectangle(15,170,140,20));
479 jLabel
.setText("URL");
480 jContentPane
= new JPanel();
481 jContentPane
.setLayout(null);
482 jContentPane
.setLocation(new java
.awt
.Point(0, 0));
483 jContentPane
.setSize(new java
.awt
.Dimension(500,423));
484 jLabelAbstract
= new JLabel();
485 jLabelAbstract
.setBounds(new java
.awt
.Rectangle(15, 195, 140, 20));
486 jLabelAbstract
.setText("Abstract");
487 jLabelSpecification
= new JLabel();
488 jLabelSpecification
.setText("Specification");
489 jLabelSpecification
.setBounds(new java
.awt
.Rectangle(15, 305, 140, 20));
490 jLabelDescription
= new JLabel();
491 jLabelDescription
.setText("Description");
492 jLabelDescription
.setBounds(new java
.awt
.Rectangle(15, 220, 140, 20));
493 jLabelCopyright
= new JLabel();
494 jLabelCopyright
.setText("Copyright");
495 jLabelCopyright
.setBounds(new java
.awt
.Rectangle(15, 330, 140, 20));
496 jLabelLicense
= new JLabel();
497 jLabelLicense
.setText("License");
498 jLabelLicense
.setBounds(new java
.awt
.Rectangle(15, 85, 140, 20));
499 jLabelVersion
= new JLabel();
500 jLabelVersion
.setText("Version");
501 jLabelVersion
.setBounds(new java
.awt
.Rectangle(15, 60, 140, 20));
502 jLabelGuid
= new JLabel();
503 jLabelGuid
.setPreferredSize(new java
.awt
.Dimension(25, 15));
504 jLabelGuid
.setBounds(new java
.awt
.Rectangle(15, 35, 140, 20));
505 jLabelGuid
.setText("Guid");
506 jLabelBaseName
= new JLabel();
507 jLabelBaseName
.setText("Platform Name");
508 jLabelBaseName
.setBounds(new java
.awt
.Rectangle(15, 10, 140, 20));
509 jContentPane
.add(jLabelBaseName
, null);
510 jContentPane
.add(getJTextFieldBaseName(), null);
511 jContentPane
.add(jLabelGuid
, null);
512 jContentPane
.add(getJTextFieldGuid(), null);
513 jContentPane
.add(jLabelVersion
, null);
514 jContentPane
.add(getJTextFieldVersion(), null);
515 jContentPane
.add(getJButtonGenerateGuid(), null);
516 jContentPane
.add(jLabelLicense
, null);
517 jContentPane
.add(jLabelCopyright
, null);
518 jContentPane
.add(jLabelDescription
, null);
519 jContentPane
.add(jLabelSpecification
, null);
520 jContentPane
.add(getJTextFieldSpecification(), null);
521 jContentPane
.add(getJButtonOk(), null);
522 jContentPane
.add(getJButtonCancel(), null);
523 jContentPane
.add(getJScrollPaneLicense(), null);
524 jContentPane
.add(getJScrollPaneDescription(), null);
525 jContentPane
.add(jLabelAbstract
, null);
526 jContentPane
.add(getJTextFieldAbstract(), null);
527 jStarLabel1
= new StarLabel();
528 jStarLabel1
.setLocation(new java
.awt
.Point(0, 10));
529 jStarLabel2
= new StarLabel();
530 jStarLabel2
.setLocation(new java
.awt
.Point(0, 35));
531 jStarLabel3
= new StarLabel();
532 jStarLabel3
.setLocation(new java
.awt
.Point(0, 60));
533 jStarLabel4
= new StarLabel();
534 jStarLabel4
.setLocation(new java
.awt
.Point(0, 85));
535 jStarLabel5
= new StarLabel();
536 jStarLabel5
.setLocation(new java
.awt
.Point(0, 330));
537 jStarLabel6
= new StarLabel();
538 jStarLabel6
.setLocation(new java
.awt
.Point(0, 195));
539 jStarLabel7
= new StarLabel();
540 jStarLabel7
.setLocation(new java
.awt
.Point(0, 305));
541 jStarLabel7
.setEnabled(false);
542 jStarLabel8
= new StarLabel();
543 jStarLabel8
.setLocation(new java
.awt
.Point(0, 220));
544 jStarLabel9
= new StarLabel();
545 jStarLabel9
.setLocation(new java
.awt
.Point(0, 280));
546 jStarLabel9
.setVisible(false);
547 jContentPane
.add(jStarLabel1
, null);
548 jContentPane
.add(jStarLabel2
, null);
549 jContentPane
.add(jStarLabel3
, null);
550 jContentPane
.add(jStarLabel4
, null);
551 jContentPane
.add(jStarLabel5
, null);
552 jContentPane
.add(jStarLabel6
, null);
553 jContentPane
.add(jStarLabel7
, null);
554 jContentPane
.add(jStarLabel8
, null);
555 jContentPane
.add(jStarLabel9
, null);
556 jContentPane
.add(getJTextFieldCopyright(), null);
558 jContentPane
.add(jLabel
, null);
559 jContentPane
.add(getJTextField(), null);
565 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
567 * Override actionPerformed to listen all actions
570 public void actionPerformed(ActionEvent arg0
) {
571 if (arg0
.getSource() == jButtonOk
) {
573 this.setEdited(true);
575 if (arg0
.getSource() == jButtonCancel
) {
576 this.setEdited(false);
578 if (arg0
.getSource() == jButtonGenerateGuid
) {
579 //ToDo: invoke GuidValueEditor
580 jTextFieldGuid
.setText(Tools
.generateUuidString());
581 ffc
.setFpdHdrGuidValue(jTextFieldGuid
.getText());
586 Data validation for all fields
588 @retval true - All datas are valid
589 @retval false - At least one data is invalid
592 public boolean check() {
594 // Check if all required fields are not empty
596 if (isEmpty(this.jTextFieldBaseName
.getText())) {
597 Log
.err("Base Name couldn't be empty");
600 if (isEmpty(this.jTextFieldGuid
.getText())) {
601 Log
.err("Guid couldn't be empty");
604 if (isEmpty(this.jTextFieldVersion
.getText())) {
605 Log
.err("Version couldn't be empty");
608 if (isEmpty(this.jTextAreaLicense
.getText())) {
609 Log
.err("License couldn't be empty");
612 if (isEmpty(this.jTextFieldCopyright
.getText())) {
613 Log
.err("Copyright couldn't be empty");
616 if (isEmpty(this.jTextAreaDescription
.getText())) {
617 Log
.err("Description couldn't be empty");
620 if (isEmpty(this.jTextFieldAbstract
.getText())) {
621 Log
.err("Abstract couldn't be empty");
626 // Check if all fields have correct data types
628 if (!DataValidation
.isBaseName(this.jTextFieldBaseName
.getText())) {
629 Log
.err("Incorrect data type for Base Name");
632 if (!DataValidation
.isGuid((this.jTextFieldGuid
).getText())) {
633 Log
.err("Incorrect data type for Guid");
636 if (!DataValidation
.isAbstract(this.jTextFieldAbstract
.getText())) {
637 Log
.err("Incorrect data type for Abstract");
640 if (!DataValidation
.isCopyright(this.jTextFieldCopyright
.getText())) {
641 Log
.err("Incorrect data type for Copyright");
648 Save all components of Fpd Header
649 if exists FpdHeader, set the value directly
650 if not exists FpdHeader, new an instance first
658 This method initializes Package type and Compontent type
661 private void initFrame() {
667 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
669 * Override componentResized to resize all components when frame's size is changed
671 public void componentResized(ComponentEvent arg0
) {
672 int intPreferredWidth
= 500;
674 resizeComponentWidth(this.jTextFieldBaseName
, this.getWidth(), intPreferredWidth
);
675 resizeComponentWidth(this.jTextFieldGuid
, this.getWidth(), intPreferredWidth
);
676 resizeComponentWidth(this.jTextFieldVersion
, this.getWidth(), intPreferredWidth
);
677 resizeComponentWidth(this.jTextField
, this.getWidth(), intPreferredWidth
);
678 resizeComponentWidth(this.jScrollPaneLicense
, this.getWidth(), intPreferredWidth
);
679 resizeComponentWidth(this.jTextFieldCopyright
, this.getWidth(), intPreferredWidth
);
680 resizeComponentWidth(this.jScrollPaneDescription
, this.getWidth(), intPreferredWidth
);
681 resizeComponentWidth(this.jTextFieldSpecification
, this.getWidth(), intPreferredWidth
);
682 resizeComponentWidth(this.jTextFieldAbstract
, this.getWidth(), intPreferredWidth
);
684 relocateComponentX(this.jButtonGenerateGuid
, this.getWidth(), jButtonGenerateGuid
.getWidth(), 25);