]>
Commit | Line | Data |
---|---|---|
a13899c5 | 1 | package org.tianocore.frameworkwizard.platform.ui;\r |
2 | \r | |
3 | import java.awt.BorderLayout;\r | |
4 | \r | |
5 | import javax.swing.JFrame;\r | |
6 | import javax.swing.JOptionPane;\r | |
7 | import javax.swing.JPanel;\r | |
a13899c5 | 8 | import javax.swing.JSplitPane;\r |
9 | import javax.swing.JLabel;\r | |
10 | import javax.swing.JScrollPane;\r | |
11 | import javax.swing.JTable;\r | |
12 | import javax.swing.JButton;\r | |
13 | import javax.swing.ListSelectionModel;\r | |
14 | import javax.swing.table.DefaultTableModel;\r | |
15 | \r | |
16 | import org.tianocore.PlatformSurfaceAreaDocument;\r | |
d6d24759 | 17 | import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r |
a13899c5 | 18 | import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r |
19 | import org.tianocore.frameworkwizard.platform.ui.global.GlobalData;\r | |
20 | import org.tianocore.frameworkwizard.platform.ui.id.ModuleIdentification;\r | |
21 | import org.tianocore.frameworkwizard.platform.ui.id.PackageIdentification;\r | |
22 | \r | |
23 | import java.awt.FlowLayout;\r | |
24 | import java.io.File;\r | |
25 | import java.util.ArrayList;\r | |
26 | import java.util.HashMap;\r | |
27 | import java.util.Iterator;\r | |
28 | import java.util.Map;\r | |
29 | import java.util.Set;\r | |
bf5abaff | 30 | import java.util.Vector;\r |
a13899c5 | 31 | \r |
32 | public class FpdFrameworkModules extends IInternalFrame {\r | |
33 | \r | |
44053733 | 34 | /**\r |
35 | * \r | |
36 | */\r | |
37 | private static final long serialVersionUID = 1L;\r | |
a8a9de7c | 38 | \r |
a13899c5 | 39 | static JFrame frame;\r |
a8a9de7c | 40 | \r |
a13899c5 | 41 | private JSplitPane jSplitPane = null;\r |
a8a9de7c | 42 | \r |
4da2e625 | 43 | private JPanel jPanelTop = null;\r |
a8a9de7c | 44 | \r |
4da2e625 | 45 | private JPanel jPanelBottom = null;\r |
a8a9de7c | 46 | \r |
a13899c5 | 47 | private JLabel jLabel = null;\r |
a8a9de7c | 48 | \r |
4da2e625 | 49 | private JScrollPane jScrollPaneAllModules = null;\r |
a8a9de7c | 50 | \r |
4da2e625 | 51 | private JTable jTableAllModules = null;\r |
a8a9de7c | 52 | \r |
4da2e625 | 53 | private JPanel jPanelTopSouth = null;\r |
a8a9de7c | 54 | \r |
4da2e625 | 55 | private JButton jButtonAddModule = null;\r |
a8a9de7c | 56 | \r |
4da2e625 | 57 | private JLabel jLabelModulesAdded = null;\r |
a8a9de7c | 58 | \r |
4da2e625 | 59 | private JPanel jPanelBottomSouth = null;\r |
a8a9de7c | 60 | \r |
4da2e625 | 61 | private JScrollPane jScrollPaneFpdModules = null;\r |
a8a9de7c | 62 | \r |
4da2e625 | 63 | private JTable jTableFpdModules = null;\r |
a8a9de7c | 64 | \r |
4da2e625 | 65 | private JButton jButtonSettings = null;\r |
a8a9de7c | 66 | \r |
4da2e625 | 67 | private JButton jButtonRemoveModule = null;\r |
a8a9de7c | 68 | \r |
4da2e625 | 69 | private NonEditableTableModel modelAllModules = null;\r |
a8a9de7c | 70 | \r |
4da2e625 | 71 | private NonEditableTableModel modelFpdModules = null;\r |
a8a9de7c | 72 | \r |
a13899c5 | 73 | private FpdModuleSA settingDlg = null;\r |
a8a9de7c | 74 | \r |
a13899c5 | 75 | private FpdFileContents ffc = null;\r |
a8a9de7c | 76 | \r |
d6d24759 | 77 | private OpeningPlatformType docConsole = null;\r |
a8a9de7c | 78 | \r |
bf5abaff | 79 | private Map<String, ArrayList<String>> fpdMsa = null;\r |
a8a9de7c | 80 | \r |
a13899c5 | 81 | private ArrayList<ModuleIdentification> miList = null;\r |
82 | \r | |
93fd07b1 | 83 | private final int ModNameColForAllModTable = 0;\r |
84 | \r | |
85 | private final int PkgNameColForAllModTable = 1;\r | |
86 | \r | |
87 | private final int PathColForAllModTable = 2;\r | |
88 | \r | |
89 | private final int PkgVerColForAllModTable = 3;\r | |
90 | \r | |
91 | private final int ModVerColForAllModTable = 4;\r | |
92 | \r | |
93 | private final int ModNameColForFpdModTable = 0;\r | |
94 | \r | |
95 | private final int PkgNameColForFpdModTable = 1;\r | |
96 | \r | |
97 | private final int PathColForFpdModTable = 2;\r | |
98 | \r | |
99 | private final int ArchColForFpdModTable = 3;\r | |
100 | \r | |
101 | private final int PkgVerColForFpdModTable = 4;\r | |
a8a9de7c | 102 | \r |
93fd07b1 | 103 | private final int ModVerColForFpdModTable = 5;\r |
a8a9de7c | 104 | \r |
a8a9de7c | 105 | private final int ModNameMinWidth = 168;\r |
106 | \r | |
107 | private final int ModNamePrefWidth = 200;\r | |
108 | \r | |
109 | private final int PkgNameMinWidth = 100;\r | |
110 | \r | |
111 | private final int PkgNamePrefWidth = 110;\r | |
112 | \r | |
113 | private final int PkgNameMaxWidth = 150;\r | |
114 | \r | |
115 | private final int VerMinWidth = 50;\r | |
116 | \r | |
117 | private final int VerMaxWidth = 80;\r | |
118 | \r | |
119 | private final int VerPrefWidth = 60;\r | |
120 | \r | |
121 | private final int PathPrefWidth = 320;\r | |
122 | \r | |
123 | private final int PathMinWidth = 280;\r | |
124 | \r | |
125 | private final int ArchPrefWidth = 80;\r | |
126 | \r | |
127 | private final int ArchMinWidth = 60;\r | |
128 | \r | |
129 | private final int ArchMaxWidth = 100;\r | |
130 | \r | |
a13899c5 | 131 | /**\r |
132 | * This method initializes jSplitPane \r | |
133 | * \r | |
134 | * @return javax.swing.JSplitPane \r | |
135 | */\r | |
136 | private JSplitPane getJSplitPane() {\r | |
137 | if (jSplitPane == null) {\r | |
138 | jSplitPane = new JSplitPane();\r | |
139 | jSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);\r | |
140 | jSplitPane.setDividerLocation(250);\r | |
4da2e625 | 141 | jSplitPane.setBottomComponent(getJPanelBottom());\r |
142 | jSplitPane.setTopComponent(getJPanelTop());\r | |
a13899c5 | 143 | }\r |
144 | return jSplitPane;\r | |
145 | }\r | |
146 | \r | |
147 | /**\r | |
148 | * This method initializes jPanel \r | |
149 | * \r | |
150 | * @return javax.swing.JPanel \r | |
151 | */\r | |
4da2e625 | 152 | private JPanel getJPanelTop() {\r |
153 | if (jPanelTop == null) {\r | |
a13899c5 | 154 | jLabel = new JLabel();\r |
155 | jLabel.setText("Modules in Workspace");\r | |
4da2e625 | 156 | jPanelTop = new JPanel();\r |
157 | jPanelTop.setLayout(new BorderLayout());\r | |
158 | jPanelTop.add(jLabel, java.awt.BorderLayout.NORTH);\r | |
159 | jPanelTop.add(getJScrollPaneAllModules(), java.awt.BorderLayout.CENTER);\r | |
160 | jPanelTop.add(getJPanelTopSouth(), java.awt.BorderLayout.SOUTH);\r | |
a13899c5 | 161 | }\r |
4da2e625 | 162 | return jPanelTop;\r |
a13899c5 | 163 | }\r |
164 | \r | |
165 | /**\r | |
166 | * This method initializes jPanel1 \r | |
167 | * \r | |
168 | * @return javax.swing.JPanel \r | |
169 | */\r | |
4da2e625 | 170 | private JPanel getJPanelBottom() {\r |
171 | if (jPanelBottom == null) {\r | |
172 | jLabelModulesAdded = new JLabel();\r | |
173 | jLabelModulesAdded.setText("Modules Added");\r | |
174 | jPanelBottom = new JPanel();\r | |
175 | jPanelBottom.setLayout(new BorderLayout());\r | |
176 | jPanelBottom.add(jLabelModulesAdded, java.awt.BorderLayout.NORTH);\r | |
177 | jPanelBottom.add(getJPanelBottomSouth(), java.awt.BorderLayout.SOUTH);\r | |
178 | jPanelBottom.add(getJScrollPaneFpdModules(), java.awt.BorderLayout.CENTER);\r | |
a13899c5 | 179 | }\r |
4da2e625 | 180 | return jPanelBottom;\r |
a13899c5 | 181 | }\r |
182 | \r | |
183 | /**\r | |
184 | * This method initializes jScrollPane \r | |
185 | * \r | |
186 | * @return javax.swing.JScrollPane \r | |
187 | */\r | |
4da2e625 | 188 | private JScrollPane getJScrollPaneAllModules() {\r |
189 | if (jScrollPaneAllModules == null) {\r | |
190 | jScrollPaneAllModules = new JScrollPane();\r | |
a8a9de7c | 191 | jScrollPaneAllModules.setPreferredSize(new java.awt.Dimension(600, 200));\r |
4da2e625 | 192 | jScrollPaneAllModules.setViewportView(getJTableAllModules());\r |
a13899c5 | 193 | }\r |
4da2e625 | 194 | return jScrollPaneAllModules;\r |
a13899c5 | 195 | }\r |
196 | \r | |
197 | /**\r | |
198 | * This method initializes jTable \r | |
199 | * \r | |
200 | * @return javax.swing.JTable \r | |
201 | */\r | |
4da2e625 | 202 | private JTable getJTableAllModules() {\r |
203 | if (jTableAllModules == null) {\r | |
204 | modelAllModules = new NonEditableTableModel();\r | |
add40ab2 | 205 | TableSorter sorter = new TableSorter(modelAllModules);\r |
206 | jTableAllModules = new JTable(sorter);\r | |
207 | sorter.setTableHeader(jTableAllModules.getTableHeader());\r | |
4da2e625 | 208 | jTableAllModules.setRowHeight(20);\r |
a8a9de7c | 209 | modelAllModules.addColumn("<html>Module<br>Name</html>");\r |
a8a9de7c | 210 | modelAllModules.addColumn("<html>Package<br>Name</html>");\r |
4da2e625 | 211 | modelAllModules.addColumn("Path");\r |
93fd07b1 | 212 | modelAllModules.addColumn("<html>Package<br>Version</html>");\r |
213 | modelAllModules.addColumn("<html>Module<br>Version</html>");\r | |
214 | \r | |
a8a9de7c | 215 | javax.swing.table.TableColumn column = null;\r |
93fd07b1 | 216 | column = jTableAllModules.getColumnModel().getColumn(ModNameColForAllModTable);\r |
a8a9de7c | 217 | column.setPreferredWidth(ModNamePrefWidth);\r |
218 | column.setMinWidth(ModNameMinWidth);\r | |
93fd07b1 | 219 | column = jTableAllModules.getColumnModel().getColumn(ModVerColForAllModTable);\r |
a8a9de7c | 220 | column.setPreferredWidth(VerPrefWidth);\r |
221 | column.setMaxWidth(VerMaxWidth);\r | |
222 | column.setMinWidth(VerMinWidth);\r | |
93fd07b1 | 223 | column = jTableAllModules.getColumnModel().getColumn(PkgNameColForAllModTable);\r |
a8a9de7c | 224 | column.setPreferredWidth(PkgNamePrefWidth);\r |
225 | column.setMinWidth(PkgNameMinWidth);\r | |
226 | column.setMaxWidth(PkgNameMaxWidth);\r | |
93fd07b1 | 227 | column = jTableAllModules.getColumnModel().getColumn(PkgVerColForAllModTable);\r |
a8a9de7c | 228 | column.setPreferredWidth(VerPrefWidth);\r |
229 | column.setMaxWidth(VerMaxWidth);\r | |
230 | column.setMinWidth(VerMinWidth);\r | |
93fd07b1 | 231 | column = jTableAllModules.getColumnModel().getColumn(PathColForAllModTable);\r |
a8a9de7c | 232 | column.setPreferredWidth(PathPrefWidth);\r |
233 | column.setMinWidth(PathMinWidth);\r | |
234 | \r | |
4da2e625 | 235 | jTableAllModules.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r |
93fd07b1 | 236 | jTableAllModules.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r |
a13899c5 | 237 | }\r |
4da2e625 | 238 | return jTableAllModules;\r |
a13899c5 | 239 | }\r |
240 | \r | |
241 | /**\r | |
242 | * This method initializes jPanel2 \r | |
243 | * \r | |
244 | * @return javax.swing.JPanel \r | |
245 | */\r | |
4da2e625 | 246 | private JPanel getJPanelTopSouth() {\r |
247 | if (jPanelTopSouth == null) {\r | |
a13899c5 | 248 | FlowLayout flowLayout = new FlowLayout();\r |
249 | flowLayout.setAlignment(java.awt.FlowLayout.RIGHT);\r | |
4da2e625 | 250 | jPanelTopSouth = new JPanel();\r |
251 | jPanelTopSouth.setLayout(flowLayout);\r | |
252 | jPanelTopSouth.add(getJButtonAddModule(), null);\r | |
a13899c5 | 253 | }\r |
4da2e625 | 254 | return jPanelTopSouth;\r |
a13899c5 | 255 | }\r |
256 | \r | |
257 | /**\r | |
258 | * This method initializes jButton \r | |
259 | * \r | |
260 | * @return javax.swing.JButton \r | |
261 | */\r | |
4da2e625 | 262 | private JButton getJButtonAddModule() {\r |
263 | if (jButtonAddModule == null) {\r | |
264 | jButtonAddModule = new JButton();\r | |
a8a9de7c | 265 | jButtonAddModule.setPreferredSize(new java.awt.Dimension(130, 20));\r |
4da2e625 | 266 | jButtonAddModule.setText("Add a Module");\r |
267 | jButtonAddModule.addActionListener(new java.awt.event.ActionListener() {\r | |
a13899c5 | 268 | public void actionPerformed(java.awt.event.ActionEvent e) {\r |
4da2e625 | 269 | int selectedRow = jTableAllModules.getSelectedRow();\r |
a8a9de7c | 270 | if (selectedRow < 0) {\r |
a13899c5 | 271 | return;\r |
272 | }\r | |
a8a9de7c | 273 | \r |
274 | TableSorter sorter = (TableSorter) jTableAllModules.getModel();\r | |
add40ab2 | 275 | selectedRow = sorter.modelIndex(selectedRow);\r |
93fd07b1 | 276 | String path = modelAllModules.getValueAt(selectedRow, PathColForAllModTable) + "";\r |
bf5abaff | 277 | ModuleIdentification mi = miList.get(selectedRow);\r |
278 | Vector<String> vArchs = null;\r | |
279 | try {\r | |
280 | vArchs = GlobalData.getModuleSupArchs(mi);\r | |
281 | }\r | |
282 | catch (Exception exp) {\r | |
283 | JOptionPane.showMessageDialog(frame, exp.getMessage());\r | |
a13899c5 | 284 | }\r |
a8a9de7c | 285 | \r |
bf5abaff | 286 | if (vArchs == null) {\r |
a8a9de7c | 287 | JOptionPane.showMessageDialog(frame, "No Supported Architectures specified in MSA file.");\r |
bf5abaff | 288 | return;\r |
a13899c5 | 289 | }\r |
a8a9de7c | 290 | \r |
bf5abaff | 291 | String archsAdded = "";\r |
292 | String mg = mi.getGuid();\r | |
293 | String mv = mi.getVersion();\r | |
294 | String pg = mi.getPackage().getGuid();\r | |
295 | String pv = mi.getPackage().getVersion();\r | |
a8a9de7c | 296 | \r |
bf5abaff | 297 | ArrayList<String> al = fpdMsa.get(mg + mv + pg + pv);\r |
298 | if (al == null) {\r | |
299 | al = new ArrayList<String>();\r | |
300 | fpdMsa.put(mg + mv + pg + pv, al);\r | |
301 | }\r | |
302 | for (int i = 0; i < al.size(); ++i) {\r | |
303 | vArchs.remove(al.get(i));\r | |
304 | }\r | |
305 | //\r | |
306 | // Archs this Module supported have already been added.\r | |
307 | //\r | |
308 | if (vArchs.size() == 0) {\r | |
a8a9de7c | 309 | JOptionPane.showMessageDialog(frame, "This Module has already been added.");\r |
bf5abaff | 310 | return;\r |
af25df16 | 311 | }\r |
bf5abaff | 312 | //ToDo put Arch instead of null\r |
34c614e1 | 313 | boolean errorOccurred = false;\r |
bf5abaff | 314 | for (int i = 0; i < vArchs.size(); ++i) {\r |
315 | String arch = vArchs.get(i);\r | |
316 | al.add(arch);\r | |
317 | archsAdded += arch + " ";\r | |
93fd07b1 | 318 | String[] row = { "", "", "", "", "", "" };\r |
a8a9de7c | 319 | \r |
320 | if (mi != null) {\r | |
93fd07b1 | 321 | row[ModNameColForFpdModTable] = mi.getName();\r |
322 | row[PkgNameColForFpdModTable] = mi.getPackage().getName();\r | |
323 | row[PathColForFpdModTable] = path;\r | |
324 | row[ArchColForFpdModTable] = arch;\r | |
325 | row[PkgVerColForFpdModTable] = pv;\r | |
326 | row[ModVerColForFpdModTable] = mv;\r | |
a8a9de7c | 327 | \r |
328 | }\r | |
329 | modelFpdModules.addRow(row);\r | |
330 | \r | |
331 | docConsole.setSaved(false);\r | |
332 | try {\r | |
333 | //ToDo : specify archs need to add.\r | |
334 | ffc.addFrameworkModulesPcdBuildDefs(mi, arch, null);\r | |
335 | } catch (Exception exception) {\r | |
93fd07b1 | 336 | JOptionPane.showMessageDialog(frame, "Adding " + row[ModNameColForFpdModTable] + " with SupArch " + arch\r |
a8a9de7c | 337 | + ": " + exception.getMessage());\r |
338 | errorOccurred = true;\r | |
339 | }\r | |
82961247 | 340 | }\r |
a8a9de7c | 341 | \r |
342 | String s = "This Module with Architecture " + archsAdded;\r | |
34c614e1 | 343 | if (errorOccurred) {\r |
a8a9de7c | 344 | s += " was added with Error. Platform may NOT Build.";\r |
345 | } else {\r | |
346 | s += " was added Successfully.";\r | |
34c614e1 | 347 | }\r |
a8a9de7c | 348 | JOptionPane.showMessageDialog(frame, s);\r |
349 | jTableFpdModules.changeSelection(modelFpdModules.getRowCount() - 1, 0, false, false);\r | |
82961247 | 350 | }\r |
a13899c5 | 351 | });\r |
352 | }\r | |
4da2e625 | 353 | return jButtonAddModule;\r |
a13899c5 | 354 | }\r |
355 | \r | |
356 | /**\r | |
357 | * This method initializes jPanel3 \r | |
358 | * \r | |
359 | * @return javax.swing.JPanel \r | |
360 | */\r | |
4da2e625 | 361 | private JPanel getJPanelBottomSouth() {\r |
362 | if (jPanelBottomSouth == null) {\r | |
a13899c5 | 363 | FlowLayout flowLayout1 = new FlowLayout();\r |
364 | flowLayout1.setAlignment(java.awt.FlowLayout.RIGHT);\r | |
4da2e625 | 365 | jPanelBottomSouth = new JPanel();\r |
366 | jPanelBottomSouth.setLayout(flowLayout1);\r | |
367 | jPanelBottomSouth.add(getJButtonSettings(), null);\r | |
368 | jPanelBottomSouth.add(getJButtonRemoveModule(), null);\r | |
a13899c5 | 369 | }\r |
4da2e625 | 370 | return jPanelBottomSouth;\r |
a13899c5 | 371 | }\r |
372 | \r | |
373 | /**\r | |
374 | * This method initializes jScrollPane1 \r | |
375 | * \r | |
376 | * @return javax.swing.JScrollPane \r | |
377 | */\r | |
4da2e625 | 378 | private JScrollPane getJScrollPaneFpdModules() {\r |
379 | if (jScrollPaneFpdModules == null) {\r | |
380 | jScrollPaneFpdModules = new JScrollPane();\r | |
a8a9de7c | 381 | jScrollPaneFpdModules.setPreferredSize(new java.awt.Dimension(453, 200));\r |
4da2e625 | 382 | jScrollPaneFpdModules.setViewportView(getJTableFpdModules());\r |
a13899c5 | 383 | }\r |
4da2e625 | 384 | return jScrollPaneFpdModules;\r |
a13899c5 | 385 | }\r |
386 | \r | |
387 | /**\r | |
388 | * This method initializes jTable1 \r | |
389 | * \r | |
390 | * @return javax.swing.JTable \r | |
391 | */\r | |
4da2e625 | 392 | private JTable getJTableFpdModules() {\r |
393 | if (jTableFpdModules == null) {\r | |
394 | modelFpdModules = new NonEditableTableModel();\r | |
add40ab2 | 395 | TableSorter sorter = new TableSorter(modelFpdModules);\r |
396 | jTableFpdModules = new JTable(sorter);\r | |
397 | sorter.setTableHeader(jTableFpdModules.getTableHeader());\r | |
4da2e625 | 398 | jTableFpdModules.setRowHeight(20);\r |
a8a9de7c | 399 | modelFpdModules.addColumn("<html>Module<br>Name</html>");\r |
a8a9de7c | 400 | modelFpdModules.addColumn("<html>Package<br>Name</html>");\r |
4da2e625 | 401 | modelFpdModules.addColumn("Path");\r |
93fd07b1 | 402 | modelFpdModules.addColumn("<html>Supported<br>Architectures</html>");\r |
403 | modelFpdModules.addColumn("<html>Package<br>Version</html>");\r | |
404 | modelFpdModules.addColumn("<html>Module<br>Version</html>");\r | |
405 | \r | |
a8a9de7c | 406 | javax.swing.table.TableColumn column = null;\r |
93fd07b1 | 407 | column = jTableFpdModules.getColumnModel().getColumn(ModNameColForFpdModTable);\r |
a8a9de7c | 408 | column.setPreferredWidth(ModNamePrefWidth);\r |
409 | column.setMinWidth(ModNameMinWidth);\r | |
93fd07b1 | 410 | column = jTableFpdModules.getColumnModel().getColumn(ModVerColForFpdModTable);\r |
a8a9de7c | 411 | column.setPreferredWidth(VerPrefWidth);\r |
412 | column.setMaxWidth(VerMaxWidth);\r | |
413 | column.setMinWidth(VerMinWidth);\r | |
93fd07b1 | 414 | column = jTableFpdModules.getColumnModel().getColumn(PkgNameColForFpdModTable);\r |
a8a9de7c | 415 | column.setPreferredWidth(PkgNamePrefWidth);\r |
416 | column.setMinWidth(PkgNameMinWidth);\r | |
417 | column.setMaxWidth(PkgNameMaxWidth);\r | |
93fd07b1 | 418 | column = jTableFpdModules.getColumnModel().getColumn(PkgVerColForFpdModTable);\r |
a8a9de7c | 419 | column.setPreferredWidth(VerPrefWidth);\r |
420 | column.setMaxWidth(VerMaxWidth);\r | |
421 | column.setMinWidth(VerMinWidth);\r | |
93fd07b1 | 422 | column = jTableFpdModules.getColumnModel().getColumn(ArchColForFpdModTable);\r |
a8a9de7c | 423 | column.setPreferredWidth(ArchPrefWidth);\r |
424 | column.setMaxWidth(ArchMaxWidth);\r | |
425 | column.setMinWidth(ArchMinWidth);\r | |
93fd07b1 | 426 | column = jTableFpdModules.getColumnModel().getColumn(PathColForFpdModTable);\r |
a8a9de7c | 427 | column.setPreferredWidth(PathPrefWidth);\r |
428 | column.setMinWidth(PathMinWidth);\r | |
429 | \r | |
4da2e625 | 430 | jTableFpdModules.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r |
93fd07b1 | 431 | jTableFpdModules.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r |
a13899c5 | 432 | }\r |
4da2e625 | 433 | return jTableFpdModules;\r |
a13899c5 | 434 | }\r |
435 | \r | |
436 | /**\r | |
437 | * This method initializes jButton1 \r | |
438 | * \r | |
439 | * @return javax.swing.JButton \r | |
440 | */\r | |
4da2e625 | 441 | private JButton getJButtonSettings() {\r |
442 | if (jButtonSettings == null) {\r | |
443 | jButtonSettings = new JButton();\r | |
444 | jButtonSettings.setPreferredSize(new java.awt.Dimension(130,20));\r | |
445 | jButtonSettings.setText("Settings");\r | |
446 | jButtonSettings.addActionListener(new java.awt.event.ActionListener() {\r | |
a13899c5 | 447 | public void actionPerformed(java.awt.event.ActionEvent e) {\r |
4da2e625 | 448 | int selectedRow = jTableFpdModules.getSelectedRow();\r |
a8a9de7c | 449 | if (selectedRow < 0) {\r |
a13899c5 | 450 | return;\r |
451 | }\r | |
a8a9de7c | 452 | \r |
453 | TableSorter sorter = (TableSorter) jTableFpdModules.getModel();\r | |
add40ab2 | 454 | selectedRow = sorter.modelIndex(selectedRow);\r |
1dac04ab | 455 | try {\r |
456 | if (ffc.adjustPcd(selectedRow)) {\r | |
457 | docConsole.setSaved(false);\r | |
458 | }\r | |
459 | }\r | |
460 | catch (Exception exp) {\r | |
461 | JOptionPane.showMessageDialog(frame, exp.getMessage());\r | |
462 | return;\r | |
463 | }\r | |
add40ab2 | 464 | \r |
a13899c5 | 465 | if (settingDlg == null) {\r |
466 | settingDlg = new FpdModuleSA(ffc);\r | |
467 | }\r | |
a8a9de7c | 468 | \r |
bf5abaff | 469 | String[] sa = new String[5];\r |
470 | ffc.getFrameworkModuleInfo(selectedRow, sa);\r | |
93fd07b1 | 471 | String mg = sa[0];\r |
472 | String mv = sa[1];\r | |
473 | String pg = sa[2];\r | |
474 | String pv = sa[3];\r | |
475 | String arch = sa[4];\r | |
8f55ea73 | 476 | settingDlg.setKey(mg + " " + mv + " " + pg + " " + pv + " " + arch, selectedRow, docConsole);\r |
a13899c5 | 477 | settingDlg.setVisible(true);\r |
478 | }\r | |
479 | });\r | |
480 | }\r | |
4da2e625 | 481 | return jButtonSettings;\r |
a13899c5 | 482 | }\r |
483 | \r | |
484 | /**\r | |
485 | * This method initializes jButton2 \r | |
486 | * \r | |
487 | * @return javax.swing.JButton \r | |
488 | */\r | |
4da2e625 | 489 | private JButton getJButtonRemoveModule() {\r |
490 | if (jButtonRemoveModule == null) {\r | |
491 | jButtonRemoveModule = new JButton();\r | |
a8a9de7c | 492 | jButtonRemoveModule.setPreferredSize(new java.awt.Dimension(130, 20));\r |
4da2e625 | 493 | jButtonRemoveModule.setText("Remove Module");\r |
494 | jButtonRemoveModule.addActionListener(new java.awt.event.ActionListener() {\r | |
a13899c5 | 495 | public void actionPerformed(java.awt.event.ActionEvent e) {\r |
4da2e625 | 496 | int selectedRow = jTableFpdModules.getSelectedRow();\r |
a8a9de7c | 497 | if (selectedRow < 0) {\r |
a13899c5 | 498 | return;\r |
499 | }\r | |
a8a9de7c | 500 | \r |
501 | TableSorter sorter = (TableSorter) jTableFpdModules.getModel();\r | |
add40ab2 | 502 | selectedRow = sorter.modelIndex(selectedRow);\r |
a8a9de7c | 503 | \r |
bf5abaff | 504 | String[] sa = new String[5];\r |
505 | ffc.getFrameworkModuleInfo(selectedRow, sa);\r | |
93fd07b1 | 506 | String mg = sa[0];\r |
507 | String mv = sa[1];\r | |
508 | String pg = sa[2];\r | |
509 | String pv = sa[3];\r | |
510 | String arch = sa[4];\r | |
511 | ModuleIdentification mi = GlobalData.getModuleId(sa[0] + " " + sa[1] + " "\r | |
512 | + sa[2] + " " + sa[3] + " "\r | |
513 | + sa[4]);\r | |
bf5abaff | 514 | mv = mi.getVersion();\r |
515 | pv = mi.getPackage().getVersion();\r | |
4da2e625 | 516 | modelFpdModules.removeRow(selectedRow);\r |
bf5abaff | 517 | if (arch == null) {\r |
518 | // if no arch specified in ModuleSA\r | |
a8a9de7c | 519 | fpdMsa.remove(mg + mv + pg + pv);\r |
520 | } else {\r | |
521 | ArrayList<String> al = fpdMsa.get(mg + mv + pg + pv);\r | |
bf5abaff | 522 | al.remove(arch);\r |
523 | if (al.size() == 0) {\r | |
a8a9de7c | 524 | fpdMsa.remove(mg + mv + pg + pv);\r |
bf5abaff | 525 | }\r |
526 | }\r | |
a8a9de7c | 527 | \r |
d6d24759 | 528 | docConsole.setSaved(false);\r |
a13899c5 | 529 | ffc.removeModuleSA(selectedRow);\r |
530 | }\r | |
531 | });\r | |
532 | }\r | |
4da2e625 | 533 | return jButtonRemoveModule;\r |
a13899c5 | 534 | }\r |
535 | \r | |
536 | /**\r | |
537 | * @param args\r | |
538 | */\r | |
539 | public static void main(String[] args) {\r | |
540 | // TODO Auto-generated method stub\r | |
541 | new FpdFrameworkModules().setVisible(true);\r | |
542 | }\r | |
543 | \r | |
544 | /**\r | |
545 | * This is the default constructor\r | |
546 | */\r | |
547 | public FpdFrameworkModules() {\r | |
548 | super();\r | |
549 | initialize();\r | |
550 | }\r | |
551 | \r | |
a8a9de7c | 552 | public FpdFrameworkModules(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {\r |
a13899c5 | 553 | this();\r |
554 | init(fpd);\r | |
a8a9de7c | 555 | \r |
a13899c5 | 556 | }\r |
a8a9de7c | 557 | \r |
d6d24759 | 558 | public FpdFrameworkModules(OpeningPlatformType opt) {\r |
559 | this(opt.getXmlFpd());\r | |
560 | docConsole = opt;\r | |
561 | }\r | |
a8a9de7c | 562 | \r |
a13899c5 | 563 | private void init(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {\r |
564 | try {\r | |
565 | GlobalData.initInfo("Tools" + File.separator + "Conf" + File.separator + "FrameworkDatabase.db", System.getenv("WORKSPACE"));\r | |
566 | }\r | |
567 | catch(Exception e){\r | |
410e0e9f | 568 | JOptionPane.showMessageDialog(frame, "Error occurred when getting module data.");\r |
a13899c5 | 569 | }\r |
a8a9de7c | 570 | \r |
571 | if (ffc == null) {\r | |
a13899c5 | 572 | ffc = new FpdFileContents(fpd);\r |
573 | ffc.initDynPcdMap();\r | |
574 | }\r | |
a8a9de7c | 575 | \r |
a13899c5 | 576 | if (fpdMsa == null) {\r |
bf5abaff | 577 | fpdMsa = new HashMap<String, ArrayList<String>>();\r |
a13899c5 | 578 | }\r |
a8a9de7c | 579 | \r |
a13899c5 | 580 | if (ffc.getFrameworkModulesCount() > 0) {\r |
581 | String[][] saa = new String[ffc.getFrameworkModulesCount()][5];\r | |
582 | ffc.getFrameworkModulesInfo(saa);\r | |
583 | for (int i = 0; i < saa.length; ++i) {\r | |
93fd07b1 | 584 | ModuleIdentification mi = GlobalData.getModuleId(saa[i][0] + " " + saa[i][1] + " "\r |
585 | + saa[i][2] + " " + saa[i][3]);\r | |
a8a9de7c | 586 | String[] row = { "", "", "", "", "", "" };\r |
f3b0ed9a | 587 | if (mi != null) {\r |
93fd07b1 | 588 | row[ModNameColForFpdModTable] = mi.getName();\r |
589 | row[ModVerColForFpdModTable] = mi.getVersion();\r | |
590 | row[PkgNameColForFpdModTable] = mi.getPackage().getName();\r | |
591 | row[PkgVerColForFpdModTable] = mi.getPackage().getVersion();\r | |
592 | row[ArchColForFpdModTable] = saa[i][4];\r | |
a8a9de7c | 593 | try {\r |
93fd07b1 | 594 | row[PathColForFpdModTable] = GlobalData.getMsaFile(mi).getPath().substring(\r |
a8a9de7c | 595 | System.getenv("WORKSPACE")\r |
596 | .length() + 1);\r | |
597 | } catch (Exception e) {\r | |
598 | JOptionPane.showMessageDialog(frame, "Show FPD Modules:" + e.getMessage());\r | |
bf5abaff | 599 | }\r |
600 | }\r | |
4da2e625 | 601 | modelFpdModules.addRow(row);\r |
93fd07b1 | 602 | ArrayList<String> al = fpdMsa.get(saa[i][0] + saa[i][1]\r |
603 | + saa[i][2] + saa[i][3]);\r | |
bf5abaff | 604 | if (al == null) {\r |
605 | al = new ArrayList<String>();\r | |
93fd07b1 | 606 | fpdMsa.put(saa[i][0] + saa[i][1] + saa[i][2] + saa[i][3], al);\r |
a13899c5 | 607 | }\r |
93fd07b1 | 608 | al.add(saa[i][4]);\r |
a8a9de7c | 609 | \r |
a13899c5 | 610 | }\r |
611 | }\r | |
a8a9de7c | 612 | \r |
a13899c5 | 613 | showAllModules();\r |
a8a9de7c | 614 | \r |
a13899c5 | 615 | }\r |
a8a9de7c | 616 | \r |
a13899c5 | 617 | private void showAllModules() {\r |
a8a9de7c | 618 | \r |
a13899c5 | 619 | if (miList == null) {\r |
620 | miList = new ArrayList<ModuleIdentification>();\r | |
621 | }\r | |
622 | Set<PackageIdentification> spi = GlobalData.getPackageList();\r | |
623 | Iterator ispi = spi.iterator();\r | |
a8a9de7c | 624 | \r |
625 | while (ispi.hasNext()) {\r | |
626 | PackageIdentification pi = (PackageIdentification) ispi.next();\r | |
627 | String[] s = { "", "", "", "", "" };\r | |
628 | \r | |
a13899c5 | 629 | Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r |
630 | Iterator ismi = smi.iterator();\r | |
a8a9de7c | 631 | while (ismi.hasNext()) {\r |
632 | ModuleIdentification mi = (ModuleIdentification) ismi.next();\r | |
93fd07b1 | 633 | s[ModNameColForAllModTable] = mi.getName();\r |
634 | s[ModVerColForAllModTable] = mi.getVersion();\r | |
635 | s[PkgNameColForAllModTable] = pi.getName();\r | |
636 | s[PkgVerColForAllModTable] = pi.getVersion();\r | |
bf5abaff | 637 | try {\r |
93fd07b1 | 638 | s[PathColForAllModTable] = GlobalData.getMsaFile(mi).getPath()\r |
a8a9de7c | 639 | .substring(System.getenv("WORKSPACE").length() + 1);\r |
640 | } catch (Exception e) {\r | |
641 | JOptionPane.showMessageDialog(frame, "Show All Modules:" + e.getMessage());\r | |
bf5abaff | 642 | }\r |
4da2e625 | 643 | modelAllModules.addRow(s);\r |
a13899c5 | 644 | miList.add(mi);\r |
645 | }\r | |
646 | }\r | |
647 | }\r | |
a8a9de7c | 648 | \r |
a13899c5 | 649 | /**\r |
650 | * This method initializes this\r | |
651 | * \r | |
652 | * @return void\r | |
653 | */\r | |
654 | private void initialize() {\r | |
655 | this.setSize(633, 533);\r | |
656 | this.setTitle("Framework Modules");\r | |
657 | this.setContentPane(getJSplitPane());\r | |
658 | this.setVisible(true);\r | |
a8a9de7c | 659 | \r |
a13899c5 | 660 | }\r |
a13899c5 | 661 | \r |
a8a9de7c | 662 | } // @jve:decl-index=0:visual-constraint="10,10"\r |
a13899c5 | 663 | \r |
664 | class NonEditableTableModel extends DefaultTableModel {\r | |
44053733 | 665 | /**\r |
666 | * \r | |
667 | */\r | |
668 | private static final long serialVersionUID = 1L;\r | |
669 | \r | |
a13899c5 | 670 | public boolean isCellEditable(int row, int col) {\r |
671 | return false;\r | |
672 | }\r | |
673 | }\r |