import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
\r
import java.awt.FlowLayout;\r
+import java.awt.event.KeyEvent;\r
+import java.awt.event.MouseEvent;\r
import java.util.ArrayList;\r
import java.util.HashMap;\r
import java.util.Iterator;\r
*/\r
private static final long serialVersionUID = 1L;\r
\r
+ private static final int timeToWait = 3000;\r
+ \r
+ private long savedMs = 0;\r
+ \r
+ String searchField = "";\r
+ \r
public static final int forceDbgColForFpdModTable = 7;\r
\r
static JFrame frame;\r
private JPanel getJPanelTop() {\r
if (jPanelTop == null) {\r
jLabel = new JLabel();\r
- jLabel.setText("Modules in Workspace");\r
+ jLabel.setText(" Modules in Workspace");\r
jPanelTop = new JPanel();\r
jPanelTop.setLayout(new BorderLayout());\r
jPanelTop.add(jLabel, java.awt.BorderLayout.NORTH);\r
private JPanel getJPanelBottom() {\r
if (jPanelBottom == null) {\r
jLabelModulesAdded = new JLabel();\r
- jLabelModulesAdded.setText("Modules Added");\r
+ jLabelModulesAdded.setText(" Modules Added into Platform");\r
jPanelBottom = new JPanel();\r
jPanelBottom.setLayout(new BorderLayout());\r
jPanelBottom.add(jLabelModulesAdded, java.awt.BorderLayout.NORTH);\r
\r
jTableAllModules.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
jTableAllModules.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);\r
+ jTableAllModules.addMouseListener(new java.awt.event.MouseAdapter() {\r
+ public void mouseClicked(java.awt.event.MouseEvent e) {\r
+ if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) {\r
+ java.awt.Point p = e.getPoint();\r
+ int rowIndex = jTableAllModules.rowAtPoint(p);\r
+ TableSorter sorter = (TableSorter) jTableAllModules.getModel();\r
+ rowIndex = sorter.getModelRowIndex(rowIndex);\r
+ addModuleIntoPlatform (rowIndex);\r
+ }\r
+ }\r
+ });\r
+ jTableAllModules.addKeyListener(new java.awt.event.KeyAdapter() {\r
+ public void keyPressed(java.awt.event.KeyEvent e) {\r
+ if (e.getKeyCode() == KeyEvent.VK_ENTER) {\r
+ int selectedRow = jTableAllModules.getSelectedRow();\r
+ if (selectedRow < 0) {\r
+ return;\r
+ }\r
+ TableSorter sorter = (TableSorter) jTableAllModules.getModel();\r
+ selectedRow = sorter.getModelRowIndex(selectedRow);\r
+ addModuleIntoPlatform (selectedRow);\r
+ }\r
+ }\r
+ });\r
+ \r
+ jTableAllModules.addKeyListener(new java.awt.event.KeyAdapter() {\r
+ public void keyTyped(java.awt.event.KeyEvent e) {\r
\r
+ if (System.currentTimeMillis() - savedMs < timeToWait) {\r
+ searchField += e.getKeyChar();\r
+ }\r
+ else {\r
+ searchField = "" + e.getKeyChar(); \r
+ }\r
+ \r
+ int viewIndex = gotoFoundRow (searchField, (TableSorter) jTableAllModules.getModel());\r
+ if (viewIndex >= 0){\r
+ jTableAllModules.changeSelection(viewIndex, 0, false, false);\r
+ }\r
+ savedMs = System.currentTimeMillis();\r
+ }\r
+ });\r
+ \r
+ \r
}\r
return jTableAllModules;\r
}\r
+ \r
+ private int gotoFoundRow (String s, TableSorter model) {\r
+ for (int i = 0; i < model.getRowCount(); ++i) {\r
+ if (model.getValueAt(i, 0) != null && model.getValueAt(i, 0).toString().regionMatches(true, 0, s, 0, s.length())) {\r
+ return model.getViewIndexArray()[i];\r
+ }\r
+ }\r
+ return -1;\r
+ }\r
\r
/**\r
* This method initializes jPanelTopSouth\r
}\r
return jPanelTopSouth;\r
}\r
+ \r
+ private void addModuleIntoPlatform (int 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
+ 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
+\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
/**\r
* This method initializes jButtonAddModule \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
- 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
-\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
+ addModuleIntoPlatform (selectedRow); \r
}\r
});\r
}\r
jTableFpdModules.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
jTableFpdModules.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);\r
\r
+ jTableFpdModules.addMouseListener(new java.awt.event.MouseAdapter() {\r
+ public void mouseClicked(java.awt.event.MouseEvent e) {\r
+ if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) {\r
+ java.awt.Point p = e.getPoint();\r
+ int rowIndex = jTableFpdModules.rowAtPoint(p);\r
+ TableSorter sorter = (TableSorter) jTableFpdModules.getModel();\r
+ rowIndex = sorter.getModelRowIndex(rowIndex);\r
+ showSettingsDlg (rowIndex);\r
+ }\r
+ }\r
+ });\r
+ \r
+ jTableFpdModules.addKeyListener(new java.awt.event.KeyAdapter() {\r
+ public void keyPressed(java.awt.event.KeyEvent e) {\r
+ if (e.getKeyCode() == KeyEvent.VK_ENTER) {\r
+ int selectedRow = jTableFpdModules.getSelectedRow();\r
+ if (selectedRow < 0) {\r
+ return;\r
+ }\r
+ TableSorter sorter = (TableSorter) jTableFpdModules.getModel();\r
+ selectedRow = sorter.getModelRowIndex(selectedRow);\r
+ showSettingsDlg (selectedRow);\r
+ }\r
+ }\r
+ });\r
+ \r
+ jTableFpdModules.addKeyListener(new java.awt.event.KeyAdapter() {\r
+ public void keyTyped(java.awt.event.KeyEvent e) {\r
+\r
+ if (System.currentTimeMillis() - savedMs < timeToWait) {\r
+ searchField += e.getKeyChar();\r
+ }\r
+ else {\r
+ searchField = "" + e.getKeyChar(); \r
+ }\r
+ \r
+ int viewIndex = gotoFoundRow (searchField, (TableSorter) jTableFpdModules.getModel());\r
+ if (viewIndex >= 0){\r
+ jTableFpdModules.changeSelection(viewIndex, 0, false, false);\r
+ }\r
+ savedMs = System.currentTimeMillis();\r
+ }\r
+ });\r
+ \r
jTableFpdModules.getModel().addTableModelListener(this);\r
}\r
return jTableFpdModules;\r
docConsole.setSaved(false);\r
}\r
}\r
+ \r
+ private void showSettingsDlg (int row) {\r
+ try {\r
+ if (ffc.adjustPcd(row)) {\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
+\r
+ String[] sa = new String[5];\r
+ ffc.getFrameworkModuleInfo(row, 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, row, docConsole);\r
+ settingDlg.setVisible(true);\r
+ }\r
/**\r
* This method initializes jButtonSettings\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
-\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
+ showSettingsDlg (selectedRow);\r
}\r
});\r
}\r
String pg = sa[ffcPkgGuid];\r
String pv = sa[ffcPkgVer];\r
String arch = sa[ffcModArch];\r
+ //\r
+ // sync. module order list in BuildOptions-UserExtensions.\r
+ //\r
+ String moduleKey = mg + " " + mv + " " + pg + " " + pv + " " + arch;\r
+ String fvBindings = ffc.getFvBinding(moduleKey);\r
+ if (fvBindings != null) {\r
+ String[] fvArray = fvBindings.split(" ");\r
+ for (int i = 0; i < fvArray.length; ++i) {\r
+ ffc.removeModuleInBuildOptionsUserExtensions(fvArray[i].trim(), mg, mv, pg, pv, arch);\r
+ }\r
+ }\r
+ \r
ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv + " " + arch);\r
if (mi != null) {\r
mv = mi.getVersion();\r