]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/PpisDlg.java
Adjusted sizes to accommodate Windows, iMac and Linux GUI
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / dialog / PpisDlg.java
CommitLineData
06a19cee 1/** @file\r
2 \r
3f62225f 3 The file is used to create, update Ppi section of the MSA file\r
06a19cee 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
a929458e 49 // /\r
50 // / Define class Serial Version UID\r
51 // /\r
52 private static final long serialVersionUID = -4284901202357037724L;\r
06a19cee 53\r
a929458e 54 //\r
55 // Define class members\r
56 //\r
57 private JPanel jContentPane = null;\r
06a19cee 58\r
a929458e 59 private JLabel jLabelC_Name = null;\r
06a19cee 60\r
a929458e 61 private JComboBox jComboBoxCName = null;\r
06a19cee 62\r
a929458e 63 private JTextField jTextFieldFeatureFlag = null;\r
06a19cee 64\r
a929458e 65 private JLabel jLabelFeatureFlag = null;\r
06a19cee 66\r
a929458e 67 private JLabel jLabelUsage = null;\r
06a19cee 68\r
a929458e 69 private JComboBox jComboBoxUsage = null;\r
06a19cee 70\r
a929458e 71 private JLabel jLabelPpiType = null;\r
06a19cee 72\r
a929458e 73 private StarLabel jStarLabel1 = null;\r
06a19cee 74\r
a929458e 75 private StarLabel jStarLabel2 = null;\r
06a19cee 76\r
a929458e 77 private StarLabel jStarLabel3 = null;\r
06a19cee 78\r
a929458e 79 private JComboBox jComboBoxPpiType = null;\r
06a19cee 80\r
a929458e 81 private JLabel jLabelArch = null;\r
06a19cee 82\r
a929458e 83 private JScrollPane jScrollPane = null;\r
06a19cee 84\r
a929458e 85 private JLabel jLabelHelpText = null;\r
06a19cee 86\r
a929458e 87 private JTextArea jTextAreaHelpText = null;\r
06a19cee 88\r
a929458e 89 private JScrollPane jScrollPaneHelpText = null;\r
06a19cee 90\r
a929458e 91 private ArchCheckBox jArchCheckBox = null;\r
06a19cee 92\r
a929458e 93 private JButton jButtonOk = null;\r
06a19cee 94\r
a929458e 95 private JButton jButtonCancel = null;\r
06a19cee 96\r
a929458e 97 //\r
98 // Not used by UI\r
99 //\r
100 private PpisIdentification id = null;\r
101\r
102 private WorkspaceTools wt = new WorkspaceTools();\r
103\r
104 private EnumerationData ed = new EnumerationData();\r
105\r
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
3f62225f 114 jComboBoxPpiType.setBounds(new java.awt.Rectangle(168, 12, 320, 20));\r
a929458e 115 jComboBoxPpiType.setPreferredSize(new java.awt.Dimension(320, 20));\r
116 jComboBoxPpiType.addItemListener(this);\r
117 jComboBoxPpiType\r
118 .setToolTipText("<html>PPIs are named by GUID.<br>PPI Notify is consumed via a register PPI Notify mechanism");\r
119 }\r
120 return jComboBoxPpiType;\r
121 }\r
06a19cee 122\r
a929458e 123 /**\r
124 * This method initializes jTextFieldC_Name\r
125 * \r
126 * @return javax.swing.JTextField jTextFieldC_Name\r
127 * \r
128 */\r
129 private JComboBox getJComboBoxCName() {\r
130 if (jComboBoxCName == null) {\r
131 jComboBoxCName = new JComboBox();\r
3f62225f 132 jComboBoxCName.setBounds(new java.awt.Rectangle(168, 37, 320, 20));\r
a929458e 133 jComboBoxCName.setPreferredSize(new java.awt.Dimension(320, 20));\r
134 jComboBoxCName.setToolTipText("Select Guid C Name of PPI");\r
135 }\r
136 return jComboBoxCName;\r
06a19cee 137 }\r
a929458e 138\r
139 /**\r
140 * This method initializes jComboBoxUsage\r
141 * \r
142 * @return javax.swing.JComboBox jComboBoxUsage\r
143 * \r
144 */\r
145 private JComboBox getJComboBoxUsage() {\r
146 if (jComboBoxUsage == null) {\r
147 jComboBoxUsage = new JComboBox();\r
3f62225f 148 jComboBoxUsage.setBounds(new java.awt.Rectangle(168, 62, 320, 20));\r
a929458e 149 jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));\r
150 jComboBoxUsage\r
151 .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
152 }\r
153 return jComboBoxUsage;\r
06a19cee 154 }\r
a929458e 155\r
156 /**\r
157 * This method initializes jTextFieldFeatureFlag\r
158 * \r
159 * @return javax.swing.JTextField jTextFieldFeatureFlag\r
160 * \r
161 */\r
162 private JTextField getJTextFieldFeatureFlag() {\r
163 if (jTextFieldFeatureFlag == null) {\r
164 jTextFieldFeatureFlag = new JTextField();\r
3f62225f 165 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(168, 132, 320, 20));\r
a929458e 166 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
167 jTextFieldFeatureFlag.setToolTipText("Postfix expression that must evaluate to TRUE or FALSE");\r
168 }\r
169 return jTextFieldFeatureFlag;\r
06a19cee 170 }\r
a929458e 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
181 }\r
182 return jScrollPane;\r
06a19cee 183 }\r
a929458e 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
196 }\r
197 return jTextAreaHelpText;\r
06a19cee 198 }\r
a929458e 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.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\r
210 jScrollPaneHelpText.setSize(new java.awt.Dimension(320, 40));\r
211 jScrollPaneHelpText.setPreferredSize(new java.awt.Dimension(320, 40));\r
3f62225f 212 jScrollPaneHelpText.setLocation(new java.awt.Point(168, 87));\r
a929458e 213 jScrollPaneHelpText.setViewportView(getJTextAreaHelpText());\r
214 }\r
215 return jScrollPaneHelpText;\r
06a19cee 216 }\r
a929458e 217\r
218 /**\r
219 * This method initializes jButtonOk\r
220 * \r
221 * @return javax.swing.JButton\r
222 * \r
223 */\r
224 private JButton getJButtonOk() {\r
225 if (jButtonOk == null) {\r
226 jButtonOk = new JButton();\r
3f62225f 227 jButtonOk.setBounds(new java.awt.Rectangle(290, 187, 90, 20));\r
a929458e 228 jButtonOk.setText("Ok");\r
229 jButtonOk.addActionListener(this);\r
230 }\r
231 return jButtonOk;\r
06a19cee 232 }\r
a929458e 233\r
234 /**\r
235 * This method initializes jButtonCancel\r
236 * \r
237 * @return javax.swing.JButton\r
238 * \r
239 */\r
240 private JButton getJButtonCancel() {\r
241 if (jButtonCancel == null) {\r
242 jButtonCancel = new JButton();\r
3f62225f 243 jButtonCancel.setBounds(new java.awt.Rectangle(390, 187, 90, 20));\r
a929458e 244 jButtonCancel.setText("Cancel");\r
245 jButtonCancel.addActionListener(this);\r
246 }\r
247 return jButtonCancel;\r
5101eff9 248 }\r
a929458e 249\r
250 public static void main(String[] args) {\r
251\r
5101eff9 252 }\r
a929458e 253\r
254 /**\r
255 * This method initializes this\r
256 * \r
257 */\r
258 private void init() {\r
3f62225f 259 this.setSize(505, 260);\r
a929458e 260 this.setContentPane(getJScrollPane());\r
261 this.setTitle("PPI Definitions");\r
262 initFrame();\r
263 this.centerWindow();\r
5101eff9 264 }\r
a929458e 265\r
266 /**\r
267 * This method initializes this Fill values to all fields if these values are\r
268 * not empty\r
269 * \r
270 * @param inProtocolsId\r
271 * \r
272 */\r
273 private void init(PpisIdentification inPpisId) {\r
274 init();\r
275 this.id = inPpisId;\r
276\r
277 if (this.id != null) {\r
278 this.jComboBoxCName.setSelectedItem(id.getName());\r
279 this.jComboBoxPpiType.setSelectedItem(id.getType());\r
280 this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
281 this.jTextAreaHelpText.setText(id.getHelp());\r
282 this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
283 this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
284 }\r
5101eff9 285 }\r
a929458e 286\r
287 /**\r
288 * This is the override edit constructor\r
289 * \r
290 * @param inProtocolsIdentification\r
291 * @param iFrame\r
292 * \r
293 */\r
294 public PpisDlg(PpisIdentification inPpisIdentification, IFrame iFrame) {\r
295 super(iFrame, true);\r
296 init(inPpisIdentification);\r
06a19cee 297 }\r
298\r
a929458e 299 /**\r
300 * This method initializes jContentPane\r
301 * \r
302 * @return javax.swing.JPanel jContentPane\r
303 * \r
304 */\r
305 private JPanel getJContentPane() {\r
306 if (jContentPane == null) {\r
307 jStarLabel1 = new StarLabel();\r
3f62225f 308 jStarLabel1.setLocation(new java.awt.Point(2, 12));\r
a929458e 309 jLabelPpiType = new JLabel();\r
3f62225f 310 jLabelPpiType.setBounds(new java.awt.Rectangle(12, 12, 168, 20));\r
a929458e 311 jLabelPpiType.setText("Select Ppi Type");\r
312\r
313 jStarLabel2 = new StarLabel();\r
3f62225f 314 jStarLabel2.setLocation(new java.awt.Point(2, 37));\r
a929458e 315 jLabelC_Name = new JLabel();\r
316 jLabelC_Name.setText("PPI GUID C Name");\r
3f62225f 317 jLabelC_Name.setBounds(new java.awt.Rectangle(12, 37, 168, 20));\r
a929458e 318\r
319 jStarLabel3 = new StarLabel();\r
3f62225f 320 jStarLabel3.setLocation(new java.awt.Point(2, 62));\r
a929458e 321 jLabelUsage = new JLabel();\r
322 jLabelUsage.setText("Usage");\r
3f62225f 323 jLabelUsage.setBounds(new java.awt.Rectangle(12, 62, 168, 20));\r
a929458e 324\r
325 jLabelHelpText = new JLabel();\r
3f62225f 326 jLabelHelpText.setBounds(new java.awt.Rectangle(14, 87, 168, 20));\r
a929458e 327 jLabelHelpText.setText("Help Text");\r
328\r
329 jLabelFeatureFlag = new JLabel();\r
330 jLabelFeatureFlag.setText("Feature Flag Expression");\r
3f62225f 331 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(12, 132, 168, 20));\r
a929458e 332\r
333 jLabelArch = new JLabel();\r
3f62225f 334 jLabelArch.setBounds(new java.awt.Rectangle(12, 157, 168, 20));\r
a929458e 335 jLabelArch.setText("Supported Architectures");\r
336 jArchCheckBox = new ArchCheckBox();\r
3f62225f 337 jArchCheckBox.setBounds(new java.awt.Rectangle(168, 157, 320, 20));\r
a929458e 338 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
339\r
340 jContentPane = new JPanel();\r
341 jContentPane.setLayout(null);\r
3f62225f 342 jContentPane.setPreferredSize(new java.awt.Dimension(485, 215));\r
a929458e 343\r
344 jContentPane.add(jStarLabel1, null);\r
345 jContentPane.add(jLabelPpiType, null);\r
346 jContentPane.add(getJComboBoxPpiType(), null);\r
347 jContentPane.add(jStarLabel2, null);\r
348 jContentPane.add(jLabelC_Name, null);\r
349 jContentPane.add(getJComboBoxCName(), null);\r
350 jContentPane.add(jStarLabel3, null);\r
351 jContentPane.add(jLabelUsage, null);\r
352 jContentPane.add(getJComboBoxUsage(), null);\r
353 jContentPane.add(jLabelHelpText, null);\r
354 jContentPane.add(getJScrollPaneHelpText(), null);\r
355 jContentPane.add(jLabelFeatureFlag, null);\r
356 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
357 jContentPane.add(jLabelArch, null);\r
358 jContentPane.add(jArchCheckBox, null);\r
359 jContentPane.add(getJButtonOk(), null);\r
360 jContentPane.add(getJButtonCancel(), null);\r
361 }\r
362 return jContentPane;\r
06a19cee 363 }\r
364\r
a929458e 365 /**\r
366 * This method initializes Usage type\r
367 * \r
368 */\r
369 private void initFrame() {\r
370 Tools.generateComboBoxByVector(jComboBoxCName, wt.getAllPpiDeclarationsFromWorkspace());\r
371 Tools.generateComboBoxByVector(jComboBoxPpiType, ed.getVPpiType());\r
372 Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVPpiUsage());\r
06a19cee 373 }\r
374\r
a929458e 375 /*\r
376 * (non-Javadoc)\r
377 * \r
378 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
379 * \r
380 * Override actionPerformed to listen all actions\r
381 * \r
382 */\r
383 public void actionPerformed(ActionEvent arg0) {\r
384 if (arg0.getSource() == jButtonOk) {\r
385 if (checkAdd()) {\r
386 getCurrentPpis();\r
387 this.returnType = DataType.RETURN_TYPE_OK;\r
388 this.setVisible(false);\r
389 }\r
390 }\r
391\r
392 if (arg0.getSource() == jButtonCancel) {\r
393 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
394 this.setVisible(false);\r
395 }\r
06a19cee 396 }\r
397\r
a929458e 398 /**\r
399 * Data validation for all fields\r
400 * \r
401 * @retval true - All datas are valid\r
402 * @retval false - At least one data is invalid\r
403 * \r
404 */\r
405 public boolean checkAdd() {\r
406 //\r
407 // Check if all fields have correct data types\r
408 //\r
409\r
410 //\r
411 // Check Name\r
412 //\r
413 if (!isEmpty(this.jComboBoxCName.getSelectedItem().toString())) {\r
414 if (!DataValidation.isC_NameType(this.jComboBoxCName.getSelectedItem().toString())) {\r
415 Log.wrn("Update Ppis", "Incorrect data type for Ppi/PpiNotify Name");\r
416 return false;\r
417 }\r
418 }\r
419\r
420 //\r
421 // Check FeatureFlag\r
422 //\r
423 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
424 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
425 Log.wrn("Update Ppis", "Incorrect data type for Feature Flag");\r
426 return false;\r
427 }\r
428 }\r
429\r
430 return true;\r
431 }\r
5101eff9 432\r
a929458e 433 private PpisIdentification getCurrentPpis() {\r
06a19cee 434 String arg0 = this.jComboBoxCName.getSelectedItem().toString();\r
435 String arg1 = this.jComboBoxPpiType.getSelectedItem().toString();\r
436 String arg2 = this.jComboBoxUsage.getSelectedItem().toString();\r
437\r
438 String arg3 = this.jTextFieldFeatureFlag.getText();\r
439 Vector<String> arg4 = this.jArchCheckBox.getSelectedItemsVector();\r
5101eff9 440 String arg5 = this.jTextAreaHelpText.getText();\r
06a19cee 441\r
442 id = new PpisIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
443 return id;\r
a929458e 444 } /*\r
445 * (non-Javadoc)\r
446 * \r
447 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)\r
448 * \r
449 * Reflesh the frame when selected item changed\r
450 * \r
451 */\r
452\r
453 public void itemStateChanged(ItemEvent arg0) {\r
454 if (arg0.getSource() == this.jComboBoxPpiType && arg0.getStateChange() == ItemEvent.SELECTED) {\r
455 if (this.jComboBoxPpiType.getSelectedItem().toString().equals(ed.getVPpiType().get(0))) {\r
456 Tools.generateComboBoxByVector(this.jComboBoxUsage, ed.getVPpiUsage());\r
457 } else {\r
458 Tools.generateComboBoxByVector(this.jComboBoxUsage, ed.getVPpiNotifyUsage());\r
459 }\r
460 }\r
06a19cee 461 }\r
462\r
a929458e 463 public PpisIdentification getId() {\r
464 return id;\r
465 }\r
06a19cee 466\r
a929458e 467 public void setId(PpisIdentification id) {\r
468 this.id = id;\r
469 }\r
06a19cee 470}\r