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