X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=Tools%2FSource%2FFrameworkWizard%2Fsrc%2Forg%2Ftianocore%2Fframeworkwizard%2Fplatform%2Fui%2FFpdFlash.java;h=5eefacbdc3d3742a9f2d925d2d6f7aeefd7a3e4a;hb=cd1fd8f9f0f879d4dcc519c9657e9976d904bdcd;hp=bdcb193819986442e220b8aa006b53e99cbbe482;hpb=7242606411f2b8e74e0bd7dd16c62824ebfef815;p=mirror_edk2.git diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java index bdcb193819..5eefacbdc3 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java @@ -25,12 +25,11 @@ import javax.swing.ListSelectionModel; import org.tianocore.PlatformSurfaceAreaDocument; import org.tianocore.frameworkwizard.common.DataValidation; -import org.tianocore.frameworkwizard.common.GlobalData; +import org.tianocore.frameworkwizard.common.IDefaultTableModel; import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType; import org.tianocore.frameworkwizard.common.ui.IInternalFrame; import org.tianocore.frameworkwizard.common.ui.StarLabel; import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification; -import org.tianocore.frameworkwizard.platform.ui.FpdFrameworkModules; import org.tianocore.frameworkwizard.platform.ui.global.WorkspaceProfile; import java.awt.FlowLayout; @@ -39,10 +38,11 @@ import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; -import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; @@ -105,10 +105,10 @@ public class FpdFlash extends IInternalFrame { private JLabel jLabelFvImageNames = null; private JLabel jLabelFvParaName = null; private JTextField jTextFieldFvParaName = null; - private JButton jButtonFvParaAdd = null; + private JButton jButtonFvNameAdd = null; private JScrollPane jScrollPaneFvImageNames = null; private JTable jTableFvImageNames = null; - private JButton jButtonFvParaDel = null; + private JButton jButtonFvNameDel = null; private JPanel jPanelFvImageOpts = null; private JButton jButtonAddFvImage = null; private JScrollPane jScrollPaneFvInfo = null; @@ -145,7 +145,7 @@ public class FpdFlash extends IInternalFrame { private JLabel jLabelFvAdditional = null; private JScrollPane jScrollPaneFvInFdf = null; private JTable jTableFvInFdf = null; - private NonEditableTableModel fvInFdfTableModel = null; // @jve:decl-index=0:visual-constraint="" + private IDefaultTableModel fvInFdfTableModel = null; // @jve:decl-index=0:visual-constraint="" private JButton jButtonFvInFdfOptions = null; private JScrollPane jScrollPaneFvAdditional = null; private JTable jTableFvAdditional = null; @@ -587,6 +587,7 @@ public class FpdFlash extends IInternalFrame { jComboBoxFvParaType = new JComboBox(); jComboBoxFvParaType.addItem("Attributes"); jComboBoxFvParaType.addItem("Components"); + jComboBoxFvParaType.setSelectedIndex(0); jComboBoxFvParaType.setPreferredSize(new java.awt.Dimension(180,20)); jComboBoxFvParaType.addItemListener(new ItemListener() { @@ -634,13 +635,13 @@ public class FpdFlash extends IInternalFrame { * * @return javax.swing.JButton */ - private JButton getJButtonFvParaAdd() { - if (jButtonFvParaAdd == null) { - jButtonFvParaAdd = new JButton(); - jButtonFvParaAdd.setPreferredSize(new Dimension(80, 20)); - jButtonFvParaAdd.setEnabled(true); - jButtonFvParaAdd.setText("Add"); - jButtonFvParaAdd.addActionListener(new AbstractAction() { + private JButton getJButtonFvNameAdd() { + if (jButtonFvNameAdd == null) { + jButtonFvNameAdd = new JButton(); + jButtonFvNameAdd.setPreferredSize(new Dimension(80, 20)); + jButtonFvNameAdd.setEnabled(true); + jButtonFvNameAdd.setText("Add"); + jButtonFvNameAdd.addActionListener(new AbstractAction() { /** * */ @@ -649,26 +650,34 @@ public class FpdFlash extends IInternalFrame { public void actionPerformed(java.awt.event.ActionEvent e) { if (jTextFieldFvParaName.getText().length() > 0){ String[] row = {jTextFieldFvParaName.getText()}; - fvImageNameTableModel.addRow(row); - if (jTableFvInfo.getSelectedRow() < 0) { + int selectedRow = jTableFvInfo.getSelectedRow(); + if (selectedRow < 0) { return; } - String fvNameList = jTableFvInfo.getValueAt(jTableFvInfo.getSelectedRow(), 0)+""; - String type = jTableFvInfo.getValueAt(jTableFvInfo.getSelectedRow(), 1)+""; + String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+""; + String type = jTableFvInfo.getValueAt(selectedRow, 1)+""; int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type); if (fvImagePos < 0) { // new FvImage. + ffc.genFvImagesFvImage(row, jComboBoxFvParaType.getSelectedItem()+"", null); } else { - //append Fv name. + //append Fv name. + ffc.addFvImageNamesInFvImage(fvImagePos, row); } + docConsole.setSaved(false); + fvImageNameTableModel.addRow(row); + fvNameList += " "; + fvNameList += row[0]; + jTableFvInfo.setValueAt(fvNameList.trim(), selectedRow, 0); + jTableFvImageNames.changeSelection(jTableFvImageNames.getRowCount() - 1, 0, false, false); } } }); } - return jButtonFvParaAdd; + return jButtonFvNameAdd; } @@ -694,37 +703,11 @@ public class FpdFlash extends IInternalFrame { */ private JTable getJTableFvImageNames() { if (jTableFvImageNames == null) { - fvImageNameTableModel = new DefaultTableModel(); + fvImageNameTableModel = new IDefaultTableModel(); jTableFvImageNames = new JTable(fvImageNameTableModel); jTableFvImageNames.setRowHeight(20); fvImageNameTableModel.addColumn("FV Image Name"); - jTableFvImageNames.getSelectionModel().addListSelectionListener(new ListSelectionListener() { - public void valueChanged(ListSelectionEvent e) { - if (e.getValueIsAdjusting()) { - return; - } - ListSelectionModel lsm = (ListSelectionModel) e.getSource(); - if (lsm.isSelectionEmpty()) { - return; - } else { - int selectedRow = lsm.getMinSelectionIndex(); - String oldFvName = jTableFvImageNames.getValueAt(selectedRow, 0)+""; - } - } - }); - - jTableFvImageNames.getModel().addTableModelListener(new TableModelListener() { - public void tableChanged(TableModelEvent arg0) { - // TODO Auto-generated method stub - int row = arg0.getFirstRow(); - int col = arg0.getColumn(); - TableModel m = (TableModel) arg0.getSource(); - - if (arg0.getType() == TableModelEvent.UPDATE) { - } - } - }); } return jTableFvImageNames; } @@ -735,13 +718,13 @@ public class FpdFlash extends IInternalFrame { * * @return javax.swing.JButton */ - private JButton getJButtonFvParaDel() { - if (jButtonFvParaDel == null) { - jButtonFvParaDel = new JButton(); - jButtonFvParaDel.setPreferredSize(new Dimension(80, 20)); - jButtonFvParaDel.setEnabled(true); - jButtonFvParaDel.setText("Delete"); - jButtonFvParaDel.addActionListener(new AbstractAction() { + private JButton getJButtonFvNameDel() { + if (jButtonFvNameDel == null) { + jButtonFvNameDel = new JButton(); + jButtonFvNameDel.setPreferredSize(new Dimension(80, 20)); + jButtonFvNameDel.setEnabled(true); + jButtonFvNameDel.setText("Delete"); + jButtonFvNameDel.addActionListener(new AbstractAction() { /** * */ @@ -749,16 +732,58 @@ public class FpdFlash extends IInternalFrame { public void actionPerformed(java.awt.event.ActionEvent e) { if (jTableFvImageNames.getSelectedRow() >= 0){ - + int selectedRow = jTableFvInfo.getSelectedRow(); + if (selectedRow < 0) { + return; + } + + String selectedFvName = jTableFvImageNames.getValueAt(jTableFvImageNames.getSelectedRow(), 0)+""; + String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+""; + String type = jTableFvInfo.getValueAt(selectedRow, 1)+""; + int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type); + + if (fvImagePos < 0) { + return; + } + else { + //delete Fv name. + ffc.updateFvImageNamesInFvImage(fvImagePos, selectedFvName, null); + } + docConsole.setSaved(false); + String newList = removeFvNameFromList(fvNameList, selectedFvName); + jTableFvInfo.setValueAt(newList, selectedRow, 0); fvImageNameTableModel.removeRow(jTableFvImageNames.getSelectedRow()); } } }); } - return jButtonFvParaDel; - } - - + return jButtonFvNameDel; + } + + private String removeFvNameFromList (String list, String name) { + String[] nameArray = list.split(" "); + int occursAt = -1; + for (int i = 0; i < nameArray.length; ++i) { + if (nameArray[i].equals(name)) { + occursAt = i; + break; + } + } + + if (occursAt == -1) { + return list; + } + + String newList = " "; + for (int j = 0; j < nameArray.length; ++j) { + if (j != occursAt) { + newList += nameArray[j]; + newList += " "; + } + } + + return newList.trim(); + } private JPanel getJPanelFvImageOpts() { @@ -818,33 +843,24 @@ public class FpdFlash extends IInternalFrame { private static final long serialVersionUID = 1L; public void actionPerformed(java.awt.event.ActionEvent e) { - if (jTableFvInfo.isEditing()) { - jTableFvInfo.getCellEditor().stopCellEditing(); - } - if (jTableFvImageOpts.isEditing()) { - jTableFvImageOpts.getCellEditor().stopCellEditing(); - } - if (jTableFvImageNames.getRowCount()== 0){ - return; - } - String imageName = " "; - for (int i = 0; i < jTableFvImageNames.getRowCount(); ++i){ - imageName += (String)jTableFvImageNames.getValueAt(i, 0); - imageName += " "; - } - imageName = imageName.trim(); - - - LinkedHashMap m = null; -// if (jCheckBoxFvImageOpts.isSelected()) { - m = new LinkedHashMap(); - getOptionNameValue(m); +// String imageName = " "; +// for (int i = 0; i < jTableFvImageNames.getRowCount(); ++i){ +// imageName += (String)jTableFvImageNames.getValueAt(i, 0); +// imageName += " "; // } - ffc.genFvImagesFvImage(imageName.split(" "), jComboBoxFvParaType.getSelectedItem()+"", m); - docConsole.setSaved(false); - Object[] row = {imageName, jComboBoxFvParaType.getSelectedItem()}; - fvImageParaTableModel.addRow(row); +// imageName = imageName.trim(); + +// LinkedHashMap m = null; +// m = new LinkedHashMap(); +// getOptionNameValue(m); +// ffc.genFvImagesFvImage(imageName.split(" "), jComboBoxFvParaType.getSelectedItem()+"", m); +// docConsole.setSaved(false); + fvImageNameTableModel.setRowCount(0); + fvOptionTableModel.setRowCount(0); + Object[] row = {"", jComboBoxFvParaType.getSelectedItem()}; + fvImageParaTableModel.addRow(row); + jTableFvInfo.changeSelection(jTableFvInfo.getRowCount() - 1, 0, false, false); } }); } @@ -897,9 +913,12 @@ public class FpdFlash extends IInternalFrame { jComboBoxFvParaType.setSelectedItem(type); String[] fvNames = fvNameList.split(" "); fvImageNameTableModel.setRowCount(0); + fvOptionTableModel.setRowCount(0); for (int i = 0; i < fvNames.length; ++i) { String[] row = { fvNames[i] }; - fvImageNameTableModel.addRow(row); + if (row[0].length() > 0) { + fvImageNameTableModel.addRow(row); + } } int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type); @@ -909,7 +928,6 @@ public class FpdFlash extends IInternalFrame { LinkedHashMap optionMap = new LinkedHashMap(); ffc.getFvImagesFvImageOptions(fvImagePos, optionMap); if (optionMap.size() > 0){ - fvOptionTableModel.setRowCount(0); Set key = optionMap.keySet(); Iterator i = key.iterator(); while (i.hasNext()) { @@ -947,9 +965,15 @@ public class FpdFlash extends IInternalFrame { public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub if (jTableFvInfo.getSelectedRow() >= 0 ) { - ffc.removeFvImagesFvImage(jTableFvInfo.getSelectedRow()); + String fvNameList = fvImageParaTableModel.getValueAt(jTableFvInfo.getSelectedRow(), 0)+""; + int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, jComboBoxFvParaType.getSelectedItem()+""); + + ffc.removeFvImagesFvImage(fvImagePos); fvImageParaTableModel.removeRow(jTableFvInfo.getSelectedRow()); docConsole.setSaved(false); + + fvImageNameTableModel.setRowCount(0); + fvOptionTableModel.setRowCount(0); } } @@ -1158,7 +1182,7 @@ public class FpdFlash extends IInternalFrame { JOptionPane.showMessageDialog(frame, "FDF file does NOT contain valid Erase Polarity."); } else { - ffc.setTypedFvImageNameValue("Attributes", "ErasePolarity", erasePolarity); + ffc.setTypedFvImageNameValue("Attributes", "EFI_ERASE_POLARITY", erasePolarity); } // BugBug: assume all blocks have same size; @@ -1298,8 +1322,26 @@ public class FpdFlash extends IInternalFrame { public void actionPerformed(ActionEvent e) { if (jTextFieldFvImageOptName.getText().length() > 0 && jTextFieldFvImageOptValue.getText().length() > 0){ - String[] row = {jTextFieldFvImageOptName.getText(), jTextFieldFvImageOptValue.getText()}; + int selectedRow = jTableFvInfo.getSelectedRow(); + if (selectedRow < 0) { + return; + } + + String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+""; + String type = jTableFvInfo.getValueAt(selectedRow, 1)+""; + int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type); + String[] row = {jTextFieldFvImageOptName.getText(), jTextFieldFvImageOptValue.getText()}; + + if (fvImagePos < 0) { + return; + } + else { + //append options to FvImage. + ffc.setFvImagesFvImageNameValue(fvImagePos, row[0], row[1]); + } + docConsole.setSaved(false); fvOptionTableModel.addRow(row); + jTableFvImageOpts.changeSelection(jTableFvImageOpts.getRowCount() - 1, 0, false, false); } } }); @@ -1326,7 +1368,22 @@ public class FpdFlash extends IInternalFrame { public void actionPerformed(ActionEvent e) { if (jTableFvImageOpts.getSelectedRow() >= 0){ - fvOptionTableModel.removeRow(jTableFvProp.getSelectedRow()); + int selectedRow = jTableFvInfo.getSelectedRow(); + if (selectedRow < 0) { + return; + } + + String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+""; + String type = jTableFvInfo.getValueAt(selectedRow, 1)+""; + int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type); + if (fvImagePos < 0) { + return; + } + + String optName = fvOptionTableModel.getValueAt(jTableFvImageOpts.getSelectedRow(), 0)+""; + ffc.removeFvImageNameValue(fvImagePos, optName); + docConsole.setSaved(false); + fvOptionTableModel.removeRow(jTableFvImageOpts.getSelectedRow()); } } }); @@ -1355,7 +1412,7 @@ public class FpdFlash extends IInternalFrame { */ private JTable getJTableFvImageOpts() { if (jTableFvImageOpts == null) { - fvOptionTableModel = new DefaultTableModel(); + fvOptionTableModel = new IDefaultTableModel(); fvOptionTableModel.addColumn("Name"); fvOptionTableModel.addColumn("Value"); jTableFvImageOpts = new JTable(fvOptionTableModel); @@ -1592,9 +1649,9 @@ public class FpdFlash extends IInternalFrame { * * @return org.tianocore.frameworkwizard.platform.ui.NonEditableTableModel */ - private NonEditableTableModel getFvInFdfTableModel() { + private IDefaultTableModel getFvInFdfTableModel() { if (fvInFdfTableModel == null) { - fvInFdfTableModel = new NonEditableTableModel(); + fvInFdfTableModel = new IDefaultTableModel(); fvInFdfTableModel.addColumn("FV Name"); fvInFdfTableModel.addColumn("Size"); fvInFdfTableModel.addColumn("Corresponding File Name"); @@ -1735,7 +1792,7 @@ public class FpdFlash extends IInternalFrame { jTabbedPane.addTab(newFvName, new ModuleOrderPane(newFvName, "")); // Add FvImageNames in Flash String[] fvNames = {newFvName}; - ffc.AddFvImageFvImageNames(fvNames); + ffc.addFvImageFvImageNames(fvNames); } docConsole.setSaved(false); oldFvName = newFvName; @@ -1980,8 +2037,8 @@ public class FpdFlash extends IInternalFrame { if (jPanelBgFvName == null) { jPanelBgFvName = new JPanel(); jPanelBgFvName.setPreferredSize(new java.awt.Dimension(80,55)); - jPanelBgFvName.add(getJButtonFvParaAdd(), null); - jPanelBgFvName.add(getJButtonFvParaDel(), null); + jPanelBgFvName.add(getJButtonFvNameAdd(), null); + jPanelBgFvName.add(getJButtonFvNameDel(), null); } return jPanelBgFvName; } @@ -2248,7 +2305,108 @@ public class FpdFlash extends IInternalFrame { } } - + +// class ModuleSAInfo { +// private int rowNumber = -1; +// private String moduleGuid = null; +// private String moduleVersion = null; +// private String packageGuid = null; +// private String packageVersion = null; +// private String arch = null; +// +// public ModuleSAInfo (String mg, String mv, String pg, String pv, String a) { +// moduleGuid = mg; +// moduleVersion = mv; +// packageGuid = pg; +// packageVersion = pv; +// arch = a; +// } +// +// /** +// * @return Returns the arch. +// */ +// public String getArch() { +// return arch; +// } +// +// /** +// * @param arch The arch to set. +// */ +// public void setArch(String arch) { +// this.arch = arch; +// } +// +// /** +// * @return Returns the moduleGuid. +// */ +// public String getModuleGuid() { +// return moduleGuid; +// } +// +// /** +// * @param moduleGuid The moduleGuid to set. +// */ +// public void setModuleGuid(String moduleGuid) { +// this.moduleGuid = moduleGuid; +// } +// +// /** +// * @return Returns the moduleVersion. +// */ +// public String getModuleVersion() { +// return moduleVersion; +// } +// +// /** +// * @param moduleVersion The moduleVersion to set. +// */ +// public void setModuleVersion(String moduleVersion) { +// this.moduleVersion = moduleVersion; +// } +// +// /** +// * @return Returns the packageGuid. +// */ +// public String getPackageGuid() { +// return packageGuid; +// } +// +// /** +// * @param packageGuid The packageGuid to set. +// */ +// public void setPackageGuid(String packageGuid) { +// this.packageGuid = packageGuid; +// } +// +// /** +// * @return Returns the packageVersion. +// */ +// public String getPackageVersion() { +// return packageVersion; +// } +// +// /** +// * @param packageVersion The packageVersion to set. +// */ +// public void setPackageVersion(String packageVersion) { +// this.packageVersion = packageVersion; +// } +// +// /** +// * @return Returns the rowNumber. +// */ +// public int getRowNumber() { +// return rowNumber; +// } +// +// /** +// * @param rowNumber The rowNumber to set. +// */ +// public void setRowNumber(int rowNumber) { +// this.rowNumber = rowNumber; +// } +// } + private class ModuleOrderPane extends JPanel { /** @@ -2269,10 +2427,10 @@ public class FpdFlash extends IInternalFrame { private JButton jButtonDown = null; private JButton jButtonOk = null; private JButton jButtonCancel = null; - private NonEditableTableModel modInFvTableModel = null; - private NonEditableTableModel fpdModTableModel = null; - private HashMap mGuidToModuleId = null; - private ArrayList listModGuidInFv = null; + private IDefaultTableModel modInFvTableModel = null; + private IDefaultTableModel fpdModTableModel = null; +// private ArrayList listTableModInFvModuleSAInfo = null; +// private ArrayList listTableFpdModulesModuleSAInfo = null; private String title = null; private String outputFileName = null; @@ -2280,8 +2438,8 @@ public class FpdFlash extends IInternalFrame { super(new BorderLayout()); title = tabTitle; outputFileName = file; - mGuidToModuleId = new HashMap(); - listModGuidInFv = new ArrayList(); +// listTableModInFvModuleSAInfo = new ArrayList(); +// listTableFpdModulesModuleSAInfo = new ArrayList(); add(getJPanelModOrderN(), java.awt.BorderLayout.NORTH); add(getJPanelModOrderS(), java.awt.BorderLayout.SOUTH); add(getJPanelModOrderC(), java.awt.BorderLayout.CENTER); @@ -2293,34 +2451,41 @@ public class FpdFlash extends IInternalFrame { int size = ffc.getUserExtsIncModCount(fvName); if (size != -1) { - String[][] saa = new String[size][2]; + String[][] saa = new String[size][5]; ffc.getUserExtsIncMods(fvName, saa); for (int i = 0; i < size; ++i) { - listModGuidInFv.add(saa[i][0].toLowerCase()); - String name = getModuleName(saa[i][0]); - String[] row = { name }; + String moduleKey = saa[i][0] + " " + saa[i][1] + " " + saa[i][2] + " " + saa[i][3]; + ModuleIdentification mi = WorkspaceProfile.getModuleId(moduleKey); + String name = "N/A"; + if (mi != null) { + name = mi.getName(); + } + + String[] row = { name, saa[i][0] , saa[i][1], saa[i][2] , saa[i][3], saa[i][4] }; modInFvTableModel.addRow(row); } } // // From ModuleSAs, get module guids with FvBinding = fvName. // - Vector vGuid = new Vector(); - ffc.getFrameworkModuleGuid(fvName, vGuid); + Vector vModuleSA = new Vector(); + ffc.getFrameworkModuleSAByFvBinding(fvName, vModuleSA); // // If BuildOptions->UserExtensions already contain these module info, // no need to add them into table again. // - Iterator iter = vGuid.iterator(); + Iterator iter = vModuleSA.iterator(); while (iter.hasNext()){ - String guid = iter.next(); -// String moduleName = getModuleName(guid); -// if (existedInTable(moduleName, modInFvTableModel)) { -// vGuid.remove(guid); -// } - if (!listModGuidInFv.contains(guid.toLowerCase())) { - String[] row = {getModuleName(guid)}; + String[] sa = iter.next(); + if (!moduleInfoInTable (sa, modInFvTableModel)) { + String moduleKey = sa[0] + " " + sa[1] + " " + sa[2] + " " + sa[3]; + ModuleIdentification mi = WorkspaceProfile.getModuleId(moduleKey); + String name = "N/A"; + if (mi != null) { + name = mi.getName(); + } + String[] row = { name, sa[0] , sa[1], sa[2] , sa[3], sa[4] }; modInFvTableModel.addRow(row); } } @@ -2333,11 +2498,16 @@ public class FpdFlash extends IInternalFrame { ffc.getFrameworkModulesInfo(saa); for (int i = 0; i < size; ++i) { - String name = getModuleName(saa[i][0]); - if (existedInTable(name, modInFvTableModel) || existedInTable(name, fpdModTableModel)) { + if (moduleInfoInTable(saa[i], modInFvTableModel) || moduleInfoInTable(saa[i], fpdModTableModel)) { continue; } - String[] row = {name}; + String moduleKey = saa[i][0] + " " + saa[i][1] + " " + saa[i][2] + " " + saa[i][3]; + ModuleIdentification mi = WorkspaceProfile.getModuleId(moduleKey); + String name = "N/A"; + if (mi != null) { + name = mi.getName(); + } + String[] row = { name, saa[i][0] , saa[i][1], saa[i][2] , saa[i][3], saa[i][4] }; fpdModTableModel.addRow(row); } @@ -2345,29 +2515,35 @@ public class FpdFlash extends IInternalFrame { sorter.setSortState(0, TableSorter.ASCENDING); } - private String getModuleName (String guid) { - - for (int i = 0; i < GlobalData.vModuleList.size(); ++i) { - ModuleIdentification mi = GlobalData.vModuleList.get(i); - String mg = mi.getGuid(); - if (mg == null) { - continue; - } - if (mg.equalsIgnoreCase(guid)) { - mGuidToModuleId.put(guid.toLowerCase(), mi); - return mi.getName(); - } - } - - return ""; - } - private boolean existedInTable (String name, DefaultTableModel model) { + private boolean moduleInfoInTable (String[] moduleInfo, DefaultTableModel model) { + boolean matched = false; int size = model.getDataVector().size(); for (int i = 0; i < size; ++i) { - if (((Vector)model.getDataVector().elementAt(i)).contains(name)) { + Vector rowData = (Vector)model.getDataVector().elementAt(i); + for (int j = 1; j < rowData.size(); ++j) { + if (rowData.elementAt(j) == null && moduleInfo[j-1] == null) { + matched = true; + } + else if (rowData.elementAt(j).equals("null") && moduleInfo[j-1] == null) { + matched = true; + } + else if (rowData.elementAt(j) == null && moduleInfo[j-1].equals("null")) { + matched = true; + } + else if (rowData.elementAt(j) != null && rowData.elementAt(j).toString().equalsIgnoreCase(moduleInfo[j-1])) { + matched = true; + } + else { + matched = false; + break; + } + } + + if (matched) { return true; } + } return false; } @@ -2439,12 +2615,78 @@ public class FpdFlash extends IInternalFrame { */ private JTable getJTableModInFv() { if (jTableModInFv == null) { - modInFvTableModel = new NonEditableTableModel(); + modInFvTableModel = new IDefaultTableModel(); + + jTableModInFv = new JTable(modInFvTableModel){ + /** + * + */ + private static final long serialVersionUID = 4903583933542581721L; + + public String getToolTipText(MouseEvent e) { + String tip = null; + java.awt.Point p = e.getPoint(); + int rowIndex = rowAtPoint(p); +// int colIndex = columnAtPoint(p); +// int realColumnIndex = convertColumnIndexToModel(colIndex); + + TableModel model = getModel(); + String mg = (String) model.getValueAt(rowIndex, 1); + String mv = (String) model.getValueAt(rowIndex, 2); + String pg = (String) model.getValueAt(rowIndex, 3); + String pv = (String) model.getValueAt(rowIndex, 4); + String arch = (String) model.getValueAt(rowIndex, 5); + ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv); + if (mi != null) { + tip = "Path: " + mi.getPath() + "; Arch: " + arch + ";"; + } + else { + tip = "No Module Path Information."; + } + + return tip; + } + + }; modInFvTableModel.addColumn("Module Orders in FV"); - jTableModInFv = new JTable(modInFvTableModel); + modInFvTableModel.addColumn("mg"); + modInFvTableModel.addColumn("mv"); + modInFvTableModel.addColumn("pg"); + modInFvTableModel.addColumn("pv"); + modInFvTableModel.addColumn("arch"); + + for (int i = 1; i < 6; ++i) { + jTableModInFv.removeColumn(jTableModInFv.getColumnModel().getColumn(jTableModInFv.getColumnCount()-1)); + } + jTableModInFv.setRowHeight(20); jTableModInFv.setShowGrid(false); - + jTableModInFv.setAutoCreateColumnsFromModel(false); + jTableModInFv.addMouseListener(new MouseAdapter() { + + /* (non-Javadoc) + * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent) + */ + @Override + public void mouseClicked(MouseEvent arg0) { + if (arg0.getButton() == MouseEvent.BUTTON3) { + java.awt.Point p = arg0.getPoint(); + int rowIndex = jTableModInFv.rowAtPoint(p); + TableModel model = jTableModInFv.getModel(); + String mg = (String) model.getValueAt(rowIndex, 1); + String mv = (String) model.getValueAt(rowIndex, 2); + String pg = (String) model.getValueAt(rowIndex, 3); + String pv = (String) model.getValueAt(rowIndex, 4); + ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv); + String details = "PackageGuid: " + pg + "; ModuleVer:" + mv + "; PkgVer:" + pv; + if (mi != null) { + details = "In Package " + mi.getPackageId().getName() + "; ModuleVer:" + mv + "; PkgVer:" + pv; + } + JOptionPane.showMessageDialog(frame, details); + } + } + + }); } return jTableModInFv; } @@ -2491,12 +2733,78 @@ public class FpdFlash extends IInternalFrame { */ private JTable getJTableFpdModules() { if (jTableFpdModules == null) { - fpdModTableModel = new NonEditableTableModel(); + fpdModTableModel = new IDefaultTableModel(); TableSorter sorter = new TableSorter(fpdModTableModel); - jTableFpdModules = new JTable(sorter); + jTableFpdModules = new JTable(sorter){ + /** + * + */ + private static final long serialVersionUID = -4666296888377637808L; + + public String getToolTipText(MouseEvent e) { + String tip = null; + java.awt.Point p = e.getPoint(); + int rowIndex = rowAtPoint(p); +// int colIndex = columnAtPoint(p); +// int realColumnIndex = convertColumnIndexToModel(colIndex); + + TableModel model = getModel(); + String mg = (String) model.getValueAt(rowIndex, 1); + String mv = (String) model.getValueAt(rowIndex, 2); + String pg = (String) model.getValueAt(rowIndex, 3); + String pv = (String) model.getValueAt(rowIndex, 4); + String arch = (String) model.getValueAt(rowIndex, 5); + ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv); + if (mi != null) { + tip = "Path: " + mi.getPath() + "; Arch: " + arch + ";"; + } + else { + tip = "No Module Path Information."; + } + + return tip; + } + + }; + + fpdModTableModel.addColumn("Modules in Platform"); + fpdModTableModel.addColumn("mg"); + fpdModTableModel.addColumn("mv"); + fpdModTableModel.addColumn("pg"); + fpdModTableModel.addColumn("pv"); + fpdModTableModel.addColumn("arch"); + + for (int i = 1; i < 6; ++i) { + jTableFpdModules.removeColumn(jTableFpdModules.getColumnModel().getColumn(jTableFpdModules.getColumnCount()-1)); + } jTableFpdModules.setRowHeight(20); jTableFpdModules.setShowGrid(false); - fpdModTableModel.addColumn("Modules in Platform"); + jTableFpdModules.setAutoCreateColumnsFromModel(false); + jTableFpdModules.addMouseListener(new MouseAdapter() { + + /* (non-Javadoc) + * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent) + */ + @Override + public void mouseClicked(MouseEvent arg0) { + if (arg0.getButton() == MouseEvent.BUTTON3) { + java.awt.Point p = arg0.getPoint(); + int rowIndex = jTableFpdModules.rowAtPoint(p); + TableModel model = jTableFpdModules.getModel(); + String mg = (String) model.getValueAt(rowIndex, 1); + String mv = (String) model.getValueAt(rowIndex, 2); + String pg = (String) model.getValueAt(rowIndex, 3); + String pv = (String) model.getValueAt(rowIndex, 4); + ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv); + String details = "PackageGuid: " + pg + "; ModuleVer:" + mv + "; PkgVer:" + pv; + if (mi != null) { + details = "In Package " + mi.getPackageId().getName() + "; ModuleVer:" + mv + "; PkgVer:" + pv; + } + JOptionPane.showMessageDialog(frame, details); + } + } + + }); } return jTableFpdModules; @@ -2535,7 +2843,7 @@ public class FpdFlash extends IInternalFrame { private JButton getJButtonInsert() { if (jButtonInsert == null) { jButtonInsert = new JButton(); - jButtonInsert.setText("<<"); + jButtonInsert.setText("<"); jButtonInsert.setPreferredSize(new java.awt.Dimension(60,20)); jButtonInsert.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { @@ -2545,8 +2853,17 @@ public class FpdFlash extends IInternalFrame { } int rowInModel = ((TableSorter)jTableFpdModules.getModel()).getModelRowIndex(selectedRowRight); + String name = fpdModTableModel.getValueAt(rowInModel, 0)+""; + String mg = fpdModTableModel.getValueAt(rowInModel, 1)+""; + String mv = fpdModTableModel.getValueAt(rowInModel, 2)+""; + String pg = fpdModTableModel.getValueAt(rowInModel, 3)+""; + String pv = fpdModTableModel.getValueAt(rowInModel, 4)+""; + String arch = fpdModTableModel.getValueAt(rowInModel, 5)+""; + String[] row = {name, mg, mv, pg, pv, arch}; + if (name.length() == 0 || name.equals("N/A")) { + return; + } - String[] row = {jTableFpdModules.getValueAt(selectedRowRight, 0)+""}; int selectedRowLeft = jTableModInFv.getSelectedRow(); if (selectedRowLeft < 0) { modInFvTableModel.addRow(row); @@ -2572,7 +2889,7 @@ public class FpdFlash extends IInternalFrame { if (jButtonRemove == null) { jButtonRemove = new JButton(); jButtonRemove.setPreferredSize(new java.awt.Dimension(60,20)); - jButtonRemove.setText(">>"); + jButtonRemove.setText(">"); jButtonRemove.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { int selectedRowLeft = jTableModInFv.getSelectedRow(); @@ -2580,7 +2897,20 @@ public class FpdFlash extends IInternalFrame { return; } - String[] row = {jTableModInFv.getValueAt(selectedRowLeft, 0)+""}; + String name = modInFvTableModel.getValueAt(selectedRowLeft, 0)+""; + String mg = modInFvTableModel.getValueAt(selectedRowLeft, 1)+""; + String mv = modInFvTableModel.getValueAt(selectedRowLeft, 2)+""; + String pg = modInFvTableModel.getValueAt(selectedRowLeft, 3)+""; + String pv = modInFvTableModel.getValueAt(selectedRowLeft, 4)+""; + String arch = modInFvTableModel.getValueAt(selectedRowLeft, 5)+""; + String[] row = {name, mg, mv, pg, pv, arch}; + String moduleKey = mg + " " + mv + " " + pg + " " + pv + " " + arch; + if (name.length() == 0 || name.equals("N/A") || ffc.getModuleSA(moduleKey) == null) { + JOptionPane.showMessageDialog(frame, "Module " + name + " not exists in platform. If you want to add back this module, please first add it into current platform. " + moduleKey ); + modInFvTableModel.removeRow(selectedRowLeft); + return; + } + fpdModTableModel.addRow(row); int viewIndex = ((TableSorter) jTableFpdModules.getModel()).getViewIndexArray()[jTableFpdModules .getRowCount() - 1]; @@ -2637,23 +2967,22 @@ public class FpdFlash extends IInternalFrame { // Vector vModInFv = new Vector(); for (int i = 0; i < jTableModInFv.getRowCount(); ++i) { - String moduleName = jTableModInFv.getValueAt(i, 0)+""; - if (moduleName.length() == 0) { + String moduleName = modInFvTableModel.getValueAt(i, 0)+""; + if (moduleName.length() == 0 || moduleName.equals("N/A")) { continue; } - ModuleIdentification mi = null; - Set key = mGuidToModuleId.keySet(); - Iterator iter = key.iterator(); - while (iter.hasNext()) { - String guid = iter.next(); - mi = mGuidToModuleId.get(guid); - if (mi.getName().equals(moduleName)) { - String[] sa = {guid, WorkspaceProfile.getModuleBaseName(mi)}; - vModInFv.add(sa); - ffc.updateFvBindingInModuleSA (mi, title); - break; - } - } + + String mg = modInFvTableModel.getValueAt(i, 1)+""; + String mv = modInFvTableModel.getValueAt(i, 2)+""; + String pg = modInFvTableModel.getValueAt(i, 3)+""; + String pv = modInFvTableModel.getValueAt(i, 4)+""; + String arch = modInFvTableModel.getValueAt(i, 5)+""; + + String moduleInfo = mg + " " + mv + " " + pg + " " + pv + " " + arch; + + String[] sa = { mg, mv, pg, pv, arch}; + vModInFv.add(sa); + ffc.updateFvBindingInModuleSA(moduleInfo, title); } ffc.removeBuildOptionsUserExtensions(title);