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