]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/ModuleEditor/src/org/tianocore/packaging/module/ui/ModuleFormsets.java
1. Modify start script to
[mirror_edk2.git] / Tools / Source / ModuleEditor / src / org / tianocore / packaging / module / ui / ModuleFormsets.java
CommitLineData
878ddf1f 1/** @file\r
2 \r
3 The file is used to create, update Formset 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.FormSetUsage;\r
26import org.tianocore.FormsetsDocument;\r
27import org.tianocore.common.DataValidation;\r
28import org.tianocore.common.Log;\r
29import org.tianocore.common.Tools;\r
30import org.tianocore.packaging.common.ui.IInternalFrame;\r
31import org.tianocore.packaging.common.ui.StarLabel;\r
32\r
33/**\r
34 The class is used to create, update Formset of MSA/MBD file\r
35 It extends IInternalFrame\r
36 \r
37 @since ModuleEditor 1.0\r
38\r
39 **/\r
40public class ModuleFormsets extends IInternalFrame {\r
41\r
42 ///\r
43 /// Define class Serial Version UID\r
44 ///\r
45 private static final long serialVersionUID = -6851574146786158116L;\r
46\r
47 //\r
48 //Define class members\r
49 //\r
50 private FormsetsDocument.Formsets formsets = null;\r
51\r
52 private int location = -1;\r
53\r
54 private JPanel jContentPane = null;\r
55\r
56 private JLabel jLabelName = null;\r
57\r
58 private JTextField jTextFieldName = null;\r
59\r
60 private JLabel jLabelGuid = null;\r
61\r
62 private JTextField jTextFieldGuid = null;\r
63\r
64 private JLabel jLabelUsage = null;\r
65\r
66 private JButton jButtonOk = null;\r
67\r
68 private JButton jButtonCancel = null;\r
69\r
70 private JComboBox jComboBoxUsage = null;\r
71\r
72 private JButton jButtonGenerateGuid = null;\r
73\r
74 private JLabel jLabelOverrideID = null;\r
75\r
76 private JTextField jTextFieldOverrideID = null;\r
77\r
78 private StarLabel jStarLabel1 = null;\r
79\r
80 /**\r
81 This method initializes jTextFieldName \r
82 \r
83 @return javax.swing.JTextField jTextFieldName\r
84 \r
85 **/\r
86 private JTextField getJTextFieldName() {\r
87 if (jTextFieldName == null) {\r
88 jTextFieldName = new JTextField();\r
89 jTextFieldName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
90 }\r
91 return jTextFieldName;\r
92 }\r
93\r
94 /**\r
95 This method initializes jTextFieldGuid \r
96 \r
97 @return javax.swing.JTextField jTextFieldGuid\r
98 \r
99 **/\r
100 private JTextField getJTextFieldGuid() {\r
101 if (jTextFieldGuid == null) {\r
102 jTextFieldGuid = new JTextField();\r
2a8b1c0a 103 jTextFieldGuid.setBounds(new java.awt.Rectangle(160, 35, 250, 20));\r
878ddf1f 104 }\r
105 return jTextFieldGuid;\r
106 }\r
107\r
108 /**\r
109 This method initializes jButtonOk \r
110 \r
111 @return javax.swing.JButton jButtonOk\r
112 \r
113 **/\r
114 private JButton getJButtonOk() {\r
115 if (jButtonOk == null) {\r
116 jButtonOk = new JButton();\r
117 jButtonOk.setText("OK");\r
118 jButtonOk.setBounds(new java.awt.Rectangle(280, 115, 90, 20));\r
119 jButtonOk.addActionListener(this);\r
120 }\r
121 return jButtonOk;\r
122 }\r
123\r
124 /**\r
125 This method initializes jButtonCancel \r
126 \r
127 @return javax.swing.JButton jButtonCancel\r
128 \r
129 **/\r
130 private JButton getJButtonCancel() {\r
131 if (jButtonCancel == null) {\r
132 jButtonCancel = new JButton();\r
133 jButtonCancel.setText("Cancel");\r
134 jButtonCancel.setBounds(new java.awt.Rectangle(390, 115, 90, 20));\r
135 jButtonCancel.addActionListener(this);\r
136 }\r
137 return jButtonCancel;\r
138 }\r
139\r
140 /**\r
141 This method initializes jComboBoxUsage \r
142 \r
143 @return javax.swing.JComboBox jComboBoxUsage\r
144 \r
145 **/\r
146 private JComboBox getJComboBoxUsage() {\r
147 if (jComboBoxUsage == null) {\r
148 jComboBoxUsage = new JComboBox();\r
149 jComboBoxUsage.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
150 }\r
151 return jComboBoxUsage;\r
152 }\r
153\r
154 /**\r
155 This method initializes jButtonGenerateGuid \r
156 \r
157 @return javax.swing.JButton jButtonGenerateGuid\r
158 \r
159 **/\r
160 private JButton getJButtonGenerateGuid() {\r
161 if (jButtonGenerateGuid == null) {\r
162 jButtonGenerateGuid = new JButton();\r
2a8b1c0a 163 jButtonGenerateGuid.setBounds(new java.awt.Rectangle(415, 35, 65, 20));\r
878ddf1f 164 jButtonGenerateGuid.setText("GEN");\r
165 jButtonGenerateGuid.addActionListener(this);\r
166 }\r
167 return jButtonGenerateGuid;\r
168 }\r
169\r
170 /**\r
171 This method initializes jTextFieldOverrideID \r
172 \r
173 @return javax.swing.JTextField jTextFieldOverrideID\r
174 \r
175 **/\r
176 private JTextField getJTextFieldOverrideID() {\r
177 if (jTextFieldOverrideID == null) {\r
178 jTextFieldOverrideID = new JTextField();\r
2a8b1c0a 179 jTextFieldOverrideID.setBounds(new java.awt.Rectangle(160, 85, 50, 20));\r
878ddf1f 180 }\r
181 return jTextFieldOverrideID;\r
182 }\r
183\r
184 public static void main(String[] args) {\r
185\r
186 }\r
187\r
188 /**\r
189 This is the default constructor\r
190 \r
191 **/\r
192 public ModuleFormsets() {\r
193 super();\r
194 init();\r
195 this.setVisible(true);\r
196 }\r
197\r
198 /**\r
199 * \r
200 */\r
201 /**\r
202 This is the override edit constructor\r
203 \r
204 @param inFormsets The input data of FormsetsDocument.Formsets\r
205 \r
206 **/\r
207 public ModuleFormsets(FormsetsDocument.Formsets inFormsets) {\r
208 super();\r
209 init(inFormsets);\r
210 this.setVisible(true);\r
211 }\r
212\r
213 /**\r
214 This is the override edit constructor\r
215 \r
216 @param inFormsets The input data of FormsetsDocument.Formsets\r
217 @param type The input data of node type\r
218 @param index The input data of node index\r
219 \r
220 **/\r
221 public ModuleFormsets(FormsetsDocument.Formsets inFormsets, int type, int index) {\r
222 super();\r
223 init(inFormsets, type, index);\r
224 this.setVisible(true);\r
225 }\r
226\r
227 /**\r
228 This method initializes this\r
229 \r
230 @param inFormsets The input data of FormsetsDocument.Formsets\r
231 \r
232 **/\r
233 private void init(FormsetsDocument.Formsets inFormsets) {\r
234 init();\r
235 this.setFormsets(inFormsets);\r
236 }\r
237\r
238 /**\r
239 This method initializes this\r
240 Fill values to all fields if these values are not empty\r
241 \r
242 @param inFormsets The input data of FormsetsDocument.Formsets\r
243 @param type The input data of node type\r
244 @param index The input data of node index\r
245 \r
246 **/\r
247 private void init(FormsetsDocument.Formsets inFormsets, int type, int index) {\r
248 init(inFormsets);\r
249 this.location = index;\r
250 if (this.formsets.getFormsetList().size() > 0) {\r
251 if (this.formsets.getFormsetArray(index).getStringValue() != null) {\r
252 this.jTextFieldName.setText(this.formsets.getFormsetArray(index).getStringValue().toString());\r
253 }\r
254 if (this.formsets.getFormsetArray(index).getGuid() != null) {\r
255 this.jTextFieldGuid.setText(this.formsets.getFormsetArray(index).getGuid());\r
256 }\r
257 if (this.formsets.getFormsetArray(index).getUsage() != null) {\r
258 this.jComboBoxUsage.setSelectedItem(this.formsets.getFormsetArray(index).getUsage().toString());\r
259 }\r
260 this.jTextFieldOverrideID.setText(String.valueOf(this.formsets.getFormsetArray(index).getOverrideID()));\r
261 }\r
262 }\r
263\r
264 /**\r
265 This method initializes this\r
266 \r
267 **/\r
268 private void init() {\r
269 this.setContentPane(getJContentPane());\r
270 this.setTitle("Form Sets");\r
271 this.setBounds(new java.awt.Rectangle(0, 0, 500, 515));\r
272 initFrame();\r
273 this.setViewMode(false);\r
274 }\r
275\r
276 /**\r
277 Disable all components when the mode is view\r
278 \r
279 @param isView true - The view mode; false - The non-view mode\r
280 \r
281 **/\r
282 public void setViewMode(boolean isView) {\r
283 this.jButtonOk.setVisible(false);\r
284 this.jButtonCancel.setVisible(false);\r
285 if (isView) {\r
286 this.jTextFieldName.setEnabled(!isView);\r
287 this.jTextFieldGuid.setEnabled(!isView);\r
288 this.jComboBoxUsage.setEnabled(!isView);\r
289 this.jTextFieldOverrideID.setEnabled(!isView);\r
290 this.jButtonCancel.setEnabled(!isView);\r
291 this.jButtonGenerateGuid.setEnabled(!isView);\r
292 this.jButtonOk.setEnabled(!isView);\r
293 }\r
294 }\r
295\r
296 /**\r
297 This method initializes jContentPane\r
298 \r
299 @return javax.swing.JPanel jContentPane\r
300 \r
301 **/\r
302 private JPanel getJContentPane() {\r
303 if (jContentPane == null) {\r
304 jLabelOverrideID = new JLabel();\r
305 jLabelOverrideID.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
306 jLabelOverrideID.setText("Override ID");\r
307 jLabelUsage = new JLabel();\r
308 jLabelUsage.setText("Usage");\r
309 jLabelUsage.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
310 jLabelGuid = new JLabel();\r
311 jLabelGuid.setText("Guid");\r
312 jLabelGuid.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
313 jLabelName = new JLabel();\r
314 jLabelName.setText("Name");\r
315 jLabelName.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
316 jContentPane = new JPanel();\r
317 jContentPane.setLayout(null);\r
318 jContentPane.add(jLabelName, null);\r
319 jContentPane.add(getJTextFieldName(), null);\r
320 jContentPane.add(jLabelGuid, null);\r
321 jContentPane.add(getJTextFieldGuid(), null);\r
322 jContentPane.add(jLabelUsage, null);\r
323 jContentPane.add(getJButtonOk(), null);\r
324 jContentPane.add(getJButtonCancel(), null);\r
325 jContentPane.add(getJComboBoxUsage(), null);\r
326 jContentPane.add(getJButtonGenerateGuid(), null);\r
327 jContentPane.add(jLabelOverrideID, null);\r
328 jContentPane.add(getJTextFieldOverrideID(), null);\r
329\r
330 jStarLabel1 = new StarLabel();\r
331 jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
332\r
333 jContentPane.add(jStarLabel1, null);\r
334 }\r
335 return jContentPane;\r
336 }\r
337\r
338 /**\r
339 This method initializes Usage type\r
340 \r
341 **/\r
342 private void initFrame() {\r
343 jComboBoxUsage.addItem("ALWAYS_PRODUCED");\r
344 jComboBoxUsage.addItem("SOMETIMES_PRODUCED");\r
345 jComboBoxUsage.addItem("PRIVATE");\r
346 }\r
347\r
348 /* (non-Javadoc)\r
349 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
350 *\r
351 * Override actionPerformed to listen all actions\r
352 * \r
353 */\r
354 public void actionPerformed(ActionEvent arg0) {\r
355 if (arg0.getSource() == jButtonOk) {\r
356 this.setEdited(true);\r
357 this.save();\r
358 this.dispose();\r
359 }\r
360 if (arg0.getSource() == jButtonCancel) {\r
361 this.dispose();\r
362 }\r
363\r
364 if (arg0.getSource() == jButtonGenerateGuid) {\r
365 jTextFieldGuid.setText(Tools.generateUuidString());\r
366 }\r
367 }\r
368\r
369 /**\r
370 Set FormsetsDocument.Formsets\r
371 \r
372 @return FormsetsDocument.Formsets\r
373 \r
374 **/\r
375 public FormsetsDocument.Formsets getFormsets() {\r
376 return formsets;\r
377 }\r
378\r
379 /**\r
380 Get FormsetsDocument.Formsets\r
381 \r
382 @param formsets The input FormsetsDocument.Formsets\r
383 \r
384 **/\r
385 public void setFormsets(FormsetsDocument.Formsets formsets) {\r
386 this.formsets = formsets;\r
387 }\r
388\r
389 /**\r
390 Data validation for all fields\r
391 \r
392 @retval true - All datas are valid\r
393 @retval false - At least one data is invalid\r
394 \r
395 **/\r
396 public boolean check() {\r
397 //\r
398 // Check if all required fields are not empty\r
399 //\r
400 if (isEmpty(this.jTextFieldName.getText())) {\r
401 Log.err("Name couldn't be empty");\r
402 return false;\r
403 }\r
404\r
405 //\r
406 // Check if all fields have correct data types \r
407 //\r
408 if (!DataValidation.isCName(this.jTextFieldName.getText())) {\r
409 Log.err("Incorrect data type for Name");\r
410 return false;\r
411 }\r
412 if (!isEmpty(this.jTextFieldGuid.getText()) && !DataValidation.isGuid(this.jTextFieldGuid.getText())) {\r
413 Log.err("Incorrect data type for Guid");\r
414 return false;\r
415 }\r
416 if (!isEmpty(this.jTextFieldOverrideID.getText())\r
417 && !DataValidation.isOverrideID(this.jTextFieldOverrideID.getText())) {\r
418 Log.err("Incorrect data type for Override ID");\r
419 return false;\r
420 }\r
421\r
422 return true;\r
423 }\r
424\r
425 /**\r
426 Save all components of Formsets\r
427 if exists formset, set the value directly\r
428 if not exists formset, new an instance first\r
429 \r
430 **/\r
431 public void save() {\r
432 try {\r
433 if (this.formsets == null) {\r
434 formsets = FormsetsDocument.Formsets.Factory.newInstance();\r
435 }\r
436 FormsetsDocument.Formsets.Formset formset = FormsetsDocument.Formsets.Formset.Factory.newInstance();\r
437 if (!isEmpty(this.jTextFieldName.getText())) {\r
438 formset.setStringValue(this.jTextFieldName.getText());\r
439 }\r
440 if (!isEmpty(this.jTextFieldGuid.getText())) {\r
441 formset.setGuid(this.jTextFieldGuid.getText());\r
442 }\r
443 formset.setUsage(FormSetUsage.Enum.forString(jComboBoxUsage.getSelectedItem().toString()));\r
444 if (!isEmpty(this.jTextFieldOverrideID.getText())) {\r
445 formset.setOverrideID(Integer.parseInt(this.jTextFieldOverrideID.getText()));\r
446 }\r
447 if (location > -1) {\r
448 formsets.setFormsetArray(location, formset);\r
449 } else {\r
450 formsets.addNewFormset();\r
451 formsets.setFormsetArray(formsets.getFormsetList().size() - 1, formset);\r
452 }\r
453 } catch (Exception e) {\r
454 Log.err("Update Formsets", e.getMessage());\r
455 }\r
456 }\r
457}\r