]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java
Made some changes to use GCC to pre-process and assembly .S file
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdModuleSA.java
CommitLineData
a13899c5 1package org.tianocore.frameworkwizard.platform.ui;\r
2\r
3import java.awt.BorderLayout;\r
f3b0ed9a 4import java.awt.Dimension;\r
5import java.awt.Toolkit;\r
a13899c5 6\r
a13899c5 7import javax.swing.JFrame;\r
8import javax.swing.JOptionPane;\r
9import javax.swing.JPanel;\r
10import javax.swing.JDialog;\r
11import javax.swing.JTabbedPane;\r
12import javax.swing.JLabel;\r
13import javax.swing.JScrollPane;\r
14import javax.swing.JTable;\r
a13899c5 15import javax.swing.JTextArea;\r
16import javax.swing.JSplitPane;\r
17import javax.swing.JButton;\r
18import javax.swing.ListSelectionModel;\r
19import javax.swing.event.ListSelectionEvent;\r
20import javax.swing.event.ListSelectionListener;\r
21import javax.swing.event.TableModelEvent;\r
22import javax.swing.event.TableModelListener;\r
23import javax.swing.table.DefaultTableModel;\r
a13899c5 24import javax.swing.table.TableModel;\r
25\r
26import org.apache.xmlbeans.XmlObject;\r
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
a13899c5 44\r
45public class FpdModuleSA extends JDialog implements ActionListener {\r
46\r
44053733 47 /**\r
48 * \r
49 */\r
50 private static final long serialVersionUID = 1L;\r
a13899c5 51 static JFrame frame;\r
52 private JPanel jContentPane = null;\r
53 private JTabbedPane jTabbedPane = null;\r
54 private JPanel jPanel = null;\r
55 private JPanel jPanel1 = null;\r
56 private JLabel jLabel = null;\r
57 private JScrollPane jScrollPane = null;\r
58 private JTable jTable = null;\r
59 private JPanel jPanel2 = null;\r
60 private JScrollPane jScrollPane1 = null;\r
61 private JTextArea jTextArea = null;\r
62 private JPanel jPanel3 = null;\r
63 private JSplitPane jSplitPane = null;\r
64 private JPanel jPanel4 = null;\r
65 private JPanel jPanel5 = null;\r
66 private JLabel jLabel1 = null;\r
67 private JLabel jLabel2 = null;\r
68 private JScrollPane jScrollPane2 = null;\r
69 private JTable jTable1 = null;\r
70 private JScrollPane jScrollPane3 = null;\r
71 private JTable jTable2 = null;\r
72 private JScrollPane jScrollPane4 = null;\r
73 private JTable jTable3 = null;\r
74 private JPanel jPanel6 = null;\r
75 private JPanel jPanel7 = null;\r
76 private JScrollPane jScrollPane5 = null;\r
77 private JTextArea jTextArea1 = null;\r
78 private JLabel jLabel3 = null;\r
79 private JLabel jLabel4 = null;\r
80 private JButton jButton = null;\r
81 private JButton jButton1 = null;\r
82 private JLabel jLabel5 = null;\r
83 private JButton jButton2 = null;\r
84 private JButton jButton3 = null;\r
85 private PartialEditableTableModel model = null;\r
86 private LibraryTableModel model1 = null;\r
87 private LibraryTableModel model2 = null;\r
88 private LibraryTableModel model3 = null;\r
1800d80f 89 private DefaultTableModel optionsTableModel = null;\r
a13899c5 90 private FpdFileContents ffc = null;\r
91 private String moduleKey = null;\r
a13899c5 92 private HashMap<String, ArrayList<String>> classInstanceMap = null;\r
93 private ArrayList<String> classProduced = null;\r
a13899c5 94 private HashMap<String, ArrayList<String>> classConsumed = null;\r
6a09eb19 95 private JPanel jPanel8 = null;\r
96 private JLabel jLabel6 = null;\r
97 private JTextField jTextField = null;\r
98 private JLabel jLabel7 = null;\r
99 private JTextField jTextField1 = null;\r
100 private JLabel jLabel8 = null;\r
101 private JTextField jTextField2 = null;\r
102 private JScrollPane jScrollPane6 = null;\r
103 private JTable jTable4 = null;\r
1800d80f 104 private JButton jButton4 = null;\r
105 private JButton jButton5 = null;\r
a13899c5 106 /**\r
107 * This is the default constructor\r
108 */\r
109 public FpdModuleSA() {\r
110 super();\r
111 initialize();\r
112 }\r
113 public FpdModuleSA(FpdFileContents ffc) {\r
114 this();\r
115 this.ffc = ffc;\r
116 }\r
117 \r
118 public void setKey(String k){\r
119 this.moduleKey = k;\r
120 }\r
121\r
122 /**\r
123 init will be called each time FpdModuleSA object is to be shown.\r
124 @param key Module information.\r
125 **/\r
126 public void init(String key) {\r
127 //\r
128 // display pcd for key.\r
129 //\r
130 model.setRowCount(0);\r
131 int pcdCount = ffc.getPcdDataCount(key);\r
132 if (pcdCount != 0) {\r
82961247 133 String[][] saa = new String[pcdCount][7];\r
a13899c5 134 ffc.getPcdData(key, saa);\r
135 for (int i = 0; i < saa.length; ++i) {\r
136 model.addRow(saa[i]);\r
137 }\r
138 }\r
71baa24b 139 //\r
140 // display library classes that need to be resolved. also potential instances for them.\r
141 //\r
142 resolveLibraryInstances(key);\r
a13899c5 143 //\r
144 // display lib instances already selected for key\r
145 //\r
146 model1.setRowCount(0);\r
147 int instanceCount = ffc.getLibraryInstancesCount(key);\r
148 if (instanceCount != 0) {\r
149 String[][] saa = new String[instanceCount][5];\r
150 ffc.getLibraryInstances(key, saa);\r
151 for (int i = 0; i < saa.length; ++i) {\r
71baa24b 152 ModuleIdentification mi = getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]);\r
153 if (mi != null) {\r
154 saa[i][0] = mi.getName();\r
155 saa[i][2] = mi.getVersion();\r
156 saa[i][4] = mi.getPackage().getVersion();\r
157 //\r
158 // re-evaluate lib instance usage when adding a already-selected lib instance.\r
159 //\r
160 resolveLibraryInstances(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]);\r
161 model1.addRow(saa[i]);\r
a13899c5 162 }\r
163 \r
71baa24b 164 \r
a13899c5 165 }\r
166 }\r
71baa24b 167 \r
1800d80f 168 //\r
169 // display module SA options\r
170 //\r
171 String fvBinding = ffc.getFvBinding(key);\r
172 if (fvBinding != null) {\r
173 jTextField.setText(fvBinding);\r
174 }\r
175 String fileGuid = ffc.getFfsFileNameGuid(key);\r
176 if (fileGuid != null) {\r
177 jTextField1.setText(fileGuid);\r
178 }\r
179 String ffsKey = ffc.getFfsFormatKey(key);\r
180 if (ffsKey != null) {\r
181 jTextField2.setText(ffsKey);\r
182 }\r
a13899c5 183 }\r
184 \r
185 private void resolveLibraryInstances(String key) {\r
186 ModuleIdentification mi = getModuleId(key);\r
187 PackageIdentification[] depPkgList = null;\r
188 try{\r
189 Map<String, XmlObject> m = GlobalData.getNativeMsa(mi);\r
190 SurfaceAreaQuery.setDoc(m);\r
191 //\r
192 // Get dependency pkg list into which we will search lib instances.\r
193 //\r
194 depPkgList = SurfaceAreaQuery.getDependencePkg(null);\r
195 //\r
196 // Get the lib class consumed, produced by this module itself.\r
197 //\r
198 String[] classConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED");\r
199 \r
200 if (this.classConsumed == null) {\r
201 this.classConsumed = new HashMap<String, ArrayList<String>>();\r
202 }\r
203 \r
204 for(int i = 0; i < classConsumed.length; ++i){\r
205 ArrayList<String> consumedBy = this.classConsumed.get(classConsumed[i]);\r
206 if (consumedBy == null) {\r
207 consumedBy = new ArrayList<String>();\r
208 }\r
209 consumedBy.add(key);\r
210 this.classConsumed.put(classConsumed[i], consumedBy);\r
211 }\r
212 \r
213 String[] classProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED");\r
214 if (this.classProduced == null) {\r
215 this.classProduced = new ArrayList<String>();\r
216 }\r
217 for(int i = 0; i < classProduced.length; ++i){\r
218 if (!this.classProduced.contains(classProduced[i])){\r
219 this.classProduced.add(classProduced[i]);\r
220 }\r
221 }\r
222 //\r
223 // Get classes unresolved\r
224 //\r
225// Iterator<String> lip = this.classProduced.listIterator();\r
226// while(lip.hasNext()){\r
227// String clsProduced = lip.next();\r
228// this.classConsumed.remove(clsProduced);\r
229//\r
230// }\r
231 //\r
232 // find potential instances in all dependency pkgs for classes still in classConsumed.\r
233 //\r
234 if (classInstanceMap == null){\r
235 classInstanceMap = new HashMap<String, ArrayList<String>>();\r
236 }\r
237 Iterator<String> lic = this.classConsumed.keySet().iterator();\r
238 while(lic.hasNext()){\r
239 String cls = lic.next();\r
240 if (this.classProduced.contains(cls) || classInstanceMap.containsKey(cls)) {\r
241 continue;\r
242 }\r
243 ArrayList<String> instances = getInstancesForClass(cls, depPkgList);\r
244 if (instances.size() == 0){\r
245 JOptionPane.showMessageDialog(frame, "No Applicable Instance for Library Class " + \r
246 cls + ", Platform Build will Fail.");\r
247 }\r
248 classInstanceMap.put(cls, instances);\r
249 \r
250 }\r
251 \r
252 showClassToResolved();\r
253 }\r
254 catch(Exception e) {\r
255 e.printStackTrace();\r
256 }\r
257 }\r
258 \r
259 private ArrayList<String> getInstancesForClass(String cls, PackageIdentification[] depPkgList) throws Exception{\r
260 ArrayList<String> al = new ArrayList<String>();\r
261 \r
262 for (int i = 0; i < depPkgList.length; ++i) {\r
263 Set<ModuleIdentification> smi = GlobalData.getModules(depPkgList[i]);\r
264 Iterator ismi = smi.iterator();\r
265 while(ismi.hasNext()) {\r
266 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
267 \r
268 String[] clsProduced = getClassProduced(mi);\r
269 \r
270 boolean isPotential = false;\r
271 for (int j = 0; j < clsProduced.length; ++j) {\r
272 if (clsProduced[j] == null) {\r
273 continue;\r
274 }\r
275 if (clsProduced[j].equals(cls)){\r
276 isPotential = true;\r
277 }\r
278 if (classProduced.contains(clsProduced[j])) {\r
279 isPotential = false;\r
280 break;\r
281 }\r
282 }\r
283 if (isPotential) {\r
284 al.add(mi.getGuid() + " " + mi.getVersion() + " " + \r
285 depPkgList[i].getGuid() + " " + depPkgList[i].getVersion());\r
286 }\r
287 }\r
288 }\r
289 \r
290 return al;\r
291 }\r
292 \r
293 private void removeInstance(String key) {\r
294 ModuleIdentification mi = getModuleId(key); \r
295 //\r
296 // remove pcd information of instance from current ModuleSA\r
297 //\r
298 ffc.removePcdDataFromLibraryInstance(moduleKey, key);\r
299 //\r
300 // remove class produced by this instance and add back these produced class to be bound.\r
301 //\r
302 String[] clsProduced = getClassProduced(mi);\r
303 for (int i = 0; i < clsProduced.length; ++i) {\r
304 \r
305 classProduced.remove(clsProduced[i]);\r
306 }\r
307 //\r
308 // remove class consumed by this instance. we do not need to bound it now.\r
309 //\r
310 String[] clsConsumed = getClassConsumed(mi);\r
311 for (int i = 0; i < clsConsumed.length; ++i) {\r
312 ArrayList<String> al = classConsumed.get(clsConsumed[i]);\r
313 \r
314 if (al == null ) {\r
315 classConsumed.remove(clsConsumed[i]);\r
316 continue;\r
317 }\r
318 al.remove(key);\r
319 if (al.size() == 0) {\r
320 classConsumed.remove(clsConsumed[i]);\r
321 }\r
322 \r
323 }\r
324\r
325 showClassToResolved();\r
326 \r
327 }\r
328 \r
329 private ModuleIdentification getModuleId(String key){\r
330 //\r
331 // Get ModuleGuid, ModuleVersion, PackageGuid, PackageVersion into string array.\r
332 //\r
333 String[] keyPart = key.split(" ");\r
334 Set<PackageIdentification> spi = GlobalData.getPackageList();\r
335 Iterator ispi = spi.iterator();\r
336 \r
337 while(ispi.hasNext()) {\r
338 PackageIdentification pi = (PackageIdentification)ispi.next();\r
71baa24b 339 if ( !pi.getGuid().equals(keyPart[2])){\r
340// || !pi.getVersion().equals(keyPart[3])){\r
a13899c5 341 continue;\r
342 }\r
343 Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
344 Iterator ismi = smi.iterator();\r
345 while(ismi.hasNext()) {\r
346 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
71baa24b 347 if (mi.getGuid().equals(keyPart[0])){\r
348// && mi.getVersion().equals(keyPart[1])){\r
a13899c5 349 return mi;\r
350 }\r
351 }\r
352 }\r
353 return null;\r
354 }\r
355 \r
356 private String[] getClassProduced(ModuleIdentification mi){\r
357 \r
358 try{\r
359 Map<String, XmlObject> m = GlobalData.getNativeMsa(mi);\r
360 SurfaceAreaQuery.setDoc(m);\r
361 String[] clsProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED");\r
362 return clsProduced;\r
363 \r
364 }catch (Exception e) {\r
365 e.printStackTrace();\r
366 }\r
367 return new String[0];\r
368 \r
369 }\r
370 \r
371 private String[] getClassConsumed(ModuleIdentification mi){\r
372 \r
373 String[] clsConsumed = null;\r
374 try{\r
375 Map<String, XmlObject> m = GlobalData.getNativeMsa(mi);\r
376 SurfaceAreaQuery.setDoc(m);\r
377 clsConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED");\r
378 \r
379 }catch (Exception e) {\r
380 e.printStackTrace();\r
381 }\r
382 return clsConsumed;\r
383 }\r
384 \r
385 private void showClassToResolved(){\r
386 model2.setRowCount(0);\r
387 if (classConsumed.size() == 0) {\r
388 return;\r
389 }\r
390 Iterator<String> li = classConsumed.keySet().iterator();\r
391 while(li.hasNext()){\r
392 \r
393 String[] s = {li.next()};\r
394 if (classConsumed.get(s[0]) == null) {\r
395 continue;\r
396 }\r
397 if (classConsumed.get(s[0]).size() == 0) {\r
398 continue;\r
399 }\r
400 if (!classProduced.contains(s[0])){\r
401 model2.addRow(s);\r
402 }\r
403 }\r
404 model3.setRowCount(0);\r
405 }\r
406 /**\r
407 * This method initializes this\r
408 * \r
409 * @return void\r
410 */\r
411 private void initialize() {\r
412 this.setSize(664, 515);\r
f3b0ed9a 413 this.centerWindow();\r
a13899c5 414 this.setModal(true);\r
415 this.setTitle("Module Settings");\r
416 this.setContentPane(getJContentPane());\r
417 }\r
418\r
419 /**\r
420 * This method initializes jContentPane\r
421 * \r
422 * @return javax.swing.JPanel\r
423 */\r
424 private JPanel getJContentPane() {\r
425 if (jContentPane == null) {\r
426 jContentPane = new JPanel();\r
427 jContentPane.setLayout(new BorderLayout());\r
428 jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);\r
429 jContentPane.add(getJPanel3(), java.awt.BorderLayout.SOUTH);\r
430 }\r
431 return jContentPane;\r
432 }\r
433\r
434 /**\r
435 * This method initializes jTabbedPane \r
436 * \r
437 * @return javax.swing.JTabbedPane \r
438 */\r
439 private JTabbedPane getJTabbedPane() {\r
440 if (jTabbedPane == null) {\r
441 jTabbedPane = new JTabbedPane();\r
442 jTabbedPane.addTab("PCD Build Definition", null, getJPanel(), null);\r
6a09eb19 443 jTabbedPane.addTab("Module SA Options", null, getJPanel8(), null);\r
a13899c5 444 jTabbedPane.addTab("Libraries", null, getJPanel1(), null);\r
445 }\r
446 return jTabbedPane;\r
447 }\r
448\r
449 /**\r
450 * This method initializes jPanel \r
451 * \r
452 * @return javax.swing.JPanel \r
453 */\r
454 private JPanel getJPanel() {\r
455 if (jPanel == null) {\r
456 jLabel = new JLabel();\r
457 jLabel.setText("PcdData");\r
458 jPanel = new JPanel();\r
459 jPanel.setLayout(new BorderLayout());\r
460 jPanel.add(jLabel, java.awt.BorderLayout.NORTH);\r
461 jPanel.add(getJScrollPane(), java.awt.BorderLayout.CENTER);\r
462 jPanel.add(getJPanel2(), java.awt.BorderLayout.SOUTH);\r
463 jPanel.addComponentListener(new java.awt.event.ComponentAdapter() {\r
464 public void componentShown(java.awt.event.ComponentEvent e) {\r
465 init(moduleKey);\r
466 }\r
467 });\r
468 \r
469 }\r
470 return jPanel;\r
471 }\r
472\r
473 /**\r
474 * This method initializes jPanel1 \r
475 * \r
476 * @return javax.swing.JPanel \r
477 */\r
478 private JPanel getJPanel1() {\r
479 if (jPanel1 == null) {\r
480 jPanel1 = new JPanel();\r
481 jPanel1.setLayout(new BorderLayout());\r
482 jPanel1.add(getJSplitPane(), java.awt.BorderLayout.NORTH);\r
483 jPanel1.add(getJPanel6(), java.awt.BorderLayout.SOUTH);\r
484 jPanel1.add(getJPanel7(), java.awt.BorderLayout.CENTER);\r
485 jPanel1.addComponentListener(new java.awt.event.ComponentAdapter() {\r
486 public void componentShown(java.awt.event.ComponentEvent e) {\r
71baa24b 487 init(moduleKey);\r
a13899c5 488 }\r
489 });\r
490 }\r
491 return jPanel1;\r
492 }\r
493\r
494 /**\r
495 * This method initializes jScrollPane \r
496 * \r
497 * @return javax.swing.JScrollPane \r
498 */\r
499 private JScrollPane getJScrollPane() {\r
500 if (jScrollPane == null) {\r
501 jScrollPane = new JScrollPane();\r
502 jScrollPane.setViewportView(getJTable());\r
503 }\r
504 return jScrollPane;\r
505 }\r
506\r
507 /**\r
508 * This method initializes jTable \r
509 * \r
510 * @return javax.swing.JTable \r
511 */\r
512 private JTable getJTable() {\r
513 if (jTable == null) {\r
514 model = new PartialEditableTableModel();\r
515 jTable = new JTable(model);\r
f3b0ed9a 516 jTable.setRowHeight(20);\r
71baa24b 517 jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
a13899c5 518 model.addColumn("CName");\r
519 model.addColumn("TokenSpaceGUID");\r
520 model.addColumn("ItemType");\r
521 model.addColumn("Token");\r
82961247 522 model.addColumn("MaxDatumSize");\r
a13899c5 523 model.addColumn("DataType");\r
524 model.addColumn("DefaultValue");\r
525 \r
526 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
527 jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
528 public void valueChanged(ListSelectionEvent e) {\r
44053733 529 \r
a13899c5 530 if (e.getValueIsAdjusting()){\r
531 return;\r
532 }\r
533 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
534 if (lsm.isSelectionEmpty()) {\r
535 return;\r
536 }\r
537 else{\r
44053733 538// int selectedRow = lsm.getMinSelectionIndex();\r
a13899c5 539 \r
540 \r
541 }\r
542 }\r
543 });\r
544 \r
545 jTable.getModel().addTableModelListener(new TableModelListener() {\r
546 public void tableChanged(TableModelEvent arg0) {\r
547 // TODO Auto-generated method stub\r
548 int row = arg0.getFirstRow();\r
549 TableModel m = (TableModel)arg0.getSource();\r
550 if (arg0.getType() == TableModelEvent.INSERT) {\r
551 //\r
552 // Set combo box values for item type according to pcd values added.\r
553 //\r
554 \r
555 }\r
556 if (arg0.getType() == TableModelEvent.UPDATE){\r
557 //ToDo Data Validition check.\r
558 \r
559 }\r
560 }\r
561 });\r
562 }\r
563 return jTable;\r
564 }\r
565\r
566 /**\r
567 * This method initializes jPanel2 \r
568 * \r
569 * @return javax.swing.JPanel \r
570 */\r
571 private JPanel getJPanel2() {\r
572 if (jPanel2 == null) {\r
573 jLabel5 = new JLabel();\r
574 jLabel5.setText("PCD Description");\r
575 jPanel2 = new JPanel();\r
576 jPanel2.add(jLabel5, null);\r
577 jPanel2.add(getJScrollPane1(), null);\r
578 }\r
579 return jPanel2;\r
580 }\r
581\r
582 /**\r
583 * This method initializes jScrollPane1 \r
584 * \r
585 * @return javax.swing.JScrollPane \r
586 */\r
587 private JScrollPane getJScrollPane1() {\r
588 if (jScrollPane1 == null) {\r
589 jScrollPane1 = new JScrollPane();\r
590 jScrollPane1.setPreferredSize(new java.awt.Dimension(500,100));\r
591 jScrollPane1.setViewportView(getJTextArea());\r
592 }\r
593 return jScrollPane1;\r
594 }\r
595\r
596 /**\r
597 * This method initializes jTextArea \r
598 * \r
599 * @return javax.swing.JTextArea \r
600 */\r
601 private JTextArea getJTextArea() {\r
602 if (jTextArea == null) {\r
603 jTextArea = new JTextArea();\r
604 jTextArea.setEditable(false);\r
605 }\r
606 return jTextArea;\r
607 }\r
608\r
609 /**\r
610 * This method initializes jPanel3 \r
611 * \r
612 * @return javax.swing.JPanel \r
613 */\r
614 private JPanel getJPanel3() {\r
615 if (jPanel3 == null) {\r
616 FlowLayout flowLayout = new FlowLayout();\r
617 flowLayout.setAlignment(java.awt.FlowLayout.RIGHT);\r
618 jPanel3 = new JPanel();\r
619 jPanel3.setLayout(flowLayout);\r
620 jPanel3.add(getJButton2(), null);\r
621 jPanel3.add(getJButton3(), null);\r
622 }\r
623 return jPanel3;\r
624 }\r
625\r
626 /**\r
627 * This method initializes jSplitPane \r
628 * \r
629 * @return javax.swing.JSplitPane \r
630 */\r
631 private JSplitPane getJSplitPane() {\r
632 if (jSplitPane == null) {\r
633 jSplitPane = new JSplitPane();\r
634 jSplitPane.setDividerLocation(200);\r
635 jSplitPane.setLeftComponent(getJPanel4());\r
636 jSplitPane.setRightComponent(getJPanel5());\r
637 jSplitPane.setPreferredSize(new java.awt.Dimension(202,200));\r
638 }\r
639 return jSplitPane;\r
640 }\r
641\r
642 /**\r
643 * This method initializes jPanel4 \r
644 * \r
645 * @return javax.swing.JPanel \r
646 */\r
647 private JPanel getJPanel4() {\r
648 if (jPanel4 == null) {\r
649 jLabel1 = new JLabel();\r
650 jLabel1.setText("Library Classes Consumed");\r
651 jPanel4 = new JPanel();\r
652 jPanel4.add(jLabel1, null);\r
653 jPanel4.add(getJScrollPane3(), null);\r
654 }\r
655 return jPanel4;\r
656 }\r
657\r
658 /**\r
659 * This method initializes jPanel5 \r
660 * \r
661 * @return javax.swing.JPanel \r
662 */\r
663 private JPanel getJPanel5() {\r
664 if (jPanel5 == null) {\r
665 jLabel2 = new JLabel();\r
666 jLabel2.setText("Instances Available");\r
667 jPanel5 = new JPanel();\r
668 jPanel5.add(jLabel2, null);\r
669 jPanel5.add(getJScrollPane4(), null);\r
670 }\r
671 return jPanel5;\r
672 }\r
673\r
674 /**\r
675 * This method initializes jScrollPane2 \r
676 * \r
677 * @return javax.swing.JScrollPane \r
678 */\r
679 private JScrollPane getJScrollPane2() {\r
680 if (jScrollPane2 == null) {\r
681 jScrollPane2 = new JScrollPane();\r
682 jScrollPane2.setPreferredSize(new java.awt.Dimension(453,150));\r
683 jScrollPane2.setViewportView(getJTable1());\r
684 }\r
685 return jScrollPane2;\r
686 }\r
687\r
688 /**\r
689 * This method initializes jTable1 \r
690 * \r
691 * @return javax.swing.JTable \r
692 */\r
693 private JTable getJTable1() {\r
694 if (jTable1 == null) {\r
695 model1 = new LibraryTableModel();\r
696 model1.addColumn("Name");\r
697 model1.addColumn("ModuleGUID");\r
698 model1.addColumn("ModuleVersion");\r
699 model1.addColumn("PackageGUID");\r
700 model1.addColumn("PackageVersion");\r
701 jTable1 = new JTable(model1);\r
f3b0ed9a 702 jTable1.setRowHeight(20);\r
71baa24b 703 jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
a13899c5 704 jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
705 jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
706 public void valueChanged(ListSelectionEvent e) {\r
707 int selectedRow1 = -1;\r
708 if (e.getValueIsAdjusting()){\r
709 return;\r
710 }\r
711 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
712 if (lsm.isSelectionEmpty()) {\r
713 return;\r
714 }\r
715 else{\r
716 selectedRow1 = lsm.getMinSelectionIndex();\r
717 \r
718 \r
719 }\r
720 }\r
721 });\r
722 \r
723 \r
724 }\r
725 return jTable1;\r
726 }\r
727\r
728 /**\r
729 * This method initializes jScrollPane3 \r
730 * \r
731 * @return javax.swing.JScrollPane \r
732 */\r
733 private JScrollPane getJScrollPane3() {\r
734 if (jScrollPane3 == null) {\r
735 jScrollPane3 = new JScrollPane();\r
736 jScrollPane3.setPreferredSize(new java.awt.Dimension(200,170));\r
737 jScrollPane3.setViewportView(getJTable2());\r
738 }\r
739 return jScrollPane3;\r
740 }\r
741\r
742 /**\r
743 * This method initializes jTable2 \r
744 * \r
745 * @return javax.swing.JTable \r
746 */\r
747 private JTable getJTable2() {\r
748 if (jTable2 == null) {\r
749 model2 = new LibraryTableModel();\r
750 model2.addColumn("LibraryClass");\r
751 jTable2 = new JTable(model2);\r
f3b0ed9a 752 jTable2.setRowHeight(20);\r
753 jTable2.setShowGrid(false);\r
a13899c5 754 jTable2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
755 jTable2.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
756 public void valueChanged(ListSelectionEvent e) {\r
757 if (e.getValueIsAdjusting()){\r
758 return;\r
759 }\r
760 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
761 if (lsm.isSelectionEmpty()) {\r
762 return;\r
763 }\r
764 else{\r
765 int selectedRow2 = lsm.getMinSelectionIndex();\r
766 if (selectedRow2 < 0) {\r
767 return;\r
768 }\r
769 //\r
770 // display potential lib instances according to class selection\r
771 //\r
772 model3.setRowCount(0);\r
773 String cls = model2.getValueAt(selectedRow2, 0).toString();\r
774 ArrayList<String> al = classInstanceMap.get(cls);\r
775 ListIterator<String> li = al.listIterator();\r
776 while(li.hasNext()) {\r
777 String instance = li.next();\r
778 String[] s = {"", "", "", "", ""};\r
779 if (getModuleId(instance) != null) {\r
780 s[0] = getModuleId(instance).getName();\r
781 }\r
782 \r
783 String[] instancePart = instance.split(" ");\r
784 for (int i = 0; i < instancePart.length; ++i){\r
785 s[i+1] = instancePart[i];\r
786 }\r
787 model3.addRow(s);\r
788 }\r
789 \r
790 }\r
791 }\r
792 });\r
793 }\r
794 return jTable2;\r
795 }\r
796\r
797 /**\r
798 * This method initializes jScrollPane4 \r
799 * \r
800 * @return javax.swing.JScrollPane \r
801 */\r
802 private JScrollPane getJScrollPane4() {\r
803 if (jScrollPane4 == null) {\r
804 jScrollPane4 = new JScrollPane();\r
805 jScrollPane4.setPreferredSize(new java.awt.Dimension(450,170));\r
806 jScrollPane4.setViewportView(getJTable3());\r
807 }\r
808 return jScrollPane4;\r
809 }\r
810\r
811 /**\r
812 * This method initializes jTable3 \r
813 * \r
814 * @return javax.swing.JTable \r
815 */\r
816 private JTable getJTable3() {\r
817 if (jTable3 == null) {\r
818 model3 = new LibraryTableModel();\r
819 model3.addColumn("Name");\r
820 model3.addColumn("ModuleGUID");\r
821 model3.addColumn("ModuleVersion");\r
822 model3.addColumn("PackageGUID");\r
823 model3.addColumn("PackageVersion");\r
824 jTable3 = new JTable(model3);\r
f3b0ed9a 825 jTable3.setRowHeight(20);\r
71baa24b 826 jTable3.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
a13899c5 827 jTable3.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
828 jTable3.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
829 public void valueChanged(ListSelectionEvent e) {\r
830 int selectedRow3 = -1;\r
831 if (e.getValueIsAdjusting()){\r
832 return;\r
833 }\r
834 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
835 if (lsm.isSelectionEmpty()) {\r
836 return;\r
837 }\r
838 else{\r
839 selectedRow3 = lsm.getMinSelectionIndex();\r
840 \r
841 \r
842 }\r
843 }\r
844 });\r
845 }\r
846 return jTable3;\r
847 }\r
848\r
849 /**\r
850 * This method initializes jPanel6 \r
851 * \r
852 * @return javax.swing.JPanel \r
853 */\r
854 private JPanel getJPanel6() {\r
855 if (jPanel6 == null) {\r
856 jPanel6 = new JPanel();\r
857 }\r
858 return jPanel6;\r
859 }\r
860\r
861 /**\r
862 * This method initializes jPanel7 \r
863 * \r
864 * @return javax.swing.JPanel \r
865 */\r
866 private JPanel getJPanel7() {\r
867 if (jPanel7 == null) {\r
868 jLabel4 = new JLabel();\r
869 jLabel4.setText("Instance Description");\r
870 jLabel3 = new JLabel();\r
871 jLabel3.setText("Selected Instances");\r
872 jPanel7 = new JPanel();\r
873 jPanel7.add(jLabel4, null);\r
874 jPanel7.add(getJScrollPane5(), null);\r
875 jPanel7.add(getJButton(), null);\r
876 jPanel7.add(getJButton1(), null);\r
877 jPanel7.add(jLabel3, null);\r
878 jPanel7.add(getJScrollPane2(), null);\r
879 }\r
880 return jPanel7;\r
881 }\r
882\r
883 /**\r
884 * This method initializes jScrollPane5 \r
885 * \r
886 * @return javax.swing.JScrollPane \r
887 */\r
888 private JScrollPane getJScrollPane5() {\r
889 if (jScrollPane5 == null) {\r
890 jScrollPane5 = new JScrollPane();\r
891 jScrollPane5.setPreferredSize(new java.awt.Dimension(300,50));\r
892 jScrollPane5.setViewportView(getJTextArea1());\r
893 }\r
894 return jScrollPane5;\r
895 }\r
896\r
897 /**\r
898 * This method initializes jTextArea1 \r
899 * \r
900 * @return javax.swing.JTextArea \r
901 */\r
902 private JTextArea getJTextArea1() {\r
903 if (jTextArea1 == null) {\r
904 jTextArea1 = new JTextArea();\r
905 jTextArea1.setEditable(false);\r
906 }\r
907 return jTextArea1;\r
908 }\r
909\r
910 /**\r
911 * This method initializes jButton \r
912 * \r
913 * @return javax.swing.JButton \r
914 */\r
915 private JButton getJButton() {\r
916 if (jButton == null) {\r
917 jButton = new JButton();\r
918 jButton.setPreferredSize(new java.awt.Dimension(80,20));\r
919 jButton.setText("Add");\r
920 jButton.addActionListener(new java.awt.event.ActionListener() {\r
921 public void actionPerformed(java.awt.event.ActionEvent e) {\r
922 int row = jTable3.getSelectedRow();\r
923 if (row < 0) {\r
924 return;\r
925 }\r
926 Object[] s = {model3.getValueAt(row, 0), model3.getValueAt(row, 1),\r
927 model3.getValueAt(row, 2), model3.getValueAt(row, 3),\r
928 model3.getValueAt(row, 4)};\r
929 model1.addRow(s);\r
930 String instanceValue = model3.getValueAt(row, 1) + " " + \r
931 model3.getValueAt(row, 2) + " " +\r
932 model3.getValueAt(row, 3) + " " +\r
933 model3.getValueAt(row, 4);\r
934 //\r
935 // Add pcd information of selected instance to current moduleSA\r
936 //\r
82961247 937 try{\r
a13899c5 938 ffc.addFrameworkModulesPcdBuildDefs(getModuleId(instanceValue), ffc.getModuleSA(moduleKey));\r
82961247 939 }\r
940 catch (Exception exception) {\r
941 JOptionPane.showMessageDialog(frame, "PCD Insertion Fail. " + exception.getMessage());\r
942 }\r
a13899c5 943 resolveLibraryInstances(instanceValue);\r
944 }\r
945 });\r
946 }\r
947 return jButton;\r
948 }\r
949\r
950 /**\r
951 * This method initializes jButton1 \r
952 * \r
953 * @return javax.swing.JButton \r
954 */\r
955 private JButton getJButton1() {\r
956 if (jButton1 == null) {\r
957 jButton1 = new JButton();\r
958 jButton1.setPreferredSize(new java.awt.Dimension(80,20));\r
959 jButton1.setText("Delete");\r
960 jButton1.addActionListener(new java.awt.event.ActionListener() {\r
961 public void actionPerformed(java.awt.event.ActionEvent e) {\r
962 int row = jTable1.getSelectedRow();\r
963 if (row < 0) {\r
964 return;\r
965 }\r
966 removeInstance(model1.getValueAt(row, 1) + " " + \r
967 model1.getValueAt(row, 2) + " " +\r
968 model1.getValueAt(row, 3) + " " +\r
969 model1.getValueAt(row, 4));\r
970 model1.removeRow(row);\r
971 \r
972 }\r
973 });\r
974 }\r
975 return jButton1;\r
976 }\r
977\r
978 /**\r
979 * This method initializes jButton2 \r
980 * \r
981 * @return javax.swing.JButton \r
982 */\r
983 private JButton getJButton2() {\r
984 if (jButton2 == null) {\r
985 jButton2 = new JButton();\r
986 jButton2.setPreferredSize(new java.awt.Dimension(80,20));\r
987 jButton2.setText("Ok");\r
988 jButton2.addActionListener(this);\r
989 }\r
990 return jButton2;\r
991 }\r
992\r
993 /**\r
994 * This method initializes jButton3 \r
995 * \r
996 * @return javax.swing.JButton \r
997 */\r
998 private JButton getJButton3() {\r
999 if (jButton3 == null) {\r
1000 jButton3 = new JButton();\r
1001 jButton3.setPreferredSize(new java.awt.Dimension(80,20));\r
1002 jButton3.setText("Cancel");\r
1003 jButton3.setVisible(false);\r
1004 }\r
1005 return jButton3;\r
1006 }\r
1007 public void actionPerformed(ActionEvent arg0) {\r
1008\r
1009 if (arg0.getSource() == jButton2) {\r
1010 ffc.removeLibraryInstances(moduleKey);\r
1011 for (int i = 0; i < model1.getRowCount(); ++i) {\r
1012 String mg = model1.getValueAt(i, 1)+"";\r
1013 String mv = model1.getValueAt(i, 2)+"";\r
1014 String pg = model1.getValueAt(i, 3)+"";\r
1015 String pv = model1.getValueAt(i, 4)+"";\r
1016 ffc.genLibraryInstance(mg, mv, pg, pv, moduleKey);\r
1017 }\r
1018 this.setVisible(false);\r
1019 }\r
1020 }\r
6a09eb19 1021 /**\r
1022 * This method initializes jPanel8 \r
1023 * \r
1024 * @return javax.swing.JPanel \r
1025 */\r
1026 private JPanel getJPanel8() {\r
1027 if (jPanel8 == null) {\r
1028 jLabel8 = new JLabel();\r
1029 jLabel8.setText("FFS Format Key");\r
1030 jLabel7 = new JLabel();\r
1031 jLabel7.setText("FFS File GUID");\r
1032 jLabel6 = new JLabel();\r
1033 jLabel6.setText("FV Binding");\r
1034 jPanel8 = new JPanel();\r
1035 jPanel8.add(jLabel6, null);\r
1036 jPanel8.add(getJTextField(), null);\r
1037 jPanel8.add(jLabel7, null);\r
1038 jPanel8.add(getJTextField1(), null);\r
1039 jPanel8.add(jLabel8, null);\r
1040 jPanel8.add(getJTextField2(), null);\r
1041 jPanel8.add(getJScrollPane6(), null);\r
1800d80f 1042 jPanel8.add(getJButton4(), null);\r
1043 jPanel8.add(getJButton5(), null);\r
71baa24b 1044 jPanel8.addComponentListener(new java.awt.event.ComponentAdapter() {\r
1045 public void componentShown(java.awt.event.ComponentEvent e) {\r
1046 init(moduleKey);\r
1047 }\r
1048 });\r
6a09eb19 1049 }\r
1050 return jPanel8;\r
1051 }\r
1052 /**\r
1053 * This method initializes jTextField \r
1054 * \r
1055 * @return javax.swing.JTextField \r
1056 */\r
1057 private JTextField getJTextField() {\r
1058 if (jTextField == null) {\r
1059 jTextField = new JTextField();\r
1060 jTextField.setPreferredSize(new java.awt.Dimension(100,20));\r
1800d80f 1061 jTextField.addFocusListener(new java.awt.event.FocusAdapter() {\r
1062 public void focusLost(java.awt.event.FocusEvent e) {\r
1063 ffc.setFvBinding(moduleKey, jTextField.getText());\r
1064 }\r
1065 });\r
6a09eb19 1066 }\r
1067 return jTextField;\r
1068 }\r
1069 /**\r
1070 * This method initializes jTextField1 \r
1071 * \r
1072 * @return javax.swing.JTextField \r
1073 */\r
1074 private JTextField getJTextField1() {\r
1075 if (jTextField1 == null) {\r
1076 jTextField1 = new JTextField();\r
1077 jTextField1.setPreferredSize(new java.awt.Dimension(100,20));\r
1800d80f 1078 jTextField1.addFocusListener(new java.awt.event.FocusAdapter() {\r
1079 public void focusLost(java.awt.event.FocusEvent e) {\r
1080 ffc.setFfsFileNameGuid(moduleKey, jTextField1.getText());\r
1081 }\r
1082 });\r
6a09eb19 1083 }\r
1084 return jTextField1;\r
1085 }\r
1086 /**\r
1087 * This method initializes jTextField2 \r
1088 * \r
1089 * @return javax.swing.JTextField \r
1090 */\r
1091 private JTextField getJTextField2() {\r
1092 if (jTextField2 == null) {\r
1093 jTextField2 = new JTextField();\r
1094 jTextField2.setPreferredSize(new java.awt.Dimension(100,20));\r
1800d80f 1095 jTextField2.addFocusListener(new java.awt.event.FocusAdapter() {\r
1096 public void focusLost(java.awt.event.FocusEvent e) {\r
1097 ffc.setFfsFormatKey(moduleKey, jTextField2.getText());\r
1098 }\r
1099 });\r
6a09eb19 1100 }\r
1101 return jTextField2;\r
1102 }\r
1103 /**\r
1104 * This method initializes jScrollPane6 \r
1105 * \r
1106 * @return javax.swing.JScrollPane \r
1107 */\r
1108 private JScrollPane getJScrollPane6() {\r
1109 if (jScrollPane6 == null) {\r
1110 jScrollPane6 = new JScrollPane();\r
1111 jScrollPane6.setPreferredSize(new java.awt.Dimension(600,200));\r
1112 jScrollPane6.setViewportView(getJTable4());\r
1113 }\r
1114 return jScrollPane6;\r
1115 }\r
1116 /**\r
1117 * This method initializes jTable4 \r
1118 * \r
1119 * @return javax.swing.JTable \r
1120 */\r
1121 private JTable getJTable4() {\r
1122 if (jTable4 == null) {\r
1800d80f 1123 optionsTableModel = new DefaultTableModel();\r
1124 optionsTableModel.addColumn("BuildTargets");\r
1125 optionsTableModel.addColumn("ToolChainFamily");\r
1126 optionsTableModel.addColumn("TagName");\r
1127 optionsTableModel.addColumn("ToolCode");\r
1128 optionsTableModel.addColumn("SupportedArchs");\r
1129 optionsTableModel.addColumn("Contents");\r
1130 jTable4 = new JTable(optionsTableModel);\r
f3b0ed9a 1131 jTable4.setRowHeight(20);\r
1132 Vector<String> vArch = new Vector<String>();\r
1133 vArch.add("IA32");\r
1134 vArch.add("X64");\r
1135 vArch.add("IPF");\r
1136 vArch.add("EBC");\r
1137 vArch.add("ARM");\r
1138 vArch.add("PPC");\r
1139 jTable4.getColumnModel().getColumn(4).setCellEditor(new ListEditor(vArch));\r
1800d80f 1140 jTable4.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
71baa24b 1141 jTable4.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
1800d80f 1142 jTable4.getModel().addTableModelListener(new TableModelListener() {\r
1143 public void tableChanged(TableModelEvent arg0) {\r
1144 // TODO Auto-generated method stub\r
1145 int row = arg0.getFirstRow();\r
1146 TableModel m = (TableModel)arg0.getSource();\r
1147 \r
1148 if (arg0.getType() == TableModelEvent.UPDATE){\r
1149 //ToDo Data Validition check.\r
1150 String targets = m.getValueAt(row, 0) + "";\r
f3b0ed9a 1151 Vector<Object> targetName = null;\r
1152 if (targets.length() > 0) {\r
1153 targetName = new Vector<Object>();\r
1154 String[] sArray = targets.split(" ");\r
1155 for (int i = 0; i < sArray.length; ++i) {\r
1156 targetName.add(sArray[i]);\r
1157 }\r
1800d80f 1158 }\r
f3b0ed9a 1159 \r
1800d80f 1160 String toolChain = m.getValueAt(row, 1) + "";\r
1161 String tagName = m.getValueAt(row, 2) + "";\r
1162 String toolCode = m.getValueAt(row, 3) + "";\r
1163 String archs = m.getValueAt(row, 4) + "";\r
f3b0ed9a 1164 Vector<Object> supArch = null;\r
1165 if (archs.length() > 0) {\r
1166 supArch = new Vector<Object>();\r
1167 String[] sArray1 = archs.split(" ");\r
1168 for (int i = 0; i < sArray1.length; ++i) {\r
1169 supArch.add(sArray1[i]);\r
1170 }\r
1800d80f 1171 }\r
f3b0ed9a 1172 \r
1800d80f 1173 String contents = m.getValueAt(row, 5) + "";\r
1174 \r
1175 ffc.updateModuleSAOptionsOpt(moduleKey, row, targetName, toolChain, tagName, toolCode, supArch, contents);\r
1176 }\r
1177 }\r
1178 });\r
6a09eb19 1179 }\r
1180 return jTable4;\r
1181 }\r
1800d80f 1182 /**\r
1183 * This method initializes jButton4 \r
1184 * \r
1185 * @return javax.swing.JButton \r
1186 */\r
1187 private JButton getJButton4() {\r
1188 if (jButton4 == null) {\r
1189 jButton4 = new JButton();\r
1190 jButton4.setPreferredSize(new java.awt.Dimension(80,20));\r
1191 jButton4.setText("New");\r
1192 jButton4.addActionListener(new java.awt.event.ActionListener() {\r
1193 public void actionPerformed(java.awt.event.ActionEvent e) {\r
1194 String[] row = {"", "", "", "", "IA32", ""};\r
1195 optionsTableModel.addRow(row);\r
1196 Vector<Object> v = new Vector<Object>();\r
1197 Vector<Object> v1 = new Vector<Object>();\r
1198 v1.add("IA32");\r
1199 ffc.genModuleSAOptionsOpt(moduleKey, v, "", "", "", v1, "");\r
1200 }\r
1201 });\r
1202 }\r
1203 return jButton4;\r
1204 }\r
1205 /**\r
1206 * This method initializes jButton5 \r
1207 * \r
1208 * @return javax.swing.JButton \r
1209 */\r
1210 private JButton getJButton5() {\r
1211 if (jButton5 == null) {\r
1212 jButton5 = new JButton();\r
1213 jButton5.setPreferredSize(new java.awt.Dimension(80,20));\r
1214 jButton5.setText("Delete");\r
1215 jButton5.addActionListener(new java.awt.event.ActionListener() {\r
1216 public void actionPerformed(java.awt.event.ActionEvent e) {\r
1217 if (jTable4.getSelectedRow() < 0) {\r
1218 return;\r
1219 }\r
1220 \r
1221 ffc.removeModuleSAOptionsOpt(moduleKey, jTable4.getSelectedRow());\r
1222 optionsTableModel.removeRow(jTable4.getSelectedRow());\r
1223 }\r
1224 });\r
1225 }\r
1226 return jButton5;\r
1227 }\r
f3b0ed9a 1228 \r
1229 /**\r
1230 Start the window at the center of screen\r
1231 \r
1232 **/\r
1233 protected void centerWindow(int intWidth, int intHeight) {\r
1234 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
1235 this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
1236 }\r
1237\r
1238 /**\r
1239 Start the window at the center of screen\r
1240 \r
1241 **/\r
1242 protected void centerWindow() {\r
1243 centerWindow(this.getSize().width, this.getSize().height);\r
1244 }\r
1245\r
a13899c5 1246\r
1247} // @jve:decl-index=0:visual-constraint="10,10"\r
1248\r
1249class PartialEditableTableModel extends DefaultTableModel {\r
44053733 1250 /**\r
1251 * \r
1252 */\r
1253 private static final long serialVersionUID = 1L;\r
1254\r
a13899c5 1255 public boolean isCellEditable(int row, int col) {\r
1256 switch (col){\r
1257 case 2:\r
82961247 1258 return false;\r
a13899c5 1259 default:\r
1260 return false; \r
1261 }\r
1262 \r
1263 }\r
1264}\r
1265\r
1266class LibraryTableModel extends DefaultTableModel {\r
44053733 1267 /**\r
1268 * \r
1269 */\r
1270 private static final long serialVersionUID = 1L;\r
1271\r
a13899c5 1272 public boolean isCellEditable(int row, int col) {\r
1273 return false;\r
1274 }\r
1275}\r