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