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
.Rectangle
;
20 import java
.awt
.event
.ActionEvent
;
21 import java
.awt
.event
.ComponentEvent
;
22 import java
.awt
.event
.FocusAdapter
;
23 import java
.awt
.event
.FocusEvent
;
25 import javax
.swing
.JButton
;
26 import javax
.swing
.JComboBox
;
27 import javax
.swing
.JLabel
;
28 import javax
.swing
.JPanel
;
29 import javax
.swing
.JScrollPane
;
30 import javax
.swing
.JTextArea
;
31 import javax
.swing
.JTextField
;
34 import org
.tianocore
.LicenseDocument
;
36 import org
.tianocore
.PlatformSurfaceAreaDocument
;
37 import org
.tianocore
.PlatformHeaderDocument
;
39 import org
.tianocore
.frameworkwizard
.common
.DataType
;
40 import org
.tianocore
.frameworkwizard
.common
.DataValidation
;
41 import org
.tianocore
.frameworkwizard
.common
.Log
;
42 import org
.tianocore
.frameworkwizard
.common
.Tools
;
43 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
44 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
47 The class is used to create, update FpdHeader of Fpd file
48 It extends IInternalFrame
50 @since PackageEditor 1.0
53 public class FpdHeader
extends IInternalFrame
{
56 /// Define class Serial Version UID
58 private static final long serialVersionUID
= -8152099582923006900L;
61 //Define class members
63 private JPanel jContentPane
= null; // @jve:decl-index=0:visual-constraint="10,53"
65 private JLabel jLabelBaseName
= null;
67 private JTextField jTextFieldBaseName
= null;
69 private JLabel jLabelGuid
= null;
71 private JTextField jTextFieldGuid
= null;
73 private JLabel jLabelVersion
= null;
75 private JTextField jTextFieldVersion
= null;
77 private JButton jButtonGenerateGuid
= null;
79 private JLabel jLabelLicense
= null;
81 private JTextArea jTextAreaLicense
= null;
83 private JLabel jLabelCopyright
= null;
85 private JLabel jLabelDescription
= null;
87 private JTextArea jTextAreaDescription
= null;
89 private JLabel jLabelSpecification
= null;
91 private JTextField jTextFieldSpecification
= null;
93 private JButton jButtonOk
= null;
95 private JButton jButtonCancel
= null;
97 private JScrollPane jScrollPaneLicense
= null;
99 private JScrollPane jScrollPaneDescription
= null;
101 private JLabel jLabelAbstract
= null;
103 private JTextField jTextFieldAbstract
= null;
105 private StarLabel jStarLabel1
= null;
107 private StarLabel jStarLabel2
= null;
109 private StarLabel jStarLabel3
= null;
111 private StarLabel jStarLabel4
= null;
113 private StarLabel jStarLabel5
= null;
115 private StarLabel jStarLabel6
= null;
117 private StarLabel jStarLabel7
= null;
119 private StarLabel jStarLabel8
= null;
121 private StarLabel jStarLabel9
= null;
123 private JTextField jTextFieldCopyright
= null;
125 private JLabel jLabel
= null;
127 private JTextField jTextField
= null;
129 private FpdFileContents ffc
= null;
132 This method initializes jTextFieldBaseName
134 @return javax.swing.JTextField jTextFieldBaseName
137 private JTextField
getJTextFieldBaseName() {
138 if (jTextFieldBaseName
== null) {
139 jTextFieldBaseName
= new JTextField();
140 jTextFieldBaseName
.setBounds(new java
.awt
.Rectangle(160, 10, 320, 20));
141 jTextFieldBaseName
.setPreferredSize(new java
.awt
.Dimension(320,20));
142 jTextFieldBaseName
.addFocusListener(new FocusAdapter(){
143 public void focusLost(FocusEvent e
) {
144 ffc
.setFpdHdrPlatformName(jTextFieldBaseName
.getText());
148 return jTextFieldBaseName
;
152 This method initializes jTextFieldGuid
154 @return javax.swing.JTextField jTextFieldGuid
157 private JTextField
getJTextFieldGuid() {
158 if (jTextFieldGuid
== null) {
159 jTextFieldGuid
= new JTextField();
160 jTextFieldGuid
.setBounds(new java
.awt
.Rectangle(160, 35, 250, 20));
161 jTextFieldGuid
.setPreferredSize(new java
.awt
.Dimension(250,20));
162 jTextFieldGuid
.addFocusListener(new FocusAdapter(){
163 public void focusLost(FocusEvent e
) {
164 ffc
.setFpdHdrGuidValue(jTextFieldGuid
.getText());
168 return jTextFieldGuid
;
172 This method initializes jTextFieldVersion
174 @return javax.swing.JTextField jTextFieldVersion
177 private JTextField
getJTextFieldVersion() {
178 if (jTextFieldVersion
== null) {
179 jTextFieldVersion
= new JTextField();
180 jTextFieldVersion
.setBounds(new java
.awt
.Rectangle(160, 60, 320, 20));
181 jTextFieldVersion
.setPreferredSize(new java
.awt
.Dimension(320,20));
182 jTextFieldVersion
.addFocusListener(new FocusAdapter(){
183 public void focusLost(FocusEvent e
) {
184 ffc
.setFpdHdrVer(jTextFieldVersion
.getText());
188 return jTextFieldVersion
;
192 This method initializes jButtonGenerateGuid
194 @return javax.swing.JButton jButtonGenerateGuid
197 private JButton
getJButtonGenerateGuid() {
198 if (jButtonGenerateGuid
== null) {
199 jButtonGenerateGuid
= new JButton();
200 jButtonGenerateGuid
.setBounds(new java
.awt
.Rectangle(415, 35, 65, 20));
201 jButtonGenerateGuid
.setText("GEN");
202 jButtonGenerateGuid
.addActionListener(this);
204 return jButtonGenerateGuid
;
208 This method initializes jTextAreaLicense
210 @return javax.swing.JTextArea jTextAreaLicense
213 private JTextArea
getJTextAreaLicense() {
214 if (jTextAreaLicense
== null) {
215 jTextAreaLicense
= new JTextArea();
216 jTextAreaLicense
.setText("");
217 jTextAreaLicense
.setPreferredSize(new java
.awt
.Dimension(317,77));
218 jTextAreaLicense
.setLineWrap(true);
219 jTextAreaLicense
.addFocusListener(new FocusAdapter(){
220 public void focusLost(FocusEvent e
) {
221 ffc
.setFpdHdrLicense(jTextAreaLicense
.getText());
225 return jTextAreaLicense
;
229 This method initializes jTextAreaDescription
231 @return javax.swing.JTextArea jTextAreaDescription
234 private JTextArea
getJTextAreaDescription() {
235 if (jTextAreaDescription
== null) {
236 jTextAreaDescription
= new JTextArea();
237 jTextAreaDescription
.setLineWrap(true);
238 jTextAreaDescription
.setPreferredSize(new java
.awt
.Dimension(317,77));
239 jTextAreaDescription
.addFocusListener(new FocusAdapter(){
240 public void focusLost(FocusEvent e
) {
241 ffc
.setFpdHdrDescription(jTextAreaDescription
.getText());
245 return jTextAreaDescription
;
249 This method initializes jTextFieldSpecification
251 @return javax.swing.JTextField jTextFieldSpecification
254 private JTextField
getJTextFieldSpecification() {
255 if (jTextFieldSpecification
== null) {
256 jTextFieldSpecification
= new JTextField();
257 jTextFieldSpecification
.setBounds(new java
.awt
.Rectangle(160, 305, 320, 20));
258 jTextFieldSpecification
.setEditable(false);
259 jTextFieldSpecification
.setPreferredSize(new java
.awt
.Dimension(320,20));
260 jTextFieldSpecification
.addFocusListener(new FocusAdapter(){
261 public void focusLost(FocusEvent e
) {
262 ffc
.setFpdHdrSpec(jTextFieldSpecification
.getText());
266 return jTextFieldSpecification
;
270 This method initializes jButtonOk
272 @return javax.swing.JButton jButtonOk
275 private JButton
getJButtonOk() {
276 if (jButtonOk
== null) {
277 jButtonOk
= new JButton();
278 jButtonOk
.setText("OK");
279 jButtonOk
.setBounds(new java
.awt
.Rectangle(290,351,90,20));
280 jButtonOk
.setVisible(false);
281 jButtonOk
.addActionListener(this);
287 This method initializes jButtonCancel
289 @return javax.swing.JButton jButtonCancel
292 private JButton
getJButtonCancel() {
293 if (jButtonCancel
== null) {
294 jButtonCancel
= new JButton();
295 jButtonCancel
.setText("Cancel");
296 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390,351,90,20));
297 jButtonCancel
.setVisible(false);
298 jButtonCancel
.addActionListener(this);
300 return jButtonCancel
;
304 This method initializes jScrollPaneLicense
306 @return javax.swing.JScrollPane jScrollPaneLicense
309 private JScrollPane
getJScrollPaneLicense() {
310 if (jScrollPaneLicense
== null) {
311 jScrollPaneLicense
= new JScrollPane();
312 jScrollPaneLicense
.setBounds(new java
.awt
.Rectangle(160, 85, 320, 80));
313 jScrollPaneLicense
.setHorizontalScrollBarPolicy(javax
.swing
.JScrollPane
.HORIZONTAL_SCROLLBAR_NEVER
);
314 jScrollPaneLicense
.setPreferredSize(new java
.awt
.Dimension(320,80));
315 jScrollPaneLicense
.setViewportView(getJTextAreaLicense());
317 return jScrollPaneLicense
;
321 This method initializes jScrollPaneDescription
323 @return javax.swing.JScrollPane jScrollPaneDescription
326 private JScrollPane
getJScrollPaneDescription() {
327 if (jScrollPaneDescription
== null) {
328 jScrollPaneDescription
= new JScrollPane();
329 jScrollPaneDescription
.setBounds(new java
.awt
.Rectangle(160, 220, 320, 80));
330 jScrollPaneDescription
.setHorizontalScrollBarPolicy(javax
.swing
.JScrollPane
.HORIZONTAL_SCROLLBAR_NEVER
);
331 jScrollPaneDescription
.setViewportView(getJTextAreaDescription());
333 return jScrollPaneDescription
;
337 This method initializes jTextFieldAbstract
339 @return javax.swing.JTextField jTextFieldAbstract
342 private JTextField
getJTextFieldAbstract() {
343 if (jTextFieldAbstract
== null) {
344 jTextFieldAbstract
= new JTextField();
345 jTextFieldAbstract
.setBounds(new java
.awt
.Rectangle(160,195,320,20));
346 jTextFieldAbstract
.setPreferredSize(new java
.awt
.Dimension(320, 20));
347 jTextFieldAbstract
.addFocusListener(new FocusAdapter(){
348 public void focusLost(FocusEvent e
) {
349 ffc
.setFpdHdrAbs(jTextFieldAbstract
.getText());
353 return jTextFieldAbstract
;
357 This method initializes jTextFieldCopyright
359 @return javax.swing.JTextField jTextFieldCopyright
362 private JTextField
getJTextFieldCopyright() {
363 if (jTextFieldCopyright
== null) {
364 jTextFieldCopyright
= new JTextField();
365 jTextFieldCopyright
.setBounds(new java
.awt
.Rectangle(160,330,320, 20));
366 jTextFieldCopyright
.setPreferredSize(new java
.awt
.Dimension(320,20));
367 jTextFieldCopyright
.addFocusListener(new FocusAdapter(){
368 public void focusLost(FocusEvent e
) {
369 ffc
.setFpdHdrCopyright(jTextFieldCopyright
.getText());
373 return jTextFieldCopyright
;
377 * This method initializes jTextField
379 * @return javax.swing.JTextField
381 private JTextField
getJTextField() {
382 if (jTextField
== null) {
383 jTextField
= new JTextField();
384 jTextField
.setBounds(new java
.awt
.Rectangle(160,170,320,20));
385 jTextField
.setPreferredSize(new Dimension(320, 20));
386 jTextField
.addFocusListener(new FocusAdapter(){
387 public void focusLost(FocusEvent e
){
388 ffc
.setFpdHdrLicense(jTextAreaLicense
.getText());
389 ffc
.setFpdHdrUrl(jTextField
.getText());
396 public static void main(String
[] args
) {
397 new FpdHeader().setVisible(true);
401 This is the default constructor
407 this.setVisible(true);
411 This is the override edit constructor
413 @param inFpdHeader The input data of FpdHeaderDocument.FpdHeader
416 public FpdHeader(PlatformSurfaceAreaDocument
.PlatformSurfaceArea inFpd
) {
418 ffc
= new FpdFileContents(inFpd
);
424 This method initializes this
427 private void init() {
428 //this.setSize(500, 515);
429 this.setContentPane(getJContentPane());
430 this.setTitle("Package Surface Area Header");
436 This method initializes this
437 Fill values to all fields if these values are not empty
439 @param inFpdHeader The input data of FpdHeaderDocument.FpdHeader
442 private void init(FpdFileContents ffc
) {
444 if (ffc
.getFpdHdrPlatformName() != null) {
445 jTextFieldBaseName
.setText(ffc
.getFpdHdrPlatformName());
447 if (ffc
.getFpdHdrGuidValue() != null) {
448 jTextFieldGuid
.setText(ffc
.getFpdHdrGuidValue());
450 if (ffc
.getFpdHdrVer() != null) {
451 jTextFieldVersion
.setText(ffc
.getFpdHdrVer());
453 if (ffc
.getFpdHdrLicense() != null) {
454 jTextAreaLicense
.setText(ffc
.getFpdHdrLicense());
456 if (ffc
.getFpdHdrUrl() != null) {
457 jTextField
.setText(ffc
.getFpdHdrUrl());
459 if (ffc
.getFpdHdrCopyright() != null) {
460 jTextFieldCopyright
.setText(ffc
.getFpdHdrCopyright());
462 if (ffc
.getFpdHdrDescription() != null) {
463 jTextAreaDescription
.setText(ffc
.getFpdHdrDescription());
465 if (ffc
.getFpdHdrSpec() != null) {
466 jTextFieldSpecification
.setText(ffc
.getFpdHdrSpec());
472 This method initializes jContentPane
474 @return javax.swing.JPanel jContentPane
477 private JPanel
getJContentPane() {
478 if (jContentPane
== null) {
479 jLabel
= new JLabel();
480 jLabel
.setBounds(new java
.awt
.Rectangle(15,170,140,20));
481 jLabel
.setText("URL");
482 jContentPane
= new JPanel();
483 jContentPane
.setLayout(null);
484 jContentPane
.setLocation(new java
.awt
.Point(0, 0));
485 jContentPane
.setSize(new java
.awt
.Dimension(500,423));
486 jLabelAbstract
= new JLabel();
487 jLabelAbstract
.setBounds(new java
.awt
.Rectangle(15, 195, 140, 20));
488 jLabelAbstract
.setText("Abstract");
489 jLabelSpecification
= new JLabel();
490 jLabelSpecification
.setText("Specification");
491 jLabelSpecification
.setBounds(new java
.awt
.Rectangle(15, 305, 140, 20));
492 jLabelDescription
= new JLabel();
493 jLabelDescription
.setText("Description");
494 jLabelDescription
.setBounds(new java
.awt
.Rectangle(15, 220, 140, 20));
495 jLabelCopyright
= new JLabel();
496 jLabelCopyright
.setText("Copyright");
497 jLabelCopyright
.setBounds(new java
.awt
.Rectangle(15, 330, 140, 20));
498 jLabelLicense
= new JLabel();
499 jLabelLicense
.setText("License");
500 jLabelLicense
.setBounds(new java
.awt
.Rectangle(15, 85, 140, 20));
501 jLabelVersion
= new JLabel();
502 jLabelVersion
.setText("Version");
503 jLabelVersion
.setBounds(new java
.awt
.Rectangle(15, 60, 140, 20));
504 jLabelGuid
= new JLabel();
505 jLabelGuid
.setPreferredSize(new java
.awt
.Dimension(25, 15));
506 jLabelGuid
.setBounds(new java
.awt
.Rectangle(15, 35, 140, 20));
507 jLabelGuid
.setText("Guid");
508 jLabelBaseName
= new JLabel();
509 jLabelBaseName
.setText("Platform Name");
510 jLabelBaseName
.setBounds(new java
.awt
.Rectangle(15, 10, 140, 20));
511 jContentPane
.add(jLabelBaseName
, null);
512 jContentPane
.add(getJTextFieldBaseName(), null);
513 jContentPane
.add(jLabelGuid
, null);
514 jContentPane
.add(getJTextFieldGuid(), null);
515 jContentPane
.add(jLabelVersion
, null);
516 jContentPane
.add(getJTextFieldVersion(), null);
517 jContentPane
.add(getJButtonGenerateGuid(), null);
518 jContentPane
.add(jLabelLicense
, null);
519 jContentPane
.add(jLabelCopyright
, null);
520 jContentPane
.add(jLabelDescription
, null);
521 jContentPane
.add(jLabelSpecification
, null);
522 jContentPane
.add(getJTextFieldSpecification(), null);
523 jContentPane
.add(getJButtonOk(), null);
524 jContentPane
.add(getJButtonCancel(), null);
525 jContentPane
.add(getJScrollPaneLicense(), null);
526 jContentPane
.add(getJScrollPaneDescription(), null);
527 jContentPane
.add(jLabelAbstract
, null);
528 jContentPane
.add(getJTextFieldAbstract(), null);
529 jStarLabel1
= new StarLabel();
530 jStarLabel1
.setLocation(new java
.awt
.Point(0, 10));
531 jStarLabel2
= new StarLabel();
532 jStarLabel2
.setLocation(new java
.awt
.Point(0, 35));
533 jStarLabel3
= new StarLabel();
534 jStarLabel3
.setLocation(new java
.awt
.Point(0, 60));
535 jStarLabel4
= new StarLabel();
536 jStarLabel4
.setLocation(new java
.awt
.Point(0, 85));
537 jStarLabel5
= new StarLabel();
538 jStarLabel5
.setLocation(new java
.awt
.Point(0, 330));
539 jStarLabel6
= new StarLabel();
540 jStarLabel6
.setLocation(new java
.awt
.Point(0, 195));
541 jStarLabel7
= new StarLabel();
542 jStarLabel7
.setLocation(new java
.awt
.Point(0, 305));
543 jStarLabel7
.setEnabled(false);
544 jStarLabel8
= new StarLabel();
545 jStarLabel8
.setLocation(new java
.awt
.Point(0, 220));
546 jStarLabel9
= new StarLabel();
547 jStarLabel9
.setLocation(new java
.awt
.Point(0, 280));
548 jStarLabel9
.setVisible(false);
549 jContentPane
.add(jStarLabel1
, null);
550 jContentPane
.add(jStarLabel2
, null);
551 jContentPane
.add(jStarLabel3
, null);
552 jContentPane
.add(jStarLabel4
, null);
553 jContentPane
.add(jStarLabel5
, null);
554 jContentPane
.add(jStarLabel6
, null);
555 jContentPane
.add(jStarLabel7
, null);
556 jContentPane
.add(jStarLabel8
, null);
557 jContentPane
.add(jStarLabel9
, null);
558 jContentPane
.add(getJTextFieldCopyright(), null);
560 jContentPane
.add(jLabel
, null);
561 jContentPane
.add(getJTextField(), null);
567 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
569 * Override actionPerformed to listen all actions
572 public void actionPerformed(ActionEvent arg0
) {
573 if (arg0
.getSource() == jButtonOk
) {
575 this.setEdited(true);
577 if (arg0
.getSource() == jButtonCancel
) {
578 this.setEdited(false);
580 if (arg0
.getSource() == jButtonGenerateGuid
) {
581 //ToDo: invoke GuidValueEditor
582 jTextFieldGuid
.setText(Tools
.generateUuidString());
583 ffc
.setFpdHdrGuidValue(jTextFieldGuid
.getText());
588 Data validation for all fields
590 @retval true - All datas are valid
591 @retval false - At least one data is invalid
594 public boolean check() {
596 // Check if all required fields are not empty
598 if (isEmpty(this.jTextFieldBaseName
.getText())) {
599 Log
.err("Base Name couldn't be empty");
602 if (isEmpty(this.jTextFieldGuid
.getText())) {
603 Log
.err("Guid couldn't be empty");
606 if (isEmpty(this.jTextFieldVersion
.getText())) {
607 Log
.err("Version couldn't be empty");
610 if (isEmpty(this.jTextAreaLicense
.getText())) {
611 Log
.err("License couldn't be empty");
614 if (isEmpty(this.jTextFieldCopyright
.getText())) {
615 Log
.err("Copyright couldn't be empty");
618 if (isEmpty(this.jTextAreaDescription
.getText())) {
619 Log
.err("Description couldn't be empty");
622 if (isEmpty(this.jTextFieldAbstract
.getText())) {
623 Log
.err("Abstract couldn't be empty");
628 // Check if all fields have correct data types
630 if (!DataValidation
.isBaseName(this.jTextFieldBaseName
.getText())) {
631 Log
.err("Incorrect data type for Base Name");
634 if (!DataValidation
.isGuid((this.jTextFieldGuid
).getText())) {
635 Log
.err("Incorrect data type for Guid");
638 if (!DataValidation
.isAbstract(this.jTextFieldAbstract
.getText())) {
639 Log
.err("Incorrect data type for Abstract");
642 if (!DataValidation
.isCopyright(this.jTextFieldCopyright
.getText())) {
643 Log
.err("Incorrect data type for Copyright");
650 Save all components of Fpd Header
651 if exists FpdHeader, set the value directly
652 if not exists FpdHeader, new an instance first
660 This method initializes Package type and Compontent type
663 private void initFrame() {
669 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
671 * Override componentResized to resize all components when frame's size is changed
673 public void componentResized(ComponentEvent arg0
) {
674 int intPreferredWidth
= 500;
676 resizeComponentWidth(this.jTextFieldBaseName
, this.getWidth(), intPreferredWidth
);
677 resizeComponentWidth(this.jTextFieldGuid
, this.getWidth(), intPreferredWidth
);
678 resizeComponentWidth(this.jTextFieldVersion
, this.getWidth(), intPreferredWidth
);
679 resizeComponentWidth(this.jScrollPaneLicense
, this.getWidth(), intPreferredWidth
);
680 resizeComponentWidth(this.jTextFieldCopyright
, this.getWidth(), intPreferredWidth
);
681 resizeComponentWidth(this.jScrollPaneDescription
, this.getWidth(), intPreferredWidth
);
682 resizeComponentWidth(this.jTextFieldSpecification
, this.getWidth(), intPreferredWidth
);
683 resizeComponentWidth(this.jTextFieldAbstract
, this.getWidth(), intPreferredWidth
);
685 relocateComponentX(this.jButtonGenerateGuid
, this.getWidth(), jButtonGenerateGuid
.getWidth(), 25);