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