2 <<The file is used to create, update Guids of the MSA file>>
4 Copyright (c) 2006, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 package org
.tianocore
.frameworkwizard
.module
.ui
.dialog
;
16 import java
.awt
.event
.ActionEvent
;
17 import java
.util
.Vector
;
19 import javax
.swing
.JButton
;
20 import javax
.swing
.JComboBox
;
21 import javax
.swing
.JLabel
;
22 import javax
.swing
.JPanel
;
23 import javax
.swing
.JScrollPane
;
24 import javax
.swing
.JTextField
;
25 import javax
.swing
.JTextArea
;
27 import org
.tianocore
.frameworkwizard
.common
.DataType
;
28 import org
.tianocore
.frameworkwizard
.common
.DataValidation
;
29 import org
.tianocore
.frameworkwizard
.common
.EnumerationData
;
30 import org
.tianocore
.frameworkwizard
.common
.Log
;
31 import org
.tianocore
.frameworkwizard
.common
.Tools
;
32 import org
.tianocore
.frameworkwizard
.common
.ui
.ArchCheckBox
;
33 import org
.tianocore
.frameworkwizard
.common
.ui
.IDialog
;
34 import org
.tianocore
.frameworkwizard
.common
.ui
.IFrame
;
35 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
36 import org
.tianocore
.frameworkwizard
.module
.Identifications
.Guids
.GuidsIdentification
;
37 import org
.tianocore
.frameworkwizard
.workspace
.WorkspaceTools
;
40 * The class is used to create, update Guids of the MSA file
45 public class GuidsDlg
extends IDialog
{
48 // / Define class Serial Version UID
50 private static final long serialVersionUID
= 6710858997766979803L;
53 // Define class members
55 private JPanel jContentPane
= null;
57 private JLabel jLabelC_Name
= null;
59 private JComboBox jComboBoxCName
= 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 GuidsIdentification id
= null;
94 private EnumerationData ed
= new EnumerationData();
96 private WorkspaceTools wt
= new WorkspaceTools();
99 * This method initializes jTextFieldC_Name
101 * @return javax.swing.JTextField jTextFieldC_Name
104 private JComboBox
getJComboBoxCName() {
105 if (jComboBoxCName
== null) {
106 jComboBoxCName
= new JComboBox();
107 jComboBoxCName
.setBounds(new java
.awt
.Rectangle(160, 10, 320, 20));
108 jComboBoxCName
.setPreferredSize(new java
.awt
.Dimension(320, 20));
109 jComboBoxCName
.setToolTipText("Select the C Name of the GUID");
111 return jComboBoxCName
;
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>"
127 + "<tr><td>ALWAYS_CONSUMED</td><td>Module always consumes the GUID</td></tr>"
128 + "<tr><td>SOMETIMES_CONSUMED</td><td>Module will use the GUID only if it is present</td></tr>"
129 + "<tr><td>ALWAYS_PRODUCED</td><td>Module always produces the GUID</td></tr>"
130 + "<tr><td>SOMETIMES_PRODUCED</td><td>Module will sometimes produce the GUID</td></tr>"
131 + "<tr><td>DEFAULT</td><td>Default is the the GUID that specified the<br>instance of the package</td></tr>"
132 + "</table></html>");
134 return jComboBoxUsage
;
138 * This method initializes jTextFieldFeatureFlag
140 * @return javax.swing.JTextField
143 private JTextField
getJTextFieldFeatureFlag() {
144 if (jTextFieldFeatureFlag
== null) {
145 jTextFieldFeatureFlag
= new JTextField();
146 jTextFieldFeatureFlag
.setBounds(new java
.awt
.Rectangle(160, 105, 320, 20));
147 jTextFieldFeatureFlag
.setPreferredSize(new java
.awt
.Dimension(320, 20));
148 jTextFieldFeatureFlag
.setToolTipText("Postfix expression that must evaluate to TRUE or FALSE");
150 return jTextFieldFeatureFlag
;
154 * This method initializes jScrollPane
156 * @return javax.swing.JScrollPane
158 private JScrollPane
getJScrollPane() {
159 if (jScrollPane
== null) {
160 jScrollPane
= new JScrollPane();
161 jScrollPane
.setViewportView(getJContentPane());
167 * This method initializes jTextAreaHelpText
169 * @return javax.swing.JTextArea
172 private JTextArea
getJTextAreaHelpText() {
173 if (jTextAreaHelpText
== null) {
174 jTextAreaHelpText
= new JTextArea();
175 jTextAreaHelpText
.setLineWrap(true);
176 jTextAreaHelpText
.setWrapStyleWord(true);
178 return jTextAreaHelpText
;
183 * This method initializes jScrollPaneHelpText
185 * @return javax.swing.JScrollPane jScrollPaneHelpText
188 private JScrollPane
getJScrollPaneHelpText() {
189 if (jScrollPaneHelpText
== null) {
190 jScrollPaneHelpText
= new JScrollPane();
191 jScrollPaneHelpText
.setHorizontalScrollBarPolicy(javax
.swing
.JScrollPane
.HORIZONTAL_SCROLLBAR_NEVER
);
192 jScrollPaneHelpText
.setSize(new java
.awt
.Dimension(320, 40));
193 jScrollPaneHelpText
.setLocation(new java
.awt
.Point(160, 60));
194 jScrollPaneHelpText
.setViewportView(getJTextAreaHelpText());
196 return jScrollPaneHelpText
;
200 * This method initializes jButtonOk
202 * @return javax.swing.JButton
205 private JButton
getJButtonOk() {
206 if (jButtonOk
== null) {
207 jButtonOk
= new JButton();
208 jButtonOk
.setBounds(new java
.awt
.Rectangle(290, 157, 90, 20));
209 jButtonOk
.setText("Ok");
210 jButtonOk
.addActionListener(this);
216 * This method initializes jButtonCancel
218 * @return javax.swing.JButton
221 private JButton
getJButtonCancel() {
222 if (jButtonCancel
== null) {
223 jButtonCancel
= new JButton();
224 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390, 157, 90, 20));
225 jButtonCancel
.setText("Cancel");
226 jButtonCancel
.addActionListener(this);
228 return jButtonCancel
;
231 public static void main(String
[] args
) {
237 * This method initializes this
240 private void init() {
241 this.setSize(500, 230);
242 this.setContentPane(getJScrollPane());
243 this.setTitle("Guids");
245 this.setViewMode(false);
251 * This method initializes this Fill values to all fields if these values are
257 private void init(GuidsIdentification inGuidsId
) {
261 if (this.id
!= null) {
262 this.jComboBoxCName
.setSelectedItem(id
.getName());
263 this.jComboBoxUsage
.setSelectedItem(id
.getUsage());
264 this.jTextAreaHelpText
.setText(id
.getHelp());
265 this.jTextFieldFeatureFlag
.setText(id
.getFeatureFlag());
266 this.jArchCheckBox
.setSelectedItems(id
.getSupArchList());
271 * This is the override edit constructor
273 * @param inGuidsIdentification
277 public GuidsDlg(GuidsIdentification inGuidsIdentification
, IFrame iFrame
) {
279 init(inGuidsIdentification
);
283 * Disable all components when the mode is view
286 * true - The view mode; false - The non-view mode
289 public void setViewMode(boolean isView
) {
291 this.jComboBoxUsage
.setEnabled(!isView
);
296 * This method initializes jContentPane
298 * @return javax.swing.JPanel jContentPane
301 private JPanel
getJContentPane() {
302 if (jContentPane
== null) {
303 jStarLabel1
= new StarLabel();
304 jStarLabel1
.setLocation(new java
.awt
.Point(2, 10));
305 jLabelC_Name
= new JLabel();
306 jLabelC_Name
.setText("Select GUID's C Name");
307 jLabelC_Name
.setBounds(new java
.awt
.Rectangle(15, 10, 145, 20));
309 jStarLabel2
= new StarLabel();
310 jStarLabel2
.setLocation(new java
.awt
.Point(2, 35));
311 jLabelUsage
= new JLabel();
312 jLabelUsage
.setText("Usage");
313 jLabelUsage
.setBounds(new java
.awt
.Rectangle(15, 35, 145, 20));
315 jLabelHelpText
= new JLabel();
316 jLabelHelpText
.setBounds(new java
.awt
.Rectangle(14, 60, 145, 20));
317 jLabelHelpText
.setText("Help Text");
319 jLabelFeatureFlag
= new JLabel();
320 jLabelFeatureFlag
.setBounds(new java
.awt
.Rectangle(15, 105, 145, 20));
321 jLabelFeatureFlag
.setText("Feature Flag Expression");
323 jLabelArch
= new JLabel();
324 jLabelArch
.setBounds(new java
.awt
.Rectangle(15, 130, 145, 20));
325 jLabelArch
.setText("Supported Architectures");
326 jArchCheckBox
= new ArchCheckBox();
327 jArchCheckBox
.setBounds(new java
.awt
.Rectangle(160, 130, 320, 20));
328 jArchCheckBox
.setPreferredSize(new java
.awt
.Dimension(320, 20));
330 jContentPane
= new JPanel();
331 jContentPane
.setLayout(null);
332 jContentPane
.setPreferredSize(new java
.awt
.Dimension(490, 165));
334 jContentPane
.add(jStarLabel1
, null);
335 jContentPane
.add(jLabelC_Name
, null);
336 jContentPane
.add(getJComboBoxCName(), null);
337 jContentPane
.add(jStarLabel2
, null);
338 jContentPane
.add(jLabelUsage
, null);
339 jContentPane
.add(getJComboBoxUsage(), null);
340 jContentPane
.add(jLabelHelpText
, null);
341 jContentPane
.add(getJScrollPaneHelpText(), null);
342 jContentPane
.add(jLabelFeatureFlag
, null);
343 jContentPane
.add(getJTextFieldFeatureFlag(), null);
344 jContentPane
.add(jLabelArch
, null);
345 jContentPane
.add(jArchCheckBox
, null);
346 jContentPane
.add(getJButtonOk(), null);
347 jContentPane
.add(getJButtonCancel(), null);
353 * This method initializes Usage type
356 private void initFrame() {
357 Tools
.generateComboBoxByVector(jComboBoxCName
, wt
.getAllGuidDeclarationsFromWorkspace());
358 Tools
.generateComboBoxByVector(jComboBoxUsage
, ed
.getVGuidUsage());
364 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
366 * Override actionPerformed to listen all actions
369 public void actionPerformed(ActionEvent arg0
) {
370 if (arg0
.getSource() == jButtonOk
) {
373 this.returnType
= DataType
.RETURN_TYPE_OK
;
374 this.setVisible(false);
378 if (arg0
.getSource() == jButtonCancel
) {
379 this.returnType
= DataType
.RETURN_TYPE_CANCEL
;
380 this.setVisible(false);
385 * Data validation for all fields
387 * @retval true - All datas are valid
388 * @retval false - At least one data is invalid
391 public boolean checkAdd() {
393 // Check if all fields have correct data types
399 if (!isEmpty(this.jComboBoxCName
.getSelectedItem().toString())) {
400 if (!DataValidation
.isC_NameType(this.jComboBoxCName
.getSelectedItem().toString())) {
401 Log
.wrn("Update Guids", "Incorrect data type for Guid Name");
409 if (!isEmpty(this.jTextFieldFeatureFlag
.getText())) {
410 if (!DataValidation
.isFeatureFlag(this.jTextFieldFeatureFlag
.getText())) {
411 Log
.wrn("Update Guids", "Incorrect data type for Feature Flag");
419 private GuidsIdentification
getCurrentGuids() {
420 String arg0
= this.jComboBoxCName
.getSelectedItem().toString();
421 String arg1
= this.jComboBoxUsage
.getSelectedItem().toString();
423 String arg2
= this.jTextFieldFeatureFlag
.getText();
424 Vector
<String
> arg3
= this.jArchCheckBox
.getSelectedItemsVector();
425 String arg4
= this.jTextAreaHelpText
.getText();
427 id
= new GuidsIdentification(arg0
, arg1
, arg2
, arg3
, arg4
);
431 public GuidsIdentification
getId() {
435 public void setId(GuidsIdentification id
) {