]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - 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
1/** @file\r
2 <<The file is used to create, update Data Hub Record entries in a MSA file.>>\r
3 \r
4 <<The DataHbsDlg is a dialog called to add or edit a Data Hub Record within a MSA file.>>\r
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
15 Package Name: Tools\r
16 Module Name: FrameworkWizard\r
17 \r
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
31import javax.swing.JTextArea;\r
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
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
52\r
53 // /\r
54 // / Define class Serial Version UID\r
55 // /\r
56 private static final long serialVersionUID = -3667906991966638892L;\r
57\r
58 //\r
59 // Define class members\r
60 //\r
61 private JPanel jContentPane = null;\r
62\r
63 private JLabel jLabelUsage = null;\r
64\r
65 private JComboBox jComboBoxUsage = null;\r
66\r
67 private JLabel jLabelDataHubRecord = null;\r
68\r
69 private JTextField jTextFieldDataHubRecord = null;\r
70\r
71 private StarLabel jStarLabel1 = null;\r
72\r
73 private StarLabel jStarLabel2 = null;\r
74\r
75 private JLabel jLabelFeatureFlag = null;\r
76\r
77 private JTextField jTextFieldFeatureFlag = null;\r
78\r
79 private JLabel jLabelArch = null;\r
80\r
81 private JScrollPane jScrollPane = null;\r
82\r
83 private JLabel jLabelHelpText = null;\r
84\r
85 private JTextArea jTextAreaHelpText = null;\r
86\r
87 private JScrollPane jScrollPaneHelpText = null;\r
88\r
89 private ArchCheckBox jArchCheckBox = null;\r
90\r
91 private JButton jButtonOk = null;\r
92\r
93 private JButton jButtonCancel = null;\r
94\r
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
117\r
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
138 }\r
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
153 }\r
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
166 }\r
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
181 }\r
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
199 }\r
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
215 }\r
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
231 }\r
232\r
233 public static void main(String[] args) {\r
234\r
235 }\r
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
248 }\r
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
268 }\r
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
280 }\r
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
294 }\r
295\r
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
350 }\r
351\r
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
358 }\r
359\r
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
381 }\r
382\r
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
421 }\r
422\r
423 private DataHubsIdentification getCurrentDataHubs() {\r
424 String arg0 = this.jTextFieldDataHubRecord.getText();\r
425 String arg1 = this.jComboBoxUsage.getSelectedItem().toString();\r
426\r
427 String arg2 = this.jTextFieldFeatureFlag.getText();\r
428 Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
429 String arg4 = this.jTextAreaHelpText.getText();\r
430\r
431 id = new DataHubsIdentification(arg0, arg1, arg2, arg3, arg4);\r
432 return id;\r
433 }\r
434\r
435 public DataHubsIdentification getId() {\r
436 return id;\r
437 }\r
438\r
439 public void setId(DataHubsIdentification id) {\r
440 this.id = id;\r
441 }\r
442}\r