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, 132, 320, 20));
147 jTextFieldFeatureFlag
.setPreferredSize(new java
.awt
.Dimension(320, 20));
148 jTextFieldFeatureFlag
.setToolTipText("Postfix expression that must evaluate to TRUE or FALSE");
149 jTextFieldFeatureFlag
.setEnabled(false);
151 return jTextFieldFeatureFlag
;
155 * This method initializes jScrollPane
157 * @return javax.swing.JScrollPane
159 private JScrollPane
getJScrollPane() {
160 if (jScrollPane
== null) {
161 jScrollPane
= new JScrollPane();
162 jScrollPane
.setViewportView(getJContentPane());
168 * This method initializes jTextAreaHelpText
170 * @return javax.swing.JTextArea
173 private JTextArea
getJTextAreaHelpText() {
174 if (jTextAreaHelpText
== null) {
175 jTextAreaHelpText
= new JTextArea();
176 jTextAreaHelpText
.setLineWrap(true);
177 jTextAreaHelpText
.setWrapStyleWord(true);
179 return jTextAreaHelpText
;
183 * This method initializes jScrollPaneHelpText
185 * @returns javax.swing.JScrollPane jScrollPaneHelpText
187 private JScrollPane
getJScrollPaneHelpText() {
188 if (jScrollPaneHelpText
== null) {
189 jScrollPaneHelpText
= new JScrollPane();
190 jScrollPaneHelpText
.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(168, 62));
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, 162, 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, 162, 90, 20));
225 jButtonCancel
.setText("Cancel");
226 jButtonCancel
.addActionListener(this);
228 return jButtonCancel
;
231 public static void main(String
[] args
) {
236 * This method initializes this
239 private void init() {
240 this.setSize(505, 235);
241 this.setContentPane(getJScrollPane());
242 this.setTitle("System Tables");
244 this.setViewMode(false);
249 * This method initializes this Fill values to all fields if these values are
252 * @param inSystemTablesId
255 private void init(SystemTablesIdentification inSystemTablesId
) {
257 this.id
= inSystemTablesId
;
259 if (this.id
!= null) {
260 this.jComboBoxGuidC_Name
.setSelectedItem(id
.getName());
261 this.jComboBoxUsage
.setSelectedItem(id
.getUsage());
262 this.jTextAreaHelpText
.setText(id
.getHelp());
263 this.jTextFieldFeatureFlag
.setText(id
.getFeatureFlag());
264 this.jArchCheckBox
.setSelectedItems(id
.getSupArchList());
269 * This is the override edit constructor
271 * @param inBootModesIdentification
275 public SystemTablesDlg(SystemTablesIdentification inSystemTablesIdentification
, IFrame iFrame
) {
277 init(inSystemTablesIdentification
);
281 * Disable all components when the mode is view
284 * true - The view mode; false - The non-view mode
287 public void setViewMode(boolean isView
) {
289 this.jComboBoxUsage
.setEnabled(!isView
);
294 * This method initializes jContentPane
296 * @return javax.swing.JPanel jContentPane
299 private JPanel
getJContentPane() {
300 if (jContentPane
== null) {
301 jStarLabel1
= new StarLabel();
302 jStarLabel1
.setLocation(new java
.awt
.Point(2, 12));
303 jLabelEntry
= new JLabel();
304 jLabelEntry
.setText("Table's GUID C Name");
305 jLabelEntry
.setBounds(new java
.awt
.Rectangle(12, 12, 155, 20));
306 jStarLabel2
= new StarLabel();
307 jStarLabel2
.setLocation(new java
.awt
.Point(2, 37));
308 jLabelUsage
= new JLabel();
309 jLabelUsage
.setText("Usage");
310 jLabelUsage
.setBounds(new java
.awt
.Rectangle(12, 37, 155, 20));
311 jLabelHelpText
= new JLabel();
312 jLabelHelpText
.setBounds(new java
.awt
.Rectangle(12, 62, 155, 20));
313 jLabelHelpText
.setText("Help Text");
314 jLabelFeatureFlag
= new JLabel();
315 jLabelFeatureFlag
.setBounds(new java
.awt
.Rectangle(12, 132, 155, 20));
316 jLabelFeatureFlag
.setText("Feature Flag Expression");
317 jLabelFeatureFlag
.setEnabled(false);
318 jLabelArch
= new JLabel();
319 jLabelArch
.setBounds(new java
.awt
.Rectangle(12, 107, 155, 20));
320 jLabelArch
.setText("Supported Architectures");
321 jArchCheckBox
= new ArchCheckBox();
322 jArchCheckBox
.setBounds(new java
.awt
.Rectangle(168, 107, 320, 20));
323 jArchCheckBox
.setPreferredSize(new java
.awt
.Dimension(320, 20));
325 jContentPane
= new JPanel();
326 jContentPane
.setLayout(null);
327 jContentPane
.setPreferredSize(new java
.awt
.Dimension(480, 180));
329 jContentPane
.add(jLabelEntry
, null);
330 jContentPane
.add(jLabelFeatureFlag
, null);
331 jContentPane
.add(getJTextFieldFeatureFlag(), null);
332 jContentPane
.add(getJComboBoxGuidC_Name(), null);
333 jContentPane
.add(jLabelArch
, null);
334 jContentPane
.add(jLabelUsage
, null);
335 jContentPane
.add(getJComboBoxUsage(), null);
337 jContentPane
.add(jStarLabel1
, null);
338 jContentPane
.add(jStarLabel2
, null);
340 jContentPane
.add(jLabelHelpText
, null);
341 jContentPane
.add(getJScrollPaneHelpText(), null);
342 jContentPane
.add(jArchCheckBox
, null);
343 jContentPane
.add(getJButtonOk(), null);
344 jContentPane
.add(getJButtonCancel(), null);
350 * This method initializes Usage type
353 private void initFrame() {
354 Tools
.generateComboBoxByVector(jComboBoxUsage
, ed
.getVSystemTableUsage());
355 Tools
.generateComboBoxByVector(jComboBoxGuidC_Name
, wt
.getAllGuidDeclarationsFromWorkspace());
361 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
363 * Override actionPerformed to listen all actions
366 public void actionPerformed(ActionEvent arg0
) {
367 if (arg0
.getSource() == jButtonOk
) {
369 getCurrentSystemTables();
370 this.returnType
= DataType
.RETURN_TYPE_OK
;
371 this.setVisible(false);
375 if (arg0
.getSource() == jButtonCancel
) {
376 this.returnType
= DataType
.RETURN_TYPE_CANCEL
;
377 this.setVisible(false);
382 * Data validation for all fields
384 * @retval true - All datas are valid
385 * @retval false - At least one data is invalid
388 public boolean checkAdd() {
390 // Check if all fields have correct data types
396 if (!isEmpty(this.jTextFieldFeatureFlag
.getText())) {
397 if (!DataValidation
.isFeatureFlag(this.jTextFieldFeatureFlag
.getText())) {
398 Log
.wrn("Update System Tables", "Incorrect data type for Feature Flag");
406 private SystemTablesIdentification
getCurrentSystemTables() {
407 String arg0
= this.jComboBoxGuidC_Name
.getSelectedItem().toString();
408 String arg1
= this.jComboBoxUsage
.getSelectedItem().toString();
410 String arg2
= this.jTextFieldFeatureFlag
.getText();
411 Vector
<String
> arg3
= this.jArchCheckBox
.getSelectedItemsVector();
412 String arg4
= this.jTextAreaHelpText
.getText();
414 id
= new SystemTablesIdentification(arg0
, arg1
, arg2
, arg3
, arg4
);
418 public SystemTablesIdentification
getId() {
422 public void setId(SystemTablesIdentification id
) {