3 The file is used to create, update DataHub 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.
16 package org
.tianocore
.packaging
.module
.ui
;
18 import java
.awt
.event
.ActionEvent
;
20 import javax
.swing
.JButton
;
21 import javax
.swing
.JComboBox
;
22 import javax
.swing
.JLabel
;
23 import javax
.swing
.JPanel
;
24 import javax
.swing
.JTextField
;
26 import org
.tianocore
.DataHubUsage
;
27 import org
.tianocore
.DataHubsDocument
;
28 import org
.tianocore
.common
.DataValidation
;
29 import org
.tianocore
.common
.Log
;
30 import org
.tianocore
.common
.Tools
;
31 import org
.tianocore
.packaging
.common
.ui
.IInternalFrame
;
32 import org
.tianocore
.packaging
.common
.ui
.StarLabel
;
35 The class is used to create, update DataHub of MSA/MBD file
36 It extends IInternalFrame
38 @since ModuleEditor 1.0
41 public class ModuleDataHubs
extends IInternalFrame
{
44 /// Define class Serial Version UID
46 private static final long serialVersionUID
= -3667906991966638892L;
49 //Define class members
51 private DataHubsDocument
.DataHubs dataHubs
= null;
53 private int location
= -1;
55 private JPanel jContentPane
= null;
57 private JLabel jLabelGuid
= null;
59 private JTextField jTextFieldGuid
= null;
61 private JLabel jLabelUsage
= null;
63 private JComboBox jComboBoxUsage
= null;
65 private JButton jButtonOk
= null;
67 private JButton jButtonCancel
= null;
69 private JLabel jLabelDataHubRecord
= null;
71 private JTextField jTextFieldDataHubRecord
= null;
73 private JButton jButtonGenerateGuid
= null;
75 private JLabel jLabelOverrideID
= null;
77 private JTextField jTextFieldOverrideID
= null;
79 private StarLabel jStarLabel1
= null;
82 This method initializes jTextFieldGuid
84 @return javax.swing.JTextField jTextFieldGuid
87 private JTextField
getJTextFieldGuid() {
88 if (jTextFieldGuid
== null) {
89 jTextFieldGuid
= new JTextField();
90 jTextFieldGuid
.setBounds(new java
.awt
.Rectangle(160, 35, 250, 20));
92 return jTextFieldGuid
;
96 This method initializes jComboBoxUsage
98 @return javax.swing.JComboBox jComboBoxUsage
101 private JComboBox
getJComboBoxUsage() {
102 if (jComboBoxUsage
== null) {
103 jComboBoxUsage
= new JComboBox();
104 jComboBoxUsage
.setBounds(new java
.awt
.Rectangle(160, 60, 320, 20));
106 return jComboBoxUsage
;
110 This method initializes jButtonOk
112 @return javax.swing.JButton jButtonOk
115 private JButton
getJButtonOk() {
116 if (jButtonOk
== null) {
117 jButtonOk
= new JButton();
118 jButtonOk
.setText("OK");
119 jButtonOk
.setBounds(new java
.awt
.Rectangle(280, 115, 90, 20));
120 jButtonOk
.addActionListener(this);
126 This method initializes jButtonCancel
128 @return javax.swing.JButton jButtonCancel
131 private JButton
getJButtonCancel() {
132 if (jButtonCancel
== null) {
133 jButtonCancel
= new JButton();
134 jButtonCancel
.setText("Cancel");
135 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390, 115, 90, 20));
136 jButtonCancel
.addActionListener(this);
138 return jButtonCancel
;
142 This method initializes jTextFieldDataHubRecord
144 @return javax.swing.JTextField jTextFieldDataHubRecord
147 private JTextField
getJTextFieldDataHubRecord() {
148 if (jTextFieldDataHubRecord
== null) {
149 jTextFieldDataHubRecord
= new JTextField();
150 jTextFieldDataHubRecord
.setBounds(new java
.awt
.Rectangle(160, 10, 320, 20));
152 return jTextFieldDataHubRecord
;
156 This method initializes jButtonGenerateGuid
158 @return javax.swing.JButton jButtonGenerateGuid
161 private JButton
getJButtonGenerateGuid() {
162 if (jButtonGenerateGuid
== null) {
163 jButtonGenerateGuid
= new JButton();
164 jButtonGenerateGuid
.setBounds(new java
.awt
.Rectangle(415, 35, 65, 20));
165 jButtonGenerateGuid
.setText("GEN");
166 jButtonGenerateGuid
.addActionListener(this);
168 return jButtonGenerateGuid
;
172 This method initializes jTextFieldOverrideID
174 @return javax.swing.JTextField jTextFieldOverrideID
177 private JTextField
getJTextFieldOverrideID() {
178 if (jTextFieldOverrideID
== null) {
179 jTextFieldOverrideID
= new JTextField();
180 jTextFieldOverrideID
.setBounds(new java
.awt
.Rectangle(160, 85, 50, 20));
182 return jTextFieldOverrideID
;
185 public static void main(String
[] args
) {
190 This is the default constructor
193 public ModuleDataHubs() {
196 this.setVisible(true);
200 This is the override edit constructor
202 @param inDataHubs The input DataHubsDocument.DataHubs
205 public ModuleDataHubs(DataHubsDocument
.DataHubs inDataHubs
) {
208 this.setVisible(true);
212 This is the override edit constructor
214 @param inDataHubs DataHubsDocument.DataHubs
215 @param type The input data of node type
216 @param index The input data of node index
219 public ModuleDataHubs(DataHubsDocument
.DataHubs inDataHubs
, int type
, int index
) {
221 init(inDataHubs
, type
, index
);
222 this.setVisible(true);
226 This method initializes this
228 @param inDataHubs The input DataHubsDocument.DataHubs
231 private void init(DataHubsDocument
.DataHubs inDataHubs
) {
233 this.setDataHubs(inDataHubs
);
237 This method initializes this
238 Fill values to all fields if these values are not empty
240 @param inDataHubs The input DataHubsDocument.DataHubs
241 @param type The input data of node type
242 @param index The input data of node index
245 private void init(DataHubsDocument
.DataHubs inDataHubs
, int type
, int index
) {
247 this.location
= index
;
248 if (this.dataHubs
.getDataHubRecordList().size() > 0) {
249 if (this.dataHubs
.getDataHubRecordArray(index
).getStringValue() != null) {
250 this.jTextFieldDataHubRecord
.setText(this.dataHubs
.getDataHubRecordArray(index
).getStringValue()
253 if (this.dataHubs
.getDataHubRecordArray(index
).getGuid() != null) {
254 this.jTextFieldGuid
.setText(this.dataHubs
.getDataHubRecordArray(index
).getGuid());
256 if (this.dataHubs
.getDataHubRecordArray(index
).getUsage() != null) {
257 this.jComboBoxUsage
.setSelectedItem(this.dataHubs
.getDataHubRecordArray(index
).getUsage().toString());
259 this.jTextFieldOverrideID
261 .valueOf(this.dataHubs
.getDataHubRecordArray(index
).getOverrideID()));
266 Disable all components when the mode is view
268 @param isView true - The view mode; false - The non-view mode
271 public void setViewMode(boolean isView
) {
272 this.jButtonOk
.setVisible(false);
273 this.jButtonCancel
.setVisible(false);
275 this.jTextFieldDataHubRecord
.setEnabled(!isView
);
276 this.jTextFieldGuid
.setEnabled(!isView
);
277 this.jComboBoxUsage
.setEnabled(!isView
);
278 this.jTextFieldOverrideID
.setEnabled(!isView
);
279 this.jButtonCancel
.setEnabled(!isView
);
280 this.jButtonGenerateGuid
.setEnabled(!isView
);
281 this.jButtonOk
.setEnabled(!isView
);
286 This method initializes this
289 private void init() {
290 this.setSize(500, 515);
291 this.setContentPane(getJContentPane());
292 this.setTitle("Data Hubs");
294 this.setViewMode(false);
298 This method initializes jContentPane
300 @return javax.swing.JPanel jContentPane
303 private JPanel
getJContentPane() {
304 if (jContentPane
== null) {
305 jLabelOverrideID
= new JLabel();
306 jLabelOverrideID
.setBounds(new java
.awt
.Rectangle(15, 85, 140, 20));
307 jLabelOverrideID
.setText("Override ID");
308 jLabelDataHubRecord
= new JLabel();
309 jLabelDataHubRecord
.setBounds(new java
.awt
.Rectangle(15, 10, 140, 20));
310 jLabelDataHubRecord
.setText("Data Hub Record");
311 jLabelGuid
= new JLabel();
312 jLabelGuid
.setText("Guid");
313 jLabelGuid
.setBounds(new java
.awt
.Rectangle(15, 35, 140, 20));
314 jLabelUsage
= new JLabel();
315 jLabelUsage
.setText("Usage");
316 jLabelUsage
.setBounds(new java
.awt
.Rectangle(15, 60, 140, 20));
317 jContentPane
= new JPanel();
318 jContentPane
.setLayout(null);
319 jContentPane
.add(jLabelGuid
, null);
320 jContentPane
.add(getJTextFieldGuid(), null);
321 jContentPane
.add(jLabelUsage
, null);
322 jContentPane
.add(getJComboBoxUsage(), null);
323 jContentPane
.add(getJButtonOk(), null);
324 jContentPane
.add(getJButtonCancel(), null);
325 jContentPane
.add(jLabelDataHubRecord
, null);
326 jContentPane
.add(getJTextFieldDataHubRecord(), null);
327 jContentPane
.add(getJButtonGenerateGuid(), null);
328 jContentPane
.add(jLabelOverrideID
, null);
329 jContentPane
.add(getJTextFieldOverrideID(), null);
331 jStarLabel1
= new StarLabel();
332 jStarLabel1
.setLocation(new java
.awt
.Point(0, 10));
334 jContentPane
.add(jStarLabel1
, null);
340 This method initializes Usage type
343 private void initFrame() {
344 jComboBoxUsage
.addItem("ALWAYS_CONSUMED");
345 jComboBoxUsage
.addItem("SOMETIMES_CONSUMED");
346 jComboBoxUsage
.addItem("ALWAYS_PRODUCED");
347 jComboBoxUsage
.addItem("SOMETIMES_PRODUCED");
348 jComboBoxUsage
.addItem("PRIVATE");
352 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
354 * Override actionPerformed to listen all actions
357 public void actionPerformed(ActionEvent arg0
) {
358 if (arg0
.getSource() == jButtonOk
) {
359 this.setEdited(true);
363 if (arg0
.getSource() == jButtonCancel
) {
367 if (arg0
.getSource() == jButtonGenerateGuid
) {
368 jTextFieldGuid
.setText(Tools
.generateUuidString());
373 Get DataHubsDocument.DataHubs
375 @return DataHubsDocument.DataHubs
378 public DataHubsDocument
.DataHubs
getDataHubs() {
383 Set DataHubsDocument.DataHubs
385 @param dataHubs DataHubsDocument.DataHubs
388 public void setDataHubs(DataHubsDocument
.DataHubs dataHubs
) {
389 this.dataHubs
= dataHubs
;
393 Data validation for all fields
395 @retval true - All datas are valid
396 @retval false - At least one data is invalid
399 public boolean check() {
401 // Check if all required fields are not empty
403 if (isEmpty(this.jTextFieldDataHubRecord
.getText())) {
404 Log
.err("Data Hub Record couldn't be empty");
409 // Check if all fields have correct data types
411 if (!isEmpty(this.jTextFieldGuid
.getText()) && !DataValidation
.isGuid(this.jTextFieldGuid
.getText())) {
412 Log
.err("Incorrect data type for Guid");
415 if (!isEmpty(this.jTextFieldOverrideID
.getText())
416 && !DataValidation
.isOverrideID(this.jTextFieldOverrideID
.getText())) {
417 Log
.err("Incorrect data type for Override ID");
425 Save all components of DataHubs
426 if exists dataHubs, set the value directly
427 if not exists dataHubs, new an instance first
432 if (this.dataHubs
== null) {
433 dataHubs
= DataHubsDocument
.DataHubs
.Factory
.newInstance();
435 DataHubsDocument
.DataHubs
.DataHubRecord dataHubRecord
= DataHubsDocument
.DataHubs
.DataHubRecord
.Factory
437 if (!isEmpty(this.jTextFieldDataHubRecord
.getText())) {
438 dataHubRecord
.setStringValue(this.jTextFieldDataHubRecord
.getText());
440 if (!isEmpty(this.jTextFieldGuid
.getText())) {
441 dataHubRecord
.setGuid(this.jTextFieldGuid
.getText());
443 dataHubRecord
.setUsage(DataHubUsage
.Enum
.forString(jComboBoxUsage
.getSelectedItem().toString()));
444 if (!isEmpty(this.jTextFieldOverrideID
.getText())) {
445 dataHubRecord
.setOverrideID(Integer
.parseInt(this.jTextFieldOverrideID
.getText()));
448 dataHubs
.setDataHubRecordArray(location
, dataHubRecord
);
450 dataHubs
.addNewDataHubRecord();
451 dataHubs
.setDataHubRecordArray(dataHubs
.getDataHubRecordList().size() - 1, dataHubRecord
);
453 } catch (Exception e
) {
454 Log
.err("Update Data Hubs", e
.getMessage());