]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/ModuleEditor/src/org/tianocore/packaging/module/ui/ModuleSystemTables.java
Initial import.
[mirror_edk2.git] / Tools / Source / ModuleEditor / src / org / tianocore / packaging / module / ui / ModuleSystemTables.java
CommitLineData
878ddf1f 1/** @file\r
2\r
3 The file is used to create, update SystemTable of MSA/MBD file\r
4 \r
5 Copyright (c) 2006, Intel Corporation\r
6 All rights reserved. This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10 \r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13 \r
14 **/\r
15package org.tianocore.packaging.module.ui;\r
16\r
17import java.awt.event.ActionEvent;\r
18\r
19import javax.swing.JButton;\r
20import javax.swing.JComboBox;\r
21import javax.swing.JLabel;\r
22import javax.swing.JPanel;\r
23import javax.swing.JTextField;\r
24\r
25import org.tianocore.SystemTableUsage;\r
26import org.tianocore.SystemTablesDocument;\r
27import org.tianocore.common.DataValidation;\r
28import org.tianocore.common.Log;\r
29import org.tianocore.packaging.common.ui.IInternalFrame;\r
30import org.tianocore.packaging.common.ui.StarLabel;\r
31\r
32/**\r
33 The class is used to create, update SystemTable of MSA/MBD file\r
34 It extends IInternalFrame\r
35 \r
36 @since ModuleEditor 1.0\r
37\r
38 **/\r
39public class ModuleSystemTables extends IInternalFrame {\r
40\r
41 ///\r
42 /// Define class Serial Version UID\r
43 ///\r
44 private static final long serialVersionUID = 7488769180379442276L;\r
45\r
46 //\r
47 //Define class members\r
48 //\r
49 private SystemTablesDocument.SystemTables systemTables = null;\r
50\r
51 private int location = -1;\r
52\r
53 private JPanel jContentPane = null;\r
54\r
55 private JLabel jLabelEntry = null;\r
56\r
57 private JTextField jTextFieldEntry = null;\r
58\r
59 private JLabel jLabelUsage = null;\r
60\r
61 private JComboBox jComboBoxUsage = null;\r
62\r
63 private JButton jButtonOk = null;\r
64\r
65 private JButton jButtonCancel = null;\r
66\r
67 private JLabel jLabelOverrideID = null;\r
68\r
69 private JTextField jTextFieldOverrideID = null;\r
70\r
71 private StarLabel jStarLabel1 = null;\r
72\r
73 /**\r
74 This method initializes jTextFieldEntry \r
75 \r
76 @return javax.swing.JTextField jTextFieldEntry\r
77 \r
78 **/\r
79 private JTextField getJTextFieldEntry() {\r
80 if (jTextFieldEntry == null) {\r
81 jTextFieldEntry = new JTextField();\r
82 jTextFieldEntry.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
83 }\r
84 return jTextFieldEntry;\r
85 }\r
86\r
87 /**\r
88 This method initializes jComboBoxUsage \r
89 \r
90 @return javax.swing.JComboBox jComboBoxUsage\r
91 \r
92 **/\r
93 private JComboBox getJComboBoxUsage() {\r
94 if (jComboBoxUsage == null) {\r
95 jComboBoxUsage = new JComboBox();\r
96 jComboBoxUsage.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
97 }\r
98 return jComboBoxUsage;\r
99 }\r
100\r
101 /**\r
102 This method initializes jButtonOk \r
103 \r
104 @return javax.swing.JButton jButtonOk\r
105 \r
106 **/\r
107 private JButton getJButtonOk() {\r
108 if (jButtonOk == null) {\r
109 jButtonOk = new JButton();\r
110 jButtonOk.setText("OK");\r
111 jButtonOk.setBounds(new java.awt.Rectangle(280, 90, 90, 20));\r
112 jButtonOk.addActionListener(this);\r
113 }\r
114 return jButtonOk;\r
115 }\r
116\r
117 /**\r
118 This method initializes jButtonCancel \r
119 \r
120 @return javax.swing.JButton jButtonCancel\r
121 \r
122 **/\r
123 private JButton getJButtonCancel() {\r
124 if (jButtonCancel == null) {\r
125 jButtonCancel = new JButton();\r
126 jButtonCancel.setText("Cancel");\r
127 jButtonCancel.setBounds(new java.awt.Rectangle(390, 90, 90, 20));\r
128 jButtonCancel.addActionListener(this);\r
129 }\r
130 return jButtonCancel;\r
131 }\r
132\r
133 /**\r
134 This method initializes jTextFieldOverrideID \r
135 \r
136 @return javax.swing.JTextField jTextFieldOverrideID\r
137 \r
138 **/\r
139 private JTextField getJTextFieldOverrideID() {\r
140 if (jTextFieldOverrideID == null) {\r
141 jTextFieldOverrideID = new JTextField();\r
142 jTextFieldOverrideID.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
143 }\r
144 return jTextFieldOverrideID;\r
145 }\r
146\r
147 public static void main(String[] args) {\r
148\r
149 }\r
150\r
151 /**\r
152 This is the default constructor\r
153 \r
154 **/\r
155 public ModuleSystemTables() {\r
156 super();\r
157 init();\r
158 this.setVisible(true);\r
159 }\r
160\r
161 /**\r
162 This is the override edit constructor\r
163 \r
164 @param inSystemTables The input data of SystemTablesDocument.SystemTables\r
165 \r
166 **/\r
167 public ModuleSystemTables(SystemTablesDocument.SystemTables inSystemTables) {\r
168 super();\r
169 init(inSystemTables);\r
170 this.setVisible(true);\r
171 }\r
172\r
173 /**\r
174 This is the override edit constructor\r
175 \r
176 @param inSystemTables The input data of SystemTablesDocument.SystemTables\r
177 @param type The input data of node type\r
178 @param index The input data of node index\r
179 \r
180 **/\r
181 public ModuleSystemTables(SystemTablesDocument.SystemTables inSystemTables, int type, int index) {\r
182 super();\r
183 init(inSystemTables, type, index);\r
184 this.setVisible(true);\r
185 }\r
186\r
187 /**\r
188 This method initializes this\r
189 \r
190 @param inSystemTables The input data of SystemTablesDocument.SystemTables\r
191 \r
192 **/\r
193 private void init(SystemTablesDocument.SystemTables inSystemTables) {\r
194 init();\r
195 this.setSystemTables(inSystemTables);\r
196 }\r
197\r
198 /**\r
199 This method initializes this\r
200 Fill values to all fields if these values are not empty\r
201 \r
202 @param inSystemTables The input data of SystemTablesDocument.SystemTables\r
203 @param type The input data of node type\r
204 @param index The input data of node index\r
205 \r
206 **/\r
207 private void init(SystemTablesDocument.SystemTables inSystemTables, int type, int index) {\r
208 init(inSystemTables);\r
209 this.location = index;\r
210 if (this.systemTables.getSystemTableList().size() > 0) {\r
211 if (this.systemTables.getSystemTableArray(index).getEntry() != null) {\r
212 this.jTextFieldEntry.setText(this.systemTables.getSystemTableArray(index).getEntry());\r
213 }\r
214 if (this.systemTables.getSystemTableArray(index).getUsage() != null) {\r
215 this.jComboBoxUsage.setSelectedItem(this.systemTables.getSystemTableArray(index).getUsage().toString());\r
216 }\r
217 this.jTextFieldOverrideID.setText(String.valueOf(this.systemTables.getSystemTableArray(index)\r
218 .getOverrideID()));\r
219 }\r
220 }\r
221\r
222 /**\r
223 This method initializes this\r
224 \r
225 @return void\r
226 **/\r
227 private void init() {\r
228 this.setSize(500, 515);\r
229 this.setContentPane(getJContentPane());\r
230 this.setTitle("System Tables");\r
231 initFrame();\r
232 this.setViewMode(false);\r
233 }\r
234\r
235 /**\r
236 Disable all components when the mode is view\r
237 \r
238 @param isView true - The view mode; false - The non-view mode\r
239 \r
240 **/\r
241 public void setViewMode(boolean isView) {\r
242 this.jButtonOk.setVisible(false);\r
243 this.jButtonCancel.setVisible(false);\r
244 if (isView) {\r
245 this.jTextFieldEntry.setEnabled(!isView);\r
246 this.jComboBoxUsage.setEnabled(!isView);\r
247 this.jTextFieldOverrideID.setEnabled(!isView);\r
248 }\r
249 }\r
250\r
251 /**\r
252 This method initializes jContentPane\r
253 \r
254 @return javax.swing.JPanel jContentPane\r
255 \r
256 **/\r
257 private JPanel getJContentPane() {\r
258 if (jContentPane == null) {\r
259 jLabelOverrideID = new JLabel();\r
260 jLabelOverrideID.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
261 jLabelOverrideID.setText("Override ID");\r
262 jLabelUsage = new JLabel();\r
263 jLabelUsage.setText("Usage");\r
264 jLabelUsage.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
265 jLabelEntry = new JLabel();\r
266 jLabelEntry.setText("Entry");\r
267 jLabelEntry.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
268 jContentPane = new JPanel();\r
269 jContentPane.setLayout(null);\r
270 jContentPane.add(jLabelEntry, null);\r
271 jContentPane.add(getJTextFieldEntry(), null);\r
272 jContentPane.add(jLabelUsage, null);\r
273 jContentPane.add(getJComboBoxUsage(), null);\r
274 jContentPane.add(getJButtonOk(), null);\r
275 jContentPane.add(getJButtonCancel(), null);\r
276 jContentPane.add(jLabelOverrideID, null);\r
277 jContentPane.add(getJTextFieldOverrideID(), null);\r
278\r
279 jStarLabel1 = new StarLabel();\r
280 jStarLabel1.setBounds(new java.awt.Rectangle(0, 10, 10, 20));\r
281\r
282 jContentPane.add(jStarLabel1, null);\r
283 }\r
284 return jContentPane;\r
285 }\r
286\r
287 /**\r
288 This method initializes Usage type\r
289 \r
290 **/\r
291 private void initFrame() {\r
292 jComboBoxUsage.addItem("ALWAYS_CONSUMED");\r
293 jComboBoxUsage.addItem("SOMETIMES_CONSUMED");\r
294 jComboBoxUsage.addItem("ALWAYS_PRODUCED");\r
295 jComboBoxUsage.addItem("SOMETIMES_PRODUCED");\r
296 jComboBoxUsage.addItem("PRIVATE");\r
297 }\r
298\r
299 /* (non-Javadoc)\r
300 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
301 *\r
302 * Override actionPerformed to listen all actions\r
303 * \r
304 */\r
305 public void actionPerformed(ActionEvent arg0) {\r
306 if (arg0.getSource() == jButtonOk) {\r
307 this.setEdited(true);\r
308 this.save();\r
309 this.dispose();\r
310 }\r
311 if (arg0.getSource() == jButtonCancel) {\r
312 this.dispose();\r
313 }\r
314 }\r
315\r
316 /**\r
317 Get SystemTablesDocument.SystemTables\r
318 \r
319 @return SystemTablesDocument.SystemTables\r
320 \r
321 **/\r
322 public SystemTablesDocument.SystemTables getSystemTables() {\r
323 return systemTables;\r
324 }\r
325\r
326 /**\r
327 Set SystemTablesDocument.SystemTables\r
328 \r
329 @param systemTables The input data of SystemTablesDocument.SystemTables\r
330 \r
331 **/\r
332 public void setSystemTables(SystemTablesDocument.SystemTables systemTables) {\r
333 this.systemTables = systemTables;\r
334 }\r
335\r
336 /**\r
337 Data validation for all fields\r
338 \r
339 @retval true - All datas are valid\r
340 @retval false - At least one data is invalid\r
341 \r
342 **/\r
343 public boolean check() {\r
344 //\r
345 // Check if all required fields are not empty\r
346 //\r
347 if (isEmpty(this.jTextFieldEntry.getText())) {\r
348 Log.err("Entry couldn't be empty");\r
349 return false;\r
350 }\r
351\r
352 //\r
353 // Check if all fields have correct data types \r
354 //\r
355 if (!isEmpty(this.jTextFieldOverrideID.getText())\r
356 && !DataValidation.isOverrideID(this.jTextFieldOverrideID.getText())) {\r
357 Log.err("Incorrect data type for Override ID");\r
358 return false;\r
359 }\r
360\r
361 return true;\r
362 }\r
363\r
364 /**\r
365 Save all components of SystemTables\r
366 if exists systemTables, set the value directly\r
367 if not exists systemTables, new an instance first\r
368 \r
369 **/\r
370 public void save() {\r
371 try {\r
372 if (this.systemTables == null) {\r
373 systemTables = SystemTablesDocument.SystemTables.Factory.newInstance();\r
374 }\r
375 SystemTablesDocument.SystemTables.SystemTable systemTable = SystemTablesDocument.SystemTables.SystemTable.Factory\r
376 .newInstance();\r
377 systemTable.setEntry(this.jTextFieldEntry.getText());\r
378\r
379 systemTable.setUsage(SystemTableUsage.Enum.forString(jComboBoxUsage.getSelectedItem().toString()));\r
380 if (!isEmpty(this.jTextFieldOverrideID.getText())) {\r
381 systemTable.setOverrideID(Integer.parseInt(this.jTextFieldOverrideID.getText()));\r
382 }\r
383 if (location > -1) {\r
384 systemTables.setSystemTableArray(location, systemTable);\r
385 } else {\r
386 systemTables.addNewSystemTable();\r
387 systemTables.setSystemTableArray(systemTables.getSystemTableList().size() - 1, systemTable);\r
388 }\r
389 } catch (Exception e) {\r
390 Log.err("Update System Tables", e.getMessage());\r
391 }\r
392 }\r
393}\r