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
;
32 import org
.tianocore
.PackageSurfaceAreaDocument
;
33 import org
.tianocore
.frameworkwizard
.common
.DataValidation
;
34 import org
.tianocore
.frameworkwizard
.common
.Log
;
35 import org
.tianocore
.frameworkwizard
.common
.Tools
;
36 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
37 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
40 The class is used to create, update spdHeader of Spd file
41 It extends IInternalFrame
43 @since PackageEditor 1.0
46 public class SpdHeader
extends IInternalFrame
{
49 /// Define class Serial Version UID
51 private static final long serialVersionUID
= -8152099582923006900L;
54 //Define class members
58 private JPanel jContentPane
= null;
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 jStarLabel9
= null;
116 private SpdFileContents sfc
= null;
118 private JTextField jTextFieldCopyright
= null;
120 private JScrollPane topScrollPane
= null;
122 private JLabel jLabel
= null;
124 private JTextField jTextField
= 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 if (!DataValidation
.isUiNameType(jTextFieldBaseName
.getText())) {
140 JOptionPane
.showMessageDialog(frame
, "Package Name is NOT UiNameType.");
143 sfc
.setSpdHdrPkgName(jTextFieldBaseName
.getText());
147 return jTextFieldBaseName
;
151 This method initializes jTextFieldGuid
153 @return javax.swing.JTextField jTextFieldGuid
156 private JTextField
getJTextFieldGuid() {
157 if (jTextFieldGuid
== null) {
158 jTextFieldGuid
= new JTextField();
159 jTextFieldGuid
.setBounds(new java
.awt
.Rectangle(160, 35, 250, 20));
160 jTextFieldGuid
.setPreferredSize(new java
.awt
.Dimension(250,20));
161 jTextFieldGuid
.addFocusListener(new FocusAdapter(){
162 public void focusLost(FocusEvent e
){
163 if (!DataValidation
.isGuid(jTextFieldGuid
.getText())) {
164 JOptionPane
.showMessageDialog(frame
, "Guid is NOT GuidType.");
167 sfc
.setSpdHdrGuidValue(jTextFieldGuid
.getText());
171 return jTextFieldGuid
;
175 This method initializes jTextFieldVersion
177 @return javax.swing.JTextField jTextFieldVersion
180 private JTextField
getJTextFieldVersion() {
181 if (jTextFieldVersion
== null) {
182 jTextFieldVersion
= new JTextField();
183 jTextFieldVersion
.setBounds(new java
.awt
.Rectangle(160, 60, 320, 20));
184 jTextFieldVersion
.setPreferredSize(new java
.awt
.Dimension(320,20));
185 jTextFieldVersion
.addFocusListener(new FocusAdapter(){
186 public void focusLost(FocusEvent e
){
187 if (!DataValidation
.isVersion(jTextFieldVersion
.getText())) {
188 JOptionPane
.showMessageDialog(frame
, "Version is NOT version type.");
191 sfc
.setSpdHdrVer(jTextFieldVersion
.getText());
195 return jTextFieldVersion
;
199 This method initializes jButtonGenerateGuid
201 @return javax.swing.JButton jButtonGenerateGuid
204 private JButton
getJButtonGenerateGuid() {
205 if (jButtonGenerateGuid
== null) {
206 jButtonGenerateGuid
= new JButton();
207 jButtonGenerateGuid
.setBounds(new java
.awt
.Rectangle(415, 35, 65, 20));
208 jButtonGenerateGuid
.setText("GEN");
209 jButtonGenerateGuid
.addActionListener(this);
211 return jButtonGenerateGuid
;
215 This method initializes jTextAreaLicense
217 @return javax.swing.JTextArea jTextAreaLicense
220 private JTextArea
getJTextAreaLicense() {
221 if (jTextAreaLicense
== null) {
222 jTextAreaLicense
= new JTextArea();
223 jTextAreaLicense
.setText("");
224 jTextAreaLicense
.setPreferredSize(new java
.awt
.Dimension(317,77));
225 jTextAreaLicense
.setLineWrap(true);
226 jTextAreaLicense
.addFocusListener(new FocusAdapter(){
227 public void focusLost(FocusEvent e
){
228 if (jTextAreaLicense
.getText().length() == 0) {
229 JOptionPane
.showMessageDialog(frame
, "License contents could NOT be empty.");
232 sfc
.setSpdHdrLicense(jTextAreaLicense
.getText());
236 return jTextAreaLicense
;
240 This method initializes jTextAreaDescription
242 @return javax.swing.JTextArea jTextAreaDescription
245 private JTextArea
getJTextAreaDescription() {
246 if (jTextAreaDescription
== null) {
247 jTextAreaDescription
= new JTextArea();
248 jTextAreaDescription
.setLineWrap(true);
249 jTextAreaDescription
.setPreferredSize(new java
.awt
.Dimension(317,77));
250 jTextAreaDescription
.addFocusListener(new FocusAdapter(){
251 public void focusLost(FocusEvent e
){
252 if (jTextAreaDescription
.getText().length() == 0) {
253 JOptionPane
.showMessageDialog(frame
, "Description contents could NOT be empty.");
256 sfc
.setSpdHdrDescription(jTextAreaDescription
.getText());
260 return jTextAreaDescription
;
264 This method initializes jTextFieldSpecification
266 @return javax.swing.JTextField jTextFieldSpecification
269 private JTextField
getJTextFieldSpecification() {
270 if (jTextFieldSpecification
== null) {
271 jTextFieldSpecification
= new JTextField();
272 jTextFieldSpecification
.setBounds(new java
.awt
.Rectangle(160, 305, 320, 20));
273 jTextFieldSpecification
.setEditable(false);
274 jTextFieldSpecification
.setPreferredSize(new java
.awt
.Dimension(320,20));
275 jTextFieldSpecification
.addFocusListener(new FocusAdapter(){
276 public void focusLost(FocusEvent e
){
277 sfc
.setSpdHdrSpec(jTextFieldSpecification
.getText());
281 return jTextFieldSpecification
;
285 This method initializes jButtonOk
287 @return javax.swing.JButton jButtonOk
290 private JButton
getJButtonOk() {
291 if (jButtonOk
== null) {
292 jButtonOk
= new JButton();
293 jButtonOk
.setText("OK");
294 jButtonOk
.setBounds(new java
.awt
.Rectangle(290, 445, 90, 20));
295 jButtonOk
.setVisible(false);
296 jButtonOk
.addActionListener(this);
302 This method initializes jButtonCancel
304 @return javax.swing.JButton jButtonCancel
307 private JButton
getJButtonCancel() {
308 if (jButtonCancel
== null) {
309 jButtonCancel
= new JButton();
310 jButtonCancel
.setText("Cancel");
311 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390, 445, 90, 20));
312 jButtonCancel
.setVisible(false);
313 jButtonCancel
.addActionListener(this);
315 return jButtonCancel
;
319 This method initializes jScrollPaneLicense
321 @return javax.swing.JScrollPane jScrollPaneLicense
324 private JScrollPane
getJScrollPaneLicense() {
325 if (jScrollPaneLicense
== null) {
326 jScrollPaneLicense
= new JScrollPane();
327 jScrollPaneLicense
.setBounds(new java
.awt
.Rectangle(160, 85, 320, 80));
328 jScrollPaneLicense
.setHorizontalScrollBarPolicy(javax
.swing
.JScrollPane
.HORIZONTAL_SCROLLBAR_NEVER
);
329 jScrollPaneLicense
.setPreferredSize(new java
.awt
.Dimension(320,80));
330 jScrollPaneLicense
.setViewportView(getJTextAreaLicense());
332 return jScrollPaneLicense
;
336 This method initializes jScrollPaneDescription
338 @return javax.swing.JScrollPane jScrollPaneDescription
341 private JScrollPane
getJScrollPaneDescription() {
342 if (jScrollPaneDescription
== null) {
343 jScrollPaneDescription
= new JScrollPane();
344 jScrollPaneDescription
.setBounds(new java
.awt
.Rectangle(160, 220, 320, 80));
345 jScrollPaneDescription
.setHorizontalScrollBarPolicy(javax
.swing
.JScrollPane
.HORIZONTAL_SCROLLBAR_NEVER
);
346 jScrollPaneDescription
.setViewportView(getJTextAreaDescription());
348 return jScrollPaneDescription
;
352 This method initializes jTextFieldAbstract
354 @return javax.swing.JTextField jTextFieldAbstract
357 private JTextField
getJTextFieldAbstract() {
358 if (jTextFieldAbstract
== null) {
359 jTextFieldAbstract
= new JTextField();
360 jTextFieldAbstract
.setBounds(new java
.awt
.Rectangle(160,195,320,20));
361 jTextFieldAbstract
.setPreferredSize(new java
.awt
.Dimension(320, 20));
362 jTextFieldAbstract
.addFocusListener(new FocusAdapter(){
363 public void focusLost(FocusEvent e
){
364 if (!DataValidation
.isAbstract(jTextFieldAbstract
.getText())) {
365 JOptionPane
.showMessageDialog(frame
, "Abstract could NOT be empty.");
368 sfc
.setSpdHdrAbs(jTextFieldAbstract
.getText());
372 return jTextFieldAbstract
;
376 This method initializes jTextFieldCopyright
378 @return javax.swing.JTextField jTextFieldCopyright
381 private JTextField
getJTextFieldCopyright() {
382 if (jTextFieldCopyright
== null) {
383 jTextFieldCopyright
= new JTextField();
384 jTextFieldCopyright
.setBounds(new java
.awt
.Rectangle(160,330,320, 20));
385 jTextFieldCopyright
.setPreferredSize(new java
.awt
.Dimension(320,20));
386 jTextFieldCopyright
.addFocusListener(new FocusAdapter(){
387 public void focusLost(FocusEvent e
){
388 if (!DataValidation
.isCopyright(jTextFieldCopyright
.getText())) {
389 JOptionPane
.showMessageDialog(frame
, "Copyright contents could not be empty.");
392 sfc
.setSpdHdrCopyright(jTextFieldCopyright
.getText());
396 return jTextFieldCopyright
;
400 * This method initializes jTextField
402 * @return javax.swing.JTextField
404 private JTextField
getJTextField() {
405 if (jTextField
== null) {
406 jTextField
= new JTextField();
407 jTextField
.setBounds(new java
.awt
.Rectangle(160,170,320,20));
408 jTextField
.setPreferredSize(new java
.awt
.Dimension(320, 20));
409 jTextField
.addFocusListener(new FocusAdapter(){
410 public void focusLost(FocusEvent e
){
411 sfc
.setSpdHdrLicense(jTextAreaLicense
.getText());
412 sfc
.setSpdHdrUrl(jTextField
.getText());
419 public static void main(String
[] args
) {
420 new SpdHeader().setVisible(true);
424 This is the default constructor
430 this.setVisible(true);
434 This is the override edit constructor
436 @param inspdHeader The input data of spdHeaderDocument.spdHeader
439 public SpdHeader(PackageSurfaceAreaDocument
.PackageSurfaceArea inPsa
) {
441 sfc
= new SpdFileContents(inPsa
);
445 This method initializes this
448 private void init() {
449 this.setContentPane(getTopScrollPane());
450 this.setTitle("Package Surface Area Header");
455 This method initializes this
456 Fill values to all fields if these values are not empty
458 @param inspdHeader The input data of spdHeaderDocument.spdHeader
461 private void init(SpdFileContents sfc
) {
462 if (sfc
.getSpdHdrPkgName() != null) {
463 jTextFieldBaseName
.setText(sfc
.getSpdHdrPkgName());
465 if (sfc
.getSpdHdrGuidValue() != null) {
466 jTextFieldGuid
.setText(sfc
.getSpdHdrGuidValue());
468 if (sfc
.getSpdHdrVer() != null) {
469 jTextFieldVersion
.setText(sfc
.getSpdHdrVer());
471 if (sfc
.getSpdHdrLicense() != null) {
472 jTextAreaLicense
.setText(sfc
.getSpdHdrLicense());
474 if (sfc
.getSpdHdrUrl() != null) {
475 jTextField
.setText(sfc
.getSpdHdrUrl());
477 if (sfc
.getSpdHdrCopyright() != null) {
478 jTextFieldCopyright
.setText(sfc
.getSpdHdrCopyright());
480 if (sfc
.getSpdHdrAbs() != null) {
481 jTextFieldAbstract
.setText(sfc
.getSpdHdrAbs());
483 if (sfc
.getSpdHdrDescription() != null) {
484 jTextAreaDescription
.setText(sfc
.getSpdHdrDescription());
486 if (sfc
.getSpdHdrSpec() != null) {
487 jTextFieldSpecification
.setText(sfc
.getSpdHdrSpec());
493 This method initializes jContentPane
495 @return javax.swing.JPanel jContentPane
498 private JPanel
getJContentPane() {
499 if (jContentPane
== null) {
500 jLabel
= new JLabel();
501 jLabel
.setBounds(new java
.awt
.Rectangle(15,170,140,20));
502 jLabel
.setText("URL");
503 jContentPane
= new JPanel();
504 jContentPane
.setLayout(null);
505 jContentPane
.setLocation(new java
.awt
.Point(0, 0));
506 jContentPane
.setPreferredSize(new java
.awt
.Dimension(500, 524));
507 jLabelAbstract
= new JLabel();
508 jLabelAbstract
.setBounds(new java
.awt
.Rectangle(15, 220, 140, 20));
509 jLabelAbstract
.setText("Description");
510 jLabelSpecification
= new JLabel();
511 jLabelSpecification
.setText("Specification");
512 jLabelSpecification
.setBounds(new java
.awt
.Rectangle(15, 305, 140, 20));
513 jLabelDescription
= new JLabel();
514 jLabelDescription
.setText("Abstract");
515 jLabelDescription
.setBounds(new java
.awt
.Rectangle(15, 195, 140, 20));
516 jLabelCopyright
= new JLabel();
517 jLabelCopyright
.setText("Copyright");
518 jLabelCopyright
.setBounds(new java
.awt
.Rectangle(15, 330, 140, 20));
519 jLabelLicense
= new JLabel();
520 jLabelLicense
.setText("License");
521 jLabelLicense
.setBounds(new java
.awt
.Rectangle(15, 85, 140, 20));
522 jLabelVersion
= new JLabel();
523 jLabelVersion
.setText("Version");
524 jLabelVersion
.setBounds(new java
.awt
.Rectangle(15, 60, 140, 20));
525 jLabelGuid
= new JLabel();
526 jLabelGuid
.setPreferredSize(new java
.awt
.Dimension(25, 15));
527 jLabelGuid
.setBounds(new java
.awt
.Rectangle(15, 35, 140, 20));
528 jLabelGuid
.setText("Guid");
529 jLabelBaseName
= new JLabel();
530 jLabelBaseName
.setText("Package Name");
531 jLabelBaseName
.setBounds(new java
.awt
.Rectangle(15, 10, 140, 20));
532 jContentPane
.add(jLabelBaseName
, null);
533 jContentPane
.add(getJTextFieldBaseName(), null);
534 jContentPane
.add(jLabelGuid
, null);
535 jContentPane
.add(getJTextFieldGuid(), null);
536 jContentPane
.add(jLabelVersion
, null);
537 jContentPane
.add(getJTextFieldVersion(), null);
538 jContentPane
.add(getJButtonGenerateGuid(), null);
539 jContentPane
.add(jLabelLicense
, null);
540 jContentPane
.add(jLabelCopyright
, null);
541 jContentPane
.add(jLabelDescription
, null);
542 jContentPane
.add(jLabelSpecification
, null);
543 jContentPane
.add(getJTextFieldSpecification(), null);
544 jContentPane
.add(getJButtonOk(), null);
545 jContentPane
.add(getJButtonCancel(), null);
546 jContentPane
.add(getJScrollPaneLicense(), null);
547 jContentPane
.add(getJScrollPaneDescription(), null);
548 jContentPane
.add(jLabelAbstract
, null);
549 jContentPane
.add(getJTextFieldAbstract(), null);
550 jStarLabel1
= new StarLabel();
551 jStarLabel1
.setLocation(new java
.awt
.Point(0, 10));
552 jStarLabel2
= new StarLabel();
553 jStarLabel2
.setLocation(new java
.awt
.Point(0, 35));
554 jStarLabel3
= new StarLabel();
555 jStarLabel3
.setLocation(new java
.awt
.Point(0, 60));
556 jStarLabel4
= new StarLabel();
557 jStarLabel4
.setLocation(new java
.awt
.Point(0, 85));
558 jStarLabel5
= new StarLabel();
559 jStarLabel5
.setLocation(new java
.awt
.Point(0, 330));
560 jStarLabel6
= new StarLabel();
561 jStarLabel6
.setLocation(new java
.awt
.Point(0, 195));
562 jStarLabel7
= new StarLabel();
563 jStarLabel7
.setLocation(new java
.awt
.Point(0, 305));
564 jStarLabel7
.setEnabled(false);
565 jStarLabel9
= new StarLabel();
566 jStarLabel9
.setLocation(new java
.awt
.Point(0, 220));
567 jContentPane
.add(jStarLabel1
, null);
568 jContentPane
.add(jStarLabel2
, null);
569 jContentPane
.add(jStarLabel3
, null);
570 jContentPane
.add(jStarLabel4
, null);
571 jContentPane
.add(jStarLabel5
, null);
572 jContentPane
.add(jStarLabel6
, null);
573 jContentPane
.add(jStarLabel7
, null);
574 jContentPane
.add(jStarLabel9
, null);
575 jContentPane
.add(getJTextFieldCopyright(), null);
577 jContentPane
.add(jLabel
, null);
578 jContentPane
.add(getJTextField(), null);
584 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
586 * Override actionPerformed to listen all actions
589 public void actionPerformed(ActionEvent arg0
) {
590 if (arg0
.getSource() == jButtonOk
) {
592 this.setEdited(true);
594 if (arg0
.getSource() == jButtonCancel
) {
595 this.setEdited(false);
597 if (arg0
.getSource() == jButtonGenerateGuid
) {
598 //ToDo: invoke GuidValueEditor
599 jTextFieldGuid
.setText(Tools
.generateUuidString());
600 sfc
.setSpdHdrGuidValue(jTextFieldGuid
.getText());
605 Data validation for all fields
607 @retval true - All datas are valid
608 @retval false - At least one data is invalid
611 public boolean check() {
613 // Check if all required fields are not empty
615 if (isEmpty(this.jTextFieldBaseName
.getText())) {
616 Log
.err("Base Name couldn't be empty");
619 if (isEmpty(this.jTextFieldGuid
.getText())) {
620 Log
.err("Guid couldn't be empty");
623 if (isEmpty(this.jTextFieldVersion
.getText())) {
624 Log
.err("Version couldn't be empty");
627 if (isEmpty(this.jTextAreaLicense
.getText())) {
628 Log
.err("License couldn't be empty");
631 if (isEmpty(this.jTextFieldCopyright
.getText())) {
632 Log
.err("Copyright couldn't be empty");
635 if (isEmpty(this.jTextAreaDescription
.getText())) {
636 Log
.err("Description couldn't be empty");
639 if (isEmpty(this.jTextFieldAbstract
.getText())) {
640 Log
.err("Abstract couldn't be empty");
645 // Check if all fields have correct data types
647 if (!DataValidation
.isBaseName(this.jTextFieldBaseName
.getText())) {
648 Log
.err("Incorrect data type for Base Name");
651 if (!DataValidation
.isGuid((this.jTextFieldGuid
).getText())) {
652 Log
.err("Incorrect data type for Guid");
655 if (!DataValidation
.isAbstract(this.jTextFieldAbstract
.getText())) {
656 Log
.err("Incorrect data type for Abstract");
659 if (!DataValidation
.isCopyright(this.jTextFieldCopyright
.getText())) {
660 Log
.err("Incorrect data type for Copyright");
667 Save all components of Spd Header
668 if exists spdHeader, set the value directly
669 if not exists spdHeader, new an instance first
675 } catch (Exception e
) {
676 Log
.err("Save Package", e
.getMessage());
681 This method initializes Package type and Compontent type
684 private void initFrame() {
689 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
691 * Override componentResized to resize all components when frame's size is changed
693 public void componentResized(ComponentEvent arg0
) {
694 int intPreferredWidth
= 500;
695 int intCurrentWidth
= this.getJContentPane().getWidth();
697 resizeComponentWidth(this.jTextFieldBaseName
, intCurrentWidth
,intPreferredWidth
);
698 resizeComponentWidth(this.jTextFieldGuid
, intCurrentWidth
,intPreferredWidth
);
699 resizeComponentWidth(this.jTextFieldVersion
, intCurrentWidth
,intPreferredWidth
);
700 resizeComponentWidth(this.jTextField
, intCurrentWidth
,intPreferredWidth
);
701 resizeComponentWidth(this.jScrollPaneLicense
, intCurrentWidth
,intPreferredWidth
);
702 resizeComponentWidth(this.jTextFieldCopyright
, intCurrentWidth
,intPreferredWidth
);
703 resizeComponentWidth(this.jScrollPaneDescription
, intCurrentWidth
,intPreferredWidth
);
704 resizeComponentWidth(this.jTextFieldSpecification
, intCurrentWidth
,intPreferredWidth
);
705 resizeComponentWidth(this.jTextFieldAbstract
, intCurrentWidth
,intPreferredWidth
);
706 relocateComponentX(this.jButtonGenerateGuid
, intCurrentWidth
, jButtonGenerateGuid
.getWidth(),30);
709 private JScrollPane
getTopScrollPane() {
710 if (topScrollPane
== null){
711 topScrollPane
= new JScrollPane();
712 topScrollPane
.setViewportView(getJContentPane());
714 return topScrollPane
;