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