]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModulePackageDependencies.java
Removed Requirement for having a FarList element in the FrameworkDatabase.db file...
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / ModulePackageDependencies.java
CommitLineData
a13899c5 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;\r
16\r
17import java.awt.event.ActionEvent;\r
18import java.awt.event.ComponentEvent;\r
19import java.awt.event.ItemEvent;\r
20import java.awt.event.ItemListener;\r
21import java.util.Vector;\r
22\r
23import javax.swing.JButton;\r
24import javax.swing.JComboBox;\r
25import javax.swing.JLabel;\r
26import javax.swing.JPanel;\r
27import javax.swing.JScrollPane;\r
28import javax.swing.JTextArea;\r
29import javax.swing.JTextField;\r
30\r
31import org.tianocore.PackageDependenciesDocument;\r
32import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
33import org.tianocore.PackageDependenciesDocument.PackageDependencies;\r
34import org.tianocore.PackageDependenciesDocument.PackageDependencies.Package;\r
35import org.tianocore.frameworkwizard.common.DataType;\r
36import org.tianocore.frameworkwizard.common.DataValidation;\r
37import org.tianocore.frameworkwizard.common.EnumerationData;\r
38import org.tianocore.frameworkwizard.common.Log;\r
a13899c5 39import org.tianocore.frameworkwizard.common.Tools;\r
79cb6fdb 40import org.tianocore.frameworkwizard.common.Identifications.OpeningModuleType;\r
a13899c5 41import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
42import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
43import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
79cb6fdb 44import org.tianocore.frameworkwizard.module.Identifications.PackageDependencies.PackageDependenciesIdentification;\r
45import org.tianocore.frameworkwizard.module.Identifications.PackageDependencies.PackageDependenciesVector;\r
a13899c5 46import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
47import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
48\r
49/**\r
50 The class is used to create, update Include of MSA/MBD file\r
51 It extends IInternalFrame\r
52 \r
53\r
54\r
55 **/\r
56public class ModulePackageDependencies extends IInternalFrame implements ItemListener {\r
57\r
58 ///\r
59 /// Define class Serial Version UID\r
60 ///\r
61 private static final long serialVersionUID = 3465193035145152131L;\r
62\r
63 //\r
64 //Define class members\r
65 //\r
66 private JPanel jContentPane = null;\r
67\r
68 private JLabel jLabelPackageName = null;\r
69\r
70 private StarLabel jStarLabel1 = null;\r
71\r
72 private JComboBox jComboBoxPackageName = null;\r
73\r
74 private JLabel jLabelPackageGuid = null;\r
75\r
76 private JTextField jTextFieldPackageGuid = null;\r
77\r
78 private JButton jButtonGenerateGuid = null;\r
79\r
80 private JLabel jLabelPackageVersion = null;\r
81\r
82 private JTextField jTextFieldPackageVersion = null;\r
83\r
84 private JLabel jLabelFeatureFlag = null;\r
85\r
86 private JTextField jTextFieldFeatureFlag = null;\r
87\r
88 private JTextArea jTextAreaList = null;\r
89\r
90 private JComboBox jComboBoxList = null;\r
91\r
92 private JButton jButtonAdd = null;\r
93\r
94 private JButton jButtonRemove = null;\r
95\r
96 private JButton jButtonUpdate = null;\r
97\r
98 private JScrollPane jScrollPane = null;\r
99\r
100 private JScrollPane jScrollPaneList = null;\r
101\r
102 private JLabel jLabelArch = null;\r
103\r
104 private ICheckBoxList iCheckBoxListArch = null;\r
105\r
106 private JScrollPane jScrollPaneArch = null;\r
107\r
108 //\r
109 // Not used by UI\r
110 //\r
111 private int intSelectedItemId = 0;\r
112\r
113 private OpeningModuleType omt = null;\r
114\r
115 private ModuleSurfaceArea msa = null;\r
116\r
117 private PackageDependenciesIdentification id = null;\r
118\r
119 private PackageDependenciesVector vid = new PackageDependenciesVector();\r
120\r
121 private PackageDependenciesDocument.PackageDependencies packageDependencies = null;\r
122\r
123 private WorkspaceTools wt = new WorkspaceTools();\r
124\r
125 private Vector<PackageIdentification> vPackage = wt.getAllPackages();\r
126\r
127 /**\r
128 * This method initializes jComboBoxPackageName \r
129 * \r
130 * @return javax.swing.JComboBox \r
131 */\r
132 private JComboBox getJComboBoxPackageName() {\r
133 if (jComboBoxPackageName == null) {\r
134 jComboBoxPackageName = new JComboBox();\r
135 jComboBoxPackageName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
136 jComboBoxPackageName.setPreferredSize(new java.awt.Dimension(320, 20));\r
137 jComboBoxPackageName.setToolTipText("If your Module requires a package list that here.");\r
138 jComboBoxPackageName.addItemListener(this);\r
139 }\r
140 return jComboBoxPackageName;\r
141 }\r
142\r
143 /**\r
144 * This method initializes jTextFieldPackageGuid \r
145 * \r
146 * @return javax.swing.JTextField \r
147 */\r
148 private JTextField getJTextFieldPackageGuid() {\r
149 if (jTextFieldPackageGuid == null) {\r
150 jTextFieldPackageGuid = new JTextField();\r
151 jTextFieldPackageGuid.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
152 jTextFieldPackageGuid.setPreferredSize(new java.awt.Dimension(320, 20));\r
153 jTextFieldPackageGuid.setEditable(false);\r
154 }\r
155 return jTextFieldPackageGuid;\r
156 }\r
157\r
158 /**\r
159 * This method initializes jButtonGenerateGuid \r
160 * \r
161 * @return javax.swing.JButton \r
162 */\r
163 private JButton getJButtonGenerateGuid() {\r
164 if (jButtonGenerateGuid == null) {\r
165 jButtonGenerateGuid = new JButton();\r
166 jButtonGenerateGuid.setBounds(new java.awt.Rectangle(415, 35, 65, 20));\r
167 jButtonGenerateGuid.setPreferredSize(new java.awt.Dimension(65, 20));\r
168 jButtonGenerateGuid.setText("GEN");\r
169 jButtonGenerateGuid.addActionListener(this);\r
170 jButtonGenerateGuid.setVisible(false);\r
171 }\r
172 return jButtonGenerateGuid;\r
173 }\r
174\r
175 /**\r
176 * This method initializes jTextFieldPackageVersion \r
177 * \r
178 * @return javax.swing.JTextField \r
179 */\r
180 private JTextField getJTextFieldPackageVersion() {\r
181 if (jTextFieldPackageVersion == null) {\r
182 jTextFieldPackageVersion = new JTextField();\r
183 jTextFieldPackageVersion.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
184 jTextFieldPackageVersion.setPreferredSize(new java.awt.Dimension(320, 20));\r
185 jTextFieldPackageVersion\r
186 .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
187 }\r
188 return jTextFieldPackageVersion;\r
189 }\r
190\r
191 /**\r
192 * This method initializes jTextFieldFeatureFlag \r
193 * \r
194 * @return javax.swing.JTextField \r
195 */\r
196 private JTextField getJTextFieldFeatureFlag() {\r
197 if (jTextFieldFeatureFlag == null) {\r
198 jTextFieldFeatureFlag = new JTextField();\r
199 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
200 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
201 }\r
202 return jTextFieldFeatureFlag;\r
203 }\r
204\r
205 /**\r
206 This method initializes jComboBoxFileList \r
207 \r
208 @return javax.swing.JComboBox jComboBoxFileList\r
209 \r
210 **/\r
211 private JComboBox getJComboBoxList() {\r
212 if (jComboBoxList == null) {\r
213 jComboBoxList = new JComboBox();\r
214 jComboBoxList.setBounds(new java.awt.Rectangle(15, 195, 210, 20));\r
215 jComboBoxList.addItemListener(this);\r
216 jComboBoxList.addActionListener(this);\r
217 jComboBoxList.setPreferredSize(new java.awt.Dimension(210, 20));\r
218 }\r
219 return jComboBoxList;\r
220 }\r
221\r
222 /**\r
223 This method initializes jButtonAdd \r
224 \r
225 @return javax.swing.JButton jButtonAdd\r
226 \r
227 **/\r
228 private JButton getJButtonAdd() {\r
229 if (jButtonAdd == null) {\r
230 jButtonAdd = new JButton();\r
231 jButtonAdd.setBounds(new java.awt.Rectangle(230, 195, 80, 20));\r
232 jButtonAdd.setText("Add");\r
233 jButtonAdd.addActionListener(this);\r
234 jButtonAdd.setPreferredSize(new java.awt.Dimension(80, 20));\r
235 }\r
236 return jButtonAdd;\r
237 }\r
238\r
239 /**\r
240 This method initializes jButtonRemove \r
241 \r
242 @return javax.swing.JButton jButtonRemove\r
243 \r
244 **/\r
245 private JButton getJButtonRemove() {\r
246 if (jButtonRemove == null) {\r
247 jButtonRemove = new JButton();\r
248 jButtonRemove.setBounds(new java.awt.Rectangle(400, 195, 80, 20));\r
249 jButtonRemove.setText("Remove");\r
250 jButtonRemove.addActionListener(this);\r
251 jButtonRemove.setPreferredSize(new java.awt.Dimension(80, 20));\r
252 }\r
253 return jButtonRemove;\r
254 }\r
255\r
256 /**\r
257 This method initializes jButtonUpdate \r
258 \r
259 @return javax.swing.JButton jButtonUpdate\r
260 \r
261 **/\r
262 private JButton getJButtonUpdate() {\r
263 if (jButtonUpdate == null) {\r
264 jButtonUpdate = new JButton();\r
265 jButtonUpdate.setBounds(new java.awt.Rectangle(315, 195, 80, 20));\r
266 jButtonUpdate.setPreferredSize(new java.awt.Dimension(80, 20));\r
267 jButtonUpdate.setText("Update");\r
268 jButtonUpdate.addActionListener(this);\r
269 }\r
270 return jButtonUpdate;\r
271 }\r
272\r
273 /**\r
274 * This method initializes jScrollPaneFileList \r
275 * \r
276 * @return javax.swing.JScrollPane \r
277 */\r
278 private JScrollPane getJScrollPaneList() {\r
279 if (jScrollPaneList == null) {\r
280 jScrollPaneList = new JScrollPane();\r
281 jScrollPaneList.setBounds(new java.awt.Rectangle(15, 220, 465, 240));\r
282 jScrollPaneList.setViewportView(getJTextAreaList());\r
283 jScrollPaneList.setPreferredSize(new java.awt.Dimension(465, 240));\r
284 }\r
285 return jScrollPaneList;\r
286 }\r
287\r
288 /**\r
289 This method initializes jScrollPane \r
290 \r
291 @return javax.swing.JScrollPane \r
292 */\r
293 private JScrollPane getJScrollPane() {\r
294 if (jScrollPane == null) {\r
295 jScrollPane = new JScrollPane();\r
296 jScrollPane.setViewportView(getJContentPane());\r
297 }\r
298 return jScrollPane;\r
299 }\r
300\r
301 /**\r
302 * This method initializes jTextAreaFileList \r
303 * \r
304 * @return javax.swing.JTextArea \r
305 */\r
306 private JTextArea getJTextAreaList() {\r
307 if (jTextAreaList == null) {\r
308 jTextAreaList = new JTextArea();\r
309 jTextAreaList.setEditable(false);\r
310 }\r
311 return jTextAreaList;\r
312 }\r
313\r
314 /**\r
315 This method initializes iCheckBoxListArch \r
316 \r
317 @return ICheckBoxList \r
318 **/\r
319 private ICheckBoxList getICheckBoxListSupportedArchitectures() {\r
320 if (iCheckBoxListArch == null) {\r
321 iCheckBoxListArch = new ICheckBoxList();\r
322 iCheckBoxListArch.addFocusListener(this);\r
323 iCheckBoxListArch.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);\r
324 }\r
325 return iCheckBoxListArch;\r
326 }\r
327\r
328 /**\r
329 This method initializes jScrollPaneArch \r
330 \r
331 @return javax.swing.JScrollPane \r
332 \r
333 **/\r
334 private JScrollPane getJScrollPaneArch() {\r
335 if (jScrollPaneArch == null) {\r
336 jScrollPaneArch = new JScrollPane();\r
337 jScrollPaneArch.setBounds(new java.awt.Rectangle(160, 110, 320, 80));\r
338 jScrollPaneArch.setPreferredSize(new java.awt.Dimension(320, 80));\r
339 jScrollPaneArch.setViewportView(getICheckBoxListSupportedArchitectures());\r
340 }\r
341 return jScrollPaneArch;\r
342 }\r
343\r
344 public static void main(String[] args) {\r
345\r
346 }\r
347\r
348 /**\r
349 This method initializes this\r
350 \r
351 **/\r
352 private void init() {\r
353 this.setSize(500, 515);\r
354 this.setContentPane(getJScrollPane());\r
355 this.setTitle("Includes");\r
356 initFrame();\r
357 this.setViewMode(false);\r
358 }\r
359\r
360 /**\r
361 This method initializes this\r
362 Fill values to all fields if these values are not empty\r
363 \r
364 @param inPackageDependencies\r
365\r
366 **/\r
367 private void init(PackageDependencies inPackageDependencies) {\r
368 init();\r
369 this.packageDependencies = inPackageDependencies;\r
370\r
371 if (this.packageDependencies != null) {\r
372 if (this.packageDependencies.getPackageList().size() > 0) {\r
373 for (int index = 0; index < this.packageDependencies.getPackageList().size(); index++) {\r
374 String arg0 = "";\r
375 String arg1 = packageDependencies.getPackageList().get(index).getPackageVersion();\r
376 String arg2 = packageDependencies.getPackageList().get(index).getPackageGuid();\r
377 //\r
378 // If no guid, skip current item\r
379 //\r
380 if (arg2 == null) {\r
381 continue;\r
382 }\r
383 for (int indexJ = 0; indexJ < this.vPackage.size(); indexJ++) {\r
384 if (vPackage.get(indexJ).getGuid().equals(arg2)) {\r
385 arg0 = vPackage.get(indexJ).getName();\r
386 }\r
387 }\r
388 String arg3 = packageDependencies.getPackageList().get(index).getFeatureFlag();\r
389 Vector<String> arg4 = Tools.convertListToVector(packageDependencies.getPackageList().get(index)\r
390 .getSupArchList());\r
391 id = new PackageDependenciesIdentification(arg0, arg1, arg2, arg3, arg4);\r
392 vid.addPackageDependencies(id);\r
393 }\r
394 }\r
395 }\r
396 //\r
397 // Update the list\r
398 //\r
399 Tools.generateComboBoxByVector(jComboBoxList, vid.getPackageDependenciesName());\r
400 reloadListArea();\r
401 }\r
402\r
403 /**\r
404 This is the default constructor\r
405 \r
406 **/\r
407 public ModulePackageDependencies() {\r
408 super();\r
409 init();\r
410 this.setVisible(true);\r
411 }\r
412\r
413 /**\r
414 This is the override constructor\r
415 \r
416 **/\r
417 public ModulePackageDependencies(OpeningModuleType inOmt) {\r
418 super();\r
419 this.omt = inOmt;\r
420 this.msa = omt.getXmlMsa();\r
421 init(msa.getPackageDependencies());\r
422 this.setVisible(true);\r
423 }\r
424\r
425 /**\r
426 Disable all components when the mode is view\r
427 \r
428 @param isView true - The view mode; false - The non-view mode\r
429 \r
430 **/\r
431 public void setViewMode(boolean isView) {\r
432 if (isView) {\r
433 this.jComboBoxPackageName.setEnabled(!isView);\r
434 this.jButtonAdd.setEnabled(!isView);\r
435 this.jButtonUpdate.setEnabled(!isView);\r
436 this.jButtonRemove.setEnabled(!isView);\r
437 }\r
438 }\r
439\r
440 /**\r
441 This method initializes jContentPane\r
442 \r
443 @return javax.swing.JPanel jContentPane\r
444 \r
445 **/\r
446 private JPanel getJContentPane() {\r
447 if (jContentPane == null) {\r
448 jLabelArch = new JLabel();\r
449 jLabelArch.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
450 jLabelArch.setText("Sup Arch List");\r
451 jLabelPackageVersion = new JLabel();\r
452 jLabelPackageVersion.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
453 jLabelPackageVersion.setText("Package Version");\r
454 jLabelPackageGuid = new JLabel();\r
455 jLabelPackageGuid.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
456 jLabelPackageGuid.setText("Package Guid");\r
457 jLabelPackageName = new JLabel();\r
458 jLabelPackageName.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
459 jLabelPackageName.setText("Package Name");\r
460\r
461 jContentPane = new JPanel();\r
462 jContentPane.setLayout(null);\r
463 jContentPane.setPreferredSize(new java.awt.Dimension(490, 470));\r
464\r
465 jContentPane.add(jLabelPackageName, null);\r
466 jStarLabel1 = new StarLabel();\r
467 jStarLabel1.setLocation(new java.awt.Point(0, 35));\r
468\r
469 jContentPane.add(jStarLabel1, null);\r
470 jContentPane.add(getJComboBoxPackageName(), null);\r
471 jContentPane.add(jLabelPackageGuid, null);\r
472 jContentPane.add(getJTextFieldPackageGuid(), null);\r
473 jContentPane.add(getJButtonGenerateGuid(), null);\r
474 jContentPane.add(jLabelPackageVersion, null);\r
475 jContentPane.add(getJTextFieldPackageVersion(), null);\r
476\r
477 jLabelFeatureFlag = new JLabel();\r
478 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
479 jLabelFeatureFlag.setText("Feature Flag");\r
480 jContentPane.add(jLabelFeatureFlag, null);\r
481 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
482\r
483 jContentPane.add(getJComboBoxList(), null);\r
484 jContentPane.add(getJButtonAdd(), null);\r
485 jContentPane.add(getJButtonRemove(), null);\r
486 jContentPane.add(getJButtonUpdate(), null);\r
487 jContentPane.add(getJScrollPaneList(), null);\r
488 jContentPane.add(jLabelArch, null);\r
489 jContentPane.add(getJScrollPaneArch(), null);\r
490 }\r
491 return jContentPane;\r
492 }\r
493\r
494 /* (non-Javadoc)\r
495 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
496 *\r
497 * Override actionPerformed to listen all actions\r
498 * \r
499 */\r
500 public void actionPerformed(ActionEvent arg0) {\r
501 if (arg0.getSource() == jButtonAdd) {\r
502 if (!checkAdd()) {\r
503 return;\r
504 }\r
505 addToList();\r
506 }\r
507 if (arg0.getSource() == jButtonRemove) {\r
508 removeFromList();\r
509 }\r
510 if (arg0.getSource() == jButtonUpdate) {\r
511 if (!checkAdd()) {\r
512 return;\r
513 }\r
514 updateForList();\r
515 }\r
516 }\r
517\r
518 /**\r
519 This method initializes Usage type, Package type and Arch type\r
520 \r
521 **/\r
522 private void initFrame() {\r
523 EnumerationData ed = new EnumerationData();\r
524\r
525 this.iCheckBoxListArch.setAllItems(ed.getVSupportedArchitectures());\r
526\r
527 for (int index = 0; index < vPackage.size(); index++) {\r
528 jComboBoxPackageName.addItem(vPackage.elementAt(index).getName());\r
529 }\r
530 //jComboBoxPackageName.addItemListener(this);\r
531 }\r
532\r
533 /**\r
534 Data validation for all fields\r
535 \r
536 @retval true - All datas are valid\r
537 @retval false - At least one data is invalid\r
538 \r
539 **/\r
540 public boolean check() {\r
541 return true;\r
542 }\r
543\r
544 /**\r
545 Data validation for all fields before add current item to Vector\r
546 \r
547 @retval true - All datas are valid\r
548 @retval false - At least one data is invalid\r
549 \r
550 **/\r
551 public boolean checkAdd() {\r
552 //\r
553 // Check if all fields have correct data types \r
554 //\r
555 \r
556 //\r
557 // Check PackageGuid \r
558 //\r
559 if (!isEmpty(this.jTextFieldPackageGuid.getText())) {\r
560 if (!DataValidation.isGuid(this.jTextFieldPackageGuid.getText())) {\r
561 Log.err("Incorrect data type for Package Guid");\r
562 return false;\r
563 }\r
564 }\r
565 \r
566 //\r
567 // Check PackageVersion \r
568 //\r
569 if (!isEmpty(this.jTextFieldPackageVersion.getText())) {\r
570 if (!DataValidation.isVersion(this.jTextFieldPackageVersion.getText())) {\r
571 Log.err("Incorrect data type for Package Version");\r
572 return false;\r
573 }\r
574 }\r
575 \r
576 //\r
577 // Check FeatureFlag\r
578 //\r
579 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
580 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
581 Log.err("Incorrect data type for Feature Flag");\r
582 return false;\r
583 }\r
584 }\r
585 \r
586 return true;\r
587 }\r
588 /**\r
589 Save all components of Includes\r
590 if exists includes, set the value directly\r
591 if not exists includes, new an instance first\r
592 \r
593 **/\r
594 public void save() {\r
595 try {\r
596 //\r
597 //Save as file name\r
598 //\r
599 int count = this.vid.size();\r
600\r
601 this.packageDependencies = PackageDependencies.Factory.newInstance();\r
602 if (count > 0) {\r
603 for (int index = 0; index < count; index++) {\r
604 Package p = Package.Factory.newInstance();\r
605\r
606 if (!isEmpty(vid.getPackageDependencies(index).getVersion())) {\r
607 p.setPackageVersion(vid.getPackageDependencies(index).getVersion());\r
608 }\r
609 if (!isEmpty(vid.getPackageDependencies(index).getGuid())) {\r
610 p.setPackageGuid(vid.getPackageDependencies(index).getGuid());\r
611 }\r
612 if (!isEmpty(vid.getPackageDependencies(index).getFeatureFlag())) {\r
613 p.setFeatureFlag(vid.getPackageDependencies(index).getFeatureFlag());\r
614 }\r
615 if (vid.getPackageDependencies(index).getSupArchList() != null\r
616 && vid.getPackageDependencies(index).getSupArchList().size() > 0) {\r
617 p.setSupArchList(vid.getPackageDependencies(index).getSupArchList());\r
618 }\r
619\r
620 this.packageDependencies.addNewPackage();\r
621 this.packageDependencies.setPackageArray(index, p);\r
622 }\r
623 }\r
624 this.msa.setPackageDependencies(packageDependencies);\r
625 this.omt.setSaved(false);\r
626 } catch (Exception e) {\r
627 e.printStackTrace();\r
628 Log.err("Update Package Dependencies", e.getMessage());\r
629 }\r
630 }\r
631\r
632 /* (non-Javadoc)\r
633 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)\r
634 * \r
635 * Override componentResized to resize all components when frame's size is changed\r
636 */\r
637 public void componentResized(ComponentEvent arg0) {\r
638 int intCurrentWidth = this.getJContentPane().getWidth();\r
639 int intCurrentHeight = this.getJContentPane().getHeight();\r
640 int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
641 int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
642\r
643 resizeComponentWidth(this.jComboBoxPackageName, intCurrentWidth, intPreferredWidth);\r
644 resizeComponentWidth(this.jTextFieldPackageGuid, intCurrentWidth, intPreferredWidth);\r
645 resizeComponentWidth(this.jTextFieldPackageVersion, intCurrentWidth, intPreferredWidth);\r
646 resizeComponentWidth(this.jTextFieldFeatureFlag, intCurrentWidth, intPreferredWidth);\r
647 resizeComponentWidth(this.jScrollPaneArch, intCurrentWidth, intPreferredWidth);\r
648\r
649 resizeComponentWidth(jComboBoxList, intCurrentWidth, intPreferredWidth);\r
650 resizeComponent(jScrollPaneList, intCurrentWidth, intCurrentHeight, intPreferredWidth, intPreferredHeight);\r
651 relocateComponentX(jButtonAdd, intCurrentWidth, intPreferredWidth, DataType.SPACE_TO_RIGHT_FOR_ADD_BUTTON);\r
652 relocateComponentX(jButtonRemove, intCurrentWidth, intPreferredWidth, DataType.SPACE_TO_RIGHT_FOR_REMOVE_BUTTON);\r
653 relocateComponentX(jButtonUpdate, intCurrentWidth, intPreferredWidth, DataType.SPACE_TO_RIGHT_FOR_UPDATE_BUTTON);\r
654 relocateComponentX(this.jButtonGenerateGuid, intCurrentWidth, intPreferredWidth,\r
655 DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
656 }\r
657\r
658 private PackageDependenciesIdentification getCurrentPackageDependencies() {\r
659 String arg0 = this.jComboBoxPackageName.getSelectedItem().toString();\r
660 String arg1 = this.jTextFieldPackageVersion.getText();\r
661 String arg2 = this.jTextFieldPackageGuid.getText();\r
662\r
663 String arg3 = this.jTextFieldFeatureFlag.getText();\r
664 Vector<String> arg4 = this.iCheckBoxListArch.getAllCheckedItemsString();\r
665 id = new PackageDependenciesIdentification(arg0, arg1, arg2, arg3, arg4);\r
666 return id;\r
667 }\r
668\r
669 /**\r
670 Add current item to Vector\r
671 \r
672 **/\r
673 private void addToList() {\r
674 intSelectedItemId = vid.size();\r
675\r
676 vid.addPackageDependencies(getCurrentPackageDependencies());\r
677\r
678 jComboBoxList.addItem(id.getName());\r
679 jComboBoxList.setSelectedItem(id.getName());\r
680\r
681 //\r
682 // Reset select item index\r
683 //\r
684 intSelectedItemId = vid.size();\r
685\r
686 //\r
687 // Reload all fields of selected item\r
688 //\r
689 reloadFromList();\r
690\r
691 // \r
692 // Save to memory\r
693 //\r
694 save();\r
695 }\r
696\r
697 /**\r
698 Remove current item from Vector\r
699 \r
700 **/\r
701 private void removeFromList() {\r
702 //\r
703 // Check if exist items\r
704 //\r
705 if (this.vid.size() < 1) {\r
706 return;\r
707 }\r
708\r
709 int intTempIndex = intSelectedItemId;\r
710\r
711 jComboBoxList.removeItemAt(intSelectedItemId);\r
712\r
713 vid.removePackageDependencies(intTempIndex);\r
714\r
715 //\r
716 // Reload all fields of selected item\r
717 //\r
718 reloadFromList();\r
719\r
720 // \r
721 // Save to memory\r
722 //\r
723 save();\r
724 }\r
725\r
726 /**\r
727 Update current item of Vector\r
728 \r
729 **/\r
730 private void updateForList() {\r
731 //\r
732 // Check if exist items\r
733 //\r
734 if (this.vid.size() < 1) {\r
735 return;\r
736 }\r
737\r
738 //\r
739 // Backup selected item index\r
740 //\r
741 int intTempIndex = intSelectedItemId;\r
742\r
743 vid.updatePackageDependencies(getCurrentPackageDependencies(), intTempIndex);\r
744\r
745 jComboBoxList.removeAllItems();\r
746 for (int index = 0; index < vid.size(); index++) {\r
747 jComboBoxList.addItem(vid.getPackageDependencies(index).getName());\r
748 }\r
749\r
750 //\r
751 // Restore selected item index\r
752 //\r
753 intSelectedItemId = intTempIndex;\r
754\r
755 //\r
756 // Reset select item index\r
757 //\r
758 jComboBoxList.setSelectedIndex(intSelectedItemId);\r
759\r
760 //\r
761 // Reload all fields of selected item\r
762 //\r
763 reloadFromList();\r
764\r
765 // \r
766 // Save to memory\r
767 //\r
768 save();\r
769 }\r
770\r
771 /**\r
772 Refresh all fields' values of selected item of Vector\r
773 \r
774 **/\r
775 private void reloadFromList() {\r
776 if (vid.size() > 0) {\r
777 //\r
778 // Get selected item index\r
779 //\r
780 intSelectedItemId = jComboBoxList.getSelectedIndex();\r
781\r
782 this.jComboBoxPackageName.setSelectedItem(vid.getPackageDependencies(intSelectedItemId).getName());\r
783 this.jTextFieldPackageVersion.setText(vid.getPackageDependencies(intSelectedItemId).getVersion());\r
784 this.jTextFieldPackageGuid.setText(vid.getPackageDependencies(intSelectedItemId).getGuid());\r
785\r
786 jTextFieldFeatureFlag.setText(vid.getPackageDependencies(intSelectedItemId).getFeatureFlag());\r
787 iCheckBoxListArch.setAllItemsUnchecked();\r
788 iCheckBoxListArch.initCheckedItem(true, vid.getPackageDependencies(intSelectedItemId).getSupArchList());\r
789\r
790 } else {\r
791 }\r
792\r
793 reloadListArea();\r
794 }\r
795\r
796 /**\r
797 Update list area pane via the elements of Vector\r
798 \r
799 **/\r
800 private void reloadListArea() {\r
801 String strListItem = "";\r
802 for (int index = 0; index < vid.size(); index++) {\r
803 strListItem = strListItem + vid.getPackageDependencies(index).getName() + DataType.UNIX_LINE_SEPARATOR;\r
804 }\r
805 this.jTextAreaList.setText(strListItem);\r
806 }\r
807\r
808 /* (non-Javadoc)\r
809 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)\r
810 *\r
811 * Reflesh the frame when selected item changed\r
812 * \r
813 */\r
814 public void itemStateChanged(ItemEvent arg0) {\r
815 if (arg0.getSource() == this.jComboBoxList && arg0.getStateChange() == ItemEvent.SELECTED) {\r
816 reloadFromList();\r
817 }\r
818 if (arg0.getSource() == this.jComboBoxPackageName && arg0.getStateChange() == ItemEvent.SELECTED) {\r
819 for (int index = 0; index < vPackage.size(); index++) {\r
820 if (this.jComboBoxPackageName.getSelectedItem().toString().equals(vPackage.get(index).getName())) {\r
821 this.jTextFieldPackageGuid.setText(vPackage.get(index).getGuid());\r
822 }\r
823 }\r
824 }\r
825 }\r
826\r
827}\r