+/** @file\r
+ \r
+ The file is used to create, update FrameworkModules of Fpd file\r
+ \r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
package org.tianocore.frameworkwizard.platform.ui;\r
\r
import java.awt.BorderLayout;\r
import javax.swing.JTable;\r
import javax.swing.JButton;\r
import javax.swing.ListSelectionModel;\r
+import javax.swing.event.TableModelEvent;\r
import javax.swing.table.DefaultTableModel;\r
+import javax.swing.table.TableModel;\r
\r
import org.tianocore.PlatformSurfaceAreaDocument;\r
+import org.tianocore.frameworkwizard.common.GlobalData;\r
import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
-import org.tianocore.frameworkwizard.platform.ui.global.GlobalData;\r
-import org.tianocore.frameworkwizard.platform.ui.id.ModuleIdentification;\r
-import org.tianocore.frameworkwizard.platform.ui.id.PackageIdentification;\r
+import org.tianocore.frameworkwizard.platform.ui.global.SurfaceAreaQuery;\r
+import org.tianocore.frameworkwizard.platform.ui.global.WorkspaceProfile;\r
+import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
\r
import java.awt.FlowLayout;\r
-import java.io.File;\r
import java.util.ArrayList;\r
import java.util.HashMap;\r
import java.util.Iterator;\r
import java.util.Map;\r
-import java.util.Set;\r
+import java.util.Vector;\r
\r
public class FpdFrameworkModules extends IInternalFrame {\r
\r
/**\r
- * \r
+ * Initialize Globals\r
*/\r
private static final long serialVersionUID = 1L;\r
+ \r
+ public static final int forceDbgColForFpdModTable = 7;\r
+\r
static JFrame frame;\r
+\r
private JSplitPane jSplitPane = null;\r
- private JPanel jPanel = null;\r
- private JPanel jPanel1 = null;\r
+\r
+ private JPanel jPanelTop = null;\r
+\r
+ private JPanel jPanelBottom = null;\r
+\r
private JLabel jLabel = null;\r
- private JScrollPane jScrollPane = null;\r
- private JTable jTable = null;\r
- private JPanel jPanel2 = null;\r
- private JButton jButton = null;\r
- private JLabel jLabel1 = null;\r
- private JPanel jPanel3 = null;\r
- private JScrollPane jScrollPane1 = null;\r
- private JTable jTable1 = null;\r
- private JButton jButton1 = null;\r
- private JButton jButton2 = null;\r
- private NonEditableTableModel model = null;\r
- private NonEditableTableModel model1 = null;\r
- \r
+\r
+ private JScrollPane jScrollPaneAllModules = null;\r
+\r
+ private JTable jTableAllModules = null;\r
+\r
+ private JPanel jPanelTopSouth = null;\r
+\r
+ private JButton jButtonAddModule = null;\r
+\r
+ private JLabel jLabelModulesAdded = null;\r
+\r
+ private JPanel jPanelBottomSouth = null;\r
+\r
+ private JScrollPane jScrollPaneFpdModules = null;\r
+\r
+ private JTable jTableFpdModules = null;\r
+\r
+ private JButton jButtonSettings = null;\r
+\r
+ private JButton jButtonRemoveModule = null;\r
+\r
+ private NonEditableTableModel modelAllModules = null;\r
+\r
+ private FpdModulesTableModel modelFpdModules = null;\r
+\r
private FpdModuleSA settingDlg = null;\r
- \r
+\r
private FpdFileContents ffc = null;\r
+\r
private OpeningPlatformType docConsole = null;\r
- private Map<String, String> fpdMsa = null;\r
- \r
+\r
+ private Map<String, ArrayList<String>> fpdMsa = null;\r
+\r
private ArrayList<ModuleIdentification> miList = null;\r
+ \r
+ /**\r
+ * Column settings for displaying all modules in workspace\r
+ */\r
+ private final int modNameColForAllModTable = 0;\r
+ \r
+ private final int pkgNameColForAllModTable = 1;\r
+ \r
+ private final int pathColForAllModTable = 2;\r
+ \r
+ private final int typeColForAllModTable = 3;\r
+ \r
+ private final int pkgVerColForAllModTable = 5;\r
+ \r
+ private final int modVerColForAllModTable = 4;\r
+ \r
+ /**\r
+ * Column settings for display modules in the FPD file\r
+ */\r
+ private final int modNameColForFpdModTable = 0;\r
+ \r
+ private final int pkgNameColForFpdModTable = 1;\r
+ \r
+ private final int pathColForFpdModTable = 2;\r
+ \r
+ private final int archColForFpdModTable = 3;\r
+ \r
+ private final int pkgVerColForFpdModTable = 6;\r
\r
+ private final int modVerColForFpdModTable = 5;\r
+ \r
+ private final int typeColForFpdModTable = 4;\r
+ \r
/**\r
- * This method initializes jSplitPane \r
+ * FpdFileContents structure\r
+ */\r
+ private final int ffcModGuid = 0;\r
+ \r
+ private final int ffcModVer = 1;\r
+ \r
+ private final int ffcPkgGuid = 2;\r
+ \r
+ private final int ffcPkgVer = 3;\r
+ \r
+ private final int ffcModArch = 4;\r
+ \r
+ /**\r
+ * Set Column Widths, Only the PATH should not have a max width.\r
+ */\r
+ private final int modNameMinWidth = 168;\r
+ \r
+ private final int modNamePrefWidth = 200;\r
+ \r
+ private final int modNameMaxWidth = 350;\r
+\r
+ private final int pkgNameMinWidth = 100;\r
+ \r
+ private final int pkgNamePrefWidth = 130;\r
+ \r
+ private final int pkgNameMaxWidth = 150;\r
+ \r
+ private final int verMinWidth = 60;\r
+ \r
+ private final int verMaxWidth = 80;\r
+ \r
+ private final int verPrefWidth = 70;\r
+ \r
+ private final int pathPrefWidth = 600;\r
+ \r
+ private final int pathMinWidth = 280;\r
+ \r
+ private final int archPrefWidth = 80;\r
+ \r
+ private final int archMinWidth = 60;\r
+ \r
+ private final int archMaxWidth = 100;\r
+ \r
+ private final int typePrefWidth = 145;\r
+ \r
+ private final int typeMinWidth = 100;\r
+ \r
+ private final int typeMaxWidth = 155;\r
+ \r
+ /**\r
+ * This method initializes jSplitPane\r
+ * \r
+ * This is the main edit window\r
* \r
- * @return javax.swing.JSplitPane \r
+ * @return javax.swing.JSplitPane jSplitPane \r
*/\r
private JSplitPane getJSplitPane() {\r
if (jSplitPane == null) {\r
jSplitPane = new JSplitPane();\r
jSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);\r
jSplitPane.setDividerLocation(250);\r
- jSplitPane.setBottomComponent(getJPanel1());\r
- jSplitPane.setTopComponent(getJPanel());\r
+ jSplitPane.setBottomComponent(getJPanelBottom());\r
+ jSplitPane.setTopComponent(getJPanelTop());\r
}\r
return jSplitPane;\r
}\r
\r
/**\r
- * This method initializes jPanel \r
+ * This method initializes jPanelTop\r
+ * \r
+ * This panel contains the All Modules Table \r
* \r
- * @return javax.swing.JPanel \r
+ * @return javax.swing.JPanel jPanelTop\r
*/\r
- private JPanel getJPanel() {\r
- if (jPanel == null) {\r
+ private JPanel getJPanelTop() {\r
+ if (jPanelTop == null) {\r
jLabel = new JLabel();\r
jLabel.setText("Modules in Workspace");\r
- jPanel = new JPanel();\r
- jPanel.setLayout(new BorderLayout());\r
- jPanel.add(jLabel, java.awt.BorderLayout.NORTH);\r
- jPanel.add(getJScrollPane(), java.awt.BorderLayout.CENTER);\r
- jPanel.add(getJPanel2(), java.awt.BorderLayout.SOUTH);\r
+ jPanelTop = new JPanel();\r
+ jPanelTop.setLayout(new BorderLayout());\r
+ jPanelTop.add(jLabel, java.awt.BorderLayout.NORTH);\r
+ jPanelTop.add(getJScrollPaneAllModules(), java.awt.BorderLayout.CENTER);\r
+ jPanelTop.add(getJPanelTopSouth(), java.awt.BorderLayout.SOUTH);\r
}\r
- return jPanel;\r
+ return jPanelTop;\r
}\r
\r
/**\r
- * This method initializes jPanel1 \r
+ * This method initializes jPanelBottom\r
* \r
- * @return javax.swing.JPanel \r
+ * This panel contains the FPD Modules Table\r
+ * \r
+ * @return javax.swing.JPanel jPanelBottom\r
*/\r
- private JPanel getJPanel1() {\r
- if (jPanel1 == null) {\r
- jLabel1 = new JLabel();\r
- jLabel1.setText("Modules Added");\r
- jPanel1 = new JPanel();\r
- jPanel1.setLayout(new BorderLayout());\r
- jPanel1.add(jLabel1, java.awt.BorderLayout.NORTH);\r
- jPanel1.add(getJPanel3(), java.awt.BorderLayout.SOUTH);\r
- jPanel1.add(getJScrollPane1(), java.awt.BorderLayout.CENTER);\r
+ private JPanel getJPanelBottom() {\r
+ if (jPanelBottom == null) {\r
+ jLabelModulesAdded = new JLabel();\r
+ jLabelModulesAdded.setText("Modules Added");\r
+ jPanelBottom = new JPanel();\r
+ jPanelBottom.setLayout(new BorderLayout());\r
+ jPanelBottom.add(jLabelModulesAdded, java.awt.BorderLayout.NORTH);\r
+ jPanelBottom.add(getJPanelBottomSouth(), java.awt.BorderLayout.SOUTH);\r
+ jPanelBottom.add(getJScrollPaneFpdModules(), java.awt.BorderLayout.CENTER);\r
}\r
- return jPanel1;\r
+ return jPanelBottom;\r
}\r
\r
/**\r
- * This method initializes jScrollPane \r
+ * This method initializes jScrollPaneAllModules \r
* \r
- * @return javax.swing.JScrollPane \r
+ * @return javax.swing.JScrollPane jScrollPaneAllModules\r
*/\r
- private JScrollPane getJScrollPane() {\r
- if (jScrollPane == null) {\r
- jScrollPane = new JScrollPane();\r
- jScrollPane.setPreferredSize(new java.awt.Dimension(600,200));\r
- jScrollPane.setViewportView(getJTable());\r
+ private JScrollPane getJScrollPaneAllModules() {\r
+ if (jScrollPaneAllModules == null) {\r
+ jScrollPaneAllModules = new JScrollPane();\r
+ jScrollPaneAllModules.setPreferredSize(new java.awt.Dimension(600, 200));\r
+ jScrollPaneAllModules.setViewportView(getJTableAllModules());\r
}\r
- return jScrollPane;\r
+ return jScrollPaneAllModules;\r
}\r
\r
/**\r
- * This method initializes jTable \r
+ * This method initializes jTableAllModules\r
* \r
- * @return javax.swing.JTable \r
+ * @return javax.swing.JTable jTableAllModules\r
*/\r
- private JTable getJTable() {\r
- if (jTable == null) {\r
- model = new NonEditableTableModel();\r
- jTable = new JTable(model);\r
- jTable.setRowHeight(20);\r
- model.addColumn("ModuleName");\r
- model.addColumn("ModuleGUID");\r
- model.addColumn("ModuleVersion");\r
- model.addColumn("PackageGUID");\r
- model.addColumn("PackageVersion");\r
+ private JTable getJTableAllModules() {\r
+ if (jTableAllModules == null) {\r
+ modelAllModules = new NonEditableTableModel();\r
+ TableSorter sorter = new TableSorter(modelAllModules);\r
+ jTableAllModules = new JTable(sorter);\r
+ sorter.setTableHeader(jTableAllModules.getTableHeader());\r
+ jTableAllModules.setRowHeight(20);\r
+ modelAllModules.addColumn("<html>Module<br>Name</html>");\r
+ modelAllModules.addColumn("<html>Package<br>Name</html>");\r
+ modelAllModules.addColumn("Path");\r
+ modelAllModules.addColumn("<html>Module<br>Type</html>");\r
+ modelAllModules.addColumn("<html>Module<br>Version</html>");\r
+ modelAllModules.addColumn("<html>Package<br>Version</html>");\r
\r
- jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ javax.swing.table.TableColumn column = null;\r
+ column = jTableAllModules.getColumnModel().getColumn(modNameColForAllModTable);\r
+ column.setPreferredWidth(modNamePrefWidth);\r
+ column.setMinWidth(modNameMinWidth);\r
+ column.setMaxWidth(modNameMaxWidth);\r
+ column = jTableAllModules.getColumnModel().getColumn(modVerColForAllModTable);\r
+ column.setPreferredWidth(verPrefWidth);\r
+ column.setMaxWidth(verMaxWidth);\r
+ column.setMinWidth(verMinWidth);\r
+ column = jTableAllModules.getColumnModel().getColumn(pkgNameColForAllModTable);\r
+ column.setPreferredWidth(pkgNamePrefWidth);\r
+ column.setMinWidth(pkgNameMinWidth);\r
+ column.setMaxWidth(pkgNameMaxWidth);\r
+ column = jTableAllModules.getColumnModel().getColumn(pkgVerColForAllModTable);\r
+ column.setPreferredWidth(verPrefWidth);\r
+ column.setMaxWidth(verMaxWidth);\r
+ column.setMinWidth(verMinWidth);\r
+ column = jTableAllModules.getColumnModel().getColumn(typeColForAllModTable);\r
+ column.setPreferredWidth(typePrefWidth);\r
+ column.setMaxWidth(typeMaxWidth);\r
+ column.setMinWidth(typeMinWidth);\r
+ column = jTableAllModules.getColumnModel().getColumn(pathColForAllModTable);\r
+ column.setPreferredWidth(pathPrefWidth);\r
+ column.setMinWidth(pathMinWidth);\r
+\r
+ jTableAllModules.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ jTableAllModules.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);\r
+\r
}\r
- return jTable;\r
+ return jTableAllModules;\r
}\r
\r
/**\r
- * This method initializes jPanel2 \r
- * \r
- * @return javax.swing.JPanel \r
+ * This method initializes jPanelTopSouth\r
+ * \r
+ * This panel contains the ADD button\r
+ * \r
+ * @return javax.swing.JPanel jPanelTopSouth\r
*/\r
- private JPanel getJPanel2() {\r
- if (jPanel2 == null) {\r
+ private JPanel getJPanelTopSouth() {\r
+ if (jPanelTopSouth == null) {\r
FlowLayout flowLayout = new FlowLayout();\r
flowLayout.setAlignment(java.awt.FlowLayout.RIGHT);\r
- jPanel2 = new JPanel();\r
- jPanel2.setLayout(flowLayout);\r
- jPanel2.add(getJButton(), null);\r
+ jPanelTopSouth = new JPanel();\r
+ jPanelTopSouth.setLayout(flowLayout);\r
+ jPanelTopSouth.add(getJButtonAddModule(), null);\r
}\r
- return jPanel2;\r
+ return jPanelTopSouth;\r
}\r
\r
/**\r
- * This method initializes jButton \r
+ * This method initializes jButtonAddModule \r
* \r
- * @return javax.swing.JButton \r
+ * @return javax.swing.JButton jButtonAddModule\r
*/\r
- private JButton getJButton() {\r
- if (jButton == null) {\r
- jButton = new JButton();\r
- jButton.setPreferredSize(new java.awt.Dimension(130,20));\r
- jButton.setText("Add a Module");\r
- jButton.addActionListener(new java.awt.event.ActionListener() {\r
+ private JButton getJButtonAddModule() {\r
+ if (jButtonAddModule == null) {\r
+ jButtonAddModule = new JButton();\r
+ jButtonAddModule.setPreferredSize(new java.awt.Dimension(130, 20));\r
+ jButtonAddModule.setText("Add a Module");\r
+ jButtonAddModule.addActionListener(new java.awt.event.ActionListener() {\r
public void actionPerformed(java.awt.event.ActionEvent e) {\r
- int selectedRow = jTable.getSelectedRow();\r
- if (selectedRow < 0){\r
+ int selectedRow = jTableAllModules.getSelectedRow();\r
+ if (selectedRow < 0) {\r
return;\r
}\r
- \r
- String mg = (String)model.getValueAt(selectedRow, 1);\r
- String mv = (String)model.getValueAt(selectedRow, 2);\r
- String pg = (String)model.getValueAt(selectedRow, 3);\r
- String pv = (String)model.getValueAt(selectedRow, 4);\r
- if (fpdMsa.containsKey(mg + mv + pg + pv)) {\r
- JOptionPane.showMessageDialog(frame, "This Module Already Added.");\r
+\r
+ TableSorter sorter = (TableSorter) jTableAllModules.getModel();\r
+ selectedRow = sorter.getModelRowIndex(selectedRow);\r
+ String path = modelAllModules.getValueAt(selectedRow, pathColForAllModTable) + "";\r
+ ModuleIdentification mi = miList.get(selectedRow);\r
+ Vector<String> vArchs = null;\r
+ try {\r
+ vArchs = WorkspaceProfile.getModuleSupArchs(mi);\r
+ }\r
+ catch (Exception exp) {\r
+ JOptionPane.showMessageDialog(frame, exp.getMessage());\r
+ }\r
+\r
+ if (vArchs == null) {\r
+ JOptionPane.showMessageDialog(frame, "No Supported Architectures specified in MSA file.");\r
+ return;\r
+ }\r
+\r
+ String archsAdded = "";\r
+ String mg = mi.getGuid();\r
+ String mv = mi.getVersion();\r
+ String pg = mi.getPackageId().getGuid();\r
+ String pv = mi.getPackageId().getVersion();\r
+ String mType = SurfaceAreaQuery.getModuleType(mi);\r
+\r
+ ArrayList<String> al = fpdMsa.get(mg + mv + pg + pv);\r
+ if (al == null) {\r
+ //\r
+ // if existing ModuleSA does not specify version info.\r
+ //\r
+ al = fpdMsa.get(mg + "null" + pg + "null");\r
+ if (al == null) {\r
+ al = fpdMsa.get(mg + "null" + pg + pv);\r
+ if (al == null){\r
+ al = fpdMsa.get(mg + mv + pg + "null");\r
+ if (al == null) {\r
+ al = new ArrayList<String>();\r
+ fpdMsa.put(mg + mv + pg + pv, al); \r
+ }\r
+ }\r
+ }\r
+ }\r
+ //\r
+ // filter from module SupArchs what archs has been added.\r
+ //\r
+ for (int i = 0; i < al.size(); ++i) {\r
+ vArchs.remove(al.get(i));\r
+ }\r
+ //\r
+ // check whether archs conform to SupArch of platform.\r
+ //\r
+ Vector<Object> platformSupArch = new Vector<Object>();\r
+ ffc.getPlatformDefsSupportedArchs(platformSupArch);\r
+ vArchs.retainAll(platformSupArch);\r
+ //\r
+ // Archs this Module supported have already been added.\r
+ //\r
+ if (vArchs.size() == 0) {\r
+ JOptionPane.showMessageDialog(frame, "This Module has already been added.");\r
return;\r
}\r
//ToDo put Arch instead of null\r
- fpdMsa.put(mg + mv + pg + pv, null);\r
- \r
- String[] row = {" ", mg, mv, pg, pv};\r
- ModuleIdentification mi = getModuleId(mg + " " + mv + " " + pg + " " + pv);\r
- if (mi != null) {\r
- row[0] = mi.getName();\r
- row[2] = mi.getVersion();\r
- row[4] = mi.getPackage().getVersion();\r
+ boolean errorOccurred = false;\r
+ for (int i = 0; i < vArchs.size(); ++i) {\r
+ String arch = vArchs.get(i);\r
+ al.add(arch);\r
+ archsAdded += arch + " ";\r
+ String[] row = { "", "", "", "", "", "", "" };\r
+\r
+ if (mi != null) {\r
+ row[modNameColForFpdModTable] = mi.getName();\r
+ row[pkgNameColForFpdModTable] = mi.getPackageId().getName();\r
+ row[pathColForFpdModTable] = path;\r
+ row[archColForFpdModTable] = arch;\r
+ row[pkgVerColForFpdModTable] = pv;\r
+ row[modVerColForFpdModTable] = mv;\r
+ row[typeColForFpdModTable] = mType;\r
+\r
+ }\r
+ modelFpdModules.addRow(row);\r
+\r
+ docConsole.setSaved(false);\r
+ try {\r
+ //ToDo : specify archs need to add.\r
+ ffc.addFrameworkModulesPcdBuildDefs(mi, arch, null);\r
+ } catch (Exception exception) {\r
+ JOptionPane.showMessageDialog(frame, "Adding " + row[modNameColForFpdModTable] + " with Supporting Architectures: " + arch\r
+ + ": " + exception.getMessage());\r
+ errorOccurred = true;\r
+ }\r
}\r
- model1.addRow(row);\r
- docConsole.setSaved(false);\r
- try{\r
- ffc.addFrameworkModulesPcdBuildDefs(miList.get(selectedRow), null);\r
- }\r
- catch (Exception exception) {\r
- JOptionPane.showMessageDialog(frame, "PCD Insertion Fail. " + exception.getMessage());\r
+\r
+ String s = "This Module with Architecture " + archsAdded;\r
+ if (errorOccurred) {\r
+ s += " was added with Error. Platform may NOT Build.";\r
+ } else {\r
+ s += " was added Successfully.";\r
}\r
+ JOptionPane.showMessageDialog(frame, s);\r
+ TableSorter sorterFpdModules = (TableSorter)jTableFpdModules.getModel();\r
+ int viewIndex = sorterFpdModules.getViewIndexArray()[modelFpdModules.getRowCount() - 1];\r
+ jTableFpdModules.changeSelection(viewIndex, 0, false, false);\r
}\r
});\r
}\r
- return jButton;\r
+ return jButtonAddModule;\r
}\r
\r
/**\r
- * This method initializes jPanel3 \r
+ * This method initializes jPanelBottomSouth\r
+ * \r
+ * This panel contains the Settings and Remove Buttons\r
* \r
- * @return javax.swing.JPanel \r
+ * @return javax.swing.JPanel jPanelBottomSouth\r
*/\r
- private JPanel getJPanel3() {\r
- if (jPanel3 == null) {\r
+ private JPanel getJPanelBottomSouth() {\r
+ if (jPanelBottomSouth == null) {\r
FlowLayout flowLayout1 = new FlowLayout();\r
flowLayout1.setAlignment(java.awt.FlowLayout.RIGHT);\r
- jPanel3 = new JPanel();\r
- jPanel3.setLayout(flowLayout1);\r
- jPanel3.add(getJButton1(), null);\r
- jPanel3.add(getJButton2(), null);\r
+ jPanelBottomSouth = new JPanel();\r
+ jPanelBottomSouth.setLayout(flowLayout1);\r
+ jPanelBottomSouth.add(getJButtonSettings(), null);\r
+ jPanelBottomSouth.add(getJButtonRemoveModule(), null);\r
}\r
- return jPanel3;\r
+ return jPanelBottomSouth;\r
}\r
\r
/**\r
- * This method initializes jScrollPane1 \r
+ * This method initializes jScrollPaneFpdModules\r
* \r
- * @return javax.swing.JScrollPane \r
+ * @return javax.swing.JScrollPane jScrollPaneFpdModules\r
*/\r
- private JScrollPane getJScrollPane1() {\r
- if (jScrollPane1 == null) {\r
- jScrollPane1 = new JScrollPane();\r
- jScrollPane1.setPreferredSize(new java.awt.Dimension(453,200));\r
- jScrollPane1.setViewportView(getJTable1());\r
+ private JScrollPane getJScrollPaneFpdModules() {\r
+ if (jScrollPaneFpdModules == null) {\r
+ jScrollPaneFpdModules = new JScrollPane();\r
+ jScrollPaneFpdModules.setPreferredSize(new java.awt.Dimension(453, 200));\r
+ jScrollPaneFpdModules.setViewportView(getJTableFpdModules());\r
}\r
- return jScrollPane1;\r
+ return jScrollPaneFpdModules;\r
}\r
\r
/**\r
- * This method initializes jTable1 \r
+ * This method initializes jTableFpdModules\r
* \r
- * @return javax.swing.JTable \r
+ * @return javax.swing.JTable jTableFpdModules\r
*/\r
- private JTable getJTable1() {\r
- if (jTable1 == null) {\r
- model1 = new NonEditableTableModel();\r
- jTable1 = new JTable(model1);\r
- jTable1.setRowHeight(20);\r
- model1.addColumn("ModuleName");\r
- model1.addColumn("ModuleGUID");\r
- model1.addColumn("ModuleVersion"); \r
- model1.addColumn("PackageGUID");\r
- model1.addColumn("PackageVersion");\r
-// model1.addColumn("SupportedArch");\r
+ private JTable getJTableFpdModules() {\r
+ if (jTableFpdModules == null) {\r
+ modelFpdModules = new FpdModulesTableModel();\r
+ TableSorter sorter = new TableSorter(modelFpdModules);\r
+ jTableFpdModules = new JTable(sorter);\r
+ sorter.setTableHeader(jTableFpdModules.getTableHeader());\r
+ jTableFpdModules.setRowHeight(20);\r
+ modelFpdModules.addColumn("<html>Module<br>Name</html>");\r
+ modelFpdModules.addColumn("<html>Package<br>Name</html>");\r
+ modelFpdModules.addColumn("Path");\r
+ modelFpdModules.addColumn("<html>Supported<br>Architectures</html>");\r
+ modelFpdModules.addColumn("<html>Module<br>Type</html>");\r
+ modelFpdModules.addColumn("<html>Module<br>Version</html>");\r
+ modelFpdModules.addColumn("<html>Package<br>Version</html>");\r
+ modelFpdModules.addColumn("<html>Force<br>Debug</html>");\r
+ \r
+ javax.swing.table.TableColumn column = null;\r
+ column = jTableFpdModules.getColumnModel().getColumn(modNameColForFpdModTable);\r
+ column.setPreferredWidth(modNamePrefWidth);\r
+ column.setMinWidth(modNameMinWidth);\r
+ column.setMaxWidth(modNameMaxWidth);\r
+ column = jTableFpdModules.getColumnModel().getColumn(modVerColForFpdModTable);\r
+ column.setPreferredWidth(verPrefWidth);\r
+ column.setMaxWidth(verMaxWidth);\r
+ column.setMinWidth(verMinWidth);\r
+ column = jTableFpdModules.getColumnModel().getColumn(pkgNameColForFpdModTable);\r
+ column.setPreferredWidth(pkgNamePrefWidth);\r
+ column.setMinWidth(pkgNameMinWidth);\r
+ column.setMaxWidth(pkgNameMaxWidth);\r
+ column = jTableFpdModules.getColumnModel().getColumn(pkgVerColForFpdModTable);\r
+ column.setPreferredWidth(verPrefWidth);\r
+ column.setMaxWidth(verMaxWidth);\r
+ column.setMinWidth(verMinWidth);\r
+ column = jTableFpdModules.getColumnModel().getColumn(archColForFpdModTable);\r
+ column.setPreferredWidth(archPrefWidth);\r
+ column.setMaxWidth(archMaxWidth);\r
+ column.setMinWidth(archMinWidth);\r
+ column = jTableFpdModules.getColumnModel().getColumn(pathColForFpdModTable);\r
+ column.setPreferredWidth(pathPrefWidth);\r
+ column.setMinWidth(pathMinWidth);\r
+ column = jTableFpdModules.getColumnModel().getColumn(typeColForFpdModTable);\r
+ column.setPreferredWidth(typePrefWidth);\r
+ column.setMaxWidth(typeMaxWidth);\r
+ column.setMinWidth(typeMinWidth);\r
+\r
+ jTableFpdModules.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ jTableFpdModules.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);\r
\r
- jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ jTableFpdModules.getModel().addTableModelListener(this);\r
}\r
- return jTable1;\r
+ return jTableFpdModules;\r
}\r
\r
+ public void tableChanged(TableModelEvent arg0) {\r
+ if (arg0.getType() == TableModelEvent.UPDATE){\r
+ int row = arg0.getFirstRow();\r
+ int column = arg0.getColumn();\r
+ TableModel m = (TableModel)arg0.getSource();\r
+ \r
+ if (column != forceDbgColForFpdModTable) {\r
+ return;\r
+ }\r
+ String s = m.getValueAt(row, column)+"";\r
+ boolean dbgEnable = new Boolean(s);\r
+ ffc.setModuleSAForceDebug(row, dbgEnable);\r
+ docConsole.setSaved(false);\r
+ }\r
+ }\r
/**\r
- * This method initializes jButton1 \r
+ * This method initializes jButtonSettings\r
* \r
- * @return javax.swing.JButton \r
+ * @return javax.swing.JButton jButtonSettings\r
*/\r
- private JButton getJButton1() {\r
- if (jButton1 == null) {\r
- jButton1 = new JButton();\r
- jButton1.setPreferredSize(new java.awt.Dimension(130,20));\r
- jButton1.setText("Settings");\r
- jButton1.addActionListener(new java.awt.event.ActionListener() {\r
+ private JButton getJButtonSettings() {\r
+ if (jButtonSettings == null) {\r
+ jButtonSettings = new JButton();\r
+ jButtonSettings.setPreferredSize(new java.awt.Dimension(130,20));\r
+ jButtonSettings.setText("Settings");\r
+ jButtonSettings.addActionListener(new java.awt.event.ActionListener() {\r
public void actionPerformed(java.awt.event.ActionEvent e) {\r
- int selectedRow = jTable1.getSelectedRow();\r
- if (selectedRow < 0){\r
+ int selectedRow = jTableFpdModules.getSelectedRow();\r
+ if (selectedRow < 0) {\r
return;\r
}\r
+\r
+ TableSorter sorter = (TableSorter) jTableFpdModules.getModel();\r
+ selectedRow = sorter.getModelRowIndex(selectedRow);\r
+ try {\r
+ if (ffc.adjustPcd(selectedRow)) {\r
+ docConsole.setSaved(false);\r
+ }\r
+ }\r
+ catch (Exception exp) {\r
+ JOptionPane.showMessageDialog(frame, exp.getMessage());\r
+ return;\r
+ }\r
+ \r
if (settingDlg == null) {\r
settingDlg = new FpdModuleSA(ffc);\r
}\r
- docConsole.setSaved(false);\r
- String mg = model1.getValueAt(selectedRow, 1)+"";\r
- String mv = model1.getValueAt(selectedRow, 2)+"";\r
- String pg = model1.getValueAt(selectedRow, 3)+"";\r
- String pv = model1.getValueAt(selectedRow, 4)+"";\r
- settingDlg.setKey(mg + " " + mv + " " + pg + " " + pv);\r
+\r
+ String[] sa = new String[5];\r
+ ffc.getFrameworkModuleInfo(selectedRow, sa);\r
+ String mg = sa[ffcModGuid];\r
+ String mv = sa[ffcModVer];\r
+ String pg = sa[ffcPkgGuid];\r
+ String pv = sa[ffcPkgVer];\r
+ String arch = sa[ffcModArch];\r
+ settingDlg.setKey(mg + " " + mv + " " + pg + " " + pv + " " + arch, selectedRow, docConsole);\r
settingDlg.setVisible(true);\r
}\r
});\r
}\r
- return jButton1;\r
+ return jButtonSettings;\r
}\r
\r
/**\r
- * This method initializes jButton2 \r
+ * This method initializes jButtonRemoveModule\r
* \r
- * @return javax.swing.JButton \r
+ * @return javax.swing.JButton jButtonRemoveModule\r
*/\r
- private JButton getJButton2() {\r
- if (jButton2 == null) {\r
- jButton2 = new JButton();\r
- jButton2.setPreferredSize(new java.awt.Dimension(130,20));\r
- jButton2.setText("Remove Module");\r
- jButton2.addActionListener(new java.awt.event.ActionListener() {\r
+ private JButton getJButtonRemoveModule() {\r
+ if (jButtonRemoveModule == null) {\r
+ jButtonRemoveModule = new JButton();\r
+ jButtonRemoveModule.setPreferredSize(new java.awt.Dimension(130, 20));\r
+ jButtonRemoveModule.setText("Remove Module");\r
+ jButtonRemoveModule.addActionListener(new java.awt.event.ActionListener() {\r
public void actionPerformed(java.awt.event.ActionEvent e) {\r
- int selectedRow = jTable1.getSelectedRow();\r
- if (selectedRow < 0){\r
+ int selectedRow = jTableFpdModules.getSelectedRow();\r
+ if (selectedRow < 0) {\r
return;\r
}\r
- String mg = model1.getValueAt(selectedRow, 1).toString();\r
- String mv = model1.getValueAt(selectedRow, 2).toString();\r
- String pg = model1.getValueAt(selectedRow, 3).toString();\r
- String pv = model1.getValueAt(selectedRow, 4).toString();\r
- model1.removeRow(selectedRow);\r
- fpdMsa.remove(mg+mv+pg+pv);\r
docConsole.setSaved(false);\r
+\r
+ TableSorter sorter = (TableSorter) jTableFpdModules.getModel();\r
+ selectedRow = sorter.getModelRowIndex(selectedRow);\r
+\r
+ String[] sa = new String[5];\r
+ ffc.getFrameworkModuleInfo(selectedRow, sa);\r
+ String mg = sa[ffcModGuid];\r
+ String mv = sa[ffcModVer];\r
+ String pg = sa[ffcPkgGuid];\r
+ String pv = sa[ffcPkgVer];\r
+ String arch = sa[ffcModArch];\r
+ ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv + " " + arch);\r
+ mv = mi.getVersion();\r
+ pv = mi.getPackageId().getVersion();\r
+ modelFpdModules.removeRow(selectedRow);\r
+ if (arch == null) {\r
+ // if no arch specified in ModuleSA\r
+ fpdMsa.remove(mg + mv + pg + pv);\r
+ \r
+ } else {\r
+ ArrayList<String> al = fpdMsa.get(mg + mv + pg + pv);\r
+ al.remove(arch);\r
+ if (al.size() == 0) {\r
+ fpdMsa.remove(mg + mv + pg + pv);\r
+ }\r
+ }\r
+\r
ffc.removeModuleSA(selectedRow);\r
}\r
});\r
}\r
- return jButton2;\r
+ return jButtonRemoveModule;\r
}\r
\r
/**\r
+ * \r
* @param args\r
*/\r
public static void main(String[] args) {\r
- // TODO Auto-generated method stub\r
+ // Set the pane visable\r
new FpdFrameworkModules().setVisible(true);\r
}\r
\r
initialize();\r
}\r
\r
- public FpdFrameworkModules(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd){\r
+ public FpdFrameworkModules(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {\r
this();\r
init(fpd);\r
- \r
+\r
}\r
- \r
+\r
public FpdFrameworkModules(OpeningPlatformType opt) {\r
this(opt.getXmlFpd());\r
docConsole = opt;\r
}\r
- \r
+\r
private void init(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {\r
- try {\r
- GlobalData.initInfo("Tools" + File.separator + "Conf" + File.separator + "FrameworkDatabase.db", System.getenv("WORKSPACE"));\r
- }\r
- catch(Exception e){\r
- JOptionPane.showMessageDialog(frame, "FrameworkDatabase Corrupted.");\r
- }\r
- \r
- if (ffc == null){\r
+\r
+ if (ffc == null) {\r
ffc = new FpdFileContents(fpd);\r
ffc.initDynPcdMap();\r
}\r
- \r
+\r
if (fpdMsa == null) {\r
- fpdMsa = new HashMap<String, String>();\r
+ fpdMsa = new HashMap<String, ArrayList<String>>();\r
}\r
- \r
+\r
if (ffc.getFrameworkModulesCount() > 0) {\r
String[][] saa = new String[ffc.getFrameworkModulesCount()][5];\r
ffc.getFrameworkModulesInfo(saa);\r
for (int i = 0; i < saa.length; ++i) {\r
- ModuleIdentification mi = getModuleId(saa[i][1]+ " "+saa[i][2]+" "+saa[i][3]+" "+saa[i][4]);\r
+ ModuleIdentification mi = WorkspaceProfile.getModuleId(saa[i][ffcModGuid] + " " + saa[i][ffcModVer] + " "\r
+ + saa[i][ffcPkgGuid] + " " + saa[i][ffcPkgVer]);\r
+ Object[] row = { "", "", "", "", "", "", "", "" };\r
if (mi != null) {\r
- saa[i][0] = mi.getName();\r
- saa[i][2] = mi.getVersion();\r
- saa[i][4] = mi.getPackage().getVersion();\r
+ row[modNameColForFpdModTable] = mi.getName();\r
+ row[modVerColForFpdModTable] = mi.getVersion();\r
+ row[typeColForFpdModTable] = SurfaceAreaQuery.getModuleType(mi);\r
+ row[pkgNameColForFpdModTable] = mi.getPackageId().getName();\r
+ row[pkgVerColForFpdModTable] = mi.getPackageId().getVersion();\r
+ row[archColForFpdModTable] = saa[i][ffcModArch];\r
+ try {\r
+ row[pathColForFpdModTable] = mi.getPath().substring(System.getenv("WORKSPACE").length() + 1);\r
+ } catch (Exception e) {\r
+ JOptionPane.showMessageDialog(frame, "Show FPD Modules:" + e.getMessage());\r
+ }\r
+ \r
+ String fpdMsaKey = saa[i][ffcModGuid] + row[modVerColForFpdModTable]\r
+ + saa[i][ffcPkgGuid] + row[pkgVerColForFpdModTable];\r
+ ArrayList<String> al = fpdMsa.get(fpdMsaKey);\r
+ if (al == null) {\r
+ al = new ArrayList<String>();\r
+ fpdMsa.put(fpdMsaKey, al);\r
+ }\r
+ al.add(saa[i][ffcModArch]);\r
+ }\r
+ else {\r
+ row[modNameColForFpdModTable] = saa[i][ffcModGuid];\r
+ row[modVerColForFpdModTable] = saa[i][ffcModVer];\r
+ row[pkgNameColForFpdModTable] = saa[i][ffcPkgGuid];\r
+ row[pkgVerColForFpdModTable] = saa[i][ffcPkgVer];\r
+ row[archColForFpdModTable] = saa[i][ffcModArch];\r
}\r
- model1.addRow(saa[i]);\r
- fpdMsa.put(saa[i][1]+saa[i][2]+saa[i][3]+saa[i][4], saa[i][0]);\r
+ row[forceDbgColForFpdModTable] = ffc.getModuleSAForceDebug(i);\r
+ modelFpdModules.addRow(row);\r
+\r
}\r
+ TableSorter sorter = (TableSorter)jTableFpdModules.getModel();\r
+ sorter.setSortState(modNameColForFpdModTable, TableSorter.ASCENDING);\r
}\r
- \r
+\r
showAllModules();\r
- \r
+\r
}\r
- \r
+\r
private void showAllModules() {\r
- \r
+\r
if (miList == null) {\r
miList = new ArrayList<ModuleIdentification>();\r
}\r
- Set<PackageIdentification> spi = GlobalData.getPackageList();\r
- Iterator ispi = spi.iterator();\r
- \r
- while(ispi.hasNext()) {\r
- PackageIdentification pi = (PackageIdentification)ispi.next();\r
- String[] s = {"", "", "", "", ""};\r
- s[3] = pi.getGuid();\r
- s[4] = pi.getVersion();\r
- Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
- Iterator ismi = smi.iterator();\r
- while(ismi.hasNext()) {\r
- ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
- s[0] = mi.getName();\r
- s[1] = mi.getGuid();\r
- s[2] = mi.getVersion();\r
- model.addRow(s);\r
+\r
+ String[] s = { "", "", "", "", "", "" };\r
+ \r
+ Iterator ismi = GlobalData.vModuleList.iterator();\r
+ while (ismi.hasNext()) {\r
+ ModuleIdentification mi = (ModuleIdentification) ismi.next();\r
+ s[modNameColForAllModTable] = mi.getName();\r
+ s[modVerColForAllModTable] = mi.getVersion();\r
+ s[typeColForAllModTable] = SurfaceAreaQuery.getModuleType(mi);\r
+ s[pkgNameColForAllModTable] = mi.getPackageId().getName();\r
+ s[pkgVerColForAllModTable] = mi.getPackageId().getVersion();\r
+ try {\r
+ s[pathColForAllModTable] = mi.getPath().substring(System.getenv("WORKSPACE").length() + 1);\r
+ } catch (Exception e) {\r
+ JOptionPane.showMessageDialog(frame, "Show All Modules:" + e.getMessage());\r
+ }\r
+ modelAllModules.addRow(s);\r
miList.add(mi);\r
}\r
- }\r
+ \r
+ \r
+ TableSorter sorter = (TableSorter)jTableAllModules.getModel();\r
+ sorter.setSortState(modNameColForAllModTable, TableSorter.ASCENDING);\r
}\r
+\r
/**\r
* This method initializes this\r
* \r
this.setTitle("Framework Modules");\r
this.setContentPane(getJSplitPane());\r
this.setVisible(true);\r
- \r
- }\r
- \r
- private ModuleIdentification getModuleId(String key){\r
- //\r
- // Get ModuleGuid, ModuleVersion, PackageGuid, PackageVersion into string array.\r
- //\r
- String[] keyPart = key.split(" ");\r
- Set<PackageIdentification> spi = GlobalData.getPackageList();\r
- Iterator ispi = spi.iterator();\r
- \r
- while(ispi.hasNext()) {\r
- PackageIdentification pi = (PackageIdentification)ispi.next();\r
- if ( !pi.getGuid().equals(keyPart[2])){ \r
-// || !pi.getVersion().equals(keyPart[3])){\r
- continue;\r
- }\r
- Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
- Iterator ismi = smi.iterator();\r
- while(ismi.hasNext()) {\r
- ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
- if (mi.getGuid().equals(keyPart[0])){\r
-// && mi.getVersion().equals(keyPart[1])){\r
-\r
- return mi;\r
- }\r
- }\r
- }\r
- return null;\r
+\r
}\r
\r
-} // @jve:decl-index=0:visual-constraint="10,10"\r
+} // @jve:decl-index=0:visual-constraint="10,10"\r
\r
class NonEditableTableModel extends DefaultTableModel {\r
/**\r
return false;\r
}\r
}\r
+\r
+class FpdModulesTableModel extends DefaultTableModel {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = 1L;\r
+ \r
+ public Class<?> getColumnClass (int c) {\r
+ if (getValueAt(0, c) != null){\r
+ return getValueAt(0, c).getClass();\r
+ }\r
+ return String.class;\r
+ }\r
+ \r
+ public boolean isCellEditable (int row, int col) {\r
+ if (col == FpdFrameworkModules.forceDbgColForFpdModTable) {\r
+ return true;\r
+ }\r
+ return false;\r
+ }\r
+}\r