3 The file is used to create, update PCD of MSA/MBD 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.
15 package org
.tianocore
.frameworkwizard
.module
.ui
.dialog
;
17 import java
.awt
.event
.ActionEvent
;
18 import java
.awt
.event
.ItemEvent
;
19 import java
.awt
.event
.ItemListener
;
20 import java
.util
.Vector
;
22 import javax
.swing
.JButton
;
23 import javax
.swing
.JComboBox
;
24 import javax
.swing
.JLabel
;
25 import javax
.swing
.JPanel
;
26 import javax
.swing
.JScrollPane
;
27 import javax
.swing
.JTextField
;
29 import org
.tianocore
.frameworkwizard
.common
.DataType
;
30 import org
.tianocore
.frameworkwizard
.common
.DataValidation
;
31 import org
.tianocore
.frameworkwizard
.common
.Log
;
32 import org
.tianocore
.frameworkwizard
.common
.Tools
;
33 import org
.tianocore
.frameworkwizard
.common
.ui
.ArchCheckBox
;
34 import org
.tianocore
.frameworkwizard
.common
.ui
.IDialog
;
35 import org
.tianocore
.frameworkwizard
.common
.ui
.IFrame
;
36 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
37 import org
.tianocore
.frameworkwizard
.module
.Identifications
.PcdCoded
.PcdCodedIdentification
;
38 import org
.tianocore
.frameworkwizard
.module
.Identifications
.PcdCoded
.PcdVector
;
39 import org
.tianocore
.frameworkwizard
.workspace
.WorkspaceTools
;
42 The class is used to create, update PCD of MSA/MBD file
43 It extends IInternalFrame
46 public class PCDsDlg
extends IDialog
implements ItemListener
{
49 /// Define class Serial Version UID
51 private static final long serialVersionUID
= 2227717658188438696L;
54 //Define class members
56 private JPanel jContentPane
= null;
58 private JLabel jLabelItemType
= null;
60 private JLabel jLabelC_Name
= null;
62 private JComboBox jComboBoxItemType
= null;
64 private JComboBox jComboBoxCName
= null;
66 private JLabel jLabelDefaultValue
= null;
68 private JTextField jTextFieldDefaultValue
= null;
70 private StarLabel jStarLabel1
= null;
72 private StarLabel jStarLabel2
= null;
74 private StarLabel jStarLabel3
= null;
76 private JLabel jLabelHelpText
= null;
78 private JTextField jTextFieldHelpText
= null;
80 private JScrollPane jScrollPane
= null;
82 private JLabel jLabelTokenSpaceGuid
= null;
84 private JTextField jTextFieldTokenSpaceGuid
= null;
86 private JLabel jLabelFeatureFlag
= null;
88 private JTextField jTextFieldFeatureFlag
= null;
90 private JLabel jLabelArch
= null;
92 private ArchCheckBox jArchCheckBox
= null;
94 private JButton jButtonOk
= null;
96 private JButton jButtonCancel
= null;
101 private PcdCodedIdentification id
= null;
103 private WorkspaceTools wt
= new WorkspaceTools();
105 private PcdVector pcd
= wt
.getAllPcdDeclarationsFromWorkspace();
108 This method initializes jComboBoxItemType
110 @return javax.swing.JComboBox jComboBoxItemType
113 private JComboBox
getJComboBoxItemType() {
114 if (jComboBoxItemType
== null) {
115 jComboBoxItemType
= new JComboBox();
116 jComboBoxItemType
.setBounds(new java
.awt
.Rectangle(160, 35, 320, 20));
117 jComboBoxItemType
.setPreferredSize(new java
.awt
.Dimension(320, 20));
119 return jComboBoxItemType
;
123 This method initializes jTextFieldC_Name
125 @return javax.swing.JTextField jTextFieldC_Name
128 private JComboBox
getJComboBoxCName() {
129 if (jComboBoxCName
== null) {
130 jComboBoxCName
= new JComboBox();
131 jComboBoxCName
.setBounds(new java
.awt
.Rectangle(160, 10, 320, 20));
132 jComboBoxCName
.setPreferredSize(new java
.awt
.Dimension(320, 20));
133 jComboBoxCName
.addItemListener(this);
134 //jComboBoxCName.addActionListener(this);
136 return jComboBoxCName
;
140 This method initializes jTextFieldDefaultValue
142 @return javax.swing.JTextField jTextFieldDefaultValue
145 private JTextField
getJTextFieldDefaultValue() {
146 if (jTextFieldDefaultValue
== null) {
147 jTextFieldDefaultValue
= new JTextField();
148 jTextFieldDefaultValue
.setBounds(new java
.awt
.Rectangle(160, 60, 320, 20));
149 jTextFieldDefaultValue
.setPreferredSize(new java
.awt
.Dimension(320, 20));
151 return jTextFieldDefaultValue
;
155 * This method initializes jTextFieldHelpText
157 * @return javax.swing.JTextField
159 private JTextField
getJTextFieldHelpText() {
160 if (jTextFieldHelpText
== null) {
161 jTextFieldHelpText
= new JTextField();
162 jTextFieldHelpText
.setBounds(new java
.awt
.Rectangle(160, 85, 320, 20));
163 jTextFieldHelpText
.setPreferredSize(new java
.awt
.Dimension(320, 20));
165 return jTextFieldHelpText
;
169 This method initializes jScrollPane
171 @return javax.swing.JScrollPane
173 private JScrollPane
getJScrollPane() {
174 if (jScrollPane
== null) {
175 jScrollPane
= new JScrollPane();
176 jScrollPane
.setViewportView(getJContentPane());
182 * This method initializes jTextFieldTokenSpaceGuid
184 * @return javax.swing.JTextField
186 private JTextField
getJTextFieldTokenSpaceGuid() {
187 if (jTextFieldTokenSpaceGuid
== null) {
188 jTextFieldTokenSpaceGuid
= new JTextField();
189 jTextFieldTokenSpaceGuid
.setBounds(new java
.awt
.Rectangle(160, 60, 320, 20));
190 jTextFieldTokenSpaceGuid
.setPreferredSize(new java
.awt
.Dimension(320, 20));
191 jTextFieldTokenSpaceGuid
.setVisible(false);
193 return jTextFieldTokenSpaceGuid
;
197 * This method initializes jTextFieldFeatureFlag
199 * @return javax.swing.JTextField
201 private JTextField
getJTextFieldFeatureFlag() {
202 if (jTextFieldFeatureFlag
== null) {
203 jTextFieldFeatureFlag
= new JTextField();
204 jTextFieldFeatureFlag
.setBounds(new java
.awt
.Rectangle(160, 110, 320, 20));
205 jTextFieldFeatureFlag
.setPreferredSize(new java
.awt
.Dimension(320, 20));
207 return jTextFieldFeatureFlag
;
211 This method initializes jButtonOk
213 @return javax.swing.JButton
216 private JButton
getJButtonOk() {
217 if (jButtonOk
== null) {
218 jButtonOk
= new JButton();
219 jButtonOk
.setBounds(new java
.awt
.Rectangle(290, 165, 90, 20));
220 jButtonOk
.setText("Ok");
221 jButtonOk
.addActionListener(this);
227 This method initializes jButtonCancel
229 @return javax.swing.JButton
232 private JButton
getJButtonCancel() {
233 if (jButtonCancel
== null) {
234 jButtonCancel
= new JButton();
235 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390, 165, 90, 20));
236 jButtonCancel
.setText("Cancel");
237 jButtonCancel
.addActionListener(this);
239 return jButtonCancel
;
242 public static void main(String
[] args
) {
247 This method initializes this
250 private void init() {
251 this.setSize(500, 225);
252 this.setContentPane(getJScrollPane());
253 this.setTitle("Pcd Coded");
255 this.setViewMode(false);
260 This method initializes this
261 Fill values to all fields if these values are not empty
266 private void init(PcdCodedIdentification inPcdCodedId
) {
268 this.id
= inPcdCodedId
;
270 if (this.id
!= null) {
271 this.jComboBoxCName
.setSelectedItem(id
.getName());
272 this.jTextFieldTokenSpaceGuid
.setText(id
.getGuid());
273 this.jTextFieldDefaultValue
.setText(id
.getValue());
274 this.jTextFieldHelpText
.setText(id
.getHelp());
275 this.jComboBoxItemType
.setSelectedItem(id
.getType());
276 this.jTextFieldFeatureFlag
.setText(id
.getFeatureFlag());
277 this.jArchCheckBox
.setSelectedItems(id
.getSupArchList());
282 This is the override edit constructor
288 public PCDsDlg(PcdCodedIdentification inPcdCodedId
, IFrame iFrame
) {
294 Disable all components when the mode is view
296 @param isView true - The view mode; false - The non-view mode
299 public void setViewMode(boolean isView
) {
301 this.jTextFieldDefaultValue
.setEnabled(!isView
);
302 this.jComboBoxItemType
.setEnabled(!isView
);
307 This method initializes jContentPane
309 @return javax.swing.JPanel jContentPane
312 private JPanel
getJContentPane() {
313 if (jContentPane
== null) {
314 jArchCheckBox
= new ArchCheckBox();
315 jArchCheckBox
.setBounds(new java
.awt
.Rectangle(160, 135, 320, 20));
316 jArchCheckBox
.setPreferredSize(new java
.awt
.Dimension(320, 20));
317 jLabelArch
= new JLabel();
318 jLabelArch
.setBounds(new java
.awt
.Rectangle(15, 135, 140, 20));
319 jLabelArch
.setText("Sup Arch List");
320 jLabelFeatureFlag
= new JLabel();
321 jLabelFeatureFlag
.setBounds(new java
.awt
.Rectangle(15, 110, 140, 20));
322 jLabelFeatureFlag
.setText("Feature Flag");
323 jLabelTokenSpaceGuid
= new JLabel();
324 jLabelTokenSpaceGuid
.setBounds(new java
.awt
.Rectangle(15, 60, 140, 20));
325 jLabelTokenSpaceGuid
.setText("Token Space C_Name");
326 jLabelTokenSpaceGuid
.setVisible(false);
327 jLabelHelpText
= new JLabel();
328 jLabelHelpText
.setBounds(new java
.awt
.Rectangle(15, 85, 140, 20));
329 jLabelHelpText
.setText("Help Text");
330 jLabelC_Name
= new JLabel();
331 jLabelC_Name
.setText("C_Name");
332 jLabelC_Name
.setBounds(new java
.awt
.Rectangle(15, 10, 140, 20));
333 jLabelDefaultValue
= new JLabel();
334 jLabelDefaultValue
.setText("Default Value");
335 jLabelDefaultValue
.setBounds(new java
.awt
.Rectangle(15, 60, 140, 20));
336 jLabelItemType
= new JLabel();
337 jLabelItemType
.setText("Item Type");
338 jLabelItemType
.setBounds(new java
.awt
.Rectangle(15, 35, 140, 20));
340 jContentPane
= new JPanel();
341 jContentPane
.setLayout(null);
342 jContentPane
.setPreferredSize(new java
.awt
.Dimension(490, 190));
344 jContentPane
.add(jLabelItemType
, null);
345 jContentPane
.add(jLabelC_Name
, null);
346 jContentPane
.add(getJComboBoxCName(), null);
347 jContentPane
.add(jLabelDefaultValue
, null);
348 jContentPane
.add(getJTextFieldDefaultValue(), null);
349 jContentPane
.add(getJComboBoxItemType(), null);
350 jStarLabel1
= new StarLabel();
351 jStarLabel1
.setLocation(new java
.awt
.Point(0, 10));
352 jStarLabel2
= new StarLabel();
353 jStarLabel2
.setLocation(new java
.awt
.Point(0, 35));
354 jStarLabel3
= new StarLabel();
355 jStarLabel3
.setLocation(new java
.awt
.Point(0, 85));
356 jContentPane
.add(jStarLabel1
, null);
357 jContentPane
.add(jStarLabel2
, null);
358 jContentPane
.add(jStarLabel3
, null);
359 jContentPane
.add(jLabelHelpText
, null);
360 jContentPane
.add(getJTextFieldHelpText(), null);
362 jContentPane
.add(jLabelTokenSpaceGuid
, null);
363 jContentPane
.add(getJTextFieldTokenSpaceGuid(), null);
364 jContentPane
.add(jLabelFeatureFlag
, null);
365 jContentPane
.add(getJTextFieldFeatureFlag(), null);
366 jContentPane
.add(jLabelArch
, null);
367 jContentPane
.add(jArchCheckBox
, null);
368 jContentPane
.add(getJButtonOk(), null);
369 jContentPane
.add(getJButtonCancel(), null);
375 This method initializes Usage type, Item type and Datum type
378 private void initFrame() {
379 for (int index
= 0; index
< pcd
.size(); index
++) {
380 jComboBoxCName
.addItem(pcd
.getPcd(index
));
383 //Tools.generateComboBoxByVector(jComboBoxItemType, ed.getVPcdItemTypes());
387 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
389 * Override actionPerformed to listen all actions
392 public void actionPerformed(ActionEvent arg0
) {
393 if (arg0
.getSource() == jButtonOk
) {
395 getCurrentPcdCoded();
396 this.returnType
= DataType
.RETURN_TYPE_OK
;
397 this.setVisible(false);
401 if (arg0
.getSource() == jButtonCancel
) {
402 this.returnType
= DataType
.RETURN_TYPE_CANCEL
;
403 this.setVisible(false);
408 Data validation for all fields
410 @retval true - All datas are valid
411 @retval false - At least one data is invalid
414 public boolean checkAdd() {
416 // Check if all fields have correct data types
422 if (!isEmpty(this.jComboBoxCName
.getSelectedItem().toString())) {
423 if (!DataValidation
.isC_NameType(this.jComboBoxCName
.getSelectedItem().toString())) {
424 Log
.err("Incorrect data type for C_Name");
430 // Check TokenSpaceGuid
432 if (!isEmpty(this.jTextFieldTokenSpaceGuid
.getText())) {
433 if (!DataValidation
.isC_NameType(this.jTextFieldTokenSpaceGuid
.getText())) {
434 Log
.err("Incorrect data type for the selected pcd entry, please check in in spd file");
440 // Check DefaultValue
442 if (!isEmpty(this.jTextFieldDefaultValue
.getText())) {
443 if (!DataValidation
.isDefaultValueType(this.jTextFieldDefaultValue
.getText())) {
444 Log
.err("Incorrect data type for Default Value");
452 if (isEmpty(this.jTextFieldHelpText
.getText())) {
453 Log
.err("Help Text couldn't be empty");
460 if (!isEmpty(this.jTextFieldFeatureFlag
.getText())) {
461 if (!DataValidation
.isFeatureFlag(this.jTextFieldFeatureFlag
.getText())) {
462 Log
.err("Incorrect data type for Feature Flag");
470 private PcdCodedIdentification
getCurrentPcdCoded() {
471 String arg0
= this.jComboBoxCName
.getSelectedItem().toString();
472 String arg1
= this.jTextFieldTokenSpaceGuid
.getText();
474 String arg2
= this.jTextFieldFeatureFlag
.getText();
475 Vector
<String
> arg3
= this.jArchCheckBox
.getSelectedItemsVector();
477 String arg4
= this.jTextFieldDefaultValue
.getText();
478 String arg5
= this.jTextFieldHelpText
.getText();
479 String arg6
= this.jComboBoxItemType
.getSelectedItem().toString();
480 id
= new PcdCodedIdentification(arg0
, arg1
, arg2
, arg3
, arg4
, arg5
, arg6
);
484 public PcdCodedIdentification
getId() {
488 public void setId(PcdCodedIdentification id
) {
493 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)
495 * Reflesh the frame when selected item changed
498 public void itemStateChanged(ItemEvent arg0
) {
499 int index
= this.jComboBoxCName
.getSelectedIndex();
500 if (arg0
.getSource() == this.jComboBoxCName
&& arg0
.getStateChange() == ItemEvent
.SELECTED
) {
501 if (pcd
.getPcd(index
).getGuidCName() == null || isEmpty(pcd
.getPcd(index
).getGuidCName())
502 || pcd
.getPcd(index
).getType() == null || pcd
.getPcd(index
).getHelp() == null || isEmpty(pcd
.getPcd(index
).getHelp())) {
503 Log
.err("select pcd entry when editing msa", "The selected is defined incorrectly.\r\nPlease check it in spd file");
505 this.jTextFieldTokenSpaceGuid
.setText(pcd
.getPcd(index
).getGuidCName());
506 Tools
.generateComboBoxByVector(this.jComboBoxItemType
, pcd
.getPcd(index
).getType());
507 this.jTextFieldHelpText
.setText(pcd
.getPcd(index
).getHelp());
508 this.jTextFieldHelpText
.setSelectionStart(0);
509 this.jTextFieldHelpText
.setSelectionEnd(0);