3 The file is used to create, update Formset 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
.util
.Vector
;
20 import javax
.swing
.JButton
;
21 import javax
.swing
.JComboBox
;
22 import javax
.swing
.JLabel
;
23 import javax
.swing
.JPanel
;
24 import javax
.swing
.JScrollPane
;
25 import javax
.swing
.JTextField
;
26 import javax
.swing
.JTextArea
;
28 import org
.tianocore
.frameworkwizard
.common
.DataType
;
29 import org
.tianocore
.frameworkwizard
.common
.DataValidation
;
30 import org
.tianocore
.frameworkwizard
.common
.EnumerationData
;
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
.HiiPackages
.HiiPackagesIdentification
;
40 * The class is used to create, update Hii Packages of the MSA file
45 public class HiiPackagesDlg
extends IDialog
{
48 // / Define class Serial Version UID
50 private static final long serialVersionUID
= -6851574146786158116L;
53 // Define class members
55 private JPanel jContentPane
= null;
57 private JLabel jLabelName
= null;
59 private JTextField jTextFieldName
= null;
61 private JLabel jLabelUsage
= null;
63 private JComboBox jComboBoxUsage
= null;
65 private StarLabel jStarLabel1
= null;
67 private StarLabel jStarLabel2
= null;
69 private JLabel jLabelFeatureFlag
= null;
71 private JTextField jTextFieldFeatureFlag
= null;
73 private JLabel jLabelArch
= null;
75 private JScrollPane jScrollPane
= null;
77 private JLabel jLabelHelpText
= null;
79 private JTextArea jTextAreaHelpText
= null;
81 private JScrollPane jScrollPaneHelpText
= null;
83 private ArchCheckBox jArchCheckBox
= null;
85 private JButton jButtonOk
= null;
87 private JButton jButtonCancel
= null;
92 private HiiPackagesIdentification id
= null;
94 private EnumerationData ed
= new EnumerationData();
98 * This method initializes jTextFieldName
100 * @return javax.swing.JTextField jTextFieldName
103 private JTextField
getJTextFieldName() {
104 if (jTextFieldName
== null) {
105 jTextFieldName
= new JTextField();
106 jTextFieldName
.setBounds(new java
.awt
.Rectangle(160, 10, 320, 20));
107 jTextFieldName
.setPreferredSize(new java
.awt
.Dimension(320, 20));
108 jTextFieldName
.setToolTipText("Enter the C Name of the HII Package");
110 return jTextFieldName
;
115 * This method initializes jComboBoxUsage
117 * @return javax.swing.JComboBox jComboBoxUsage
120 private JComboBox
getJComboBoxUsage() {
121 if (jComboBoxUsage
== null) {
122 jComboBoxUsage
= new JComboBox();
123 jComboBoxUsage
.setBounds(new java
.awt
.Rectangle(160, 35, 320, 20));
124 jComboBoxUsage
.setPreferredSize(new java
.awt
.Dimension(320, 20));
126 .setToolTipText("<html><table><tr><td>ALWAYS_PRODUCED</td><td>Hii is always registered</td></tr><tr><td>SOMETIMES_PRODUCED</td><td>Some executions paths will require the Hii to be registered</td></tr></table></html>");
128 return jComboBoxUsage
;
133 * This method initializes jTextFieldFeatureFlag
135 * @return javax.swing.JTextField
137 private JTextField
getJTextFieldFeatureFlag() {
138 if (jTextFieldFeatureFlag
== null) {
139 jTextFieldFeatureFlag
= new JTextField();
140 jTextFieldFeatureFlag
.setBounds(new java
.awt
.Rectangle(160, 105, 320, 20));
141 jTextFieldFeatureFlag
.setPreferredSize(new java
.awt
.Dimension(320, 20));
142 jTextFieldFeatureFlag
143 .setToolTipText("Postfix expression that must evaluate to TRUE or FALSE");
145 return jTextFieldFeatureFlag
;
150 * This method initializes jScrollPane
152 * @return javax.swing.JScrollPane
155 private JScrollPane
getJScrollPane() {
156 if (jScrollPane
== null) {
157 jScrollPane
= new JScrollPane();
158 jScrollPane
.setViewportView(getJContentPane());
165 * This method initializes jTextAreaHelpText
167 * @return javax.swing.JTextArea jTextAreaHelpText
170 private JTextArea
getJTextAreaHelpText() {
171 if (jTextAreaHelpText
== null) {
172 jTextAreaHelpText
= new JTextArea();
173 jTextAreaHelpText
.setLineWrap(true);
174 jTextAreaHelpText
.setWrapStyleWord(true);
176 return jTextAreaHelpText
;
181 * This method initializes jScrollPaneHelpText
183 * @return javax.swing.JScrollPane
186 private JScrollPane
getJScrollPaneHelpText() {
187 if (jScrollPaneHelpText
== null) {
188 jScrollPaneHelpText
= new JScrollPane();
190 .setHorizontalScrollBarPolicy(javax
.swing
.JScrollPane
.HORIZONTAL_SCROLLBAR_NEVER
);
191 jScrollPaneHelpText
.setSize(new java
.awt
.Dimension(320, 40));
192 jScrollPaneHelpText
.setPreferredSize(new java
.awt
.Dimension(320, 40));
193 jScrollPaneHelpText
.setLocation(new java
.awt
.Point(160, 60));
194 jScrollPaneHelpText
.setViewportView(getJTextAreaHelpText());
196 return jScrollPaneHelpText
;
201 * This method initializes jButtonOk
203 * @return javax.swing.JButton
206 private JButton
getJButtonOk() {
207 if (jButtonOk
== null) {
208 jButtonOk
= new JButton();
209 jButtonOk
.setBounds(new java
.awt
.Rectangle(290, 157, 90, 20));
210 jButtonOk
.setText("Ok");
211 jButtonOk
.addActionListener(this);
218 * This method initializes jButtonCancel
220 * @return javax.swing.JButton
223 private JButton
getJButtonCancel() {
224 if (jButtonCancel
== null) {
225 jButtonCancel
= new JButton();
226 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390, 157, 90, 20));
227 jButtonCancel
.setText("Cancel");
228 jButtonCancel
.addActionListener(this);
230 return jButtonCancel
;
233 public static void main(String
[] args
) {
239 * This method initializes this
242 private void init() {
243 this.setSize(500, 230);
244 this.setContentPane(getJScrollPane());
245 this.setTitle("Hii Packages");
247 this.setViewMode(false);
252 * This method initializes this Fill values to all fields if these values are
255 * @param inHiiPackagesId
258 private void init(HiiPackagesIdentification inHiiPackagesId
) {
260 this.id
= inHiiPackagesId
;
262 if (this.id
!= null) {
263 this.jTextFieldName
.setText(id
.getName());
264 this.jComboBoxUsage
.setSelectedItem(id
.getUsage());
265 this.jTextAreaHelpText
.setText(id
.getHelp());
266 this.jTextFieldFeatureFlag
.setText(id
.getFeatureFlag());
267 this.jArchCheckBox
.setSelectedItems(id
.getSupArchList());
272 * This is the override edit constructor
274 * @param inHiiPackagesIdentification
278 public HiiPackagesDlg(HiiPackagesIdentification inHiiPackagesIdentification
,
281 init(inHiiPackagesIdentification
);
286 * Disable all components when the mode is view
289 * true - The view mode; false - The non-view mode
292 public void setViewMode(boolean isView
) {
294 this.jTextFieldName
.setEnabled(!isView
);
295 this.jComboBoxUsage
.setEnabled(!isView
);
301 * This method initializes jContentPane
303 * @return javax.swing.JPanel jContentPane
306 private JPanel
getJContentPane() {
307 if (jContentPane
== null) {
308 jStarLabel1
= new StarLabel();
309 jStarLabel1
.setLocation(new java
.awt
.Point(2, 10));
310 jLabelName
= new JLabel();
311 jLabelName
.setText("Hii Package C Name");
312 jLabelName
.setBounds(new java
.awt
.Rectangle(15, 10, 145, 20));
313 jStarLabel2
= new StarLabel();
314 jStarLabel2
.setLocation(new java
.awt
.Point(2, 35));
315 jLabelUsage
= new JLabel();
316 jLabelUsage
.setText("Usage");
317 jLabelUsage
.setBounds(new java
.awt
.Rectangle(15, 35, 145, 20));
318 jLabelHelpText
= new JLabel();
319 jLabelHelpText
.setBounds(new java
.awt
.Rectangle(14, 60, 145, 20));
320 jLabelHelpText
.setText("Help Text");
321 jLabelFeatureFlag
= new JLabel();
322 jLabelFeatureFlag
.setBounds(new java
.awt
.Rectangle(15, 105, 145, 20));
323 jLabelFeatureFlag
.setText("Feature Flag Expression");
324 jLabelArch
= new JLabel();
325 jLabelArch
.setBounds(new java
.awt
.Rectangle(15, 130, 145, 20));
326 jLabelArch
.setText("Supported Architectures");
327 jArchCheckBox
= new ArchCheckBox();
328 jArchCheckBox
.setBounds(new java
.awt
.Rectangle(160, 130, 320, 20));
329 jArchCheckBox
.setPreferredSize(new java
.awt
.Dimension(320, 20));
331 jContentPane
= new JPanel();
332 jContentPane
.setLayout(null);
333 jContentPane
.setPreferredSize(new java
.awt
.Dimension(485, 185));
335 jContentPane
.add(jStarLabel1
, null);
336 jContentPane
.add(jLabelName
, null);
337 jContentPane
.add(getJTextFieldName(), null);
339 jContentPane
.add(jStarLabel2
, null);
340 jContentPane
.add(jLabelUsage
, null);
341 jContentPane
.add(getJComboBoxUsage(), null);
343 jContentPane
.add(jLabelHelpText
, null);
344 jContentPane
.add(getJScrollPaneHelpText(), null);
346 jContentPane
.add(jLabelFeatureFlag
, null);
347 jContentPane
.add(getJTextFieldFeatureFlag(), null);
349 jContentPane
.add(jLabelArch
, null);
350 jContentPane
.add(jArchCheckBox
, null);
352 jContentPane
.add(getJButtonOk(), null);
353 jContentPane
.add(getJButtonCancel(), null);
360 * This method initializes Usage type
363 private void initFrame() {
364 Tools
.generateComboBoxByVector(jComboBoxUsage
, ed
.getVHiiPackageUsage());
370 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
372 * Override actionPerformed to listen all actions
375 public void actionPerformed(ActionEvent arg0
) {
376 if (arg0
.getSource() == jButtonOk
) {
378 getCurrentHiiPackages();
379 this.returnType
= DataType
.RETURN_TYPE_OK
;
380 this.setVisible(false);
384 if (arg0
.getSource() == jButtonCancel
) {
385 this.returnType
= DataType
.RETURN_TYPE_CANCEL
;
386 this.setVisible(false);
392 * Data validation for all fields
394 * @retval true - All datas are valid
395 * @retval false - At least one data is invalid
398 public boolean checkAdd() {
400 // Check if all fields have correct data types
404 // Check Hii Package Name
406 if (isEmpty(this.jTextFieldName
.getText())) {
407 Log
.wrn("Update Hii Packages",
408 "Hii Package Name Record must not be empty");
412 if (!isEmpty(this.jTextFieldName
.getText())) {
413 if (!DataValidation
.isC_NameType(this.jTextFieldName
.getText())) {
414 Log
.wrn("Update Hii Packages",
415 "Incorrect data type for Hii Package Name");
423 if (!isEmpty(this.jTextFieldFeatureFlag
.getText())) {
424 if (!DataValidation
.isFeatureFlag(this.jTextFieldFeatureFlag
.getText())) {
425 Log
.wrn("Update Hii Packages", "Incorrect data type for Feature Flag");
433 private HiiPackagesIdentification
getCurrentHiiPackages() {
434 String arg0
= this.jTextFieldName
.getText();
435 String arg1
= this.jComboBoxUsage
.getSelectedItem().toString();
437 String arg2
= this.jTextFieldFeatureFlag
.getText();
438 Vector
<String
> arg3
= this.jArchCheckBox
.getSelectedItemsVector();
439 String arg4
= this.jTextAreaHelpText
.getText();
441 id
= new HiiPackagesIdentification(arg0
, arg1
, arg2
, arg3
, arg4
);
445 public HiiPackagesIdentification
getId() {
449 public void setId(HiiPackagesIdentification id
) {