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