]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFrameworkModules.java
Changed the output message when handling dummy files in msa.
[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
d6d24759 17import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
a13899c5 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
44053733 33 /**\r
34 * \r
35 */\r
36 private static final long serialVersionUID = 1L;\r
a13899c5 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
d6d24759 58 private OpeningPlatformType docConsole = null;\r
a13899c5 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
f3b0ed9a 138 jTable.setRowHeight(20);\r
a13899c5 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
f3b0ed9a 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
a13899c5 200 }\r
201 model1.addRow(row);\r
af25df16 202 \r
d6d24759 203 docConsole.setSaved(false);\r
82961247 204 try{\r
af25df16 205 ffc.addFrameworkModulesPcdBuildDefs(miList.get(selectedRow), null);\r
206 }\r
82961247 207 catch (Exception exception) {\r
208 JOptionPane.showMessageDialog(frame, "PCD Insertion Fail. " + exception.getMessage());\r
209 }\r
af25df16 210 JOptionPane.showMessageDialog(frame, "This Module Added Successfully.");\r
211 jTable1.changeSelection(model1.getRowCount()-1, 0, false, false);\r
82961247 212 }\r
a13899c5 213 });\r
214 }\r
215 return jButton;\r
216 }\r
217\r
218 /**\r
219 * This method initializes jPanel3 \r
220 * \r
221 * @return javax.swing.JPanel \r
222 */\r
223 private JPanel getJPanel3() {\r
224 if (jPanel3 == null) {\r
225 FlowLayout flowLayout1 = new FlowLayout();\r
226 flowLayout1.setAlignment(java.awt.FlowLayout.RIGHT);\r
227 jPanel3 = new JPanel();\r
228 jPanel3.setLayout(flowLayout1);\r
229 jPanel3.add(getJButton1(), null);\r
230 jPanel3.add(getJButton2(), null);\r
231 }\r
232 return jPanel3;\r
233 }\r
234\r
235 /**\r
236 * This method initializes jScrollPane1 \r
237 * \r
238 * @return javax.swing.JScrollPane \r
239 */\r
240 private JScrollPane getJScrollPane1() {\r
241 if (jScrollPane1 == null) {\r
242 jScrollPane1 = new JScrollPane();\r
243 jScrollPane1.setPreferredSize(new java.awt.Dimension(453,200));\r
244 jScrollPane1.setViewportView(getJTable1());\r
245 }\r
246 return jScrollPane1;\r
247 }\r
248\r
249 /**\r
250 * This method initializes jTable1 \r
251 * \r
252 * @return javax.swing.JTable \r
253 */\r
254 private JTable getJTable1() {\r
255 if (jTable1 == null) {\r
256 model1 = new NonEditableTableModel();\r
257 jTable1 = new JTable(model1);\r
f3b0ed9a 258 jTable1.setRowHeight(20);\r
a13899c5 259 model1.addColumn("ModuleName");\r
260 model1.addColumn("ModuleGUID");\r
261 model1.addColumn("ModuleVersion"); \r
262 model1.addColumn("PackageGUID");\r
263 model1.addColumn("PackageVersion");\r
264// model1.addColumn("SupportedArch");\r
265 \r
266 jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
267 }\r
268 return jTable1;\r
269 }\r
270\r
271 /**\r
272 * This method initializes jButton1 \r
273 * \r
274 * @return javax.swing.JButton \r
275 */\r
276 private JButton getJButton1() {\r
277 if (jButton1 == null) {\r
278 jButton1 = new JButton();\r
279 jButton1.setPreferredSize(new java.awt.Dimension(130,20));\r
280 jButton1.setText("Settings");\r
281 jButton1.addActionListener(new java.awt.event.ActionListener() {\r
282 public void actionPerformed(java.awt.event.ActionEvent e) {\r
283 int selectedRow = jTable1.getSelectedRow();\r
284 if (selectedRow < 0){\r
285 return;\r
286 }\r
287 if (settingDlg == null) {\r
288 settingDlg = new FpdModuleSA(ffc);\r
289 }\r
d6d24759 290 docConsole.setSaved(false);\r
f3b0ed9a 291 String mg = model1.getValueAt(selectedRow, 1)+"";\r
292 String mv = model1.getValueAt(selectedRow, 2)+"";\r
293 String pg = model1.getValueAt(selectedRow, 3)+"";\r
294 String pv = model1.getValueAt(selectedRow, 4)+"";\r
a13899c5 295 settingDlg.setKey(mg + " " + mv + " " + pg + " " + pv);\r
296 settingDlg.setVisible(true);\r
297 }\r
298 });\r
299 }\r
300 return jButton1;\r
301 }\r
302\r
303 /**\r
304 * This method initializes jButton2 \r
305 * \r
306 * @return javax.swing.JButton \r
307 */\r
308 private JButton getJButton2() {\r
309 if (jButton2 == null) {\r
310 jButton2 = new JButton();\r
311 jButton2.setPreferredSize(new java.awt.Dimension(130,20));\r
312 jButton2.setText("Remove Module");\r
313 jButton2.addActionListener(new java.awt.event.ActionListener() {\r
314 public void actionPerformed(java.awt.event.ActionEvent e) {\r
315 int selectedRow = jTable1.getSelectedRow();\r
316 if (selectedRow < 0){\r
317 return;\r
318 }\r
319 String mg = model1.getValueAt(selectedRow, 1).toString();\r
320 String mv = model1.getValueAt(selectedRow, 2).toString();\r
321 String pg = model1.getValueAt(selectedRow, 3).toString();\r
322 String pv = model1.getValueAt(selectedRow, 4).toString();\r
323 model1.removeRow(selectedRow);\r
324 fpdMsa.remove(mg+mv+pg+pv);\r
d6d24759 325 docConsole.setSaved(false);\r
a13899c5 326 ffc.removeModuleSA(selectedRow);\r
327 }\r
328 });\r
329 }\r
330 return jButton2;\r
331 }\r
332\r
333 /**\r
334 * @param args\r
335 */\r
336 public static void main(String[] args) {\r
337 // TODO Auto-generated method stub\r
338 new FpdFrameworkModules().setVisible(true);\r
339 }\r
340\r
341 /**\r
342 * This is the default constructor\r
343 */\r
344 public FpdFrameworkModules() {\r
345 super();\r
346 initialize();\r
347 }\r
348\r
349 public FpdFrameworkModules(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd){\r
350 this();\r
351 init(fpd);\r
352 \r
353 }\r
354 \r
d6d24759 355 public FpdFrameworkModules(OpeningPlatformType opt) {\r
356 this(opt.getXmlFpd());\r
357 docConsole = opt;\r
358 }\r
359 \r
a13899c5 360 private void init(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {\r
361 try {\r
362 GlobalData.initInfo("Tools" + File.separator + "Conf" + File.separator + "FrameworkDatabase.db", System.getenv("WORKSPACE"));\r
363 }\r
364 catch(Exception e){\r
365 JOptionPane.showMessageDialog(frame, "FrameworkDatabase Corrupted.");\r
366 }\r
367 \r
368 if (ffc == null){\r
369 ffc = new FpdFileContents(fpd);\r
370 ffc.initDynPcdMap();\r
371 }\r
372 \r
373 if (fpdMsa == null) {\r
374 fpdMsa = new HashMap<String, String>();\r
375 }\r
376 \r
377 if (ffc.getFrameworkModulesCount() > 0) {\r
378 String[][] saa = new String[ffc.getFrameworkModulesCount()][5];\r
379 ffc.getFrameworkModulesInfo(saa);\r
380 for (int i = 0; i < saa.length; ++i) {\r
f3b0ed9a 381 ModuleIdentification mi = getModuleId(saa[i][1]+ " "+saa[i][2]+" "+saa[i][3]+" "+saa[i][4]);\r
382 if (mi != null) {\r
383 saa[i][0] = mi.getName();\r
384 saa[i][2] = mi.getVersion();\r
385 saa[i][4] = mi.getPackage().getVersion();\r
a13899c5 386 }\r
387 model1.addRow(saa[i]);\r
388 fpdMsa.put(saa[i][1]+saa[i][2]+saa[i][3]+saa[i][4], saa[i][0]);\r
389 }\r
390 }\r
391 \r
392 showAllModules();\r
393 \r
394 }\r
395 \r
396 private void showAllModules() {\r
397 \r
398 if (miList == null) {\r
399 miList = new ArrayList<ModuleIdentification>();\r
400 }\r
401 Set<PackageIdentification> spi = GlobalData.getPackageList();\r
402 Iterator ispi = spi.iterator();\r
403 \r
404 while(ispi.hasNext()) {\r
405 PackageIdentification pi = (PackageIdentification)ispi.next();\r
406 String[] s = {"", "", "", "", ""};\r
407 s[3] = pi.getGuid();\r
408 s[4] = pi.getVersion();\r
409 Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
410 Iterator ismi = smi.iterator();\r
411 while(ismi.hasNext()) {\r
412 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
413 s[0] = mi.getName();\r
414 s[1] = mi.getGuid();\r
415 s[2] = mi.getVersion();\r
416 model.addRow(s);\r
417 miList.add(mi);\r
418 }\r
419 }\r
420 }\r
421 /**\r
422 * This method initializes this\r
423 * \r
424 * @return void\r
425 */\r
426 private void initialize() {\r
427 this.setSize(633, 533);\r
428 this.setTitle("Framework Modules");\r
429 this.setContentPane(getJSplitPane());\r
430 this.setVisible(true);\r
431 \r
432 }\r
433 \r
434 private ModuleIdentification getModuleId(String key){\r
435 //\r
436 // Get ModuleGuid, ModuleVersion, PackageGuid, PackageVersion into string array.\r
437 //\r
438 String[] keyPart = key.split(" ");\r
439 Set<PackageIdentification> spi = GlobalData.getPackageList();\r
440 Iterator ispi = spi.iterator();\r
441 \r
442 while(ispi.hasNext()) {\r
443 PackageIdentification pi = (PackageIdentification)ispi.next();\r
f3b0ed9a 444 if ( !pi.getGuid().equals(keyPart[2])){ \r
445// || !pi.getVersion().equals(keyPart[3])){\r
a13899c5 446 continue;\r
447 }\r
448 Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
449 Iterator ismi = smi.iterator();\r
450 while(ismi.hasNext()) {\r
451 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
f3b0ed9a 452 if (mi.getGuid().equals(keyPart[0])){\r
453// && mi.getVersion().equals(keyPart[1])){\r
454\r
a13899c5 455 return mi;\r
456 }\r
457 }\r
458 }\r
459 return null;\r
460 }\r
461\r
462} // @jve:decl-index=0:visual-constraint="10,10"\r
463\r
464class NonEditableTableModel extends DefaultTableModel {\r
44053733 465 /**\r
466 * \r
467 */\r
468 private static final long serialVersionUID = 1L;\r
469\r
a13899c5 470 public boolean isCellEditable(int row, int col) {\r
471 return false;\r
472 }\r
473}\r