]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java
comment out item type checking temporarily when adding module to fpd file.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdModuleSA.java
CommitLineData
a13899c5 1package org.tianocore.frameworkwizard.platform.ui;\r
2\r
3import java.awt.BorderLayout;\r
f3b0ed9a 4import java.awt.Dimension;\r
5import java.awt.Toolkit;\r
a13899c5 6\r
a13899c5 7import javax.swing.JFrame;\r
8import javax.swing.JOptionPane;\r
9import javax.swing.JPanel;\r
10import javax.swing.JDialog;\r
11import javax.swing.JTabbedPane;\r
12import javax.swing.JLabel;\r
13import javax.swing.JScrollPane;\r
14import javax.swing.JTable;\r
a13899c5 15import javax.swing.JTextArea;\r
16import javax.swing.JSplitPane;\r
17import javax.swing.JButton;\r
18import javax.swing.ListSelectionModel;\r
19import javax.swing.event.ListSelectionEvent;\r
20import javax.swing.event.ListSelectionListener;\r
21import javax.swing.event.TableModelEvent;\r
22import javax.swing.event.TableModelListener;\r
23import javax.swing.table.DefaultTableModel;\r
a13899c5 24import javax.swing.table.TableModel;\r
25\r
26import org.apache.xmlbeans.XmlObject;\r
8f55ea73 27import org.tianocore.frameworkwizard.common.DataValidation;\r
28import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
a13899c5 29import org.tianocore.frameworkwizard.platform.ui.global.GlobalData;\r
30import org.tianocore.frameworkwizard.platform.ui.global.SurfaceAreaQuery;\r
31import org.tianocore.frameworkwizard.platform.ui.id.ModuleIdentification;\r
32import org.tianocore.frameworkwizard.platform.ui.id.PackageIdentification;\r
33\r
34import java.awt.FlowLayout;\r
35import java.awt.event.ActionEvent;\r
36import java.awt.event.ActionListener;\r
37import java.util.ArrayList;\r
38import java.util.HashMap;\r
39import java.util.Iterator;\r
40import java.util.ListIterator;\r
41import java.util.Map;\r
42import java.util.Set;\r
1800d80f 43import java.util.Vector;\r
44\r
6a09eb19 45import javax.swing.JTextField;\r
908b1c05 46import java.awt.GridLayout;\r
47import javax.swing.JComboBox;\r
a13899c5 48\r
49public class FpdModuleSA extends JDialog implements ActionListener {\r
50\r
44053733 51 /**\r
52 * \r
53 */\r
54 private static final long serialVersionUID = 1L;\r
a13899c5 55 static JFrame frame;\r
56 private JPanel jContentPane = null;\r
57 private JTabbedPane jTabbedPane = null;\r
57d0e52a 58 private JPanel jPanelPcd = null;\r
59 private JPanel jPanelLibrary = null;\r
60 private JLabel jLabelPcdData = null;\r
61 private JScrollPane jScrollPaneTablePcd = null;\r
62 private JTable jTablePcd = null;\r
63 private JPanel jPanelPcdSouth = null;\r
64 private JScrollPane jScrollPanePcdHelp = null;\r
65 private JTextArea jTextAreaPcdHelp = null;\r
66 private JPanel jPanelContentPaneSouth = null;\r
a13899c5 67 private JSplitPane jSplitPane = null;\r
57d0e52a 68 private JPanel jPanelLibraryLeft = null;\r
69 private JPanel jPanelLibraryRight = null;\r
70 private JLabel jLabelLibClass = null;\r
71 private JLabel jLabelQualifiedInstance = null;\r
72 private JScrollPane jScrollPaneSelectedInstances = null;\r
73 private JTable jTableSelectedInstances = null;\r
74 private JScrollPane jScrollPaneLibClass = null;\r
75 private JTable jTableLibClass = null;\r
76 private JScrollPane jScrollPaneQualifiedInstance = null;\r
77 private JTable jTableLibInstances = null;\r
78 private JPanel jPanelLibrarySouth = null;\r
79 private JPanel jPanelLibraryCenter = null;\r
80 private JScrollPane jScrollPaneInstanceHelp = null;\r
81 private JTextArea jTextAreaInstanceHelp = null;\r
82 private JLabel jLabelSelectedInstances = null;\r
83 private JLabel jLabelInstanceHelp = null;\r
84 private JButton jButtonAdd = null;\r
85 private JButton jButtonDeleteInstance = null;\r
86 private JLabel jLabelPcdHelp = null;\r
87 private JButton jButtonOk = null;\r
88 private JButton jButtonCancel = null;\r
a13899c5 89 private PartialEditableTableModel model = null;\r
57d0e52a 90 private LibraryTableModel selectedInstancesTableModel = null;\r
91 private LibraryTableModel libClassTableModel = null;\r
92 private LibraryTableModel libInstanceTableModel = null;\r
1800d80f 93 private DefaultTableModel optionsTableModel = null;\r
a13899c5 94 private FpdFileContents ffc = null;\r
95 private String moduleKey = null;\r
a13899c5 96 private HashMap<String, ArrayList<String>> classInstanceMap = null;\r
97 private ArrayList<String> classProduced = null;\r
a13899c5 98 private HashMap<String, ArrayList<String>> classConsumed = null;\r
57d0e52a 99 private JPanel jPanelModuleSaOpts = null;\r
100 private JLabel jLabelFvBinding = null;\r
8f55ea73 101 private JTextField jTextFieldFvBinding = null;\r
57d0e52a 102 private JLabel jLabelFfsFileGuid = null;\r
8f55ea73 103 private JTextField jTextFieldFileGuid = null;\r
57d0e52a 104 private JLabel jLabelFfsFormatKey = null;\r
8f55ea73 105 private JTextField jTextFieldFfsKey = null;\r
57d0e52a 106 private JScrollPane jScrollPaneModuleSaOptions = null;\r
107 private JTable jTableModuleSaOptions = null;\r
108 private JButton jButtonNew = null;\r
109 private JButton jButtonDeleteOption = null;\r
110 private JPanel jPanelPcdFields = null;\r
111 private JPanel jPanelPcdFieldsSecondRow = null;\r
112 private JPanel jPanelPcdFieldsThirdRow = null;\r
113 private JPanel jPanelPcdFieldsFirstRow = null;\r
114 private JLabel jLabelItemType = null;\r
115 private JComboBox jComboBoxItemType = null;\r
116 private JLabel jLabelMaxDatumSize = null;\r
117 private JTextField jTextFieldMaxDatumSize = null;\r
118 private JLabel jLabelPcdDefaultValue = null;\r
119 private JTextField jTextFieldPcdDefault = null;\r
120 private JButton jButtonUpdatePcd = null;\r
121 private JComboBox jComboBoxFeatureFlagValue = null;\r
8f55ea73 122 private OpeningPlatformType docConsole = null;\r
57d0e52a 123 private JLabel jLabelPad = null;\r
a13899c5 124 /**\r
125 * This is the default constructor\r
126 */\r
127 public FpdModuleSA() {\r
128 super();\r
129 initialize();\r
130 }\r
131 public FpdModuleSA(FpdFileContents ffc) {\r
132 this();\r
133 this.ffc = ffc;\r
134 }\r
135 \r
8f55ea73 136 public void setKey(String k, int i, OpeningPlatformType dc){\r
a13899c5 137 this.moduleKey = k;\r
8f55ea73 138 this.docConsole = dc;\r
57d0e52a 139 classProduced = null;\r
140 classConsumed = null;\r
908b1c05 141 jTabbedPane.setSelectedIndex(0);\r
055e7ae6 142 initPcdBuildDefinition(i);\r
a13899c5 143 }\r
144\r
145 /**\r
146 init will be called each time FpdModuleSA object is to be shown.\r
147 @param key Module information.\r
148 **/\r
055e7ae6 149 public void initPcdBuildDefinition(int i) {\r
a13899c5 150 //\r
151 // display pcd for key.\r
152 //\r
153 model.setRowCount(0);\r
055e7ae6 154 int pcdCount = ffc.getPcdDataCount(i);\r
a13899c5 155 if (pcdCount != 0) {\r
82961247 156 String[][] saa = new String[pcdCount][7];\r
055e7ae6 157 ffc.getPcdData(i, saa);\r
158 for (int j = 0; j < saa.length; ++j) {\r
159 model.addRow(saa[j]);\r
a13899c5 160 }\r
161 }\r
908b1c05 162 }\r
163 \r
164 public void initLibraries(String key) {\r
71baa24b 165 //\r
166 // display library classes that need to be resolved. also potential instances for them.\r
167 //\r
bf5abaff 168 resolveLibraryInstances(moduleKey);\r
a13899c5 169 //\r
170 // display lib instances already selected for key\r
171 //\r
57d0e52a 172 selectedInstancesTableModel.setRowCount(0);\r
a13899c5 173 int instanceCount = ffc.getLibraryInstancesCount(key);\r
174 if (instanceCount != 0) {\r
175 String[][] saa = new String[instanceCount][5];\r
176 ffc.getLibraryInstances(key, saa);\r
177 for (int i = 0; i < saa.length; ++i) {\r
34c614e1 178 ModuleIdentification mi = GlobalData.getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]);\r
71baa24b 179 if (mi != null) {\r
180 saa[i][0] = mi.getName();\r
181 saa[i][2] = mi.getVersion();\r
182 saa[i][4] = mi.getPackage().getVersion();\r
183 //\r
184 // re-evaluate lib instance usage when adding a already-selected lib instance.\r
185 //\r
186 resolveLibraryInstances(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]);\r
57d0e52a 187 selectedInstancesTableModel.addRow(saa[i]);\r
a13899c5 188 }\r
189 \r
71baa24b 190 \r
a13899c5 191 }\r
192 }\r
908b1c05 193 }\r
194 \r
195 public void initModuleSAOptions(String key) {\r
1800d80f 196 //\r
197 // display module SA options\r
198 //\r
199 String fvBinding = ffc.getFvBinding(key);\r
200 if (fvBinding != null) {\r
8f55ea73 201 jTextFieldFvBinding.setText(fvBinding);\r
1800d80f 202 }\r
203 String fileGuid = ffc.getFfsFileNameGuid(key);\r
204 if (fileGuid != null) {\r
8f55ea73 205 jTextFieldFileGuid.setText(fileGuid);\r
1800d80f 206 }\r
207 String ffsKey = ffc.getFfsFormatKey(key);\r
208 if (ffsKey != null) {\r
8f55ea73 209 jTextFieldFfsKey.setText(ffsKey);\r
1800d80f 210 }\r
bf5abaff 211 \r
212 optionsTableModel.setRowCount(0);\r
213 String[][] saa = new String[ffc.getModuleSAOptionsCount(key)][6];\r
214 ffc.getModuleSAOptions(key, saa);\r
215 for (int i = 0; i < saa.length; ++i) {\r
216 optionsTableModel.addRow(saa[i]);\r
217 }\r
a13899c5 218 }\r
219 \r
220 private void resolveLibraryInstances(String key) {\r
34c614e1 221 ModuleIdentification mi = GlobalData.getModuleId(key);\r
a13899c5 222 PackageIdentification[] depPkgList = null;\r
223 try{\r
224 Map<String, XmlObject> m = GlobalData.getNativeMsa(mi);\r
225 SurfaceAreaQuery.setDoc(m);\r
226 //\r
227 // Get dependency pkg list into which we will search lib instances.\r
228 //\r
229 depPkgList = SurfaceAreaQuery.getDependencePkg(null);\r
230 //\r
231 // Get the lib class consumed, produced by this module itself.\r
232 //\r
233 String[] classConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED");\r
234 \r
235 if (this.classConsumed == null) {\r
236 this.classConsumed = new HashMap<String, ArrayList<String>>();\r
237 }\r
238 \r
239 for(int i = 0; i < classConsumed.length; ++i){\r
240 ArrayList<String> consumedBy = this.classConsumed.get(classConsumed[i]);\r
241 if (consumedBy == null) {\r
242 consumedBy = new ArrayList<String>();\r
243 }\r
244 consumedBy.add(key);\r
245 this.classConsumed.put(classConsumed[i], consumedBy);\r
246 }\r
247 \r
248 String[] classProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED");\r
249 if (this.classProduced == null) {\r
250 this.classProduced = new ArrayList<String>();\r
251 }\r
252 for(int i = 0; i < classProduced.length; ++i){\r
253 if (!this.classProduced.contains(classProduced[i])){\r
254 this.classProduced.add(classProduced[i]);\r
255 }\r
256 }\r
257 //\r
258 // Get classes unresolved\r
259 //\r
260// Iterator<String> lip = this.classProduced.listIterator();\r
261// while(lip.hasNext()){\r
262// String clsProduced = lip.next();\r
263// this.classConsumed.remove(clsProduced);\r
264//\r
265// }\r
266 //\r
267 // find potential instances in all dependency pkgs for classes still in classConsumed.\r
268 //\r
269 if (classInstanceMap == null){\r
270 classInstanceMap = new HashMap<String, ArrayList<String>>();\r
271 }\r
272 Iterator<String> lic = this.classConsumed.keySet().iterator();\r
273 while(lic.hasNext()){\r
274 String cls = lic.next();\r
275 if (this.classProduced.contains(cls) || classInstanceMap.containsKey(cls)) {\r
276 continue;\r
277 }\r
278 ArrayList<String> instances = getInstancesForClass(cls, depPkgList);\r
279 if (instances.size() == 0){\r
280 JOptionPane.showMessageDialog(frame, "No Applicable Instance for Library Class " + \r
281 cls + ", Platform Build will Fail.");\r
282 }\r
283 classInstanceMap.put(cls, instances);\r
284 \r
285 }\r
286 \r
287 showClassToResolved();\r
288 }\r
289 catch(Exception e) {\r
290 e.printStackTrace();\r
291 }\r
292 }\r
293 \r
294 private ArrayList<String> getInstancesForClass(String cls, PackageIdentification[] depPkgList) throws Exception{\r
295 ArrayList<String> al = new ArrayList<String>();\r
296 \r
297 for (int i = 0; i < depPkgList.length; ++i) {\r
298 Set<ModuleIdentification> smi = GlobalData.getModules(depPkgList[i]);\r
299 Iterator ismi = smi.iterator();\r
300 while(ismi.hasNext()) {\r
301 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
302 \r
303 String[] clsProduced = getClassProduced(mi);\r
304 \r
305 boolean isPotential = false;\r
306 for (int j = 0; j < clsProduced.length; ++j) {\r
307 if (clsProduced[j] == null) {\r
308 continue;\r
309 }\r
310 if (clsProduced[j].equals(cls)){\r
311 isPotential = true;\r
312 }\r
313 if (classProduced.contains(clsProduced[j])) {\r
314 isPotential = false;\r
315 break;\r
316 }\r
317 }\r
318 if (isPotential) {\r
319 al.add(mi.getGuid() + " " + mi.getVersion() + " " + \r
320 depPkgList[i].getGuid() + " " + depPkgList[i].getVersion());\r
321 }\r
322 }\r
323 }\r
324 \r
325 return al;\r
326 }\r
327 \r
328 private void removeInstance(String key) {\r
34c614e1 329 ModuleIdentification mi = GlobalData.getModuleId(key); \r
a13899c5 330 //\r
331 // remove pcd information of instance from current ModuleSA\r
332 //\r
82dcbb45 333 ffc.removePcdData(moduleKey, mi);\r
a13899c5 334 //\r
335 // remove class produced by this instance and add back these produced class to be bound.\r
336 //\r
337 String[] clsProduced = getClassProduced(mi);\r
338 for (int i = 0; i < clsProduced.length; ++i) {\r
339 \r
340 classProduced.remove(clsProduced[i]);\r
341 }\r
342 //\r
343 // remove class consumed by this instance. we do not need to bound it now.\r
344 //\r
345 String[] clsConsumed = getClassConsumed(mi);\r
346 for (int i = 0; i < clsConsumed.length; ++i) {\r
347 ArrayList<String> al = classConsumed.get(clsConsumed[i]);\r
348 \r
349 if (al == null ) {\r
350 classConsumed.remove(clsConsumed[i]);\r
351 continue;\r
352 }\r
353 al.remove(key);\r
354 if (al.size() == 0) {\r
355 classConsumed.remove(clsConsumed[i]);\r
356 }\r
357 \r
358 }\r
359\r
360 showClassToResolved();\r
361 \r
362 }\r
363 \r
a13899c5 364 \r
365 private String[] getClassProduced(ModuleIdentification mi){\r
366 \r
367 try{\r
368 Map<String, XmlObject> m = GlobalData.getNativeMsa(mi);\r
369 SurfaceAreaQuery.setDoc(m);\r
370 String[] clsProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED");\r
371 return clsProduced;\r
372 \r
373 }catch (Exception e) {\r
374 e.printStackTrace();\r
375 }\r
376 return new String[0];\r
377 \r
378 }\r
379 \r
380 private String[] getClassConsumed(ModuleIdentification mi){\r
381 \r
382 String[] clsConsumed = null;\r
383 try{\r
384 Map<String, XmlObject> m = GlobalData.getNativeMsa(mi);\r
385 SurfaceAreaQuery.setDoc(m);\r
386 clsConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED");\r
387 \r
388 }catch (Exception e) {\r
389 e.printStackTrace();\r
390 }\r
391 return clsConsumed;\r
392 }\r
393 \r
394 private void showClassToResolved(){\r
57d0e52a 395 libClassTableModel.setRowCount(0);\r
a13899c5 396 if (classConsumed.size() == 0) {\r
397 return;\r
398 }\r
399 Iterator<String> li = classConsumed.keySet().iterator();\r
400 while(li.hasNext()){\r
401 \r
402 String[] s = {li.next()};\r
403 if (classConsumed.get(s[0]) == null) {\r
404 continue;\r
405 }\r
406 if (classConsumed.get(s[0]).size() == 0) {\r
407 continue;\r
408 }\r
409 if (!classProduced.contains(s[0])){\r
57d0e52a 410 libClassTableModel.addRow(s);\r
a13899c5 411 }\r
412 }\r
57d0e52a 413 libInstanceTableModel.setRowCount(0);\r
a13899c5 414 }\r
415 /**\r
416 * This method initializes this\r
417 * \r
418 * @return void\r
419 */\r
420 private void initialize() {\r
421 this.setSize(664, 515);\r
f3b0ed9a 422 this.centerWindow();\r
a13899c5 423 this.setModal(true);\r
424 this.setTitle("Module Settings");\r
425 this.setContentPane(getJContentPane());\r
426 }\r
427\r
428 /**\r
429 * This method initializes jContentPane\r
430 * \r
431 * @return javax.swing.JPanel\r
432 */\r
433 private JPanel getJContentPane() {\r
434 if (jContentPane == null) {\r
435 jContentPane = new JPanel();\r
436 jContentPane.setLayout(new BorderLayout());\r
437 jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);\r
57d0e52a 438 jContentPane.add(getJPanelContentPaneSouth(), java.awt.BorderLayout.SOUTH);\r
a13899c5 439 }\r
440 return jContentPane;\r
441 }\r
442\r
443 /**\r
444 * This method initializes jTabbedPane \r
445 * \r
446 * @return javax.swing.JTabbedPane \r
447 */\r
448 private JTabbedPane getJTabbedPane() {\r
449 if (jTabbedPane == null) {\r
450 jTabbedPane = new JTabbedPane();\r
57d0e52a 451 jTabbedPane.addTab("PCD Build Definition", null, getJPanelPcd(), null);\r
452 jTabbedPane.addTab("Module SA Options", null, getJPanelModuleSaOpts(), null);\r
453 jTabbedPane.addTab("Libraries", null, getJPanelLibrary(), null);\r
a13899c5 454 }\r
455 return jTabbedPane;\r
456 }\r
457\r
458 /**\r
57d0e52a 459 * This method initializes jPanelPcd\r
a13899c5 460 * \r
461 * @return javax.swing.JPanel \r
462 */\r
57d0e52a 463 private JPanel getJPanelPcd() {\r
464 if (jPanelPcd == null) {\r
465 jLabelPcdData = new JLabel();\r
466 jLabelPcdData.setText("PcdData");\r
467 jPanelPcd = new JPanel();\r
468 jPanelPcd.setLayout(new BorderLayout());\r
469 jPanelPcd.add(jLabelPcdData, java.awt.BorderLayout.NORTH);\r
470 jPanelPcd.add(getJScrollPaneTablePcd(), java.awt.BorderLayout.CENTER);\r
471 jPanelPcd.add(getJPanelPcdSouth(), java.awt.BorderLayout.SOUTH);\r
472 jPanelPcd.addComponentListener(new java.awt.event.ComponentAdapter() {\r
a13899c5 473 public void componentShown(java.awt.event.ComponentEvent e) {\r
055e7ae6 474// initPcdBuildDefinition(moduleKey);\r
a13899c5 475 }\r
476 });\r
477 \r
478 }\r
57d0e52a 479 return jPanelPcd;\r
a13899c5 480 }\r
481\r
482 /**\r
57d0e52a 483 * This method initializes jPanelLibrary\r
a13899c5 484 * \r
485 * @return javax.swing.JPanel \r
486 */\r
57d0e52a 487 private JPanel getJPanelLibrary() {\r
488 if (jPanelLibrary == null) {\r
489 jPanelLibrary = new JPanel();\r
490 jPanelLibrary.setLayout(new BorderLayout());\r
491 jPanelLibrary.add(getJSplitPane(), java.awt.BorderLayout.NORTH);\r
492 jPanelLibrary.add(getJPanelLibrarySouth(), java.awt.BorderLayout.SOUTH);\r
493 jPanelLibrary.add(getJPanelLibraryCenter(), java.awt.BorderLayout.CENTER);\r
494 jPanelLibrary.addComponentListener(new java.awt.event.ComponentAdapter() {\r
a13899c5 495 public void componentShown(java.awt.event.ComponentEvent e) {\r
908b1c05 496 initLibraries(moduleKey);\r
a13899c5 497 }\r
498 });\r
499 }\r
57d0e52a 500 return jPanelLibrary;\r
a13899c5 501 }\r
502\r
503 /**\r
57d0e52a 504 * This method initializes jScrollPaneTablePcd\r
a13899c5 505 * \r
506 * @return javax.swing.JScrollPane \r
507 */\r
57d0e52a 508 private JScrollPane getJScrollPaneTablePcd() {\r
509 if (jScrollPaneTablePcd == null) {\r
510 jScrollPaneTablePcd = new JScrollPane();\r
511 jScrollPaneTablePcd.setViewportView(getJTablePcd());\r
a13899c5 512 }\r
57d0e52a 513 return jScrollPaneTablePcd;\r
a13899c5 514 }\r
515\r
516 /**\r
517 * This method initializes jTable \r
518 * \r
519 * @return javax.swing.JTable \r
520 */\r
57d0e52a 521 private JTable getJTablePcd() {\r
522 if (jTablePcd == null) {\r
a13899c5 523 model = new PartialEditableTableModel();\r
57d0e52a 524 jTablePcd = new JTable(model);\r
525 jTablePcd.setRowHeight(20);\r
526 jTablePcd.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
a13899c5 527 model.addColumn("CName");\r
528 model.addColumn("TokenSpaceGUID");\r
529 model.addColumn("ItemType");\r
530 model.addColumn("Token");\r
82961247 531 model.addColumn("MaxDatumSize");\r
a13899c5 532 model.addColumn("DataType");\r
533 model.addColumn("DefaultValue");\r
534 \r
57d0e52a 535 jTablePcd.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
536 jTablePcd.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
a13899c5 537 public void valueChanged(ListSelectionEvent e) {\r
44053733 538 \r
a13899c5 539 if (e.getValueIsAdjusting()){\r
540 return;\r
541 }\r
542 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
543 if (lsm.isSelectionEmpty()) {\r
544 return;\r
545 }\r
546 else{\r
908b1c05 547 int selectedRow = lsm.getMinSelectionIndex();\r
57d0e52a 548 String cName = jTablePcd.getValueAt(selectedRow, 0)+"";\r
908b1c05 549 String[] pcdInfo = {"", ""};\r
550 getPcdInfo(cName, pcdInfo);\r
57d0e52a 551 jTextAreaPcdHelp.setText(pcdInfo[0]);\r
908b1c05 552 initComboBox(pcdInfo[1]);\r
57d0e52a 553 jComboBoxItemType.setSelectedItem(pcdInfo[1]);\r
554 jTextFieldMaxDatumSize.setEnabled(true);\r
555 jTextFieldMaxDatumSize.setVisible(true);\r
556 jTextFieldMaxDatumSize.setText(jTablePcd.getValueAt(selectedRow, 4)+"");\r
557 jTextFieldPcdDefault.setEnabled(true);\r
558 jTextFieldPcdDefault.setText(jTablePcd.getValueAt(selectedRow, 6)+"");\r
559 if (jTablePcd.getValueAt(selectedRow, 5).equals("VOID*")) {\r
908b1c05 560 if (pcdInfo[1].equals("FEATURE_FLAG")) {\r
57d0e52a 561 jTextFieldMaxDatumSize.setVisible(false);\r
908b1c05 562 }\r
563 else if (pcdInfo[1].equals("FIXED_AT_BUILD")) {\r
564 try{\r
57d0e52a 565 jTextFieldMaxDatumSize.setEnabled(false);\r
566 jTextFieldMaxDatumSize.setText(ffc.setMaxSizeForPointer(jTablePcd.getValueAt(selectedRow, 6)+"")+"");\r
908b1c05 567 }\r
568 catch(Exception except){\r
569 JOptionPane.showMessageDialog(frame, "Unacceptable PCD Value: " + except.getMessage());\r
570 }\r
571 }\r
572 else{\r
57d0e52a 573 jTextFieldMaxDatumSize.setText(jTablePcd.getValueAt(selectedRow, 4)+"");\r
908b1c05 574 }\r
575 }\r
576 else {\r
57d0e52a 577 jTextFieldMaxDatumSize.setEnabled(false);\r
908b1c05 578 }\r
a13899c5 579 \r
57d0e52a 580 if (!jTablePcd.getValueAt(selectedRow, 2).equals("DYNAMIC") && !jTablePcd.getValueAt(selectedRow, 2).equals("DYNAMIC_EX")) {\r
581 jTextFieldPcdDefault.setText(jTablePcd.getValueAt(selectedRow, 6)+"");\r
582 if (jTablePcd.getValueAt(selectedRow, 2).equals("FEATURE_FLAG")){\r
583 jTextFieldPcdDefault.setVisible(false);\r
584 jComboBoxFeatureFlagValue.setVisible(true);\r
585 jComboBoxFeatureFlagValue.setSelectedItem(jTablePcd.getValueAt(selectedRow, 6)+"");\r
908b1c05 586 }\r
587 else{\r
57d0e52a 588 jTextFieldPcdDefault.setVisible(true);\r
589 jTextFieldPcdDefault.setEnabled(true);\r
590 jComboBoxFeatureFlagValue.setVisible(false);\r
908b1c05 591 }\r
592 }\r
593 else{\r
57d0e52a 594 jTextFieldPcdDefault.setEnabled(false);\r
908b1c05 595 }\r
a13899c5 596 }\r
908b1c05 597 \r
598 \r
a13899c5 599 }\r
600 });\r
601 \r
57d0e52a 602 jTablePcd.getModel().addTableModelListener(new TableModelListener() {\r
a13899c5 603 public void tableChanged(TableModelEvent arg0) {\r
604 // TODO Auto-generated method stub\r
908b1c05 605// int row = arg0.getFirstRow();\r
606// TableModel m = (TableModel)arg0.getSource();\r
607 \r
a13899c5 608 if (arg0.getType() == TableModelEvent.UPDATE){\r
908b1c05 609 //update xml doc here.\r
a13899c5 610 \r
611 }\r
612 }\r
613 });\r
614 }\r
57d0e52a 615 return jTablePcd;\r
a13899c5 616 }\r
908b1c05 617 \r
618 private void initComboBox(String originalType) {\r
57d0e52a 619 jComboBoxItemType.removeAllItems();\r
620 jComboBoxItemType.addItem(originalType);\r
908b1c05 621 if (originalType.equals("PATCHABLE_IN_MODULE")) {\r
57d0e52a 622 jComboBoxItemType.addItem("FIXED_AT_BUILD");\r
908b1c05 623 }\r
624 if (originalType.equals("DYNAMIC")) {\r
57d0e52a 625 jComboBoxItemType.addItem("FIXED_AT_BUILD");\r
626 jComboBoxItemType.addItem("PATCHABLE_IN_MODULE");\r
908b1c05 627 }\r
628 }\r
629 \r
630 private void getPcdInfo(String cName, String[] sa) {\r
631 String[][] saa = new String[ffc.getLibraryInstancesCount(moduleKey)][5];\r
632 ffc.getLibraryInstances(moduleKey, saa);\r
633 \r
634 try{\r
34c614e1 635 if (ffc.getPcdBuildDataInfo(GlobalData.getModuleId(moduleKey), cName, sa)) {\r
908b1c05 636 return;\r
637 }\r
638 for (int j = 0; j < saa.length; ++j) {\r
34c614e1 639 if (ffc.getPcdBuildDataInfo(GlobalData.getModuleId(saa[j][1] + " " + saa[j][2] + " " + saa[j][3] + " " + saa[j][4]),\r
908b1c05 640 cName, sa)) {\r
641 return;\r
642 }\r
643 }\r
644 }\r
645 catch(Exception e) {\r
646 JOptionPane.showMessageDialog(this, "Get PCD details fail: " + e.getMessage());\r
647 }\r
648 }\r
a13899c5 649\r
650 /**\r
57d0e52a 651 * This method initializes jPanelPcdSouth\r
a13899c5 652 * \r
653 * @return javax.swing.JPanel \r
654 */\r
57d0e52a 655 private JPanel getJPanelPcdSouth() {\r
656 if (jPanelPcdSouth == null) {\r
657 jLabelPcdHelp = new JLabel();\r
658 jLabelPcdHelp.setText("PCD Description");\r
659 jPanelPcdSouth = new JPanel();\r
660 jPanelPcdSouth.setPreferredSize(new java.awt.Dimension(607,200));\r
661 jPanelPcdSouth.add(jLabelPcdHelp, null);\r
662 jPanelPcdSouth.add(getJScrollPanePcdHelp(), null);\r
663 jPanelPcdSouth.add(getJPanelPcdFields(), null);\r
a13899c5 664 }\r
57d0e52a 665 return jPanelPcdSouth;\r
a13899c5 666 }\r
667\r
668 /**\r
57d0e52a 669 * This method initializes jScrollPanePcdHelp\r
a13899c5 670 * \r
671 * @return javax.swing.JScrollPane \r
672 */\r
57d0e52a 673 private JScrollPane getJScrollPanePcdHelp() {\r
674 if (jScrollPanePcdHelp == null) {\r
675 jScrollPanePcdHelp = new JScrollPane();\r
676 jScrollPanePcdHelp.setPreferredSize(new java.awt.Dimension(500,100));\r
677 jScrollPanePcdHelp.setViewportView(getJTextAreaPcdHelp());\r
a13899c5 678 }\r
57d0e52a 679 return jScrollPanePcdHelp;\r
a13899c5 680 }\r
681\r
682 /**\r
57d0e52a 683 * This method initializes jTextAreaPcdHelp\r
a13899c5 684 * \r
685 * @return javax.swing.JTextArea \r
686 */\r
57d0e52a 687 private JTextArea getJTextAreaPcdHelp() {\r
688 if (jTextAreaPcdHelp == null) {\r
689 jTextAreaPcdHelp = new JTextArea();\r
690 jTextAreaPcdHelp.setEditable(false);\r
a13899c5 691 }\r
57d0e52a 692 return jTextAreaPcdHelp;\r
a13899c5 693 }\r
694\r
695 /**\r
57d0e52a 696 * This method initializes jPanelContentPaneSouth\r
a13899c5 697 * \r
698 * @return javax.swing.JPanel \r
699 */\r
57d0e52a 700 private JPanel getJPanelContentPaneSouth() {\r
701 if (jPanelContentPaneSouth == null) {\r
a13899c5 702 FlowLayout flowLayout = new FlowLayout();\r
703 flowLayout.setAlignment(java.awt.FlowLayout.RIGHT);\r
57d0e52a 704 jPanelContentPaneSouth = new JPanel();\r
705 jPanelContentPaneSouth.setLayout(flowLayout);\r
706 jPanelContentPaneSouth.add(getJButtonOk(), null);\r
707 jPanelContentPaneSouth.add(getJButtonCancel(), null);\r
a13899c5 708 }\r
57d0e52a 709 return jPanelContentPaneSouth;\r
a13899c5 710 }\r
711\r
712 /**\r
713 * This method initializes jSplitPane \r
714 * \r
715 * @return javax.swing.JSplitPane \r
716 */\r
717 private JSplitPane getJSplitPane() {\r
718 if (jSplitPane == null) {\r
719 jSplitPane = new JSplitPane();\r
720 jSplitPane.setDividerLocation(200);\r
57d0e52a 721 jSplitPane.setLeftComponent(getJPanelLibraryLeft());\r
722 jSplitPane.setRightComponent(getJPanelLibraryRight());\r
a13899c5 723 jSplitPane.setPreferredSize(new java.awt.Dimension(202,200));\r
724 }\r
725 return jSplitPane;\r
726 }\r
727\r
728 /**\r
57d0e52a 729 * This method initializes jPanelLibraryLeft\r
a13899c5 730 * \r
731 * @return javax.swing.JPanel \r
732 */\r
57d0e52a 733 private JPanel getJPanelLibraryLeft() {\r
734 if (jPanelLibraryLeft == null) {\r
735 jLabelLibClass = new JLabel();\r
736 jLabelLibClass.setText("Library Classes Uninstantiated");\r
737 jPanelLibraryLeft = new JPanel();\r
738 jPanelLibraryLeft.add(jLabelLibClass, null);\r
739 jPanelLibraryLeft.add(getJScrollPaneLibClass(), null);\r
a13899c5 740 }\r
57d0e52a 741 return jPanelLibraryLeft;\r
a13899c5 742 }\r
743\r
744 /**\r
57d0e52a 745 * This method initializes jPanelLibraryRight\r
a13899c5 746 * \r
747 * @return javax.swing.JPanel \r
748 */\r
57d0e52a 749 private JPanel getJPanelLibraryRight() {\r
750 if (jPanelLibraryRight == null) {\r
751 jLabelQualifiedInstance = new JLabel();\r
752 jLabelQualifiedInstance.setText("Instances Available");\r
753 jPanelLibraryRight = new JPanel();\r
754 jPanelLibraryRight.add(jLabelQualifiedInstance, null);\r
755 jPanelLibraryRight.add(getJScrollPaneQualifiedInstance(), null);\r
a13899c5 756 }\r
57d0e52a 757 return jPanelLibraryRight;\r
a13899c5 758 }\r
759\r
760 /**\r
57d0e52a 761 * This method initializes jScrollPaneSelectedInstances\r
a13899c5 762 * \r
763 * @return javax.swing.JScrollPane \r
764 */\r
57d0e52a 765 private JScrollPane getJScrollPaneSelectedInstances() {\r
766 if (jScrollPaneSelectedInstances == null) {\r
767 jScrollPaneSelectedInstances = new JScrollPane();\r
768 jScrollPaneSelectedInstances.setPreferredSize(new java.awt.Dimension(453,150));\r
769 jScrollPaneSelectedInstances.setViewportView(getJTableSelectedInstances());\r
a13899c5 770 }\r
57d0e52a 771 return jScrollPaneSelectedInstances;\r
a13899c5 772 }\r
773\r
774 /**\r
57d0e52a 775 * This method initializes jTableSelectedInstances\r
a13899c5 776 * \r
777 * @return javax.swing.JTable \r
778 */\r
57d0e52a 779 private JTable getJTableSelectedInstances() {\r
780 if (jTableSelectedInstances == null) {\r
781 selectedInstancesTableModel = new LibraryTableModel();\r
782 selectedInstancesTableModel.addColumn("Name");\r
783 selectedInstancesTableModel.addColumn("ModuleGUID");\r
784 selectedInstancesTableModel.addColumn("ModuleVersion");\r
785 selectedInstancesTableModel.addColumn("PackageGUID");\r
786 selectedInstancesTableModel.addColumn("PackageVersion");\r
787 jTableSelectedInstances = new JTable(selectedInstancesTableModel);\r
788 jTableSelectedInstances.setRowHeight(20);\r
789 jTableSelectedInstances.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
790 jTableSelectedInstances.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
a13899c5 791 \r
792 }\r
57d0e52a 793 return jTableSelectedInstances;\r
a13899c5 794 }\r
795\r
796 /**\r
57d0e52a 797 * This method initializes jScrollPaneLibClass\r
a13899c5 798 * \r
799 * @return javax.swing.JScrollPane \r
800 */\r
57d0e52a 801 private JScrollPane getJScrollPaneLibClass() {\r
802 if (jScrollPaneLibClass == null) {\r
803 jScrollPaneLibClass = new JScrollPane();\r
804 jScrollPaneLibClass.setPreferredSize(new java.awt.Dimension(200,170));\r
805 jScrollPaneLibClass.setViewportView(getJTableLibClass());\r
a13899c5 806 }\r
57d0e52a 807 return jScrollPaneLibClass;\r
a13899c5 808 }\r
809\r
810 /**\r
57d0e52a 811 * This method initializes jTableLibClass\r
a13899c5 812 * \r
813 * @return javax.swing.JTable \r
814 */\r
57d0e52a 815 private JTable getJTableLibClass() {\r
816 if (jTableLibClass == null) {\r
817 libClassTableModel = new LibraryTableModel();\r
818 libClassTableModel.addColumn("LibraryClass");\r
819 jTableLibClass = new JTable(libClassTableModel);\r
820 jTableLibClass.setRowHeight(20);\r
821 jTableLibClass.setShowGrid(false);\r
822 jTableLibClass.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
823 jTableLibClass.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
a13899c5 824 public void valueChanged(ListSelectionEvent e) {\r
825 if (e.getValueIsAdjusting()){\r
826 return;\r
827 }\r
828 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
829 if (lsm.isSelectionEmpty()) {\r
830 return;\r
831 }\r
832 else{\r
833 int selectedRow2 = lsm.getMinSelectionIndex();\r
834 if (selectedRow2 < 0) {\r
835 return;\r
836 }\r
837 //\r
838 // display potential lib instances according to class selection\r
839 //\r
57d0e52a 840 libInstanceTableModel.setRowCount(0);\r
841 String cls = libClassTableModel.getValueAt(selectedRow2, 0).toString();\r
a13899c5 842 ArrayList<String> al = classInstanceMap.get(cls);\r
843 ListIterator<String> li = al.listIterator();\r
844 while(li.hasNext()) {\r
845 String instance = li.next();\r
846 String[] s = {"", "", "", "", ""};\r
34c614e1 847 if (GlobalData.getModuleId(instance) != null) {\r
848 s[0] = GlobalData.getModuleId(instance).getName();\r
a13899c5 849 }\r
850 \r
851 String[] instancePart = instance.split(" ");\r
852 for (int i = 0; i < instancePart.length; ++i){\r
853 s[i+1] = instancePart[i];\r
854 }\r
57d0e52a 855 libInstanceTableModel.addRow(s);\r
a13899c5 856 }\r
857 \r
858 }\r
859 }\r
860 });\r
861 }\r
57d0e52a 862 return jTableLibClass;\r
a13899c5 863 }\r
864\r
865 /**\r
57d0e52a 866 * This method initializes jScrollPaneQualifiedInstance\r
a13899c5 867 * \r
868 * @return javax.swing.JScrollPane \r
869 */\r
57d0e52a 870 private JScrollPane getJScrollPaneQualifiedInstance() {\r
871 if (jScrollPaneQualifiedInstance == null) {\r
872 jScrollPaneQualifiedInstance = new JScrollPane();\r
873 jScrollPaneQualifiedInstance.setPreferredSize(new java.awt.Dimension(430,170));\r
874 jScrollPaneQualifiedInstance.setViewportView(getJTableLibInstances());\r
a13899c5 875 }\r
57d0e52a 876 return jScrollPaneQualifiedInstance;\r
a13899c5 877 }\r
878\r
879 /**\r
57d0e52a 880 * This method initializes jTableLibInstances\r
a13899c5 881 * \r
882 * @return javax.swing.JTable \r
883 */\r
57d0e52a 884 private JTable getJTableLibInstances() {\r
885 if (jTableLibInstances == null) {\r
886 libInstanceTableModel = new LibraryTableModel();\r
887 libInstanceTableModel.addColumn("Name");\r
888 libInstanceTableModel.addColumn("ModuleGUID");\r
889 libInstanceTableModel.addColumn("ModuleVersion");\r
890 libInstanceTableModel.addColumn("PackageGUID");\r
891 libInstanceTableModel.addColumn("PackageVersion");\r
892 jTableLibInstances = new JTable(libInstanceTableModel);\r
893 jTableLibInstances.setRowHeight(20);\r
894 jTableLibInstances.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
895 jTableLibInstances.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
908b1c05 896 \r
a13899c5 897 }\r
57d0e52a 898 return jTableLibInstances;\r
a13899c5 899 }\r
900\r
901 /**\r
57d0e52a 902 * This method initializes jPanelLibrarySouth\r
a13899c5 903 * \r
904 * @return javax.swing.JPanel \r
905 */\r
57d0e52a 906 private JPanel getJPanelLibrarySouth() {\r
907 if (jPanelLibrarySouth == null) {\r
908 jPanelLibrarySouth = new JPanel();\r
a13899c5 909 }\r
57d0e52a 910 return jPanelLibrarySouth;\r
a13899c5 911 }\r
912\r
913 /**\r
57d0e52a 914 * This method initializes jPanelLibraryCenter\r
a13899c5 915 * \r
916 * @return javax.swing.JPanel \r
917 */\r
57d0e52a 918 private JPanel getJPanelLibraryCenter() {\r
919 if (jPanelLibraryCenter == null) {\r
920 jLabelInstanceHelp = new JLabel();\r
921 jLabelInstanceHelp.setText("Instance Description");\r
922 jLabelSelectedInstances = new JLabel();\r
923 jLabelSelectedInstances.setText("Selected Instances");\r
924 jPanelLibraryCenter = new JPanel();\r
925 jPanelLibraryCenter.add(jLabelInstanceHelp, null);\r
926 jPanelLibraryCenter.add(getJScrollPaneInstanceHelp(), null);\r
927 jPanelLibraryCenter.add(getJButtonAdd(), null);\r
928 jPanelLibraryCenter.add(getJButtonDeleteInstance(), null);\r
929 jPanelLibraryCenter.add(jLabelSelectedInstances, null);\r
930 jPanelLibraryCenter.add(getJScrollPaneSelectedInstances(), null);\r
a13899c5 931 }\r
57d0e52a 932 return jPanelLibraryCenter;\r
a13899c5 933 }\r
934\r
935 /**\r
57d0e52a 936 * This method initializes jScrollPaneInstanceHelp\r
a13899c5 937 * \r
938 * @return javax.swing.JScrollPane \r
939 */\r
57d0e52a 940 private JScrollPane getJScrollPaneInstanceHelp() {\r
941 if (jScrollPaneInstanceHelp == null) {\r
942 jScrollPaneInstanceHelp = new JScrollPane();\r
943 jScrollPaneInstanceHelp.setPreferredSize(new java.awt.Dimension(300,50));\r
944 jScrollPaneInstanceHelp.setViewportView(getJTextAreaInstanceHelp());\r
a13899c5 945 }\r
57d0e52a 946 return jScrollPaneInstanceHelp;\r
a13899c5 947 }\r
948\r
949 /**\r
57d0e52a 950 * This method initializes jTextAreaInstanceHelp\r
a13899c5 951 * \r
952 * @return javax.swing.JTextArea \r
953 */\r
57d0e52a 954 private JTextArea getJTextAreaInstanceHelp() {\r
955 if (jTextAreaInstanceHelp == null) {\r
956 jTextAreaInstanceHelp = new JTextArea();\r
957 jTextAreaInstanceHelp.setEditable(false);\r
a13899c5 958 }\r
57d0e52a 959 return jTextAreaInstanceHelp;\r
a13899c5 960 }\r
961\r
962 /**\r
57d0e52a 963 * This method initializes jButtonAdd\r
a13899c5 964 * \r
965 * @return javax.swing.JButton \r
966 */\r
57d0e52a 967 private JButton getJButtonAdd() {\r
968 if (jButtonAdd == null) {\r
969 jButtonAdd = new JButton();\r
970 jButtonAdd.setPreferredSize(new java.awt.Dimension(80,20));\r
971 jButtonAdd.setText("Add");\r
972 jButtonAdd.addActionListener(new java.awt.event.ActionListener() {\r
a13899c5 973 public void actionPerformed(java.awt.event.ActionEvent e) {\r
57d0e52a 974 int row = jTableLibInstances.getSelectedRow();\r
a13899c5 975 if (row < 0) {\r
976 return;\r
977 }\r
8f55ea73 978 docConsole.setSaved(false);\r
57d0e52a 979 Object[] s = {libInstanceTableModel.getValueAt(row, 0), libInstanceTableModel.getValueAt(row, 1),\r
980 libInstanceTableModel.getValueAt(row, 2), libInstanceTableModel.getValueAt(row, 3),\r
981 libInstanceTableModel.getValueAt(row, 4)};\r
982 selectedInstancesTableModel.addRow(s);\r
983 String instanceValue = libInstanceTableModel.getValueAt(row, 1) + " " +\r
984 libInstanceTableModel.getValueAt(row, 2) + " " +\r
985 libInstanceTableModel.getValueAt(row, 3) + " " +\r
986 libInstanceTableModel.getValueAt(row, 4);\r
34c614e1 987 ModuleIdentification libMi = GlobalData.getModuleId(instanceValue);\r
82dcbb45 988 ffc.genLibraryInstance(libMi, moduleKey);\r
a13899c5 989 //\r
990 // Add pcd information of selected instance to current moduleSA\r
991 //\r
82961247 992 try{\r
82dcbb45 993 ffc.addFrameworkModulesPcdBuildDefs(libMi, null, ffc.getModuleSA(moduleKey));\r
82961247 994 }\r
995 catch (Exception exception) {\r
34c614e1 996 JOptionPane.showMessageDialog(frame, "Adding Instance" + s[0] + ": "+ exception.getMessage());\r
82961247 997 }\r
a13899c5 998 resolveLibraryInstances(instanceValue);\r
999 }\r
1000 });\r
1001 }\r
57d0e52a 1002 return jButtonAdd;\r
a13899c5 1003 }\r
1004\r
1005 /**\r
57d0e52a 1006 * This method initializes jButton1\r
a13899c5 1007 * \r
1008 * @return javax.swing.JButton \r
1009 */\r
57d0e52a 1010 private JButton getJButtonDeleteInstance() {\r
1011 if (jButtonDeleteInstance == null) {\r
1012 jButtonDeleteInstance = new JButton();\r
1013 jButtonDeleteInstance.setPreferredSize(new java.awt.Dimension(80,20));\r
1014 jButtonDeleteInstance.setText("Delete");\r
1015 jButtonDeleteInstance.addActionListener(new java.awt.event.ActionListener() {\r
a13899c5 1016 public void actionPerformed(java.awt.event.ActionEvent e) {\r
57d0e52a 1017 int row = jTableSelectedInstances.getSelectedRow();\r
a13899c5 1018 if (row < 0) {\r
1019 return;\r
1020 }\r
8f55ea73 1021 docConsole.setSaved(false);\r
57d0e52a 1022 removeInstance(selectedInstancesTableModel.getValueAt(row, 1) + " " +\r
1023 selectedInstancesTableModel.getValueAt(row, 2) + " " +\r
1024 selectedInstancesTableModel.getValueAt(row, 3) + " " +\r
1025 selectedInstancesTableModel.getValueAt(row, 4));\r
908b1c05 1026 ffc.removeLibraryInstance(moduleKey, row);\r
57d0e52a 1027 selectedInstancesTableModel.removeRow(row);\r
a13899c5 1028 \r
1029 }\r
1030 });\r
1031 }\r
57d0e52a 1032 return jButtonDeleteInstance;\r
a13899c5 1033 }\r
1034\r
1035 /**\r
1036 * This method initializes jButton2 \r
1037 * \r
1038 * @return javax.swing.JButton \r
1039 */\r
57d0e52a 1040 private JButton getJButtonOk() {\r
1041 if (jButtonOk == null) {\r
1042 jButtonOk = new JButton();\r
1043 jButtonOk.setPreferredSize(new java.awt.Dimension(80,20));\r
1044 jButtonOk.setText("Ok");\r
1045 jButtonOk.addActionListener(this);\r
a13899c5 1046 }\r
57d0e52a 1047 return jButtonOk;\r
a13899c5 1048 }\r
1049\r
1050 /**\r
1051 * This method initializes jButton3 \r
1052 * \r
1053 * @return javax.swing.JButton \r
1054 */\r
57d0e52a 1055 private JButton getJButtonCancel() {\r
1056 if (jButtonCancel == null) {\r
1057 jButtonCancel = new JButton();\r
1058 jButtonCancel.setPreferredSize(new java.awt.Dimension(80,20));\r
1059 jButtonCancel.setText("Cancel");\r
1060 jButtonCancel.setVisible(false);\r
a13899c5 1061 }\r
57d0e52a 1062 return jButtonCancel;\r
a13899c5 1063 }\r
1064 public void actionPerformed(ActionEvent arg0) {\r
1065\r
57d0e52a 1066 if (arg0.getSource() == jButtonOk) {\r
1067 if (jTableModuleSaOptions.isEditing()) {\r
1068 jTableModuleSaOptions.getCellEditor().stopCellEditing();\r
bf5abaff 1069 }\r
a13899c5 1070 this.setVisible(false);\r
1071 }\r
1072 }\r
6a09eb19 1073 /**\r
57d0e52a 1074 * This method initializes jPanelModuleSaOpts\r
6a09eb19 1075 * \r
1076 * @return javax.swing.JPanel \r
1077 */\r
57d0e52a 1078 private JPanel getJPanelModuleSaOpts() {\r
1079 if (jPanelModuleSaOpts == null) {\r
1080 jLabelPad = new JLabel();\r
1081 jLabelPad.setText("");\r
1082 jLabelPad.setPreferredSize(new java.awt.Dimension(250,16));\r
8f55ea73 1083 FlowLayout flowLayout4 = new FlowLayout();\r
1084 flowLayout4.setAlignment(java.awt.FlowLayout.LEFT);\r
57d0e52a 1085 jLabelFfsFormatKey = new JLabel();\r
1086 jLabelFfsFormatKey.setText("FFS Format Key");\r
1087 jLabelFfsFormatKey.setPreferredSize(new java.awt.Dimension(90,16));\r
1088 jLabelFfsFileGuid = new JLabel();\r
1089 jLabelFfsFileGuid.setText("FFS File GUID");\r
1090 jLabelFfsFileGuid.setPreferredSize(new java.awt.Dimension(90,16));\r
1091 jLabelFvBinding = new JLabel();\r
1092 jLabelFvBinding.setText("FV Binding");\r
1093 jLabelFvBinding.setPreferredSize(new java.awt.Dimension(90,16));\r
1094 jPanelModuleSaOpts = new JPanel();\r
1095 jPanelModuleSaOpts.setLayout(flowLayout4);\r
1096 jPanelModuleSaOpts.add(jLabelFvBinding, null);\r
1097 jPanelModuleSaOpts.add(getJTextFieldFvBinding(), null);\r
1098 jPanelModuleSaOpts.add(jLabelFfsFileGuid, null);\r
1099 jPanelModuleSaOpts.add(getJTextFieldFileGuid(), null);\r
1100 jPanelModuleSaOpts.add(jLabelFfsFormatKey, null);\r
1101 jPanelModuleSaOpts.add(getJTextFieldFfsKey(), null);\r
1102 jPanelModuleSaOpts.add(getJScrollPaneModuleSaOptions(), null);\r
1103 jPanelModuleSaOpts.add(jLabelPad, null);\r
1104 jPanelModuleSaOpts.add(getJButtonNew(), null);\r
1105 jPanelModuleSaOpts.add(getJButtonDeleteOption(), null);\r
1106 jPanelModuleSaOpts.addComponentListener(new java.awt.event.ComponentAdapter() {\r
71baa24b 1107 public void componentShown(java.awt.event.ComponentEvent e) {\r
908b1c05 1108 initModuleSAOptions(moduleKey);\r
71baa24b 1109 }\r
1110 });\r
6a09eb19 1111 }\r
57d0e52a 1112 return jPanelModuleSaOpts;\r
6a09eb19 1113 }\r
1114 /**\r
1115 * This method initializes jTextField \r
1116 * \r
1117 * @return javax.swing.JTextField \r
1118 */\r
8f55ea73 1119 private JTextField getJTextFieldFvBinding() {\r
1120 if (jTextFieldFvBinding == null) {\r
1121 jTextFieldFvBinding = new JTextField();\r
1122 jTextFieldFvBinding.setPreferredSize(new java.awt.Dimension(150,20));\r
1123 jTextFieldFvBinding.addFocusListener(new java.awt.event.FocusAdapter() {\r
1124 public void focusLost(java.awt.event.FocusEvent e) {\r
1125 String originalFvBinding = ffc.getFvBinding(moduleKey);\r
1126 String newFvBinding = jTextFieldFvBinding.getText();\r
1127 if (newFvBinding.equals(originalFvBinding)) {\r
1128 return;\r
1129 }\r
1130 if (newFvBinding.length() == 0 && originalFvBinding == null) {\r
1131 return;\r
1132 }\r
1133 docConsole.setSaved(false);\r
1134 ffc.setFvBinding(moduleKey, newFvBinding);\r
1135 }\r
1136 });\r
bf5abaff 1137 \r
6a09eb19 1138 }\r
8f55ea73 1139 return jTextFieldFvBinding;\r
6a09eb19 1140 }\r
1141 /**\r
1142 * This method initializes jTextField1 \r
1143 * \r
1144 * @return javax.swing.JTextField \r
1145 */\r
8f55ea73 1146 private JTextField getJTextFieldFileGuid() {\r
1147 if (jTextFieldFileGuid == null) {\r
1148 jTextFieldFileGuid = new JTextField();\r
1149 jTextFieldFileGuid.setPreferredSize(new java.awt.Dimension(300,20));\r
1150 jTextFieldFileGuid.addFocusListener(new java.awt.event.FocusAdapter() {\r
1151 public void focusLost(java.awt.event.FocusEvent e) {\r
1152 String originalFileGuid = ffc.getFfsFileNameGuid(moduleKey);\r
1153 String newFileGuid = jTextFieldFileGuid.getText();\r
1154 if (newFileGuid.equals(originalFileGuid)) {\r
1155 return;\r
1156 }\r
1157 if (newFileGuid.length() == 0 && originalFileGuid == null) {\r
1158 return;\r
1159 }\r
1160 if (newFileGuid.length() > 0) {\r
1161 if (!DataValidation.isGuid(newFileGuid)) {\r
1162 JOptionPane.showMessageDialog(frame, "FFS File Guid is NOT GUID Type.");\r
1163 return;\r
1164 }\r
1165 }\r
1166 \r
1167 docConsole.setSaved(false);\r
1168 if (newFileGuid.length() == 0) {\r
1169 newFileGuid = null;\r
1170 }\r
1171 ffc.setFfsFileNameGuid(moduleKey, newFileGuid);\r
1172 }\r
1173 });\r
bf5abaff 1174 \r
6a09eb19 1175 }\r
8f55ea73 1176 return jTextFieldFileGuid;\r
6a09eb19 1177 }\r
1178 /**\r
8f55ea73 1179 * This method initializes jTextFieldFfsKey \r
6a09eb19 1180 * \r
1181 * @return javax.swing.JTextField \r
1182 */\r
8f55ea73 1183 private JTextField getJTextFieldFfsKey() {\r
1184 if (jTextFieldFfsKey == null) {\r
1185 jTextFieldFfsKey = new JTextField();\r
1186 jTextFieldFfsKey.setPreferredSize(new java.awt.Dimension(150,20));\r
1187 jTextFieldFfsKey.addFocusListener(new java.awt.event.FocusAdapter() {\r
1188 public void focusLost(java.awt.event.FocusEvent e) {\r
1189 String originalFfsKey = ffc.getFfsFormatKey(moduleKey);\r
1190 String newFfsKey = jTextFieldFfsKey.getText();\r
1191 if (newFfsKey.equals(originalFfsKey)) {\r
1192 return;\r
1193 }\r
1194 if (newFfsKey.length() == 0 && originalFfsKey == null) {\r
1195 return;\r
1196 }\r
1197 docConsole.setSaved(false);\r
1198 ffc.setFfsFormatKey(moduleKey, newFfsKey);\r
1199 }\r
1200 });\r
bf5abaff 1201 \r
6a09eb19 1202 }\r
8f55ea73 1203 return jTextFieldFfsKey;\r
6a09eb19 1204 }\r
1205 /**\r
57d0e52a 1206 * This method initializes jScrollPaneModuleSaOptions\r
6a09eb19 1207 * \r
1208 * @return javax.swing.JScrollPane \r
1209 */\r
57d0e52a 1210 private JScrollPane getJScrollPaneModuleSaOptions() {\r
1211 if (jScrollPaneModuleSaOptions == null) {\r
1212 jScrollPaneModuleSaOptions = new JScrollPane();\r
1213 jScrollPaneModuleSaOptions.setPreferredSize(new java.awt.Dimension(600,200));\r
1214 jScrollPaneModuleSaOptions.setViewportView(getJTableModuleSaOptions());\r
6a09eb19 1215 }\r
57d0e52a 1216 return jScrollPaneModuleSaOptions;\r
6a09eb19 1217 }\r
1218 /**\r
57d0e52a 1219 * This method initializes jTableModuleSaOptions\r
6a09eb19 1220 * \r
1221 * @return javax.swing.JTable \r
1222 */\r
57d0e52a 1223 private JTable getJTableModuleSaOptions() {\r
1224 if (jTableModuleSaOptions == null) {\r
1800d80f 1225 optionsTableModel = new DefaultTableModel();\r
1226 optionsTableModel.addColumn("BuildTargets");\r
1227 optionsTableModel.addColumn("ToolChainFamily");\r
1228 optionsTableModel.addColumn("TagName");\r
1229 optionsTableModel.addColumn("ToolCode");\r
1230 optionsTableModel.addColumn("SupportedArchs");\r
1231 optionsTableModel.addColumn("Contents");\r
57d0e52a 1232 jTableModuleSaOptions = new JTable(optionsTableModel);\r
1233 jTableModuleSaOptions.setRowHeight(20);\r
f3b0ed9a 1234 Vector<String> vArch = new Vector<String>();\r
1235 vArch.add("IA32");\r
1236 vArch.add("X64");\r
1237 vArch.add("IPF");\r
1238 vArch.add("EBC");\r
1239 vArch.add("ARM");\r
1240 vArch.add("PPC");\r
57d0e52a 1241 jTableModuleSaOptions.getColumnModel().getColumn(4).setCellEditor(new ListEditor(vArch));\r
1242 jTableModuleSaOptions.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
1243 jTableModuleSaOptions.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
1244 jTableModuleSaOptions.getModel().addTableModelListener(new TableModelListener() {\r
1800d80f 1245 public void tableChanged(TableModelEvent arg0) {\r
1246 // TODO Auto-generated method stub\r
1247 int row = arg0.getFirstRow();\r
1248 TableModel m = (TableModel)arg0.getSource();\r
1249 \r
1250 if (arg0.getType() == TableModelEvent.UPDATE){\r
1251 //ToDo Data Validition check.\r
1252 String targets = m.getValueAt(row, 0) + "";\r
f3b0ed9a 1253 Vector<Object> targetName = null;\r
1254 if (targets.length() > 0) {\r
1255 targetName = new Vector<Object>();\r
1256 String[] sArray = targets.split(" ");\r
1257 for (int i = 0; i < sArray.length; ++i) {\r
1258 targetName.add(sArray[i]);\r
1259 }\r
1800d80f 1260 }\r
f3b0ed9a 1261 \r
1800d80f 1262 String toolChain = m.getValueAt(row, 1) + "";\r
1263 String tagName = m.getValueAt(row, 2) + "";\r
1264 String toolCode = m.getValueAt(row, 3) + "";\r
1265 String archs = m.getValueAt(row, 4) + "";\r
f3b0ed9a 1266 Vector<Object> supArch = null;\r
1267 if (archs.length() > 0) {\r
1268 supArch = new Vector<Object>();\r
1269 String[] sArray1 = archs.split(" ");\r
1270 for (int i = 0; i < sArray1.length; ++i) {\r
1271 supArch.add(sArray1[i]);\r
1272 }\r
1800d80f 1273 }\r
f3b0ed9a 1274 \r
1800d80f 1275 String contents = m.getValueAt(row, 5) + "";\r
8f55ea73 1276 docConsole.setSaved(false);\r
1800d80f 1277 ffc.updateModuleSAOptionsOpt(moduleKey, row, targetName, toolChain, tagName, toolCode, supArch, contents);\r
1278 }\r
1279 }\r
1280 });\r
6a09eb19 1281 }\r
57d0e52a 1282 return jTableModuleSaOptions;\r
6a09eb19 1283 }\r
1800d80f 1284 /**\r
57d0e52a 1285 * This method initializes jButtonNew\r
1800d80f 1286 * \r
1287 * @return javax.swing.JButton \r
1288 */\r
57d0e52a 1289 private JButton getJButtonNew() {\r
1290 if (jButtonNew == null) {\r
1291 jButtonNew = new JButton();\r
1292 jButtonNew.setPreferredSize(new java.awt.Dimension(80,20));\r
1293 jButtonNew.setText("New");\r
1294 jButtonNew.addActionListener(new java.awt.event.ActionListener() {\r
1800d80f 1295 public void actionPerformed(java.awt.event.ActionEvent e) {\r
bf5abaff 1296 String[] row = {"", "", "", "", "", ""};\r
1800d80f 1297 optionsTableModel.addRow(row);\r
1298 Vector<Object> v = new Vector<Object>();\r
bf5abaff 1299 Vector<Object> v1 = null;\r
8f55ea73 1300 docConsole.setSaved(false);\r
1800d80f 1301 ffc.genModuleSAOptionsOpt(moduleKey, v, "", "", "", v1, "");\r
1302 }\r
1303 });\r
1304 }\r
57d0e52a 1305 return jButtonNew;\r
1800d80f 1306 }\r
1307 /**\r
57d0e52a 1308 * This method initializes jButtonDelete\r
1800d80f 1309 * \r
1310 * @return javax.swing.JButton \r
1311 */\r
57d0e52a 1312 private JButton getJButtonDeleteOption() {\r
1313 if (jButtonDeleteOption == null) {\r
1314 jButtonDeleteOption = new JButton();\r
1315 jButtonDeleteOption.setPreferredSize(new java.awt.Dimension(80,20));\r
1316 jButtonDeleteOption.setText("Delete");\r
1317 jButtonDeleteOption.addActionListener(new java.awt.event.ActionListener() {\r
1800d80f 1318 public void actionPerformed(java.awt.event.ActionEvent e) {\r
57d0e52a 1319 if (jTableModuleSaOptions.getSelectedRow() < 0) {\r
1800d80f 1320 return;\r
1321 }\r
8f55ea73 1322 docConsole.setSaved(false);\r
57d0e52a 1323 ffc.removeModuleSAOptionsOpt(moduleKey, jTableModuleSaOptions.getSelectedRow());\r
1324 optionsTableModel.removeRow(jTableModuleSaOptions.getSelectedRow());\r
1800d80f 1325 }\r
1326 });\r
1327 }\r
57d0e52a 1328 return jButtonDeleteOption;\r
1800d80f 1329 }\r
f3b0ed9a 1330 \r
1331 /**\r
1332 Start the window at the center of screen\r
1333 \r
1334 **/\r
1335 protected void centerWindow(int intWidth, int intHeight) {\r
1336 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
1337 this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
1338 }\r
1339\r
1340 /**\r
1341 Start the window at the center of screen\r
1342 \r
1343 **/\r
1344 protected void centerWindow() {\r
1345 centerWindow(this.getSize().width, this.getSize().height);\r
1346 }\r
908b1c05 1347/**\r
57d0e52a 1348 * This method initializes jPanelPcdFields\r
908b1c05 1349 * \r
1350 * @return javax.swing.JPanel \r
1351 */\r
57d0e52a 1352private JPanel getJPanelPcdFields() {\r
1353 if (jPanelPcdFields == null) {\r
908b1c05 1354 GridLayout gridLayout = new GridLayout();\r
1355 gridLayout.setRows(3);\r
1356 gridLayout.setColumns(2);\r
57d0e52a 1357 jPanelPcdFields = new JPanel();\r
1358 jPanelPcdFields.setLayout(gridLayout);\r
1359 jPanelPcdFields.setPreferredSize(new java.awt.Dimension(600,90));\r
1360 jPanelPcdFields.add(getJPanelPcdFieldsFirstRow(), null);\r
1361 jPanelPcdFields.add(getJPanelPcdFieldsSecondRow(), null);\r
1362 jPanelPcdFields.add(getJPanelPcdFieldsThirdRow(), null);\r
1363 }\r
1364 return jPanelPcdFields;\r
908b1c05 1365}\r
1366/**\r
57d0e52a 1367 * This method initializes jPanelPcdFieldsSecondRow\r
908b1c05 1368 * \r
1369 * @return javax.swing.JPanel \r
1370 */\r
57d0e52a 1371private JPanel getJPanelPcdFieldsSecondRow() {\r
1372 if (jPanelPcdFieldsSecondRow == null) {\r
908b1c05 1373 FlowLayout flowLayout2 = new FlowLayout();\r
1374 flowLayout2.setAlignment(java.awt.FlowLayout.LEFT);\r
57d0e52a 1375 jLabelMaxDatumSize = new JLabel();\r
1376 jLabelMaxDatumSize.setText("Max Datum Size");\r
1377 jPanelPcdFieldsSecondRow = new JPanel();\r
1378 jPanelPcdFieldsSecondRow.setLayout(flowLayout2);\r
1379 jPanelPcdFieldsSecondRow.add(jLabelMaxDatumSize, null);\r
1380 jPanelPcdFieldsSecondRow.add(getJTextFieldMaxDatumSize(), null);\r
1381 }\r
1382 return jPanelPcdFieldsSecondRow;\r
908b1c05 1383}\r
1384/**\r
57d0e52a 1385 * This method initializes jPanelPcdFieldsThirdRow\r
908b1c05 1386 * \r
1387 * @return javax.swing.JPanel \r
1388 */\r
57d0e52a 1389private JPanel getJPanelPcdFieldsThirdRow() {\r
1390 if (jPanelPcdFieldsThirdRow == null) {\r
908b1c05 1391 FlowLayout flowLayout3 = new FlowLayout();\r
1392 flowLayout3.setAlignment(java.awt.FlowLayout.LEFT);\r
57d0e52a 1393 jLabelPcdDefaultValue = new JLabel();\r
1394 jLabelPcdDefaultValue.setText("Default Value");\r
1395 jLabelPcdDefaultValue.setPreferredSize(new java.awt.Dimension(91,16));\r
1396 jPanelPcdFieldsThirdRow = new JPanel();\r
1397 jPanelPcdFieldsThirdRow.setLayout(flowLayout3);\r
1398 jPanelPcdFieldsThirdRow.add(jLabelPcdDefaultValue, null);\r
1399 jPanelPcdFieldsThirdRow.add(getJTextFieldPcdDefault(), null);\r
1400 jPanelPcdFieldsThirdRow.add(getJComboBoxFeatureFlagValue(), null);\r
1401 }\r
1402 return jPanelPcdFieldsThirdRow;\r
908b1c05 1403}\r
1404/**\r
57d0e52a 1405 * This method initializes jPanelPcdFieldsFirstRow\r
908b1c05 1406 * \r
1407 * @return javax.swing.JPanel \r
1408 */\r
57d0e52a 1409private JPanel getJPanelPcdFieldsFirstRow() {\r
1410 if (jPanelPcdFieldsFirstRow == null) {\r
908b1c05 1411 FlowLayout flowLayout1 = new FlowLayout();\r
1412 flowLayout1.setAlignment(java.awt.FlowLayout.LEFT);\r
57d0e52a 1413 jLabelItemType = new JLabel();\r
1414 jLabelItemType.setText("Item Type");\r
1415 jLabelItemType.setPreferredSize(new java.awt.Dimension(91,16));\r
1416 jPanelPcdFieldsFirstRow = new JPanel();\r
1417 jPanelPcdFieldsFirstRow.setLayout(flowLayout1);\r
1418 jPanelPcdFieldsFirstRow.add(jLabelItemType, null);\r
1419 jPanelPcdFieldsFirstRow.add(getJComboBoxItemType(), null);\r
1420 jPanelPcdFieldsFirstRow.add(getJButtonUpdatePcd(), null);\r
1421 }\r
1422 return jPanelPcdFieldsFirstRow;\r
908b1c05 1423}\r
1424/**\r
57d0e52a 1425 * This method initializes jComboBoxItemType\r
908b1c05 1426 * \r
1427 * @return javax.swing.JComboBox \r
1428 */\r
57d0e52a 1429private JComboBox getJComboBoxItemType() {\r
1430 if (jComboBoxItemType == null) {\r
1431 jComboBoxItemType = new JComboBox();\r
1432 jComboBoxItemType.setPreferredSize(new java.awt.Dimension(200,20));\r
1433 jComboBoxItemType.addItemListener(new java.awt.event.ItemListener() {\r
908b1c05 1434 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
57d0e52a 1435 int row = jTablePcd.getSelectedRow();\r
1436 if (row < 0 || jTablePcd.getValueAt(row, 2).equals(jComboBoxItemType.getSelectedItem())) {\r
908b1c05 1437 return;\r
1438 }\r
57d0e52a 1439 if (jComboBoxItemType.getItemCount() == 3) {\r
1440 if (!jComboBoxItemType.getSelectedItem().equals("DYNAMIC")) {\r
1441 pcdDynamicToNonDynamic(jTablePcd.getValueAt(row, 0)+"", jTablePcd.getValueAt(row, 1)+"");\r
908b1c05 1442 }\r
1443 else{\r
57d0e52a 1444 pcdNonDynamicToDynamic(jTablePcd.getValueAt(row, 0)+"", jTablePcd.getValueAt(row, 1)+"");\r
908b1c05 1445 }\r
1446 }\r
1447 }\r
1448 });\r
1449 }\r
57d0e52a 1450 return jComboBoxItemType;\r
908b1c05 1451}\r
1452\r
1453private void pcdDynamicToNonDynamic(String cName, String tsGuid) {\r
1454 String[][] saa = new String[ffc.getDynamicPcdBuildDataCount()][5];\r
1455 ffc.getDynamicPcdBuildData(saa);\r
1456 String maxSize = "";\r
1457 String value = "";\r
1458 for (int i = 0; i < saa.length; ++i) {\r
1459 if (saa[i][0].equals(cName) && saa[i][2].equals(tsGuid)) {\r
1460 maxSize = saa[i][3];\r
1461 value = ffc.getDynamicPcdBuildDataValue(i);\r
1462 break;\r
1463 }\r
1464 }\r
1465 \r
1466 ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
1467 for (int i = 0; i < al.size(); ++i) {\r
1468 String[] s = al.get(i).split(" ");\r
1469 String mKey = s[0] + s[1] + s[2] + s[3];\r
57d0e52a 1470 ffc.updatePcdData(mKey, cName, tsGuid, jComboBoxItemType.getSelectedItem()+"", maxSize, value);\r
1471 s[4] = jComboBoxItemType.getSelectedItem()+"";\r
908b1c05 1472 al.set(i, s[0]+" "+s[1]+" "+s[2]+" "+s[3]+" "+s[4]);\r
1473 }\r
1474 \r
1475 ffc.removeDynamicPcdBuildData(cName, tsGuid);\r
1476}\r
1477\r
1478private void pcdNonDynamicToDynamic(String cName, String tsGuid) {\r
1479 ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
1480 for (int i = 0; i < al.size(); ++i) {\r
1481 String[] s = al.get(i).split(" ");\r
bf5abaff 1482 String mKey = s[0] + " " + s[1]+ " " + s[2] + " " + s[3];\r
57d0e52a 1483 ffc.updatePcdData(mKey, cName, tsGuid, jComboBoxItemType.getSelectedItem()+"", jTextFieldMaxDatumSize.getText(), jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+"");\r
1484 s[4] = jComboBoxItemType.getSelectedItem()+"";\r
908b1c05 1485 al.set(i, s[0]+" "+s[1]+" "+s[2]+" "+s[3]+" "+s[4]);\r
1486 }\r
1487 try{\r
57d0e52a 1488 ffc.addDynamicPcdBuildData(cName, jTablePcd.getValueAt(jTablePcd.getSelectedRow(), 3), tsGuid, "DYNAMIC", jTablePcd.getValueAt(jTablePcd.getSelectedRow(), 5)+"", jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+"");\r
908b1c05 1489 }\r
1490 catch(Exception e){\r
1491 JOptionPane.showMessageDialog(frame, "PCD value format: " + e.getMessage());\r
1492 }\r
1493}\r
1494/**\r
57d0e52a 1495 * This method initializes jTextFieldMaxDatumSize\r
908b1c05 1496 * \r
1497 * @return javax.swing.JTextField \r
1498 */\r
57d0e52a 1499private JTextField getJTextFieldMaxDatumSize() {\r
1500 if (jTextFieldMaxDatumSize == null) {\r
1501 jTextFieldMaxDatumSize = new JTextField();\r
1502 jTextFieldMaxDatumSize.setPreferredSize(new java.awt.Dimension(200,20));\r
908b1c05 1503 }\r
57d0e52a 1504 return jTextFieldMaxDatumSize;\r
908b1c05 1505}\r
1506/**\r
1507 * This method initializes jTextField4 \r
1508 * \r
1509 * @return javax.swing.JTextField \r
1510 */\r
57d0e52a 1511private JTextField getJTextFieldPcdDefault() {\r
1512 if (jTextFieldPcdDefault == null) {\r
1513 jTextFieldPcdDefault = new JTextField();\r
1514 jTextFieldPcdDefault.setPreferredSize(new java.awt.Dimension(200,20));\r
908b1c05 1515 }\r
57d0e52a 1516 return jTextFieldPcdDefault;\r
908b1c05 1517}\r
1518/**\r
1519 * This method initializes jButton6 \r
1520 * \r
1521 * @return javax.swing.JButton \r
1522 */\r
57d0e52a 1523private JButton getJButtonUpdatePcd() {\r
1524 if (jButtonUpdatePcd == null) {\r
1525 jButtonUpdatePcd = new JButton();\r
1526 jButtonUpdatePcd.setPreferredSize(new java.awt.Dimension(150,20));\r
1527 jButtonUpdatePcd.setText("Update PCD Data");\r
1528 jButtonUpdatePcd.addActionListener(new java.awt.event.ActionListener() {\r
908b1c05 1529 public void actionPerformed(java.awt.event.ActionEvent e) {\r
57d0e52a 1530 int row = jTablePcd.getSelectedRow();\r
908b1c05 1531 if (row < 0) {\r
1532 return;\r
1533 }\r
8f55ea73 1534 docConsole.setSaved(false);\r
57d0e52a 1535 model.setValueAt(jComboBoxItemType.getSelectedItem(), row, 2);\r
1536 model.setValueAt(jTextFieldMaxDatumSize.getText(), row, 4);\r
1537 model.setValueAt(jTextFieldPcdDefault.isVisible()? jTextFieldPcdDefault.getText():jComboBoxFeatureFlagValue.getSelectedItem(), row, 6);\r
908b1c05 1538 ffc.updatePcdData(moduleKey, model.getValueAt(row, 0)+"", model.getValueAt(row, 1)+"", model.getValueAt(row, 2)+"", model.getValueAt(row, 4)+"", model.getValueAt(row, 6)+"");\r
1539 }\r
1540 });\r
1541 }\r
57d0e52a 1542 return jButtonUpdatePcd;\r
908b1c05 1543}\r
1544/**\r
57d0e52a 1545 * This method initializes jComboBoxFeatureFlagValue\r
908b1c05 1546 * \r
1547 * @return javax.swing.JComboBox \r
1548 */\r
57d0e52a 1549private JComboBox getJComboBoxFeatureFlagValue() {\r
1550 if (jComboBoxFeatureFlagValue == null) {\r
1551 jComboBoxFeatureFlagValue = new JComboBox();\r
1552 jComboBoxFeatureFlagValue.setPreferredSize(new java.awt.Dimension(100,20));\r
1553 jComboBoxFeatureFlagValue.setVisible(false);\r
1554 jComboBoxFeatureFlagValue.addItem("true");\r
1555 jComboBoxFeatureFlagValue.addItem("false");\r
1556 }\r
1557 return jComboBoxFeatureFlagValue;\r
908b1c05 1558}\r
f3b0ed9a 1559\r
a13899c5 1560\r
1561} // @jve:decl-index=0:visual-constraint="10,10"\r
1562\r
1563class PartialEditableTableModel extends DefaultTableModel {\r
44053733 1564 /**\r
1565 * \r
1566 */\r
1567 private static final long serialVersionUID = 1L;\r
1568\r
a13899c5 1569 public boolean isCellEditable(int row, int col) {\r
1570 switch (col){\r
1571 case 2:\r
82961247 1572 return false;\r
a13899c5 1573 default:\r
1574 return false; \r
1575 }\r
1576 \r
1577 }\r
1578}\r
1579\r
1580class LibraryTableModel extends DefaultTableModel {\r
44053733 1581 /**\r
1582 * \r
1583 */\r
1584 private static final long serialVersionUID = 1L;\r
1585\r
a13899c5 1586 public boolean isCellEditable(int row, int col) {\r
1587 return false;\r
1588 }\r
1589}\r