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