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