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