]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/DataHubsDlg.java
Continue to fix EDKT187.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / dialog / DataHubsDlg.java
CommitLineData
06a19cee 1/** @file\r
5b38b75b 2 <<The file is used to create, update Data Hub Record entries in a MSA file.>>\r
06a19cee 3 \r
5b38b75b 4 <<The DataHbsDlg is a dialog called to add or edit a Data Hub Record within a MSA file.>>\r
06a19cee 5 \r
6 Copyright (c) 2006, Intel Corporation\r
7 All rights reserved. This program and the accompanying materials\r
8 are licensed and made available under the terms and conditions of the BSD License\r
9 which accompanies this distribution. The full text of the license may be found at\r
10 http://opensource.org/licenses/bsd-license.php\r
11 \r
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14 \r
5b38b75b 15 Package Name: Tools\r
16 Module Name: FrameworkWizard\r
17 \r
06a19cee 18 **/\r
19\r
20package org.tianocore.frameworkwizard.module.ui.dialog;\r
21\r
22import java.awt.event.ActionEvent;\r
23import java.util.Vector;\r
24\r
25import javax.swing.JButton;\r
26import javax.swing.JComboBox;\r
27import javax.swing.JLabel;\r
28import javax.swing.JPanel;\r
29import javax.swing.JScrollPane;\r
30import javax.swing.JTextField;\r
5b38b75b 31import javax.swing.JTextArea;\r
06a19cee 32\r
33import org.tianocore.frameworkwizard.common.DataType;\r
34import org.tianocore.frameworkwizard.common.DataValidation;\r
35import org.tianocore.frameworkwizard.common.EnumerationData;\r
36import org.tianocore.frameworkwizard.common.Log;\r
37import org.tianocore.frameworkwizard.common.Tools;\r
38import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
39import org.tianocore.frameworkwizard.common.ui.IDialog;\r
40import org.tianocore.frameworkwizard.common.ui.IFrame;\r
41import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
42import org.tianocore.frameworkwizard.module.Identifications.DataHubs.DataHubsIdentification;\r
43\r
44/**\r
9e857952 45 * The class is used to create, update DataHub of the MSA file\r
5b38b75b 46 * \r
9e857952 47 * It extends IDialog\r
5b38b75b 48 * \r
49 */\r
50public class DataHubsDlg extends IDialog {\r
06a19cee 51\r
a929458e 52 // /\r
53 // / Define class Serial Version UID\r
54 // /\r
55 private static final long serialVersionUID = -3667906991966638892L;\r
06a19cee 56\r
a929458e 57 //\r
58 // Define class members\r
59 //\r
60 private JPanel jContentPane = null;\r
06a19cee 61\r
a929458e 62 private JLabel jLabelUsage = null;\r
06a19cee 63\r
a929458e 64 private JComboBox jComboBoxUsage = null;\r
06a19cee 65\r
a929458e 66 private JLabel jLabelDataHubRecord = null;\r
06a19cee 67\r
a929458e 68 private JTextField jTextFieldDataHubRecord = null;\r
06a19cee 69\r
a929458e 70 private StarLabel jStarLabel1 = null;\r
06a19cee 71\r
a929458e 72 private StarLabel jStarLabel2 = null;\r
06a19cee 73\r
a929458e 74 private JLabel jLabelFeatureFlag = null;\r
06a19cee 75\r
a929458e 76 private JTextField jTextFieldFeatureFlag = null;\r
06a19cee 77\r
a929458e 78 private JLabel jLabelArch = null;\r
06a19cee 79\r
a929458e 80 private JScrollPane jScrollPane = null;\r
06a19cee 81\r
a929458e 82 private JLabel jLabelHelpText = null;\r
06a19cee 83\r
a929458e 84 private JTextArea jTextAreaHelpText = null;\r
06a19cee 85\r
a929458e 86 private JScrollPane jScrollPaneHelpText = null;\r
06a19cee 87\r
a929458e 88 private ArchCheckBox jArchCheckBox = null;\r
06a19cee 89\r
a929458e 90 private JButton jButtonOk = null;\r
06a19cee 91\r
a929458e 92 private JButton jButtonCancel = null;\r
06a19cee 93\r
a929458e 94 //\r
95 // Not used by UI\r
96 //\r
97 private DataHubsIdentification id = null;\r
98\r
99 private EnumerationData ed = new EnumerationData();\r
100\r
101 /**\r
102 * This method initializes jTextFieldDataHubRecord\r
103 * \r
104 * @return javax.swing.JTextField jTextFieldDataHubRecord\r
105 * \r
106 */\r
107 private JTextField getJTextFieldDataHubRecord() {\r
108 if (jTextFieldDataHubRecord == null) {\r
109 jTextFieldDataHubRecord = new JTextField();\r
3f62225f 110 jTextFieldDataHubRecord.setBounds(new java.awt.Rectangle(168, 12, 320, 20));\r
a929458e 111 jTextFieldDataHubRecord.setPreferredSize(new java.awt.Dimension(320, 20));\r
112 jTextFieldDataHubRecord.setToolTipText("Enter the C Name of the Data Hub Record");\r
113 }\r
114 return jTextFieldDataHubRecord;\r
115 }\r
06a19cee 116\r
a929458e 117 /**\r
118 * This method initializes jComboBoxUsage\r
119 * \r
120 * @return javax.swing.JComboBox jComboBoxUsage\r
121 * \r
122 */\r
123 private JComboBox getJComboBoxUsage() {\r
124 if (jComboBoxUsage == null) {\r
125 jComboBoxUsage = new JComboBox();\r
3f62225f 126 jComboBoxUsage.setBounds(new java.awt.Rectangle(168, 37, 320, 20));\r
a929458e 127 jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));\r
128 jComboBoxUsage\r
129 .setToolTipText("<html><table>"\r
130 + "<tr><td>ALWAYS_CONSUMED</td><td>Module always consumes a Data Hub Entry<br>via registering a filter driver.</td></tr>"\r
131 + "<tr><td>SOMETIMES_CONSUMED</td><td>Module will use a Data Hub Entry if it exists<br>via registering a filter driver</td></tr>"\r
132 + "<tr><td>ALWAYS_PRODUCED</td><td>Always logs data into the Data Hub</td></tr>"\r
133 + "<tr><td>SOMETIMES_PRODUCED</td><td>Log data into the Data Hub under<br>certain circumstances</td></tr>"\r
134 + "</table></html>");\r
135 }\r
136 return jComboBoxUsage;\r
06a19cee 137 }\r
a929458e 138\r
139 /**\r
140 * This method initializes jTextFieldFeatureFlag\r
141 * \r
142 * @return javax.swing.JTextField\r
143 */\r
144 private JTextField getJTextFieldFeatureFlag() {\r
145 if (jTextFieldFeatureFlag == null) {\r
146 jTextFieldFeatureFlag = new JTextField();\r
3f62225f 147 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(168, 107, 320, 20));\r
a929458e 148 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
149 jTextFieldFeatureFlag.setToolTipText("Postfix expression that must evaluate to TRUE or FALSE");\r
150 }\r
151 return jTextFieldFeatureFlag;\r
06a19cee 152 }\r
a929458e 153\r
154 /**\r
155 * This method initializes jScrollPane\r
156 * \r
157 * @return javax.swing.JScrollPane\r
158 */\r
159 private JScrollPane getJScrollPane() {\r
160 if (jScrollPane == null) {\r
161 jScrollPane = new JScrollPane();\r
162 jScrollPane.setViewportView(getJContentPane());\r
163 }\r
164 return jScrollPane;\r
06a19cee 165 }\r
a929458e 166\r
167 /**\r
168 * This method initializes jTextAreaHelpText\r
169 * \r
170 * @return javax.swing.JTextArea\r
171 * \r
172 */\r
173 private JTextArea getJTextAreaHelpText() {\r
174 if (jTextAreaHelpText == null) {\r
175 jTextAreaHelpText = new JTextArea();\r
176 jTextAreaHelpText.setLineWrap(true);\r
177 jTextAreaHelpText.setWrapStyleWord(true);\r
178 }\r
179 return jTextAreaHelpText;\r
06a19cee 180 }\r
a929458e 181\r
182 /**\r
183 * This method initializes jScrollPaneHelpText\r
184 * \r
185 * @return javax.swing.JScrollPane\r
186 * \r
187 */\r
188 private JScrollPane getJScrollPaneHelpText() {\r
189 if (jScrollPaneHelpText == null) {\r
190 jScrollPaneHelpText = new JScrollPane();\r
191 jScrollPaneHelpText.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\r
192 jScrollPaneHelpText.setSize(new java.awt.Dimension(320, 40));\r
193 jScrollPaneHelpText.setPreferredSize(new java.awt.Dimension(320, 40));\r
3f62225f 194 jScrollPaneHelpText.setLocation(new java.awt.Point(168, 62));\r
a929458e 195 jScrollPaneHelpText.setViewportView(getJTextAreaHelpText());\r
196 }\r
197 return jScrollPaneHelpText;\r
06a19cee 198 }\r
a929458e 199\r
200 /**\r
201 * This method initializes jButtonOk\r
202 * \r
203 * @return javax.swing.JButton\r
204 * \r
205 */\r
206 private JButton getJButtonOk() {\r
207 if (jButtonOk == null) {\r
208 jButtonOk = new JButton();\r
3f62225f 209 jButtonOk.setBounds(new java.awt.Rectangle(290, 162, 90, 20));\r
a929458e 210 jButtonOk.setText("Ok");\r
211 jButtonOk.addActionListener(this);\r
212 }\r
213 return jButtonOk;\r
06a19cee 214 }\r
a929458e 215\r
216 /**\r
217 * This method initializes jButtonCancel\r
218 * \r
219 * @return javax.swing.JButton\r
220 * \r
221 */\r
222 private JButton getJButtonCancel() {\r
223 if (jButtonCancel == null) {\r
224 jButtonCancel = new JButton();\r
3f62225f 225 jButtonCancel.setBounds(new java.awt.Rectangle(390, 162, 90, 20));\r
a929458e 226 jButtonCancel.setText("Cancel");\r
227 jButtonCancel.addActionListener(this);\r
228 }\r
229 return jButtonCancel;\r
06a19cee 230 }\r
a929458e 231\r
232 public static void main(String[] args) {\r
233\r
06a19cee 234 }\r
a929458e 235\r
236 /**\r
237 * This method initializes this\r
238 * \r
239 */\r
240 private void init() {\r
3f62225f 241 this.setSize(505, 235);\r
a929458e 242 this.setContentPane(getJScrollPane());\r
243 this.setTitle("Data Hubs");\r
244 initFrame();\r
245 this.setViewMode(false);\r
246 this.centerWindow();\r
06a19cee 247 }\r
a929458e 248\r
249 /**\r
250 * This method initializes this Fill values to all fields if these values are\r
251 * not empty\r
252 * \r
253 * @param inDataHubsId\r
254 * \r
255 */\r
256 private void init(DataHubsIdentification inDataHubsId) {\r
257 init();\r
258 this.id = inDataHubsId;\r
259\r
260 if (this.id != null) {\r
261 this.jTextFieldDataHubRecord.setText(id.getName());\r
262 this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
263 this.jTextAreaHelpText.setText(id.getHelp());\r
264 this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
265 this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
266 }\r
06a19cee 267 }\r
a929458e 268\r
269 /**\r
270 * This is the override edit constructor\r
271 * \r
272 * @param inDataHubsIdentification\r
273 * @param iFrame\r
274 * \r
275 */\r
276 public DataHubsDlg(DataHubsIdentification inDataHubsIdentification, IFrame iFrame) {\r
277 super(iFrame, true);\r
278 init(inDataHubsIdentification);\r
5b38b75b 279 }\r
a929458e 280\r
281 /**\r
282 * Disable all components when the mode is view\r
283 * \r
284 * @param isView\r
285 * true - The view mode; false - The non-view mode\r
286 * \r
287 */\r
288 public void setViewMode(boolean isView) {\r
289 if (isView) {\r
290 this.jTextFieldDataHubRecord.setEnabled(!isView);\r
291 this.jComboBoxUsage.setEnabled(!isView);\r
292 }\r
06a19cee 293 }\r
294\r
a929458e 295 /**\r
296 * This method initializes jContentPane\r
297 * \r
298 * @return javax.swing.JPanel jContentPane\r
299 * \r
300 */\r
301 private JPanel getJContentPane() {\r
302 if (jContentPane == null) {\r
303 jStarLabel1 = new StarLabel();\r
3f62225f 304 jStarLabel1.setLocation(new java.awt.Point(2, 12));\r
a929458e 305 jLabelDataHubRecord = new JLabel();\r
3f62225f 306 jLabelDataHubRecord.setBounds(new java.awt.Rectangle(12, 12, 155, 20));\r
a929458e 307 jLabelDataHubRecord.setText("Data Hub Record");\r
308 jStarLabel2 = new StarLabel();\r
3f62225f 309 jStarLabel2.setLocation(new java.awt.Point(2, 37));\r
a929458e 310 jLabelUsage = new JLabel();\r
311 jLabelUsage.setText("Usage");\r
3f62225f 312 jLabelUsage.setBounds(new java.awt.Rectangle(12, 37, 155, 20));\r
a929458e 313 jLabelHelpText = new JLabel();\r
3f62225f 314 jLabelHelpText.setBounds(new java.awt.Rectangle(12, 62, 155, 20));\r
a929458e 315 jLabelHelpText.setText("Help Text");\r
316 jLabelFeatureFlag = new JLabel();\r
3f62225f 317 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(12, 107, 155, 20));\r
a929458e 318 jLabelFeatureFlag.setText("Feature Flag Expression");\r
319 jLabelArch = new JLabel();\r
3f62225f 320 jLabelArch.setBounds(new java.awt.Rectangle(12, 132, 155, 20));\r
a929458e 321 jLabelArch.setText("Supported Architectures");\r
322 jArchCheckBox = new ArchCheckBox();\r
3f62225f 323 jArchCheckBox.setBounds(new java.awt.Rectangle(168, 132, 320, 20));\r
a929458e 324 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
325\r
326 jContentPane = new JPanel();\r
327 jContentPane.setLayout(null);\r
3f62225f 328 jContentPane.setPreferredSize(new java.awt.Dimension(480, 180));\r
a929458e 329\r
330 jContentPane.add(jLabelDataHubRecord, null);\r
331 jContentPane.add(jLabelUsage, null);\r
332 jContentPane.add(jLabelFeatureFlag, null);\r
333 jContentPane.add(jLabelArch, null);\r
334\r
335 jContentPane.add(getJTextFieldDataHubRecord(), null);\r
336 jContentPane.add(getJComboBoxUsage(), null);\r
337 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
338\r
339 jContentPane.add(jStarLabel1, null);\r
340 jContentPane.add(jStarLabel2, null);\r
341\r
342 jContentPane.add(jLabelHelpText, null);\r
343 jContentPane.add(getJScrollPaneHelpText(), null);\r
344 jContentPane.add(jArchCheckBox, null);\r
345 jContentPane.add(getJButtonOk(), null);\r
346 jContentPane.add(getJButtonCancel(), null);\r
347 }\r
348 return jContentPane;\r
06a19cee 349 }\r
350\r
a929458e 351 /**\r
352 * This method initializes Usage type\r
353 * \r
354 */\r
355 private void initFrame() {\r
356 Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVDataHubUsage());\r
06a19cee 357 }\r
358\r
a929458e 359 /*\r
360 * (non-Javadoc)\r
361 * \r
362 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
363 * \r
364 * Override actionPerformed to listen all actions\r
365 * \r
366 */\r
367 public void actionPerformed(ActionEvent arg0) {\r
368 if (arg0.getSource() == jButtonOk) {\r
369 if (checkAdd()) {\r
370 getCurrentDataHubs();\r
371 this.returnType = DataType.RETURN_TYPE_OK;\r
372 this.setVisible(false);\r
373 }\r
374 }\r
375\r
376 if (arg0.getSource() == jButtonCancel) {\r
377 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
378 this.setVisible(false);\r
379 }\r
06a19cee 380 }\r
381\r
a929458e 382 /**\r
383 * Data validation for all fields\r
384 * \r
385 * @retval true - All datas are valid\r
386 * @retval false - At least one data is invalid\r
387 * \r
388 */\r
389 public boolean checkAdd() {\r
390 //\r
391 // Check if all fields have correct data types\r
392 //\r
393\r
394 //\r
395 // Check DataHubRecord\r
396 //\r
397 if (isEmpty(this.jTextFieldDataHubRecord.getText())) {\r
398 Log.wrn("Update Hubs", "Data Hub Record must not be empty");\r
399 return false;\r
400 }\r
401\r
402 if (!isEmpty(this.jTextFieldDataHubRecord.getText())) {\r
403 if (!DataValidation.isC_NameType(this.jTextFieldDataHubRecord.getText())) {\r
404 Log.wrn("Update Hubs", "Incorrect data type for Data Hub Record");\r
405 return false;\r
406 }\r
407 }\r
408\r
409 //\r
410 // Check FeatureFlag\r
411 //\r
412 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
413 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
414 Log.wrn("Update Hubs", "Incorrect data type for Feature Flag");\r
415 return false;\r
416 }\r
417 }\r
418\r
419 return true;\r
06a19cee 420 }\r
421\r
a929458e 422 private DataHubsIdentification getCurrentDataHubs() {\r
423 String arg0 = this.jTextFieldDataHubRecord.getText();\r
424 String arg1 = this.jComboBoxUsage.getSelectedItem().toString();\r
06a19cee 425\r
a929458e 426 String arg2 = this.jTextFieldFeatureFlag.getText();\r
427 Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
428 String arg4 = this.jTextAreaHelpText.getText();\r
06a19cee 429\r
a929458e 430 id = new DataHubsIdentification(arg0, arg1, arg2, arg3, arg4);\r
431 return id;\r
432 }\r
06a19cee 433\r
a929458e 434 public DataHubsIdentification getId() {\r
435 return id;\r
436 }\r
06a19cee 437\r
a929458e 438 public void setId(DataHubsIdentification id) {\r
439 this.id = id;\r
440 }\r
06a19cee 441}\r