]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFrameworkModules.java
some bug fixing for FpdFrameworkModules
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdFrameworkModules.java
CommitLineData
a13899c5 1package org.tianocore.frameworkwizard.platform.ui;\r
2\r
3import java.awt.BorderLayout;\r
4\r
5import javax.swing.JFrame;\r
6import javax.swing.JOptionPane;\r
7import javax.swing.JPanel;\r
a13899c5 8import javax.swing.JSplitPane;\r
9import javax.swing.JLabel;\r
10import javax.swing.JScrollPane;\r
11import javax.swing.JTable;\r
12import javax.swing.JButton;\r
13import javax.swing.ListSelectionModel;\r
14import javax.swing.table.DefaultTableModel;\r
15\r
16import org.tianocore.PlatformSurfaceAreaDocument;\r
17import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
18import org.tianocore.frameworkwizard.platform.ui.global.GlobalData;\r
19import org.tianocore.frameworkwizard.platform.ui.id.ModuleIdentification;\r
20import org.tianocore.frameworkwizard.platform.ui.id.PackageIdentification;\r
21\r
22import java.awt.FlowLayout;\r
23import java.io.File;\r
24import java.util.ArrayList;\r
25import java.util.HashMap;\r
26import java.util.Iterator;\r
27import java.util.Map;\r
28import java.util.Set;\r
29\r
30public class FpdFrameworkModules extends IInternalFrame {\r
31\r
44053733 32 /**\r
33 * \r
34 */\r
35 private static final long serialVersionUID = 1L;\r
a13899c5 36 static JFrame frame;\r
37 private JSplitPane jSplitPane = null;\r
38 private JPanel jPanel = null;\r
39 private JPanel jPanel1 = null;\r
40 private JLabel jLabel = null;\r
41 private JScrollPane jScrollPane = null;\r
42 private JTable jTable = null;\r
43 private JPanel jPanel2 = null;\r
44 private JButton jButton = null;\r
45 private JLabel jLabel1 = null;\r
46 private JPanel jPanel3 = null;\r
47 private JScrollPane jScrollPane1 = null;\r
48 private JTable jTable1 = null;\r
49 private JButton jButton1 = null;\r
50 private JButton jButton2 = null;\r
51 private NonEditableTableModel model = null;\r
52 private NonEditableTableModel model1 = null;\r
53 \r
54 private FpdModuleSA settingDlg = null;\r
55 \r
56 private FpdFileContents ffc = null;\r
57 \r
58 private Map<String, String> fpdMsa = null;\r
59 \r
60 private ArrayList<ModuleIdentification> miList = null;\r
61\r
62 /**\r
63 * This method initializes jSplitPane \r
64 * \r
65 * @return javax.swing.JSplitPane \r
66 */\r
67 private JSplitPane getJSplitPane() {\r
68 if (jSplitPane == null) {\r
69 jSplitPane = new JSplitPane();\r
70 jSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);\r
71 jSplitPane.setDividerLocation(250);\r
72 jSplitPane.setBottomComponent(getJPanel1());\r
73 jSplitPane.setTopComponent(getJPanel());\r
74 }\r
75 return jSplitPane;\r
76 }\r
77\r
78 /**\r
79 * This method initializes jPanel \r
80 * \r
81 * @return javax.swing.JPanel \r
82 */\r
83 private JPanel getJPanel() {\r
84 if (jPanel == null) {\r
85 jLabel = new JLabel();\r
86 jLabel.setText("Modules in Workspace");\r
87 jPanel = new JPanel();\r
88 jPanel.setLayout(new BorderLayout());\r
89 jPanel.add(jLabel, java.awt.BorderLayout.NORTH);\r
90 jPanel.add(getJScrollPane(), java.awt.BorderLayout.CENTER);\r
91 jPanel.add(getJPanel2(), java.awt.BorderLayout.SOUTH);\r
92 }\r
93 return jPanel;\r
94 }\r
95\r
96 /**\r
97 * This method initializes jPanel1 \r
98 * \r
99 * @return javax.swing.JPanel \r
100 */\r
101 private JPanel getJPanel1() {\r
102 if (jPanel1 == null) {\r
103 jLabel1 = new JLabel();\r
104 jLabel1.setText("Modules Added");\r
105 jPanel1 = new JPanel();\r
106 jPanel1.setLayout(new BorderLayout());\r
107 jPanel1.add(jLabel1, java.awt.BorderLayout.NORTH);\r
108 jPanel1.add(getJPanel3(), java.awt.BorderLayout.SOUTH);\r
109 jPanel1.add(getJScrollPane1(), java.awt.BorderLayout.CENTER);\r
110 }\r
111 return jPanel1;\r
112 }\r
113\r
114 /**\r
115 * This method initializes jScrollPane \r
116 * \r
117 * @return javax.swing.JScrollPane \r
118 */\r
119 private JScrollPane getJScrollPane() {\r
120 if (jScrollPane == null) {\r
121 jScrollPane = new JScrollPane();\r
122 jScrollPane.setPreferredSize(new java.awt.Dimension(600,200));\r
123 jScrollPane.setViewportView(getJTable());\r
124 }\r
125 return jScrollPane;\r
126 }\r
127\r
128 /**\r
129 * This method initializes jTable \r
130 * \r
131 * @return javax.swing.JTable \r
132 */\r
133 private JTable getJTable() {\r
134 if (jTable == null) {\r
135 model = new NonEditableTableModel();\r
136 jTable = new JTable(model);\r
f3b0ed9a 137 jTable.setRowHeight(20);\r
a13899c5 138 model.addColumn("ModuleName");\r
139 model.addColumn("ModuleGUID");\r
140 model.addColumn("ModuleVersion");\r
141 model.addColumn("PackageGUID");\r
142 model.addColumn("PackageVersion");\r
143 \r
144 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
145 }\r
146 return jTable;\r
147 }\r
148\r
149 /**\r
150 * This method initializes jPanel2 \r
151 * \r
152 * @return javax.swing.JPanel \r
153 */\r
154 private JPanel getJPanel2() {\r
155 if (jPanel2 == null) {\r
156 FlowLayout flowLayout = new FlowLayout();\r
157 flowLayout.setAlignment(java.awt.FlowLayout.RIGHT);\r
158 jPanel2 = new JPanel();\r
159 jPanel2.setLayout(flowLayout);\r
160 jPanel2.add(getJButton(), null);\r
161 }\r
162 return jPanel2;\r
163 }\r
164\r
165 /**\r
166 * This method initializes jButton \r
167 * \r
168 * @return javax.swing.JButton \r
169 */\r
170 private JButton getJButton() {\r
171 if (jButton == null) {\r
172 jButton = new JButton();\r
173 jButton.setPreferredSize(new java.awt.Dimension(130,20));\r
174 jButton.setText("Add a Module");\r
175 jButton.addActionListener(new java.awt.event.ActionListener() {\r
176 public void actionPerformed(java.awt.event.ActionEvent e) {\r
177 int selectedRow = jTable.getSelectedRow();\r
178 if (selectedRow < 0){\r
179 return;\r
180 }\r
181 \r
182 String mg = (String)model.getValueAt(selectedRow, 1);\r
183 String mv = (String)model.getValueAt(selectedRow, 2);\r
184 String pg = (String)model.getValueAt(selectedRow, 3);\r
185 String pv = (String)model.getValueAt(selectedRow, 4);\r
186 if (fpdMsa.containsKey(mg + mv + pg + pv)) {\r
187 JOptionPane.showMessageDialog(frame, "This Module Already Added.");\r
188 return;\r
189 }\r
190 //ToDo put Arch instead of null\r
191 fpdMsa.put(mg + mv + pg + pv, null);\r
192 \r
193 String[] row = {" ", mg, mv, pg, pv};\r
f3b0ed9a 194 ModuleIdentification mi = getModuleId(mg + " " + mv + " " + pg + " " + pv);\r
195 if (mi != null) {\r
196 row[0] = mi.getName();\r
197 row[2] = mi.getVersion();\r
198 row[4] = mi.getPackage().getVersion();\r
a13899c5 199 }\r
200 model1.addRow(row);\r
201 ffc.addFrameworkModulesPcdBuildDefs(miList.get(selectedRow), null);\r
202 }\r
203 });\r
204 }\r
205 return jButton;\r
206 }\r
207\r
208 /**\r
209 * This method initializes jPanel3 \r
210 * \r
211 * @return javax.swing.JPanel \r
212 */\r
213 private JPanel getJPanel3() {\r
214 if (jPanel3 == null) {\r
215 FlowLayout flowLayout1 = new FlowLayout();\r
216 flowLayout1.setAlignment(java.awt.FlowLayout.RIGHT);\r
217 jPanel3 = new JPanel();\r
218 jPanel3.setLayout(flowLayout1);\r
219 jPanel3.add(getJButton1(), null);\r
220 jPanel3.add(getJButton2(), null);\r
221 }\r
222 return jPanel3;\r
223 }\r
224\r
225 /**\r
226 * This method initializes jScrollPane1 \r
227 * \r
228 * @return javax.swing.JScrollPane \r
229 */\r
230 private JScrollPane getJScrollPane1() {\r
231 if (jScrollPane1 == null) {\r
232 jScrollPane1 = new JScrollPane();\r
233 jScrollPane1.setPreferredSize(new java.awt.Dimension(453,200));\r
234 jScrollPane1.setViewportView(getJTable1());\r
235 }\r
236 return jScrollPane1;\r
237 }\r
238\r
239 /**\r
240 * This method initializes jTable1 \r
241 * \r
242 * @return javax.swing.JTable \r
243 */\r
244 private JTable getJTable1() {\r
245 if (jTable1 == null) {\r
246 model1 = new NonEditableTableModel();\r
247 jTable1 = new JTable(model1);\r
f3b0ed9a 248 jTable1.setRowHeight(20);\r
a13899c5 249 model1.addColumn("ModuleName");\r
250 model1.addColumn("ModuleGUID");\r
251 model1.addColumn("ModuleVersion"); \r
252 model1.addColumn("PackageGUID");\r
253 model1.addColumn("PackageVersion");\r
254// model1.addColumn("SupportedArch");\r
255 \r
256 jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
257 }\r
258 return jTable1;\r
259 }\r
260\r
261 /**\r
262 * This method initializes jButton1 \r
263 * \r
264 * @return javax.swing.JButton \r
265 */\r
266 private JButton getJButton1() {\r
267 if (jButton1 == null) {\r
268 jButton1 = new JButton();\r
269 jButton1.setPreferredSize(new java.awt.Dimension(130,20));\r
270 jButton1.setText("Settings");\r
271 jButton1.addActionListener(new java.awt.event.ActionListener() {\r
272 public void actionPerformed(java.awt.event.ActionEvent e) {\r
273 int selectedRow = jTable1.getSelectedRow();\r
274 if (selectedRow < 0){\r
275 return;\r
276 }\r
277 if (settingDlg == null) {\r
278 settingDlg = new FpdModuleSA(ffc);\r
279 }\r
280 \r
f3b0ed9a 281 String mg = model1.getValueAt(selectedRow, 1)+"";\r
282 String mv = model1.getValueAt(selectedRow, 2)+"";\r
283 String pg = model1.getValueAt(selectedRow, 3)+"";\r
284 String pv = model1.getValueAt(selectedRow, 4)+"";\r
a13899c5 285 settingDlg.setKey(mg + " " + mv + " " + pg + " " + pv);\r
286 settingDlg.setVisible(true);\r
287 }\r
288 });\r
289 }\r
290 return jButton1;\r
291 }\r
292\r
293 /**\r
294 * This method initializes jButton2 \r
295 * \r
296 * @return javax.swing.JButton \r
297 */\r
298 private JButton getJButton2() {\r
299 if (jButton2 == null) {\r
300 jButton2 = new JButton();\r
301 jButton2.setPreferredSize(new java.awt.Dimension(130,20));\r
302 jButton2.setText("Remove Module");\r
303 jButton2.addActionListener(new java.awt.event.ActionListener() {\r
304 public void actionPerformed(java.awt.event.ActionEvent e) {\r
305 int selectedRow = jTable1.getSelectedRow();\r
306 if (selectedRow < 0){\r
307 return;\r
308 }\r
309 String mg = model1.getValueAt(selectedRow, 1).toString();\r
310 String mv = model1.getValueAt(selectedRow, 2).toString();\r
311 String pg = model1.getValueAt(selectedRow, 3).toString();\r
312 String pv = model1.getValueAt(selectedRow, 4).toString();\r
313 model1.removeRow(selectedRow);\r
314 fpdMsa.remove(mg+mv+pg+pv);\r
315 ffc.removeModuleSA(selectedRow);\r
316 }\r
317 });\r
318 }\r
319 return jButton2;\r
320 }\r
321\r
322 /**\r
323 * @param args\r
324 */\r
325 public static void main(String[] args) {\r
326 // TODO Auto-generated method stub\r
327 new FpdFrameworkModules().setVisible(true);\r
328 }\r
329\r
330 /**\r
331 * This is the default constructor\r
332 */\r
333 public FpdFrameworkModules() {\r
334 super();\r
335 initialize();\r
336 }\r
337\r
338 public FpdFrameworkModules(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd){\r
339 this();\r
340 init(fpd);\r
341 \r
342 }\r
343 \r
344 private void init(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {\r
345 try {\r
346 GlobalData.initInfo("Tools" + File.separator + "Conf" + File.separator + "FrameworkDatabase.db", System.getenv("WORKSPACE"));\r
347 }\r
348 catch(Exception e){\r
349 JOptionPane.showMessageDialog(frame, "FrameworkDatabase Corrupted.");\r
350 }\r
351 \r
352 if (ffc == null){\r
353 ffc = new FpdFileContents(fpd);\r
354 ffc.initDynPcdMap();\r
355 }\r
356 \r
357 if (fpdMsa == null) {\r
358 fpdMsa = new HashMap<String, String>();\r
359 }\r
360 \r
361 if (ffc.getFrameworkModulesCount() > 0) {\r
362 String[][] saa = new String[ffc.getFrameworkModulesCount()][5];\r
363 ffc.getFrameworkModulesInfo(saa);\r
364 for (int i = 0; i < saa.length; ++i) {\r
f3b0ed9a 365 ModuleIdentification mi = getModuleId(saa[i][1]+ " "+saa[i][2]+" "+saa[i][3]+" "+saa[i][4]);\r
366 if (mi != null) {\r
367 saa[i][0] = mi.getName();\r
368 saa[i][2] = mi.getVersion();\r
369 saa[i][4] = mi.getPackage().getVersion();\r
a13899c5 370 }\r
371 model1.addRow(saa[i]);\r
372 fpdMsa.put(saa[i][1]+saa[i][2]+saa[i][3]+saa[i][4], saa[i][0]);\r
373 }\r
374 }\r
375 \r
376 showAllModules();\r
377 \r
378 }\r
379 \r
380 private void showAllModules() {\r
381 \r
382 if (miList == null) {\r
383 miList = new ArrayList<ModuleIdentification>();\r
384 }\r
385 Set<PackageIdentification> spi = GlobalData.getPackageList();\r
386 Iterator ispi = spi.iterator();\r
387 \r
388 while(ispi.hasNext()) {\r
389 PackageIdentification pi = (PackageIdentification)ispi.next();\r
390 String[] s = {"", "", "", "", ""};\r
391 s[3] = pi.getGuid();\r
392 s[4] = pi.getVersion();\r
393 Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
394 Iterator ismi = smi.iterator();\r
395 while(ismi.hasNext()) {\r
396 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
397 s[0] = mi.getName();\r
398 s[1] = mi.getGuid();\r
399 s[2] = mi.getVersion();\r
400 model.addRow(s);\r
401 miList.add(mi);\r
402 }\r
403 }\r
404 }\r
405 /**\r
406 * This method initializes this\r
407 * \r
408 * @return void\r
409 */\r
410 private void initialize() {\r
411 this.setSize(633, 533);\r
412 this.setTitle("Framework Modules");\r
413 this.setContentPane(getJSplitPane());\r
414 this.setVisible(true);\r
415 \r
416 }\r
417 \r
418 private ModuleIdentification getModuleId(String key){\r
419 //\r
420 // Get ModuleGuid, ModuleVersion, PackageGuid, PackageVersion into string array.\r
421 //\r
422 String[] keyPart = key.split(" ");\r
423 Set<PackageIdentification> spi = GlobalData.getPackageList();\r
424 Iterator ispi = spi.iterator();\r
425 \r
426 while(ispi.hasNext()) {\r
427 PackageIdentification pi = (PackageIdentification)ispi.next();\r
f3b0ed9a 428 if ( !pi.getGuid().equals(keyPart[2])){ \r
429// || !pi.getVersion().equals(keyPart[3])){\r
a13899c5 430 continue;\r
431 }\r
432 Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
433 Iterator ismi = smi.iterator();\r
434 while(ismi.hasNext()) {\r
435 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
f3b0ed9a 436 if (mi.getGuid().equals(keyPart[0])){\r
437// && mi.getVersion().equals(keyPart[1])){\r
438\r
a13899c5 439 return mi;\r
440 }\r
441 }\r
442 }\r
443 return null;\r
444 }\r
445\r
446} // @jve:decl-index=0:visual-constraint="10,10"\r
447\r
448class NonEditableTableModel extends DefaultTableModel {\r
44053733 449 /**\r
450 * \r
451 */\r
452 private static final long serialVersionUID = 1L;\r
453\r
a13899c5 454 public boolean isCellEditable(int row, int col) {\r
455 return false;\r
456 }\r
457}\r