+/** @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
* 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
\r
private NonEditableTableModel modelAllModules = null;\r
\r
- private NonEditableTableModel modelFpdModules = null;\r
+ private FpdModulesTableModel modelFpdModules = null;\r
\r
private FpdModuleSA settingDlg = null;\r
\r
\r
private final int verPrefWidth = 70;\r
\r
- private final int pathPrefWidth = 320;\r
+ private final int pathPrefWidth = 600;\r
\r
private final int pathMinWidth = 280;\r
\r
column.setMinWidth(pathMinWidth);\r
\r
jTableAllModules.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ jTableAllModules.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);\r
\r
}\r
return jTableAllModules;\r
}\r
\r
TableSorter sorter = (TableSorter) jTableAllModules.getModel();\r
- selectedRow = sorter.modelIndex(selectedRow);\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 = GlobalData.getModuleSupArchs(mi);\r
+ vArchs = WorkspaceProfile.getModuleSupArchs(mi);\r
}\r
catch (Exception exp) {\r
JOptionPane.showMessageDialog(frame, exp.getMessage());\r
String archsAdded = "";\r
String mg = mi.getGuid();\r
String mv = mi.getVersion();\r
- String pg = mi.getPackage().getGuid();\r
- String pv = mi.getPackage().getVersion();\r
- String mType = mi.getModuleType();\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
- al = new ArrayList<String>();\r
- fpdMsa.put(mg + mv + pg + pv, al);\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
\r
if (mi != null) {\r
row[modNameColForFpdModTable] = mi.getName();\r
- row[pkgNameColForFpdModTable] = mi.getPackage().getName();\r
+ row[pkgNameColForFpdModTable] = mi.getPackageId().getName();\r
row[pathColForFpdModTable] = path;\r
row[archColForFpdModTable] = arch;\r
row[pkgVerColForFpdModTable] = pv;\r
s += " was added Successfully.";\r
}\r
JOptionPane.showMessageDialog(frame, s);\r
- jTableFpdModules.changeSelection(modelFpdModules.getRowCount() - 1, 0, false, false);\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
*/\r
private JTable getJTableFpdModules() {\r
if (jTableFpdModules == null) {\r
- modelFpdModules = new NonEditableTableModel();\r
+ modelFpdModules = new FpdModulesTableModel();\r
TableSorter sorter = new TableSorter(modelFpdModules);\r
jTableFpdModules = new JTable(sorter);\r
sorter.setTableHeader(jTableFpdModules.getTableHeader());\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
-\r
+ modelFpdModules.addColumn("<html>Force<br>Debug</html>");\r
\r
javax.swing.table.TableColumn column = null;\r
column = jTableFpdModules.getColumnModel().getColumn(modNameColForFpdModTable);\r
column.setMinWidth(typeMinWidth);\r
\r
jTableFpdModules.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
-\r
+ jTableFpdModules.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);\r
+ \r
+ jTableFpdModules.getModel().addTableModelListener(this);\r
}\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 jButtonSettings\r
* \r
}\r
\r
TableSorter sorter = (TableSorter) jTableFpdModules.getModel();\r
- selectedRow = sorter.modelIndex(selectedRow);\r
+ selectedRow = sorter.getModelRowIndex(selectedRow);\r
try {\r
if (ffc.adjustPcd(selectedRow)) {\r
docConsole.setSaved(false);\r
if (selectedRow < 0) {\r
return;\r
}\r
+ docConsole.setSaved(false);\r
\r
TableSorter sorter = (TableSorter) jTableFpdModules.getModel();\r
- selectedRow = sorter.modelIndex(selectedRow);\r
+ selectedRow = sorter.getModelRowIndex(selectedRow);\r
\r
String[] sa = new String[5];\r
ffc.getFrameworkModuleInfo(selectedRow, sa);\r
String pg = sa[ffcPkgGuid];\r
String pv = sa[ffcPkgVer];\r
String arch = sa[ffcModArch];\r
- ModuleIdentification mi = GlobalData.getModuleId(mg + " " + mv + " " + pg + " " + pv + " " + arch);\r
+ ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv + " " + arch);\r
mv = mi.getVersion();\r
- pv = mi.getPackage().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
}\r
}\r
\r
- docConsole.setSaved(false);\r
ffc.removeModuleSA(selectedRow);\r
}\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, "Error occurred when getting module data.");\r
- }\r
\r
if (ffc == null) {\r
ffc = new FpdFileContents(fpd);\r
String[][] saa = new String[ffc.getFrameworkModulesCount()][5];\r
ffc.getFrameworkModulesInfo(saa);\r
for (int i = 0; i < saa.length; ++i) {\r
- ModuleIdentification mi = GlobalData.getModuleId(saa[i][ffcModGuid] + " " + saa[i][ffcModVer] + " "\r
+ ModuleIdentification mi = WorkspaceProfile.getModuleId(saa[i][ffcModGuid] + " " + saa[i][ffcModVer] + " "\r
+ saa[i][ffcPkgGuid] + " " + saa[i][ffcPkgVer]);\r
- String[] row = { "", "", "", "", "", "", "" };\r
+ Object[] row = { "", "", "", "", "", "", "", "" };\r
if (mi != null) {\r
row[modNameColForFpdModTable] = mi.getName();\r
row[modVerColForFpdModTable] = mi.getVersion();\r
- row[typeColForFpdModTable] = mi.getModuleType();\r
- row[pkgNameColForFpdModTable] = mi.getPackage().getName();\r
- row[pkgVerColForFpdModTable] = mi.getPackage().getVersion();\r
- row[archColForFpdModTable] = saa[i][4];\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] = GlobalData.getMsaFile(mi).getPath().substring(\r
- System.getenv("WORKSPACE")\r
- .length() + 1);\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
+ row[forceDbgColForFpdModTable] = ffc.getModuleSAForceDebug(i);\r
modelFpdModules.addRow(row);\r
- ArrayList<String> al = fpdMsa.get(saa[i][ffcModGuid] + saa[i][ffcModVer]\r
- + saa[i][ffcPkgGuid] + saa[i][ffcPkgVer]);\r
- if (al == null) {\r
- al = new ArrayList<String>();\r
- fpdMsa.put(saa[i][ffcModGuid] + saa[i][ffcModVer] + saa[i][ffcPkgGuid] + saa[i][ffcPkgVer], al);\r
- }\r
- al.add(saa[i][ffcModArch]);\r
\r
}\r
TableSorter sorter = (TableSorter)jTableFpdModules.getModel();\r
- sorter.setSortingStatus(modNameColForFpdModTable, TableSorter.ASCENDING);\r
+ sorter.setSortState(modNameColForFpdModTable, TableSorter.ASCENDING);\r
}\r
\r
showAllModules();\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
-\r
- Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
- Iterator ismi = smi.iterator();\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] = mi.getModuleType();\r
- s[pkgNameColForAllModTable] = pi.getName();\r
- s[pkgVerColForAllModTable] = pi.getVersion();\r
+ s[typeColForAllModTable] = SurfaceAreaQuery.getModuleType(mi);\r
+ s[pkgNameColForAllModTable] = mi.getPackageId().getName();\r
+ s[pkgVerColForAllModTable] = mi.getPackageId().getVersion();\r
try {\r
- s[pathColForAllModTable] = GlobalData.getMsaFile(mi).getPath()\r
- .substring(System.getenv("WORKSPACE").length() + 1);\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.setSortingStatus(modNameColForAllModTable, TableSorter.ASCENDING);\r
+ sorter.setSortState(modNameColForAllModTable, TableSorter.ASCENDING);\r
}\r
\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