3 The file is used to create, update Hii Packages section of the MSA 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(168, 12, 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(168, 37, 320, 20));
124 jComboBoxUsage
.setPreferredSize(new java
.awt
.Dimension(320, 20));
126 .setToolTipText("<html><table>"
127 + "<tr><td>ALWAYS_PRODUCED</td><td>Hii is always registered</td></tr>"
128 + "<tr><td>SOMETIMES_PRODUCED</td><td>Some executions paths will require the Hii to be registered</td></tr>"
129 + "</table></html>");
131 return jComboBoxUsage
;
136 * This method initializes jTextFieldFeatureFlag
138 * @return javax.swing.JTextField
140 private JTextField
getJTextFieldFeatureFlag() {
141 if (jTextFieldFeatureFlag
== null) {
142 jTextFieldFeatureFlag
= new JTextField();
143 jTextFieldFeatureFlag
.setBounds(new java
.awt
.Rectangle(168, 132, 320, 20));
144 jTextFieldFeatureFlag
.setPreferredSize(new java
.awt
.Dimension(320, 20));
145 jTextFieldFeatureFlag
.setToolTipText("Postfix expression that must evaluate to TRUE or FALSE");
146 jTextFieldFeatureFlag
.setEnabled(false);
148 return jTextFieldFeatureFlag
;
153 * This method initializes jScrollPane
155 * @return javax.swing.JScrollPane
158 private JScrollPane
getJScrollPane() {
159 if (jScrollPane
== null) {
160 jScrollPane
= new JScrollPane();
161 jScrollPane
.setViewportView(getJContentPane());
168 * This method initializes jTextAreaHelpText
170 * @return javax.swing.JTextArea jTextAreaHelpText
173 private JTextArea
getJTextAreaHelpText() {
174 if (jTextAreaHelpText
== null) {
175 jTextAreaHelpText
= new JTextArea();
176 jTextAreaHelpText
.setLineWrap(true);
177 jTextAreaHelpText
.setWrapStyleWord(true);
179 return jTextAreaHelpText
;
184 * This method initializes jScrollPaneHelpText
186 * @return javax.swing.JScrollPane
189 private JScrollPane
getJScrollPaneHelpText() {
190 if (jScrollPaneHelpText
== null) {
191 jScrollPaneHelpText
= new JScrollPane();
192 jScrollPaneHelpText
.setHorizontalScrollBarPolicy(javax
.swing
.JScrollPane
.HORIZONTAL_SCROLLBAR_NEVER
);
193 jScrollPaneHelpText
.setSize(new java
.awt
.Dimension(320, 40));
194 jScrollPaneHelpText
.setPreferredSize(new java
.awt
.Dimension(320, 40));
195 jScrollPaneHelpText
.setLocation(new java
.awt
.Point(168, 62));
196 jScrollPaneHelpText
.setViewportView(getJTextAreaHelpText());
198 return jScrollPaneHelpText
;
203 * This method initializes jButtonOk
205 * @return javax.swing.JButton
208 private JButton
getJButtonOk() {
209 if (jButtonOk
== null) {
210 jButtonOk
= new JButton();
211 jButtonOk
.setBounds(new java
.awt
.Rectangle(290, 162, 90, 20));
212 jButtonOk
.setText("Ok");
213 jButtonOk
.addActionListener(this);
220 * This method initializes jButtonCancel
222 * @return javax.swing.JButton
225 private JButton
getJButtonCancel() {
226 if (jButtonCancel
== null) {
227 jButtonCancel
= new JButton();
228 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390, 162, 90, 20));
229 jButtonCancel
.setText("Cancel");
230 jButtonCancel
.addActionListener(this);
232 return jButtonCancel
;
235 public static void main(String
[] args
) {
241 * This method initializes this
244 private void init() {
245 this.setSize(505, 235);
246 this.setContentPane(getJScrollPane());
247 this.setTitle("Hii Packages");
249 this.setViewMode(false);
254 * This method initializes this Fill values to all fields if these values are
257 * @param inHiiPackagesId
260 private void init(HiiPackagesIdentification inHiiPackagesId
) {
262 this.id
= inHiiPackagesId
;
264 if (this.id
!= null) {
265 this.jTextFieldName
.setText(id
.getName());
266 this.jComboBoxUsage
.setSelectedItem(id
.getUsage());
267 this.jTextAreaHelpText
.setText(id
.getHelp());
268 this.jTextFieldFeatureFlag
.setText(id
.getFeatureFlag());
269 this.jArchCheckBox
.setSelectedItems(id
.getSupArchList());
274 * This is the override edit constructor
276 * @param inHiiPackagesIdentification
280 public HiiPackagesDlg(HiiPackagesIdentification inHiiPackagesIdentification
, IFrame iFrame
) {
282 init(inHiiPackagesIdentification
);
287 * Disable all components when the mode is view
290 * true - The view mode; false - The non-view mode
293 public void setViewMode(boolean isView
) {
295 this.jTextFieldName
.setEnabled(!isView
);
296 this.jComboBoxUsage
.setEnabled(!isView
);
302 * This method initializes jContentPane
304 * @return javax.swing.JPanel jContentPane
307 private JPanel
getJContentPane() {
308 if (jContentPane
== null) {
309 jStarLabel1
= new StarLabel();
310 jStarLabel1
.setLocation(new java
.awt
.Point(2, 12));
311 jLabelName
= new JLabel();
312 jLabelName
.setText("Hii Package C Name");
313 jLabelName
.setBounds(new java
.awt
.Rectangle(12, 12, 155, 20));
314 jStarLabel2
= new StarLabel();
315 jStarLabel2
.setLocation(new java
.awt
.Point(2, 37));
316 jLabelUsage
= new JLabel();
317 jLabelUsage
.setText("Usage");
318 jLabelUsage
.setBounds(new java
.awt
.Rectangle(12, 37, 155, 20));
319 jLabelHelpText
= new JLabel();
320 jLabelHelpText
.setBounds(new java
.awt
.Rectangle(12, 62, 155, 20));
321 jLabelHelpText
.setText("Help Text");
322 jLabelFeatureFlag
= new JLabel();
323 jLabelFeatureFlag
.setBounds(new java
.awt
.Rectangle(12, 132, 155, 20));
324 jLabelFeatureFlag
.setText("Feature Flag Expression");
325 jLabelFeatureFlag
.setEnabled(false);
326 jLabelArch
= new JLabel();
327 jLabelArch
.setBounds(new java
.awt
.Rectangle(12, 107, 155, 20));
328 jLabelArch
.setText("Supported Architectures");
329 jArchCheckBox
= new ArchCheckBox();
330 jArchCheckBox
.setBounds(new java
.awt
.Rectangle(168, 107, 320, 20));
331 jArchCheckBox
.setPreferredSize(new java
.awt
.Dimension(320, 20));
333 jContentPane
= new JPanel();
334 jContentPane
.setLayout(null);
335 jContentPane
.setPreferredSize(new java
.awt
.Dimension(480, 180));
337 jContentPane
.add(jStarLabel1
, null);
338 jContentPane
.add(jLabelName
, null);
339 jContentPane
.add(getJTextFieldName(), null);
341 jContentPane
.add(jStarLabel2
, null);
342 jContentPane
.add(jLabelUsage
, null);
343 jContentPane
.add(getJComboBoxUsage(), null);
345 jContentPane
.add(jLabelHelpText
, null);
346 jContentPane
.add(getJScrollPaneHelpText(), null);
348 jContentPane
.add(jLabelFeatureFlag
, null);
349 jContentPane
.add(getJTextFieldFeatureFlag(), null);
351 jContentPane
.add(jLabelArch
, null);
352 jContentPane
.add(jArchCheckBox
, null);
354 jContentPane
.add(getJButtonOk(), null);
355 jContentPane
.add(getJButtonCancel(), null);
362 * This method initializes Usage type
365 private void initFrame() {
366 Tools
.generateComboBoxByVector(jComboBoxUsage
, ed
.getVHiiPackageUsage());
372 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
374 * Override actionPerformed to listen all actions
377 public void actionPerformed(ActionEvent arg0
) {
378 if (arg0
.getSource() == jButtonOk
) {
380 getCurrentHiiPackages();
381 this.returnType
= DataType
.RETURN_TYPE_OK
;
382 this.setVisible(false);
386 if (arg0
.getSource() == jButtonCancel
) {
387 this.returnType
= DataType
.RETURN_TYPE_CANCEL
;
388 this.setVisible(false);
394 * Data validation for all fields
396 * @retval true - All datas are valid
397 * @retval false - At least one data is invalid
400 public boolean checkAdd() {
402 // Check if all fields have correct data types
406 // Check Hii Package Name
408 if (isEmpty(this.jTextFieldName
.getText())) {
409 Log
.wrn("Update Hii Packages", "Hii Package Name Record must be entered!");
413 if (!isEmpty(this.jTextFieldName
.getText())) {
414 if (!DataValidation
.isC_NameType(this.jTextFieldName
.getText())) {
415 Log
.wrn("Update Hii Packages", "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
) {