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