3 The file is used to create, update Formset 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
.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
;
34 The class is used to create, update Formset of MSA/MBD file
35 It extends IInternalFrame
37 @since ModuleEditor 1.0
40 public class ModuleFormsets
extends IInternalFrame
{
43 /// Define class Serial Version UID
45 private static final long serialVersionUID
= -6851574146786158116L;
48 //Define class members
50 private FormsetsDocument
.Formsets formsets
= null;
52 private int location
= -1;
54 private JPanel jContentPane
= null;
56 private JLabel jLabelName
= null;
58 private JTextField jTextFieldName
= null;
60 private JLabel jLabelGuid
= null;
62 private JTextField jTextFieldGuid
= null;
64 private JLabel jLabelUsage
= null;
66 private JButton jButtonOk
= null;
68 private JButton jButtonCancel
= null;
70 private JComboBox jComboBoxUsage
= null;
72 private JButton jButtonGenerateGuid
= null;
74 private JLabel jLabelOverrideID
= null;
76 private JTextField jTextFieldOverrideID
= null;
78 private StarLabel jStarLabel1
= null;
81 This method initializes jTextFieldName
83 @return javax.swing.JTextField jTextFieldName
86 private JTextField
getJTextFieldName() {
87 if (jTextFieldName
== null) {
88 jTextFieldName
= new JTextField();
89 jTextFieldName
.setBounds(new java
.awt
.Rectangle(160, 10, 320, 20));
91 return jTextFieldName
;
95 This method initializes jTextFieldGuid
97 @return javax.swing.JTextField jTextFieldGuid
100 private JTextField
getJTextFieldGuid() {
101 if (jTextFieldGuid
== null) {
102 jTextFieldGuid
= new JTextField();
103 jTextFieldGuid
.setBounds(new java
.awt
.Rectangle(160, 35, 240, 20));
105 return jTextFieldGuid
;
109 This method initializes jButtonOk
111 @return javax.swing.JButton jButtonOk
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);
125 This method initializes jButtonCancel
127 @return javax.swing.JButton jButtonCancel
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);
137 return jButtonCancel
;
141 This method initializes jComboBoxUsage
143 @return javax.swing.JComboBox jComboBoxUsage
146 private JComboBox
getJComboBoxUsage() {
147 if (jComboBoxUsage
== null) {
148 jComboBoxUsage
= new JComboBox();
149 jComboBoxUsage
.setBounds(new java
.awt
.Rectangle(160, 60, 320, 20));
151 return jComboBoxUsage
;
155 This method initializes jButtonGenerateGuid
157 @return javax.swing.JButton jButtonGenerateGuid
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);
167 return jButtonGenerateGuid
;
171 This method initializes jTextFieldOverrideID
173 @return javax.swing.JTextField jTextFieldOverrideID
176 private JTextField
getJTextFieldOverrideID() {
177 if (jTextFieldOverrideID
== null) {
178 jTextFieldOverrideID
= new JTextField();
179 jTextFieldOverrideID
.setBounds(new java
.awt
.Rectangle(160, 85, 320, 20));
181 return jTextFieldOverrideID
;
184 public static void main(String
[] args
) {
189 This is the default constructor
192 public ModuleFormsets() {
195 this.setVisible(true);
202 This is the override edit constructor
204 @param inFormsets The input data of FormsetsDocument.Formsets
207 public ModuleFormsets(FormsetsDocument
.Formsets inFormsets
) {
210 this.setVisible(true);
214 This is the override edit constructor
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
221 public ModuleFormsets(FormsetsDocument
.Formsets inFormsets
, int type
, int index
) {
223 init(inFormsets
, type
, index
);
224 this.setVisible(true);
228 This method initializes this
230 @param inFormsets The input data of FormsetsDocument.Formsets
233 private void init(FormsetsDocument
.Formsets inFormsets
) {
235 this.setFormsets(inFormsets
);
239 This method initializes this
240 Fill values to all fields if these values are not empty
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
247 private void init(FormsetsDocument
.Formsets inFormsets
, int type
, int index
) {
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());
254 if (this.formsets
.getFormsetArray(index
).getGuid() != null) {
255 this.jTextFieldGuid
.setText(this.formsets
.getFormsetArray(index
).getGuid());
257 if (this.formsets
.getFormsetArray(index
).getUsage() != null) {
258 this.jComboBoxUsage
.setSelectedItem(this.formsets
.getFormsetArray(index
).getUsage().toString());
260 this.jTextFieldOverrideID
.setText(String
.valueOf(this.formsets
.getFormsetArray(index
).getOverrideID()));
265 This method initializes this
268 private void init() {
269 this.setContentPane(getJContentPane());
270 this.setTitle("Form Sets");
271 this.setBounds(new java
.awt
.Rectangle(0, 0, 500, 515));
273 this.setViewMode(false);
277 Disable all components when the mode is view
279 @param isView true - The view mode; false - The non-view mode
282 public void setViewMode(boolean isView
) {
283 this.jButtonOk
.setVisible(false);
284 this.jButtonCancel
.setVisible(false);
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
);
297 This method initializes jContentPane
299 @return javax.swing.JPanel jContentPane
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);
330 jStarLabel1
= new StarLabel();
331 jStarLabel1
.setLocation(new java
.awt
.Point(0, 10));
333 jContentPane
.add(jStarLabel1
, null);
339 This method initializes Usage type
342 private void initFrame() {
343 jComboBoxUsage
.addItem("ALWAYS_PRODUCED");
344 jComboBoxUsage
.addItem("SOMETIMES_PRODUCED");
345 jComboBoxUsage
.addItem("PRIVATE");
349 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
351 * Override actionPerformed to listen all actions
354 public void actionPerformed(ActionEvent arg0
) {
355 if (arg0
.getSource() == jButtonOk
) {
356 this.setEdited(true);
360 if (arg0
.getSource() == jButtonCancel
) {
364 if (arg0
.getSource() == jButtonGenerateGuid
) {
365 jTextFieldGuid
.setText(Tools
.generateUuidString());
370 Set FormsetsDocument.Formsets
372 @return FormsetsDocument.Formsets
375 public FormsetsDocument
.Formsets
getFormsets() {
380 Get FormsetsDocument.Formsets
382 @param formsets The input FormsetsDocument.Formsets
385 public void setFormsets(FormsetsDocument
.Formsets formsets
) {
386 this.formsets
= formsets
;
390 Data validation for all fields
392 @retval true - All datas are valid
393 @retval false - At least one data is invalid
396 public boolean check() {
398 // Check if all required fields are not empty
400 if (isEmpty(this.jTextFieldName
.getText())) {
401 Log
.err("Name couldn't be empty");
406 // Check if all fields have correct data types
408 if (!DataValidation
.isCName(this.jTextFieldName
.getText())) {
409 Log
.err("Incorrect data type for Name");
412 if (!isEmpty(this.jTextFieldGuid
.getText()) && !DataValidation
.isGuid(this.jTextFieldGuid
.getText())) {
413 Log
.err("Incorrect data type for Guid");
416 if (!isEmpty(this.jTextFieldOverrideID
.getText())
417 && !DataValidation
.isOverrideID(this.jTextFieldOverrideID
.getText())) {
418 Log
.err("Incorrect data type for Override ID");
426 Save all components of Formsets
427 if exists formset, set the value directly
428 if not exists formset, new an instance first
433 if (this.formsets
== null) {
434 formsets
= FormsetsDocument
.Formsets
.Factory
.newInstance();
436 FormsetsDocument
.Formsets
.Formset formset
= FormsetsDocument
.Formsets
.Formset
.Factory
.newInstance();
437 if (!isEmpty(this.jTextFieldName
.getText())) {
438 formset
.setStringValue(this.jTextFieldName
.getText());
440 if (!isEmpty(this.jTextFieldGuid
.getText())) {
441 formset
.setGuid(this.jTextFieldGuid
.getText());
443 formset
.setUsage(FormSetUsage
.Enum
.forString(jComboBoxUsage
.getSelectedItem().toString()));
444 if (!isEmpty(this.jTextFieldOverrideID
.getText())) {
445 formset
.setOverrideID(Integer
.parseInt(this.jTextFieldOverrideID
.getText()));
448 formsets
.setFormsetArray(location
, formset
);
450 formsets
.addNewFormset();
451 formsets
.setFormsetArray(formsets
.getFormsetList().size() - 1, formset
);
453 } catch (Exception e
) {
454 Log
.err("Update Formsets", e
.getMessage());