]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/PackageDepDlg.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 / PackageDepDlg.java
CommitLineData
06a19cee 1/** @file\r
2 \r
3 The file is used to create, update Include 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
28\r
29import org.tianocore.frameworkwizard.common.DataType;\r
30import org.tianocore.frameworkwizard.common.DataValidation;\r
31import org.tianocore.frameworkwizard.common.Log;\r
32import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
33import org.tianocore.frameworkwizard.common.ui.IDialog;\r
34import org.tianocore.frameworkwizard.common.ui.IFrame;\r
35import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
36import org.tianocore.frameworkwizard.module.Identifications.PackageDependencies.PackageDependenciesIdentification;\r
37import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
38import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
39\r
40/**\r
ccb063b1 41 * The class is used to create, update Include of MSA/MBD file It extends\r
42 * IInternalFrame\r
43 * \r
44 * \r
45 * \r
46 */\r
06a19cee 47public class PackageDepDlg extends IDialog implements ItemListener {\r
ccb063b1 48 // /\r
49 // / Define class Serial Version UID\r
50 // /\r
51 private static final long serialVersionUID = 3465193035145152131L;\r
06a19cee 52\r
ccb063b1 53 //\r
54 // Define class members\r
55 //\r
56 private JPanel jContentPane = null;\r
06a19cee 57\r
ccb063b1 58 private JLabel jLabelPackageName = null;\r
06a19cee 59\r
ccb063b1 60 private StarLabel jStarLabel1 = null;\r
06a19cee 61\r
ccb063b1 62 private JComboBox jComboBoxPackageName = null;\r
06a19cee 63\r
ccb063b1 64 private JLabel jLabelPackageGuid = null;\r
06a19cee 65\r
ccb063b1 66 private JTextField jTextFieldPackageGuid = null;\r
06a19cee 67\r
ccb063b1 68 private JButton jButtonGenerateGuid = null;\r
06a19cee 69\r
ccb063b1 70 private JLabel jLabelPackageVersion = null;\r
06a19cee 71\r
ccb063b1 72 private JTextField jTextFieldPackageVersion = null;\r
06a19cee 73\r
ccb063b1 74 private JLabel jLabelFeatureFlag = null;\r
06a19cee 75\r
ccb063b1 76 private JTextField jTextFieldFeatureFlag = null;\r
06a19cee 77\r
ccb063b1 78 private JScrollPane jScrollPane = null;\r
06a19cee 79\r
ccb063b1 80 private JLabel jLabelArch = null;\r
06a19cee 81\r
ccb063b1 82 private ArchCheckBox jArchCheckBox = null;\r
06a19cee 83\r
ccb063b1 84 private JButton jButtonOk = null;\r
06a19cee 85\r
ccb063b1 86 private JButton jButtonCancel = null;\r
06a19cee 87\r
ccb063b1 88 //\r
89 // Not used by UI\r
90 //\r
91 private PackageDependenciesIdentification pdid = null;\r
06a19cee 92\r
ccb063b1 93 private WorkspaceTools wt = new WorkspaceTools();\r
06a19cee 94\r
ccb063b1 95 private Vector<PackageIdentification> vPackage = wt.getAllPackages();\r
06a19cee 96\r
ccb063b1 97 /**\r
98 * This method initializes jComboBoxPackageName\r
99 * \r
100 * @return javax.swing.JComboBox\r
101 */\r
06a19cee 102 private JComboBox getJComboBoxPackageName() {\r
ccb063b1 103 if (jComboBoxPackageName == null) {\r
104 jComboBoxPackageName = new JComboBox();\r
105 jComboBoxPackageName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
106 jComboBoxPackageName.setPreferredSize(new java.awt.Dimension(320, 20));\r
107 jComboBoxPackageName.setToolTipText("If your Module requires a package list that here.");\r
108 jComboBoxPackageName.addItemListener(this);\r
109 }\r
110 return jComboBoxPackageName;\r
06a19cee 111 }\r
112\r
113 /**\r
ccb063b1 114 * This method initializes jTextFieldPackageGuid\r
115 * \r
116 * @return javax.swing.JTextField\r
06a19cee 117 */\r
118 private JTextField getJTextFieldPackageGuid() {\r
119 if (jTextFieldPackageGuid == null) {\r
120 jTextFieldPackageGuid = new JTextField();\r
121 jTextFieldPackageGuid.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
122 jTextFieldPackageGuid.setPreferredSize(new java.awt.Dimension(320, 20));\r
123 jTextFieldPackageGuid.setEditable(false);\r
124 jTextFieldPackageGuid.setVisible(false);\r
125 }\r
126 return jTextFieldPackageGuid;\r
127 }\r
128\r
129 /**\r
ccb063b1 130 * This method initializes jButtonGenerateGuid\r
131 * \r
132 * @return javax.swing.JButton\r
06a19cee 133 */\r
134 private JButton getJButtonGenerateGuid() {\r
135 if (jButtonGenerateGuid == null) {\r
136 jButtonGenerateGuid = new JButton();\r
137 jButtonGenerateGuid.setBounds(new java.awt.Rectangle(415, 35, 65, 20));\r
138 jButtonGenerateGuid.setPreferredSize(new java.awt.Dimension(65, 20));\r
139 jButtonGenerateGuid.setText("GEN");\r
140 jButtonGenerateGuid.addActionListener(this);\r
141 jButtonGenerateGuid.setVisible(false);\r
142 }\r
143 return jButtonGenerateGuid;\r
144 }\r
145\r
146 /**\r
ccb063b1 147 * This method initializes jTextFieldPackageVersion\r
148 * \r
149 * @return javax.swing.JTextField\r
06a19cee 150 */\r
151 private JTextField getJTextFieldPackageVersion() {\r
152 if (jTextFieldPackageVersion == null) {\r
153 jTextFieldPackageVersion = new JTextField();\r
154 jTextFieldPackageVersion.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
155 jTextFieldPackageVersion.setPreferredSize(new java.awt.Dimension(320, 20));\r
156 jTextFieldPackageVersion\r
157 .setToolTipText("If this module depends on a specific version of a package, enter the package version here. If the module can use the latest version that does not break backward compatibility, leave this field blank");\r
158 }\r
159 return jTextFieldPackageVersion;\r
160 }\r
161\r
162 /**\r
ccb063b1 163 * This method initializes jTextFieldFeatureFlag\r
164 * \r
165 * @return javax.swing.JTextField\r
06a19cee 166 */\r
167 private JTextField getJTextFieldFeatureFlag() {\r
168 if (jTextFieldFeatureFlag == null) {\r
169 jTextFieldFeatureFlag = new JTextField();\r
170 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
171 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
172 }\r
173 return jTextFieldFeatureFlag;\r
174 }\r
175\r
176 /**\r
ccb063b1 177 * This method initializes jScrollPane\r
178 * \r
179 * @return javax.swing.JScrollPane\r
06a19cee 180 */\r
181 private JScrollPane getJScrollPane() {\r
182 if (jScrollPane == null) {\r
183 jScrollPane = new JScrollPane();\r
184 jScrollPane.setViewportView(getJContentPane());\r
185 }\r
186 return jScrollPane;\r
187 }\r
188\r
189 /**\r
ccb063b1 190 * This method initializes jButtonOk\r
191 * \r
192 * @return javax.swing.JButton\r
193 * \r
194 */\r
06a19cee 195 private JButton getJButtonOk() {\r
196 if (jButtonOk == null) {\r
197 jButtonOk = new JButton();\r
198 jButtonOk.setBounds(new java.awt.Rectangle(290, 115, 90, 20));\r
199 jButtonOk.setText("Ok");\r
200 jButtonOk.addActionListener(this);\r
201 }\r
202 return jButtonOk;\r
203 }\r
204\r
205 /**\r
ccb063b1 206 * This method initializes jButtonCancel\r
207 * \r
208 * @return javax.swing.JButton\r
209 * \r
210 */\r
06a19cee 211 private JButton getJButtonCancel() {\r
212 if (jButtonCancel == null) {\r
213 jButtonCancel = new JButton();\r
214 jButtonCancel.setBounds(new java.awt.Rectangle(390, 115, 90, 20));\r
215 jButtonCancel.setText("Cancel");\r
216 jButtonCancel.addActionListener(this);\r
217 }\r
218 return jButtonCancel;\r
219 }\r
220\r
221 public static void main(String[] args) {\r
222\r
223 }\r
224\r
225 /**\r
ccb063b1 226 * This method initializes this\r
227 * \r
228 */\r
06a19cee 229 private void init() {\r
f51ee52b 230 this.setSize(508, 188);\r
06a19cee 231 this.setContentPane(getJScrollPane());\r
232 this.setTitle("Package Dependencies");\r
233 initFrame();\r
234 this.setViewMode(false);\r
235 this.centerWindow();\r
236 }\r
237\r
238 /**\r
ccb063b1 239 * This method initializes this\r
240 * \r
241 */\r
06a19cee 242 private void init(PackageDependenciesIdentification inPackageDependenciesIdentification) {\r
243 init();\r
244 this.pdid = inPackageDependenciesIdentification;\r
245 if (pdid != null) {\r
246 this.jComboBoxPackageName.setSelectedItem(pdid.getName());\r
247 this.jTextFieldPackageVersion.setText(pdid.getVersion());\r
248 this.jTextFieldPackageGuid.setText(pdid.getGuid());\r
249 jTextFieldFeatureFlag.setText(pdid.getFeatureFlag());\r
250 this.jArchCheckBox.setSelectedItems(pdid.getSupArchList());\r
251 }\r
252 }\r
253\r
254 /**\r
ccb063b1 255 * This is the default constructor\r
256 * \r
257 */\r
06a19cee 258 public PackageDepDlg(PackageDependenciesIdentification inPackageDependenciesIdentification, IFrame iFrame) {\r
259 super(iFrame, true);\r
260 init(inPackageDependenciesIdentification);\r
261 }\r
262\r
263 /**\r
ccb063b1 264 * Disable all components when the mode is view\r
265 * \r
266 * @param isView\r
267 * true - The view mode; false - The non-view mode\r
268 * \r
269 */\r
06a19cee 270 public void setViewMode(boolean isView) {\r
271 if (isView) {\r
272 this.jComboBoxPackageName.setEnabled(!isView);\r
273 }\r
274 }\r
275\r
276 /**\r
ccb063b1 277 * This method initializes jContentPane\r
278 * \r
279 * @return javax.swing.JPanel jContentPane\r
280 * \r
281 */\r
06a19cee 282 private JPanel getJContentPane() {\r
283 if (jContentPane == null) {\r
ccb063b1 284 jStarLabel1 = new StarLabel();\r
285 jStarLabel1.setLocation(new java.awt.Point(2, 10));\r
286 jLabelPackageName = new JLabel();\r
287 jLabelPackageName.setBounds(new java.awt.Rectangle(15, 10, 145, 20));\r
288 jLabelPackageName.setText("Package Name");\r
289\r
290 jLabelPackageVersion = new JLabel();\r
291 jLabelPackageVersion.setBounds(new java.awt.Rectangle(15, 35, 145, 20));\r
292 jLabelPackageVersion.setText("Package Version");\r
293\r
294 jLabelPackageGuid = new JLabel();\r
295 jLabelPackageGuid.setBounds(new java.awt.Rectangle(15, 35, 145, 20));\r
296 jLabelPackageGuid.setText("Package Guid");\r
297 jLabelPackageGuid.setVisible(false);\r
298\r
299 jLabelFeatureFlag = new JLabel();\r
300 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 60, 145, 20));\r
301 jLabelFeatureFlag.setText("Feature Flag Expression");\r
302\r
303 jLabelArch = new JLabel();\r
304 jLabelArch.setBounds(new java.awt.Rectangle(15, 85, 145, 20));\r
305 jLabelArch.setText("Supported Architectures");\r
306 jArchCheckBox = new ArchCheckBox();\r
307 jArchCheckBox.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
308 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
06a19cee 309\r
310 jContentPane = new JPanel();\r
311 jContentPane.setLayout(null);\r
ccb063b1 312 jContentPane.setPreferredSize(new java.awt.Dimension(485, 145));\r
313 \r
06a19cee 314 jContentPane.add(jStarLabel1, null);\r
ccb063b1 315 jContentPane.add(jLabelPackageName, null);\r
06a19cee 316 jContentPane.add(getJComboBoxPackageName(), null);\r
317 jContentPane.add(jLabelPackageGuid, null);\r
318 jContentPane.add(getJTextFieldPackageGuid(), null);\r
06a19cee 319 jContentPane.add(jLabelPackageVersion, null);\r
320 jContentPane.add(getJTextFieldPackageVersion(), null);\r
ccb063b1 321 // LAH Not Used here\r
322 // jContentPane.add(getJButtonGenerateGuid(), null);\r
06a19cee 323 jContentPane.add(jLabelFeatureFlag, null);\r
324 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
06a19cee 325 jContentPane.add(jLabelArch, null);\r
326 jContentPane.add(jArchCheckBox, null);\r
327 jContentPane.add(getJButtonOk(), null);\r
328 jContentPane.add(getJButtonCancel(), null);\r
329 }\r
330 return jContentPane;\r
331 }\r
332\r
ccb063b1 333 /*\r
334 * (non-Javadoc)\r
335 * \r
06a19cee 336 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
ccb063b1 337 * \r
06a19cee 338 * Override actionPerformed to listen all actions\r
339 * \r
340 */\r
341 public void actionPerformed(ActionEvent arg0) {\r
342 if (arg0.getSource() == jButtonOk) {\r
343 if (checkAdd()) {\r
344 getCurrentPackageDependencies();\r
345 this.returnType = DataType.RETURN_TYPE_OK;\r
346 this.setVisible(false);\r
347 }\r
348 }\r
349\r
350 if (arg0.getSource() == jButtonCancel) {\r
351 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
352 this.setVisible(false);\r
353 }\r
354 }\r
355\r
356 /**\r
ccb063b1 357 * This method initializes Usage type, Package type and Arch type\r
358 * \r
359 */\r
06a19cee 360 private void initFrame() {\r
361 for (int index = 0; index < vPackage.size(); index++) {\r
362 jComboBoxPackageName.addItem(vPackage.elementAt(index).getName());\r
363 }\r
364 }\r
365\r
366 /**\r
ccb063b1 367 * Data validation for all fields before add current item to Vector\r
368 * \r
369 * @retval true - All datas are valid\r
370 * @retval false - At least one data is invalid\r
371 * \r
372 */\r
06a19cee 373 public boolean checkAdd() {\r
374 //\r
ccb063b1 375 // Check if all fields have correct data types\r
06a19cee 376 //\r
377\r
378 //\r
ccb063b1 379 // Check PackageGuid\r
06a19cee 380 //\r
ccb063b1 381 // if (!isEmpty(this.jTextFieldPackageGuid.getText())) {\r
382// if (!DataValidation.isGuid(this.jTextFieldPackageGuid.getText())) {\r
383// Log.err("Incorrect data type for Package Guid");\r
384// return false;\r
385// }\r
386// }\r
06a19cee 387\r
388 //\r
ccb063b1 389 // Check PackageVersion\r
06a19cee 390 //\r
391 if (!isEmpty(this.jTextFieldPackageVersion.getText())) {\r
392 if (!DataValidation.isVersion(this.jTextFieldPackageVersion.getText())) {\r
ed1665f2 393 Log.wrn("Update Package Dependencies", "Incorrect data type for Package Version");\r
06a19cee 394 return false;\r
395 }\r
396 }\r
397\r
398 //\r
399 // Check FeatureFlag\r
400 //\r
401 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
402 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
ed1665f2 403 Log.wrn("Update Package Dependencies", "Incorrect data type for Feature Flag");\r
06a19cee 404 return false;\r
405 }\r
406 }\r
407\r
408 return true;\r
409 }\r
410 \r
411\r
412 private PackageDependenciesIdentification getCurrentPackageDependencies() {\r
413 String arg0 = this.jComboBoxPackageName.getSelectedItem().toString();\r
414 String arg1 = this.jTextFieldPackageVersion.getText();\r
415 String arg2 = this.jTextFieldPackageGuid.getText();\r
416\r
417 String arg3 = this.jTextFieldFeatureFlag.getText();\r
418 Vector<String> arg4 = this.jArchCheckBox.getSelectedItemsVector();\r
419 pdid = new PackageDependenciesIdentification(arg0, arg1, arg2, arg3, arg4);\r
420 return pdid;\r
421 }\r
422\r
ccb063b1 423 /*\r
424 * (non-Javadoc)\r
425 * \r
06a19cee 426 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)\r
ccb063b1 427 * \r
06a19cee 428 * Reflesh the frame when selected item changed\r
429 * \r
430 */\r
431 public void itemStateChanged(ItemEvent arg0) {\r
432 if (arg0.getSource() == this.jComboBoxPackageName && arg0.getStateChange() == ItemEvent.SELECTED) {\r
433 for (int index = 0; index < vPackage.size(); index++) {\r
434 if (this.jComboBoxPackageName.getSelectedItem().toString().equals(vPackage.get(index).getName())) {\r
435 this.jTextFieldPackageGuid.setText(vPackage.get(index).getGuid());\r
436 }\r
437 }\r
438 }\r
439 }\r
440\r
441 public PackageDependenciesIdentification getPdid() {\r
442 return pdid;\r
443 }\r
444\r
445 public void setPdid(PackageDependenciesIdentification pdid) {\r
446 this.pdid = pdid;\r
447 }\r
448\r
449}\r