]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/Source/ModuleEditor/src/org/tianocore/packaging/module/ui/ModuleSystemTables.java
aff195ea5b5f4633a911774e4e7fe66e6ba3447a
[mirror_edk2.git] / Tools / Source / ModuleEditor / src / org / tianocore / packaging / module / ui / ModuleSystemTables.java
1 /** @file
2
3 The file is used to create, update SystemTable of MSA/MBD file
4
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
10
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.
13
14 **/
15 package org.tianocore.packaging.module.ui;
16
17 import java.awt.event.ActionEvent;
18
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;
24
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;
31
32 /**
33 The class is used to create, update SystemTable of MSA/MBD file
34 It extends IInternalFrame
35
36 @since ModuleEditor 1.0
37
38 **/
39 public class ModuleSystemTables extends IInternalFrame {
40
41 ///
42 /// Define class Serial Version UID
43 ///
44 private static final long serialVersionUID = 7488769180379442276L;
45
46 //
47 //Define class members
48 //
49 private SystemTablesDocument.SystemTables systemTables = null;
50
51 private int location = -1;
52
53 private JPanel jContentPane = null;
54
55 private JLabel jLabelEntry = null;
56
57 private JTextField jTextFieldEntry = null;
58
59 private JLabel jLabelUsage = null;
60
61 private JComboBox jComboBoxUsage = null;
62
63 private JButton jButtonOk = null;
64
65 private JButton jButtonCancel = null;
66
67 private JLabel jLabelOverrideID = null;
68
69 private JTextField jTextFieldOverrideID = null;
70
71 private StarLabel jStarLabel1 = null;
72
73 /**
74 This method initializes jTextFieldEntry
75
76 @return javax.swing.JTextField jTextFieldEntry
77
78 **/
79 private JTextField getJTextFieldEntry() {
80 if (jTextFieldEntry == null) {
81 jTextFieldEntry = new JTextField();
82 jTextFieldEntry.setBounds(new java.awt.Rectangle(160, 10, 320, 20));
83 }
84 return jTextFieldEntry;
85 }
86
87 /**
88 This method initializes jComboBoxUsage
89
90 @return javax.swing.JComboBox jComboBoxUsage
91
92 **/
93 private JComboBox getJComboBoxUsage() {
94 if (jComboBoxUsage == null) {
95 jComboBoxUsage = new JComboBox();
96 jComboBoxUsage.setBounds(new java.awt.Rectangle(160, 35, 320, 20));
97 }
98 return jComboBoxUsage;
99 }
100
101 /**
102 This method initializes jButtonOk
103
104 @return javax.swing.JButton jButtonOk
105
106 **/
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);
113 }
114 return jButtonOk;
115 }
116
117 /**
118 This method initializes jButtonCancel
119
120 @return javax.swing.JButton jButtonCancel
121
122 **/
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);
129 }
130 return jButtonCancel;
131 }
132
133 /**
134 This method initializes jTextFieldOverrideID
135
136 @return javax.swing.JTextField jTextFieldOverrideID
137
138 **/
139 private JTextField getJTextFieldOverrideID() {
140 if (jTextFieldOverrideID == null) {
141 jTextFieldOverrideID = new JTextField();
142 jTextFieldOverrideID.setBounds(new java.awt.Rectangle(160, 60, 50, 20));
143 }
144 return jTextFieldOverrideID;
145 }
146
147 public static void main(String[] args) {
148
149 }
150
151 /**
152 This is the default constructor
153
154 **/
155 public ModuleSystemTables() {
156 super();
157 init();
158 this.setVisible(true);
159 }
160
161 /**
162 This is the override edit constructor
163
164 @param inSystemTables The input data of SystemTablesDocument.SystemTables
165
166 **/
167 public ModuleSystemTables(SystemTablesDocument.SystemTables inSystemTables) {
168 super();
169 init(inSystemTables);
170 this.setVisible(true);
171 }
172
173 /**
174 This is the override edit constructor
175
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
179
180 **/
181 public ModuleSystemTables(SystemTablesDocument.SystemTables inSystemTables, int type, int index) {
182 super();
183 init(inSystemTables, type, index);
184 this.setVisible(true);
185 }
186
187 /**
188 This method initializes this
189
190 @param inSystemTables The input data of SystemTablesDocument.SystemTables
191
192 **/
193 private void init(SystemTablesDocument.SystemTables inSystemTables) {
194 init();
195 this.setSystemTables(inSystemTables);
196 }
197
198 /**
199 This method initializes this
200 Fill values to all fields if these values are not empty
201
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
205
206 **/
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());
213 }
214 if (this.systemTables.getSystemTableArray(index).getUsage() != null) {
215 this.jComboBoxUsage.setSelectedItem(this.systemTables.getSystemTableArray(index).getUsage().toString());
216 }
217 this.jTextFieldOverrideID.setText(String.valueOf(this.systemTables.getSystemTableArray(index)
218 .getOverrideID()));
219 }
220 }
221
222 /**
223 This method initializes this
224
225 @return void
226 **/
227 private void init() {
228 this.setSize(500, 515);
229 this.setContentPane(getJContentPane());
230 this.setTitle("System Tables");
231 initFrame();
232 this.setViewMode(false);
233 }
234
235 /**
236 Disable all components when the mode is view
237
238 @param isView true - The view mode; false - The non-view mode
239
240 **/
241 public void setViewMode(boolean isView) {
242 this.jButtonOk.setVisible(false);
243 this.jButtonCancel.setVisible(false);
244 if (isView) {
245 this.jTextFieldEntry.setEnabled(!isView);
246 this.jComboBoxUsage.setEnabled(!isView);
247 this.jTextFieldOverrideID.setEnabled(!isView);
248 }
249 }
250
251 /**
252 This method initializes jContentPane
253
254 @return javax.swing.JPanel jContentPane
255
256 **/
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);
278
279 jStarLabel1 = new StarLabel();
280 jStarLabel1.setBounds(new java.awt.Rectangle(0, 10, 10, 20));
281
282 jContentPane.add(jStarLabel1, null);
283 }
284 return jContentPane;
285 }
286
287 /**
288 This method initializes Usage type
289
290 **/
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");
297 }
298
299 /* (non-Javadoc)
300 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
301 *
302 * Override actionPerformed to listen all actions
303 *
304 */
305 public void actionPerformed(ActionEvent arg0) {
306 if (arg0.getSource() == jButtonOk) {
307 this.setEdited(true);
308 this.save();
309 this.dispose();
310 }
311 if (arg0.getSource() == jButtonCancel) {
312 this.dispose();
313 }
314 }
315
316 /**
317 Get SystemTablesDocument.SystemTables
318
319 @return SystemTablesDocument.SystemTables
320
321 **/
322 public SystemTablesDocument.SystemTables getSystemTables() {
323 return systemTables;
324 }
325
326 /**
327 Set SystemTablesDocument.SystemTables
328
329 @param systemTables The input data of SystemTablesDocument.SystemTables
330
331 **/
332 public void setSystemTables(SystemTablesDocument.SystemTables systemTables) {
333 this.systemTables = systemTables;
334 }
335
336 /**
337 Data validation for all fields
338
339 @retval true - All datas are valid
340 @retval false - At least one data is invalid
341
342 **/
343 public boolean check() {
344 //
345 // Check if all required fields are not empty
346 //
347 if (isEmpty(this.jTextFieldEntry.getText())) {
348 Log.err("Entry couldn't be empty");
349 return false;
350 }
351
352 //
353 // Check if all fields have correct data types
354 //
355 if (!isEmpty(this.jTextFieldOverrideID.getText())
356 && !DataValidation.isOverrideID(this.jTextFieldOverrideID.getText())) {
357 Log.err("Incorrect data type for Override ID");
358 return false;
359 }
360
361 return true;
362 }
363
364 /**
365 Save all components of SystemTables
366 if exists systemTables, set the value directly
367 if not exists systemTables, new an instance first
368
369 **/
370 public void save() {
371 try {
372 if (this.systemTables == null) {
373 systemTables = SystemTablesDocument.SystemTables.Factory.newInstance();
374 }
375 SystemTablesDocument.SystemTables.SystemTable systemTable = SystemTablesDocument.SystemTables.SystemTable.Factory
376 .newInstance();
377 systemTable.setEntry(this.jTextFieldEntry.getText());
378
379 systemTable.setUsage(SystemTableUsage.Enum.forString(jComboBoxUsage.getSelectedItem().toString()));
380 if (!isEmpty(this.jTextFieldOverrideID.getText())) {
381 systemTable.setOverrideID(Integer.parseInt(this.jTextFieldOverrideID.getText()));
382 }
383 if (location > -1) {
384 systemTables.setSystemTableArray(location, systemTable);
385 } else {
386 systemTables.addNewSystemTable();
387 systemTables.setSystemTableArray(systemTables.getSystemTableList().size() - 1, systemTable);
388 }
389 } catch (Exception e) {
390 Log.err("Update System Tables", e.getMessage());
391 }
392 }
393 }