]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFrameworkModules.java
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@710 6f19259b...
[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
137 model.addColumn("ModuleName");\r
138 model.addColumn("ModuleGUID");\r
139 model.addColumn("ModuleVersion");\r
140 model.addColumn("PackageGUID");\r
141 model.addColumn("PackageVersion");\r
142 \r
143 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
144 }\r
145 return jTable;\r
146 }\r
147\r
148 /**\r
149 * This method initializes jPanel2 \r
150 * \r
151 * @return javax.swing.JPanel \r
152 */\r
153 private JPanel getJPanel2() {\r
154 if (jPanel2 == null) {\r
155 FlowLayout flowLayout = new FlowLayout();\r
156 flowLayout.setAlignment(java.awt.FlowLayout.RIGHT);\r
157 jPanel2 = new JPanel();\r
158 jPanel2.setLayout(flowLayout);\r
159 jPanel2.add(getJButton(), null);\r
160 }\r
161 return jPanel2;\r
162 }\r
163\r
164 /**\r
165 * This method initializes jButton \r
166 * \r
167 * @return javax.swing.JButton \r
168 */\r
169 private JButton getJButton() {\r
170 if (jButton == null) {\r
171 jButton = new JButton();\r
172 jButton.setPreferredSize(new java.awt.Dimension(130,20));\r
173 jButton.setText("Add a Module");\r
174 jButton.addActionListener(new java.awt.event.ActionListener() {\r
175 public void actionPerformed(java.awt.event.ActionEvent e) {\r
176 int selectedRow = jTable.getSelectedRow();\r
177 if (selectedRow < 0){\r
178 return;\r
179 }\r
180 \r
181 String mg = (String)model.getValueAt(selectedRow, 1);\r
182 String mv = (String)model.getValueAt(selectedRow, 2);\r
183 String pg = (String)model.getValueAt(selectedRow, 3);\r
184 String pv = (String)model.getValueAt(selectedRow, 4);\r
185 if (fpdMsa.containsKey(mg + mv + pg + pv)) {\r
186 JOptionPane.showMessageDialog(frame, "This Module Already Added.");\r
187 return;\r
188 }\r
189 //ToDo put Arch instead of null\r
190 fpdMsa.put(mg + mv + pg + pv, null);\r
191 \r
192 String[] row = {" ", mg, mv, pg, pv};\r
193 if (getModuleId(mg + " " + mv + " " + pg + " " + pv) != null) {\r
194 row[0] = getModuleId(mg + " " + mv + " " + pg + " " + pv).getName();\r
195 }\r
196 model1.addRow(row);\r
197 ffc.addFrameworkModulesPcdBuildDefs(miList.get(selectedRow), null);\r
198 }\r
199 });\r
200 }\r
201 return jButton;\r
202 }\r
203\r
204 /**\r
205 * This method initializes jPanel3 \r
206 * \r
207 * @return javax.swing.JPanel \r
208 */\r
209 private JPanel getJPanel3() {\r
210 if (jPanel3 == null) {\r
211 FlowLayout flowLayout1 = new FlowLayout();\r
212 flowLayout1.setAlignment(java.awt.FlowLayout.RIGHT);\r
213 jPanel3 = new JPanel();\r
214 jPanel3.setLayout(flowLayout1);\r
215 jPanel3.add(getJButton1(), null);\r
216 jPanel3.add(getJButton2(), null);\r
217 }\r
218 return jPanel3;\r
219 }\r
220\r
221 /**\r
222 * This method initializes jScrollPane1 \r
223 * \r
224 * @return javax.swing.JScrollPane \r
225 */\r
226 private JScrollPane getJScrollPane1() {\r
227 if (jScrollPane1 == null) {\r
228 jScrollPane1 = new JScrollPane();\r
229 jScrollPane1.setPreferredSize(new java.awt.Dimension(453,200));\r
230 jScrollPane1.setViewportView(getJTable1());\r
231 }\r
232 return jScrollPane1;\r
233 }\r
234\r
235 /**\r
236 * This method initializes jTable1 \r
237 * \r
238 * @return javax.swing.JTable \r
239 */\r
240 private JTable getJTable1() {\r
241 if (jTable1 == null) {\r
242 model1 = new NonEditableTableModel();\r
243 jTable1 = new JTable(model1);\r
244 model1.addColumn("ModuleName");\r
245 model1.addColumn("ModuleGUID");\r
246 model1.addColumn("ModuleVersion"); \r
247 model1.addColumn("PackageGUID");\r
248 model1.addColumn("PackageVersion");\r
249// model1.addColumn("SupportedArch");\r
250 \r
251 jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
252 }\r
253 return jTable1;\r
254 }\r
255\r
256 /**\r
257 * This method initializes jButton1 \r
258 * \r
259 * @return javax.swing.JButton \r
260 */\r
261 private JButton getJButton1() {\r
262 if (jButton1 == null) {\r
263 jButton1 = new JButton();\r
264 jButton1.setPreferredSize(new java.awt.Dimension(130,20));\r
265 jButton1.setText("Settings");\r
266 jButton1.addActionListener(new java.awt.event.ActionListener() {\r
267 public void actionPerformed(java.awt.event.ActionEvent e) {\r
268 int selectedRow = jTable1.getSelectedRow();\r
269 if (selectedRow < 0){\r
270 return;\r
271 }\r
272 if (settingDlg == null) {\r
273 settingDlg = new FpdModuleSA(ffc);\r
274 }\r
275 \r
276 String mg = model1.getValueAt(selectedRow, 1).toString();\r
277 String mv = model1.getValueAt(selectedRow, 2).toString();\r
278 String pg = model1.getValueAt(selectedRow, 3).toString();\r
279 String pv = model1.getValueAt(selectedRow, 4).toString();\r
280 settingDlg.setKey(mg + " " + mv + " " + pg + " " + pv);\r
281 settingDlg.setVisible(true);\r
282 }\r
283 });\r
284 }\r
285 return jButton1;\r
286 }\r
287\r
288 /**\r
289 * This method initializes jButton2 \r
290 * \r
291 * @return javax.swing.JButton \r
292 */\r
293 private JButton getJButton2() {\r
294 if (jButton2 == null) {\r
295 jButton2 = new JButton();\r
296 jButton2.setPreferredSize(new java.awt.Dimension(130,20));\r
297 jButton2.setText("Remove Module");\r
298 jButton2.addActionListener(new java.awt.event.ActionListener() {\r
299 public void actionPerformed(java.awt.event.ActionEvent e) {\r
300 int selectedRow = jTable1.getSelectedRow();\r
301 if (selectedRow < 0){\r
302 return;\r
303 }\r
304 String mg = model1.getValueAt(selectedRow, 1).toString();\r
305 String mv = model1.getValueAt(selectedRow, 2).toString();\r
306 String pg = model1.getValueAt(selectedRow, 3).toString();\r
307 String pv = model1.getValueAt(selectedRow, 4).toString();\r
308 model1.removeRow(selectedRow);\r
309 fpdMsa.remove(mg+mv+pg+pv);\r
310 ffc.removeModuleSA(selectedRow);\r
311 }\r
312 });\r
313 }\r
314 return jButton2;\r
315 }\r
316\r
317 /**\r
318 * @param args\r
319 */\r
320 public static void main(String[] args) {\r
321 // TODO Auto-generated method stub\r
322 new FpdFrameworkModules().setVisible(true);\r
323 }\r
324\r
325 /**\r
326 * This is the default constructor\r
327 */\r
328 public FpdFrameworkModules() {\r
329 super();\r
330 initialize();\r
331 }\r
332\r
333 public FpdFrameworkModules(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd){\r
334 this();\r
335 init(fpd);\r
336 \r
337 }\r
338 \r
339 private void init(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {\r
340 try {\r
341 GlobalData.initInfo("Tools" + File.separator + "Conf" + File.separator + "FrameworkDatabase.db", System.getenv("WORKSPACE"));\r
342 }\r
343 catch(Exception e){\r
344 JOptionPane.showMessageDialog(frame, "FrameworkDatabase Corrupted.");\r
345 }\r
346 \r
347 if (ffc == null){\r
348 ffc = new FpdFileContents(fpd);\r
349 ffc.initDynPcdMap();\r
350 }\r
351 \r
352 if (fpdMsa == null) {\r
353 fpdMsa = new HashMap<String, String>();\r
354 }\r
355 \r
356 if (ffc.getFrameworkModulesCount() > 0) {\r
357 String[][] saa = new String[ffc.getFrameworkModulesCount()][5];\r
358 ffc.getFrameworkModulesInfo(saa);\r
359 for (int i = 0; i < saa.length; ++i) {\r
360 if (getModuleId(saa[i][1]+ " "+saa[i][2]+" "+saa[i][3]+" "+saa[i][4]) != null) {\r
361 saa[i][0] = getModuleId(saa[i][1]+ " "+saa[i][2]+" "+saa[i][3]+" "+saa[i][4]).getName();\r
362 }\r
363 model1.addRow(saa[i]);\r
364 fpdMsa.put(saa[i][1]+saa[i][2]+saa[i][3]+saa[i][4], saa[i][0]);\r
365 }\r
366 }\r
367 \r
368 showAllModules();\r
369 \r
370 }\r
371 \r
372 private void showAllModules() {\r
373 \r
374 if (miList == null) {\r
375 miList = new ArrayList<ModuleIdentification>();\r
376 }\r
377 Set<PackageIdentification> spi = GlobalData.getPackageList();\r
378 Iterator ispi = spi.iterator();\r
379 \r
380 while(ispi.hasNext()) {\r
381 PackageIdentification pi = (PackageIdentification)ispi.next();\r
382 String[] s = {"", "", "", "", ""};\r
383 s[3] = pi.getGuid();\r
384 s[4] = pi.getVersion();\r
385 Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
386 Iterator ismi = smi.iterator();\r
387 while(ismi.hasNext()) {\r
388 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
389 s[0] = mi.getName();\r
390 s[1] = mi.getGuid();\r
391 s[2] = mi.getVersion();\r
392 model.addRow(s);\r
393 miList.add(mi);\r
394 }\r
395 }\r
396 }\r
397 /**\r
398 * This method initializes this\r
399 * \r
400 * @return void\r
401 */\r
402 private void initialize() {\r
403 this.setSize(633, 533);\r
404 this.setTitle("Framework Modules");\r
405 this.setContentPane(getJSplitPane());\r
406 this.setVisible(true);\r
407 \r
408 }\r
409 \r
410 private ModuleIdentification getModuleId(String key){\r
411 //\r
412 // Get ModuleGuid, ModuleVersion, PackageGuid, PackageVersion into string array.\r
413 //\r
414 String[] keyPart = key.split(" ");\r
415 Set<PackageIdentification> spi = GlobalData.getPackageList();\r
416 Iterator ispi = spi.iterator();\r
417 \r
418 while(ispi.hasNext()) {\r
419 PackageIdentification pi = (PackageIdentification)ispi.next();\r
420 if ( !pi.getGuid().equals(keyPart[2]) || !pi.getVersion().equals(keyPart[3])){\r
421 continue;\r
422 }\r
423 Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
424 Iterator ismi = smi.iterator();\r
425 while(ismi.hasNext()) {\r
426 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
427 if (mi.getGuid().equals(keyPart[0]) && mi.getVersion().equals(keyPart[1])){\r
428 return mi;\r
429 }\r
430 }\r
431 }\r
432 return null;\r
433 }\r
434\r
435} // @jve:decl-index=0:visual-constraint="10,10"\r
436\r
437class NonEditableTableModel extends DefaultTableModel {\r
44053733 438 /**\r
439 * \r
440 */\r
441 private static final long serialVersionUID = 1L;\r
442\r
a13899c5 443 public boolean isCellEditable(int row, int col) {\r
444 return false;\r
445 }\r
446}\r