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