2 <<The file is used to create, update SystemTable in the MSA file>>
4 <<This dialog is used to add or edit a System Table entry in the MSA file.>>
6 Copyright (c) 2006, Intel Corporation
7 All rights reserved. This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 package org
.tianocore
.frameworkwizard
.module
.ui
.dialog
;
18 import java
.awt
.event
.ActionEvent
;
19 import java
.util
.Vector
;
21 import javax
.swing
.JButton
;
22 import javax
.swing
.JComboBox
;
23 import javax
.swing
.JLabel
;
24 import javax
.swing
.JPanel
;
25 import javax
.swing
.JScrollPane
;
26 import javax
.swing
.JTextField
;
27 import javax
.swing
.JTextArea
;
29 import org
.tianocore
.frameworkwizard
.common
.DataType
;
30 import org
.tianocore
.frameworkwizard
.common
.DataValidation
;
31 import org
.tianocore
.frameworkwizard
.common
.EnumerationData
;
32 import org
.tianocore
.frameworkwizard
.common
.Log
;
33 import org
.tianocore
.frameworkwizard
.common
.Tools
;
34 import org
.tianocore
.frameworkwizard
.common
.ui
.ArchCheckBox
;
35 import org
.tianocore
.frameworkwizard
.common
.ui
.IDialog
;
36 import org
.tianocore
.frameworkwizard
.common
.ui
.IFrame
;
37 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
38 import org
.tianocore
.frameworkwizard
.module
.Identifications
.SystemTables
.SystemTablesIdentification
;
39 import org
.tianocore
.frameworkwizard
.workspace
.WorkspaceTools
;
42 * The class is used to create, update SystemTables section of the MSA file
47 public class SystemTablesDlg
extends IDialog
{
50 // / Define class Serial Version UID
52 private static final long serialVersionUID
= 7488769180379442276L;
55 // Define class members
57 private JPanel jContentPane
= null;
59 private JLabel jLabelEntry
= null;
61 private JLabel jLabelUsage
= null;
63 private JComboBox jComboBoxUsage
= null;
65 private StarLabel jStarLabel1
= null;
67 private StarLabel jStarLabel2
= null;
69 private JComboBox jComboBoxGuidC_Name
= null;
71 private JLabel jLabelFeatureFlag
= null;
73 private JTextField jTextFieldFeatureFlag
= null;
75 private JLabel jLabelArch
= null;
77 private JScrollPane jScrollPane
= null;
79 private JLabel jLabelHelpText
= null;
81 private JTextArea jTextAreaHelpText
= null;
83 private JScrollPane jScrollPaneHelpText
= null;
85 private ArchCheckBox jArchCheckBox
= null;
87 private JButton jButtonOk
= null;
89 private JButton jButtonCancel
= null;
94 private SystemTablesIdentification id
= null;
96 private EnumerationData ed
= new EnumerationData();
98 private WorkspaceTools wt
= new WorkspaceTools();
101 * This method initializes jComboBoxGuidC_Name
103 * @return javax.swing.JComboBox jComboBoxGuidC_Name
106 private JComboBox
getJComboBoxGuidC_Name() {
107 if (jComboBoxGuidC_Name
== null) {
108 jComboBoxGuidC_Name
= new JComboBox();
109 jComboBoxGuidC_Name
.setBounds(new java
.awt
.Rectangle(168, 12, 320, 20));
110 jComboBoxGuidC_Name
.setPreferredSize(new java
.awt
.Dimension(320, 20));
111 jComboBoxGuidC_Name
.setToolTipText("Select the GUID C Name of the System Table");
113 return jComboBoxGuidC_Name
;
117 * This method initializes jComboBoxUsage
119 * @return javax.swing.JComboBox jComboBoxUsage
122 private JComboBox
getJComboBoxUsage() {
123 if (jComboBoxUsage
== null) {
124 jComboBoxUsage
= new JComboBox();
125 jComboBoxUsage
.setBounds(new java
.awt
.Rectangle(168, 37, 320, 20));
126 jComboBoxUsage
.setPreferredSize(new java
.awt
.Dimension(320, 20));
128 .setToolTipText("<html><table>"
129 + "<tr><td>ALWAYS_CONSUMED</td><td>Module requires a GUIDed entry in the system table</td></tr>"
130 + "<tr><td>SOMETIMES_CONSUMED</td><td>Module consumes a GUIDed entry in the system<br>table if it is present</td>"
131 + "</tr><tr><td>ALWAYS_PRODUCED</td><td>Module always produces a GUIDed entry in the system table</td></tr>"
132 + "<tr><td>SOMETIMES_PRODUCED</td><td>Module produces a GUIDed entry in the system table<br>for some of its execution flows.</td></tr>"
133 + "</table></html>");
135 return jComboBoxUsage
;
139 * This method initializes jTextFieldFeatureFlag
141 * @return javax.swing.JTextField
143 private JTextField
getJTextFieldFeatureFlag() {
144 if (jTextFieldFeatureFlag
== null) {
145 jTextFieldFeatureFlag
= new JTextField();
146 jTextFieldFeatureFlag
.setBounds(new java
.awt
.Rectangle(168, 107, 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
;
182 * This method initializes jScrollPaneHelpText
184 * @returns javax.swing.JScrollPane jScrollPaneHelpText
186 private JScrollPane
getJScrollPaneHelpText() {
187 if (jScrollPaneHelpText
== null) {
188 jScrollPaneHelpText
= new JScrollPane();
189 jScrollPaneHelpText
.setHorizontalScrollBarPolicy(javax
.swing
.JScrollPane
.HORIZONTAL_SCROLLBAR_NEVER
);
190 jScrollPaneHelpText
.setSize(new java
.awt
.Dimension(320, 40));
191 jScrollPaneHelpText
.setPreferredSize(new java
.awt
.Dimension(320, 40));
192 jScrollPaneHelpText
.setLocation(new java
.awt
.Point(168, 62));
193 jScrollPaneHelpText
.setViewportView(getJTextAreaHelpText());
195 return jScrollPaneHelpText
;
199 * This method initializes jButtonOk
201 * @return javax.swing.JButton
204 private JButton
getJButtonOk() {
205 if (jButtonOk
== null) {
206 jButtonOk
= new JButton();
207 jButtonOk
.setBounds(new java
.awt
.Rectangle(290, 162, 90, 20));
208 jButtonOk
.setText("Ok");
209 jButtonOk
.addActionListener(this);
215 * This method initializes jButtonCancel
217 * @return javax.swing.JButton
220 private JButton
getJButtonCancel() {
221 if (jButtonCancel
== null) {
222 jButtonCancel
= new JButton();
223 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390, 162, 90, 20));
224 jButtonCancel
.setText("Cancel");
225 jButtonCancel
.addActionListener(this);
227 return jButtonCancel
;
230 public static void main(String
[] args
) {
235 * This method initializes this
238 private void init() {
239 this.setSize(505, 235);
240 this.setContentPane(getJScrollPane());
241 this.setTitle("System Tables");
243 this.setViewMode(false);
248 * This method initializes this Fill values to all fields if these values are
251 * @param inSystemTablesId
254 private void init(SystemTablesIdentification inSystemTablesId
) {
256 this.id
= inSystemTablesId
;
258 if (this.id
!= null) {
259 this.jComboBoxGuidC_Name
.setSelectedItem(id
.getName());
260 this.jComboBoxUsage
.setSelectedItem(id
.getUsage());
261 this.jTextAreaHelpText
.setText(id
.getHelp());
262 this.jTextFieldFeatureFlag
.setText(id
.getFeatureFlag());
263 this.jArchCheckBox
.setSelectedItems(id
.getSupArchList());
268 * This is the override edit constructor
270 * @param inBootModesIdentification
274 public SystemTablesDlg(SystemTablesIdentification inSystemTablesIdentification
, IFrame iFrame
) {
276 init(inSystemTablesIdentification
);
280 * Disable all components when the mode is view
283 * true - The view mode; false - The non-view mode
286 public void setViewMode(boolean isView
) {
288 this.jComboBoxUsage
.setEnabled(!isView
);
293 * This method initializes jContentPane
295 * @return javax.swing.JPanel jContentPane
298 private JPanel
getJContentPane() {
299 if (jContentPane
== null) {
300 jStarLabel1
= new StarLabel();
301 jStarLabel1
.setLocation(new java
.awt
.Point(2, 12));
302 jLabelEntry
= new JLabel();
303 jLabelEntry
.setText("Table's GUID C Name");
304 jLabelEntry
.setBounds(new java
.awt
.Rectangle(12, 12, 155, 20));
305 jStarLabel2
= new StarLabel();
306 jStarLabel2
.setLocation(new java
.awt
.Point(2, 37));
307 jLabelUsage
= new JLabel();
308 jLabelUsage
.setText("Usage");
309 jLabelUsage
.setBounds(new java
.awt
.Rectangle(12, 37, 155, 20));
310 jLabelHelpText
= new JLabel();
311 jLabelHelpText
.setBounds(new java
.awt
.Rectangle(12, 62, 155, 20));
312 jLabelHelpText
.setText("Help Text");
313 jLabelFeatureFlag
= new JLabel();
314 jLabelFeatureFlag
.setBounds(new java
.awt
.Rectangle(12, 107, 155, 20));
315 jLabelFeatureFlag
.setText("Feature Flag Expression");
316 jLabelArch
= new JLabel();
317 jLabelArch
.setBounds(new java
.awt
.Rectangle(12, 130, 155, 20));
318 jLabelArch
.setText("Supported Architectures");
319 jArchCheckBox
= new ArchCheckBox();
320 jArchCheckBox
.setBounds(new java
.awt
.Rectangle(168, 130, 320, 20));
321 jArchCheckBox
.setPreferredSize(new java
.awt
.Dimension(320, 20));
323 jContentPane
= new JPanel();
324 jContentPane
.setLayout(null);
325 jContentPane
.setPreferredSize(new java
.awt
.Dimension(480, 180));
327 jContentPane
.add(jLabelEntry
, null);
328 jContentPane
.add(jLabelFeatureFlag
, null);
329 jContentPane
.add(getJTextFieldFeatureFlag(), null);
330 jContentPane
.add(getJComboBoxGuidC_Name(), null);
331 jContentPane
.add(jLabelArch
, null);
332 jContentPane
.add(jLabelUsage
, null);
333 jContentPane
.add(getJComboBoxUsage(), null);
335 jContentPane
.add(jStarLabel1
, null);
336 jContentPane
.add(jStarLabel2
, null);
338 jContentPane
.add(jLabelHelpText
, null);
339 jContentPane
.add(getJScrollPaneHelpText(), null);
340 jContentPane
.add(jArchCheckBox
, null);
341 jContentPane
.add(getJButtonOk(), null);
342 jContentPane
.add(getJButtonCancel(), null);
348 * This method initializes Usage type
351 private void initFrame() {
352 Tools
.generateComboBoxByVector(jComboBoxUsage
, ed
.getVSystemTableUsage());
353 Tools
.generateComboBoxByVector(jComboBoxGuidC_Name
, wt
.getAllGuidDeclarationsFromWorkspace());
359 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
361 * Override actionPerformed to listen all actions
364 public void actionPerformed(ActionEvent arg0
) {
365 if (arg0
.getSource() == jButtonOk
) {
367 getCurrentSystemTables();
368 this.returnType
= DataType
.RETURN_TYPE_OK
;
369 this.setVisible(false);
373 if (arg0
.getSource() == jButtonCancel
) {
374 this.returnType
= DataType
.RETURN_TYPE_CANCEL
;
375 this.setVisible(false);
380 * Data validation for all fields
382 * @retval true - All datas are valid
383 * @retval false - At least one data is invalid
386 public boolean checkAdd() {
388 // Check if all fields have correct data types
394 if (!isEmpty(this.jTextFieldFeatureFlag
.getText())) {
395 if (!DataValidation
.isFeatureFlag(this.jTextFieldFeatureFlag
.getText())) {
396 Log
.wrn("Update System Tables", "Incorrect data type for Feature Flag");
404 private SystemTablesIdentification
getCurrentSystemTables() {
405 String arg0
= this.jComboBoxGuidC_Name
.getSelectedItem().toString();
406 String arg1
= this.jComboBoxUsage
.getSelectedItem().toString();
408 String arg2
= this.jTextFieldFeatureFlag
.getText();
409 Vector
<String
> arg3
= this.jArchCheckBox
.getSelectedItemsVector();
410 String arg4
= this.jTextAreaHelpText
.getText();
412 id
= new SystemTablesIdentification(arg0
, arg1
, arg2
, arg3
, arg4
);
416 public SystemTablesIdentification
getId() {
420 public void setId(SystemTablesIdentification id
) {