3 The file is used to create, update SystemTable 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
.packaging
.module
.ui
;
17 import java
.awt
.event
.ActionEvent
;
19 import javax
.swing
.JButton
;
20 import javax
.swing
.JComboBox
;
21 import javax
.swing
.JLabel
;
22 import javax
.swing
.JPanel
;
23 import javax
.swing
.JTextField
;
25 import org
.tianocore
.SystemTableUsage
;
26 import org
.tianocore
.SystemTablesDocument
;
27 import org
.tianocore
.common
.DataValidation
;
28 import org
.tianocore
.common
.Log
;
29 import org
.tianocore
.packaging
.common
.ui
.IInternalFrame
;
30 import org
.tianocore
.packaging
.common
.ui
.StarLabel
;
33 The class is used to create, update SystemTable of MSA/MBD file
34 It extends IInternalFrame
36 @since ModuleEditor 1.0
39 public class ModuleSystemTables
extends IInternalFrame
{
42 /// Define class Serial Version UID
44 private static final long serialVersionUID
= 7488769180379442276L;
47 //Define class members
49 private SystemTablesDocument
.SystemTables systemTables
= null;
51 private int location
= -1;
53 private JPanel jContentPane
= null;
55 private JLabel jLabelEntry
= null;
57 private JTextField jTextFieldEntry
= null;
59 private JLabel jLabelUsage
= null;
61 private JComboBox jComboBoxUsage
= null;
63 private JButton jButtonOk
= null;
65 private JButton jButtonCancel
= null;
67 private JLabel jLabelOverrideID
= null;
69 private JTextField jTextFieldOverrideID
= null;
71 private StarLabel jStarLabel1
= null;
74 This method initializes jTextFieldEntry
76 @return javax.swing.JTextField jTextFieldEntry
79 private JTextField
getJTextFieldEntry() {
80 if (jTextFieldEntry
== null) {
81 jTextFieldEntry
= new JTextField();
82 jTextFieldEntry
.setBounds(new java
.awt
.Rectangle(160, 10, 320, 20));
84 return jTextFieldEntry
;
88 This method initializes jComboBoxUsage
90 @return javax.swing.JComboBox jComboBoxUsage
93 private JComboBox
getJComboBoxUsage() {
94 if (jComboBoxUsage
== null) {
95 jComboBoxUsage
= new JComboBox();
96 jComboBoxUsage
.setBounds(new java
.awt
.Rectangle(160, 35, 320, 20));
98 return jComboBoxUsage
;
102 This method initializes jButtonOk
104 @return javax.swing.JButton jButtonOk
107 private JButton
getJButtonOk() {
108 if (jButtonOk
== null) {
109 jButtonOk
= new JButton();
110 jButtonOk
.setText("OK");
111 jButtonOk
.setBounds(new java
.awt
.Rectangle(280, 90, 90, 20));
112 jButtonOk
.addActionListener(this);
118 This method initializes jButtonCancel
120 @return javax.swing.JButton jButtonCancel
123 private JButton
getJButtonCancel() {
124 if (jButtonCancel
== null) {
125 jButtonCancel
= new JButton();
126 jButtonCancel
.setText("Cancel");
127 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390, 90, 90, 20));
128 jButtonCancel
.addActionListener(this);
130 return jButtonCancel
;
134 This method initializes jTextFieldOverrideID
136 @return javax.swing.JTextField jTextFieldOverrideID
139 private JTextField
getJTextFieldOverrideID() {
140 if (jTextFieldOverrideID
== null) {
141 jTextFieldOverrideID
= new JTextField();
142 jTextFieldOverrideID
.setBounds(new java
.awt
.Rectangle(160, 60, 320, 20));
144 return jTextFieldOverrideID
;
147 public static void main(String
[] args
) {
152 This is the default constructor
155 public ModuleSystemTables() {
158 this.setVisible(true);
162 This is the override edit constructor
164 @param inSystemTables The input data of SystemTablesDocument.SystemTables
167 public ModuleSystemTables(SystemTablesDocument
.SystemTables inSystemTables
) {
169 init(inSystemTables
);
170 this.setVisible(true);
174 This is the override edit constructor
176 @param inSystemTables The input data of SystemTablesDocument.SystemTables
177 @param type The input data of node type
178 @param index The input data of node index
181 public ModuleSystemTables(SystemTablesDocument
.SystemTables inSystemTables
, int type
, int index
) {
183 init(inSystemTables
, type
, index
);
184 this.setVisible(true);
188 This method initializes this
190 @param inSystemTables The input data of SystemTablesDocument.SystemTables
193 private void init(SystemTablesDocument
.SystemTables inSystemTables
) {
195 this.setSystemTables(inSystemTables
);
199 This method initializes this
200 Fill values to all fields if these values are not empty
202 @param inSystemTables The input data of SystemTablesDocument.SystemTables
203 @param type The input data of node type
204 @param index The input data of node index
207 private void init(SystemTablesDocument
.SystemTables inSystemTables
, int type
, int index
) {
208 init(inSystemTables
);
209 this.location
= index
;
210 if (this.systemTables
.getSystemTableList().size() > 0) {
211 if (this.systemTables
.getSystemTableArray(index
).getEntry() != null) {
212 this.jTextFieldEntry
.setText(this.systemTables
.getSystemTableArray(index
).getEntry());
214 if (this.systemTables
.getSystemTableArray(index
).getUsage() != null) {
215 this.jComboBoxUsage
.setSelectedItem(this.systemTables
.getSystemTableArray(index
).getUsage().toString());
217 this.jTextFieldOverrideID
.setText(String
.valueOf(this.systemTables
.getSystemTableArray(index
)
223 This method initializes this
227 private void init() {
228 this.setSize(500, 515);
229 this.setContentPane(getJContentPane());
230 this.setTitle("System Tables");
232 this.setViewMode(false);
236 Disable all components when the mode is view
238 @param isView true - The view mode; false - The non-view mode
241 public void setViewMode(boolean isView
) {
242 this.jButtonOk
.setVisible(false);
243 this.jButtonCancel
.setVisible(false);
245 this.jTextFieldEntry
.setEnabled(!isView
);
246 this.jComboBoxUsage
.setEnabled(!isView
);
247 this.jTextFieldOverrideID
.setEnabled(!isView
);
252 This method initializes jContentPane
254 @return javax.swing.JPanel jContentPane
257 private JPanel
getJContentPane() {
258 if (jContentPane
== null) {
259 jLabelOverrideID
= new JLabel();
260 jLabelOverrideID
.setBounds(new java
.awt
.Rectangle(15, 60, 140, 20));
261 jLabelOverrideID
.setText("Override ID");
262 jLabelUsage
= new JLabel();
263 jLabelUsage
.setText("Usage");
264 jLabelUsage
.setBounds(new java
.awt
.Rectangle(15, 35, 140, 20));
265 jLabelEntry
= new JLabel();
266 jLabelEntry
.setText("Entry");
267 jLabelEntry
.setBounds(new java
.awt
.Rectangle(15, 10, 140, 20));
268 jContentPane
= new JPanel();
269 jContentPane
.setLayout(null);
270 jContentPane
.add(jLabelEntry
, null);
271 jContentPane
.add(getJTextFieldEntry(), null);
272 jContentPane
.add(jLabelUsage
, null);
273 jContentPane
.add(getJComboBoxUsage(), null);
274 jContentPane
.add(getJButtonOk(), null);
275 jContentPane
.add(getJButtonCancel(), null);
276 jContentPane
.add(jLabelOverrideID
, null);
277 jContentPane
.add(getJTextFieldOverrideID(), null);
279 jStarLabel1
= new StarLabel();
280 jStarLabel1
.setBounds(new java
.awt
.Rectangle(0, 10, 10, 20));
282 jContentPane
.add(jStarLabel1
, null);
288 This method initializes Usage type
291 private void initFrame() {
292 jComboBoxUsage
.addItem("ALWAYS_CONSUMED");
293 jComboBoxUsage
.addItem("SOMETIMES_CONSUMED");
294 jComboBoxUsage
.addItem("ALWAYS_PRODUCED");
295 jComboBoxUsage
.addItem("SOMETIMES_PRODUCED");
296 jComboBoxUsage
.addItem("PRIVATE");
300 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
302 * Override actionPerformed to listen all actions
305 public void actionPerformed(ActionEvent arg0
) {
306 if (arg0
.getSource() == jButtonOk
) {
307 this.setEdited(true);
311 if (arg0
.getSource() == jButtonCancel
) {
317 Get SystemTablesDocument.SystemTables
319 @return SystemTablesDocument.SystemTables
322 public SystemTablesDocument
.SystemTables
getSystemTables() {
327 Set SystemTablesDocument.SystemTables
329 @param systemTables The input data of SystemTablesDocument.SystemTables
332 public void setSystemTables(SystemTablesDocument
.SystemTables systemTables
) {
333 this.systemTables
= systemTables
;
337 Data validation for all fields
339 @retval true - All datas are valid
340 @retval false - At least one data is invalid
343 public boolean check() {
345 // Check if all required fields are not empty
347 if (isEmpty(this.jTextFieldEntry
.getText())) {
348 Log
.err("Entry couldn't be empty");
353 // Check if all fields have correct data types
355 if (!isEmpty(this.jTextFieldOverrideID
.getText())
356 && !DataValidation
.isOverrideID(this.jTextFieldOverrideID
.getText())) {
357 Log
.err("Incorrect data type for Override ID");
365 Save all components of SystemTables
366 if exists systemTables, set the value directly
367 if not exists systemTables, new an instance first
372 if (this.systemTables
== null) {
373 systemTables
= SystemTablesDocument
.SystemTables
.Factory
.newInstance();
375 SystemTablesDocument
.SystemTables
.SystemTable systemTable
= SystemTablesDocument
.SystemTables
.SystemTable
.Factory
377 systemTable
.setEntry(this.jTextFieldEntry
.getText());
379 systemTable
.setUsage(SystemTableUsage
.Enum
.forString(jComboBoxUsage
.getSelectedItem().toString()));
380 if (!isEmpty(this.jTextFieldOverrideID
.getText())) {
381 systemTable
.setOverrideID(Integer
.parseInt(this.jTextFieldOverrideID
.getText()));
384 systemTables
.setSystemTableArray(location
, systemTable
);
386 systemTables
.addNewSystemTable();
387 systemTables
.setSystemTableArray(systemTables
.getSystemTableList().size() - 1, systemTable
);
389 } catch (Exception e
) {
390 Log
.err("Update System Tables", e
.getMessage());