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