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