X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=Tools%2FSource%2FFrameworkWizard%2Fsrc%2Forg%2Ftianocore%2Fframeworkwizard%2Fplatform%2Fui%2FFpdFlash.java;h=e40caf9445e2e8c913ea2f513d3fc731c7d25609;hp=690291bd506ff019613f2734589f91e05f6cacf1;hb=98c207975ec9acc2a4a65fe8c5e3e4f5ab824349;hpb=4da2e625971af7431a8f4266482b0770accb9fc6 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 690291bd50..e40caf9445 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,10 +25,14 @@ import javax.swing.JButton; 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.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; import java.awt.event.ActionEvent; @@ -36,11 +40,16 @@ import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +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; import java.util.Map; import java.util.Set; +import java.util.Vector; import javax.swing.JCheckBox; import javax.swing.JTextField; @@ -59,6 +68,7 @@ import javax.swing.table.TableColumn; import javax.swing.table.TableModel; import javax.swing.JComboBox; import java.awt.Dimension; +import javax.swing.JSplitPane; public class FpdFlash extends IInternalFrame { @@ -66,6 +76,7 @@ public class FpdFlash extends IInternalFrame { * */ private static final long serialVersionUID = 1L; + private final int startIndexOfDynamicTab = 2; static JFrame frame; private JPanel jContentPane = null; private JPanel jPanelContentEast = null; @@ -124,6 +135,36 @@ public class FpdFlash extends IInternalFrame { private JScrollPane jScrollPane = null; private JTable jTableFvImageOpts = null; private JButton jButtonUpdateFvImage = null; + private JPanel jPanelFdfN = null; + private JPanel jPanelFdfS = null; + private JSplitPane jSplitPaneFdfC = null; + private JPanel jPanelFdfCTop = null; + private JPanel jPanelFdfCBottom = null; + private JPanel jPanelFdfCTopN = null; + private JPanel jPanelFdfCTopS = null; + private JPanel jPanelFdfCTopC = null; + private JPanel jPanelFdfCBottomN = null; + private JPanel jPanelFdfCBottomC = null; + private JLabel jLabelFvInFdf = null; + private JLabel jLabelFvAdditional = null; + private JScrollPane jScrollPaneFvInFdf = null; + private JTable jTableFvInFdf = null; + private NonEditableTableModel fvInFdfTableModel = null; // @jve:decl-index=0:visual-constraint="" + private JButton jButtonFvInFdfOptions = null; + private JScrollPane jScrollPaneFvAdditional = null; + private JTable jTableFvAdditional = null; + private DefaultTableModel fvAdditionalTableModel = null; // @jve:decl-index=0:visual-constraint="" + private JButton jButtonAddFv = null; + private JButton jButtonDelFv = null; + private JButton jButtonAddFvOptions = null; + private int tabIndexForFv = -1; + private int selectedRowInFvAdditionalTable = -1; + private String oldFvName = null; + private Vector vBlockSize = new Vector(); + private String erasePolarity = null; + boolean memModified = false; + + public FpdFlash() { super(); // TODO Auto-generated constructor stub @@ -205,8 +246,8 @@ public class FpdFlash extends IInternalFrame { private JTabbedPane getJTabbedPane() { if (jTabbedPane == null) { jTabbedPane = new JTabbedPane(); - jTabbedPane.addTab("FV Images", null, getJPanelFvImages(), null); - jTabbedPane.addTab("Flash Definition File", null, getJPanelFdf(), null); + jTabbedPane.addTab("General", null, getJPanelFdf(), null); + jTabbedPane.addTab("Advanced", null, getJPanelFvImages(), null); } return jTabbedPane; @@ -225,6 +266,30 @@ public class FpdFlash extends IInternalFrame { // jPanelFvImages.add(getJPanelFvImageW(), java.awt.BorderLayout.WEST); jPanelFvImages.add(getJPanelFvImageS(), java.awt.BorderLayout.SOUTH); jPanelFvImages.add(getJPanelFvImageC(), java.awt.BorderLayout.CENTER); + jPanelFvImages.addComponentListener(new java.awt.event.ComponentAdapter() { + public void componentShown(java.awt.event.ComponentEvent e) { + fvImageParaTableModel.setRowCount(0); + fvPropertyTableModel.setRowCount(0); + + if (ffc.getFvImagesFvImageCount("Attributes") == 0) { + return; + } + String[][] saa = new String[ffc.getFvImagesFvImageCount("Attributes")][2]; + ffc.getFvImagesFvImages(saa, "Attributes"); + + int i = 0; + while (i < saa.length) { + fvImageParaTableModel.addRow(saa[i]); + ++i; + } + + saa = new String[ffc.getFvImagesNameValueCount()][2]; + ffc.getFvImagesNameValues(saa); + for (int m = 0; m < saa.length; ++m) { + fvPropertyTableModel.addRow(saa[m]); + } + } + }); } return jPanelFvImages; @@ -246,7 +311,7 @@ public class FpdFlash extends IInternalFrame { jLabelFvPropName.setEnabled(false); jLabelFvPropName.setPreferredSize(new java.awt.Dimension(38,20)); FlowLayout flowLayout2 = new FlowLayout(); - flowLayout2.setAlignment(java.awt.FlowLayout.CENTER); + flowLayout2.setAlignment(java.awt.FlowLayout.LEFT); flowLayout2.setHgap(15); jPanelFvImageN = new JPanel(); jPanelFvImageN.setPreferredSize(new java.awt.Dimension(576,100)); @@ -289,7 +354,7 @@ public class FpdFlash extends IInternalFrame { private JCheckBox getJCheckBoxFvProperty() { if (jCheckBoxFvProperty == null) { jCheckBoxFvProperty = new JCheckBox(); - jCheckBoxFvProperty.setText("FV Properties"); + jCheckBoxFvProperty.setText("Global FV Variables"); jCheckBoxFvProperty.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent arg0) { @@ -561,10 +626,10 @@ public class FpdFlash extends IInternalFrame { private JComboBox getJComboBoxFvParaType() { if (jComboBoxFvParaType == null) { jComboBoxFvParaType = new JComboBox(); - jComboBoxFvParaType.addItem("ImageName"); +// jComboBoxFvParaType.addItem("ImageName"); jComboBoxFvParaType.addItem("Attributes"); jComboBoxFvParaType.addItem("Options"); - jComboBoxFvParaType.addItem("Components"); +// jComboBoxFvParaType.addItem("Components"); jComboBoxFvParaType.setPreferredSize(new java.awt.Dimension(180,20)); jComboBoxFvParaType.setEnabled(false); jComboBoxFvParaType.addItemListener(new ItemListener() { @@ -808,13 +873,13 @@ public class FpdFlash extends IInternalFrame { fvImageParaTableModel.addColumn("Type"); - TableColumn typeCol = jTableFvInfo.getColumnModel().getColumn(1); - JComboBox cb = new JComboBox(); - cb.addItem("ValidImageNames"); - cb.addItem("Attributes"); - cb.addItem("Options"); - cb.addItem("Components"); - typeCol.setCellEditor(new DefaultCellEditor(cb)); +// TableColumn typeCol = jTableFvInfo.getColumnModel().getColumn(1); +// JComboBox cb = new JComboBox(); +// cb.addItem("ImageName"); +// cb.addItem("Attributes"); +// cb.addItem("Options"); +// cb.addItem("Components"); +// typeCol.setCellEditor(new DefaultCellEditor(cb)); jTableFvInfo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jTableFvInfo.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ @@ -828,6 +893,14 @@ public class FpdFlash extends IInternalFrame { } else{ int selectedRow = lsm.getMinSelectionIndex(); + if (fvImageParaTableModel.getValueAt(selectedRow, 1).equals("ImageName")) { + String[] fvNames = fvImageParaTableModel.getValueAt(selectedRow, 0).toString().split(" "); + for (int i = 0; i < fvNames.length; ++i) { + String[] row = {fvNames[i]}; + fvImageNameTableModel.addRow(row); + } + return; + } LinkedHashMap optionMap = new LinkedHashMap(); ffc.getFvImagesFvImageOptions(selectedRow, optionMap); if (optionMap.size() > 0){ @@ -862,7 +935,7 @@ public class FpdFlash extends IInternalFrame { if (jButtonDelFvImage == null) { jButtonDelFvImage = new JButton(); jButtonDelFvImage.setPreferredSize(new java.awt.Dimension(120,20)); -// jButton6.setEnabled(false); + jButtonDelFvImage.setEnabled(false); jButtonDelFvImage.setText("Delete Row"); jButtonDelFvImage.addActionListener(new AbstractAction() { /** @@ -904,13 +977,6 @@ public class FpdFlash extends IInternalFrame { return; } -// jLabel5.setEnabled(selected); -// jTextField4.setEnabled(selected); -// jLabel6.setEnabled(selected); -// jTextField5.setEnabled(selected); -// jButton7.setEnabled(selected); -// jButton8.setEnabled(selected); - } }); @@ -952,18 +1018,19 @@ public class FpdFlash extends IInternalFrame { */ private JPanel getJPanelFdf() { if (jPanelFdf == null) { - FlowLayout flowLayout1 = new FlowLayout(); - flowLayout1.setAlignment(FlowLayout.LEFT); jPanelFdf = new JPanel(); - jPanelFdf.setLayout(flowLayout1); - jPanelFdf.add(getJCheckBoxFdf(), null); - jPanelFdf.add(getJTextFieldFdf(), null); - jPanelFdf.add(getJButtonFdfBrowse(), null); + jPanelFdf.setLayout(new BorderLayout()); + + jPanelFdf.add(getJPanelFdfN(), java.awt.BorderLayout.NORTH); + jPanelFdf.add(getJPanelFdfS(), java.awt.BorderLayout.SOUTH); + jPanelFdf.add(getJSplitPaneFdfC(), java.awt.BorderLayout.CENTER); jPanelFdf.addComponentListener(new ComponentAdapter(){ public void componentShown(ComponentEvent e) { - if (ffc.getFlashDefinitionFile() != null) { - jTextFieldFdf.setText(ffc.getFlashDefinitionFile()); - } +// if (ffc.getFlashDefinitionFile() != null) { +// jTextFieldFdf.setText(ffc.getFlashDefinitionFile()); +// initFvInFdfTable(System.getenv("WORKSPACE") + File.separator + jTextFieldFdf.getText()); +// +// } } public void componentHidden(ComponentEvent e) { if (jCheckBoxFdf.isSelected()) { @@ -1012,6 +1079,7 @@ public class FpdFlash extends IInternalFrame { if (jTextFieldFdf == null) { jTextFieldFdf = new JTextField(); jTextFieldFdf.setEnabled(false); + jTextFieldFdf.setEditable(false); jTextFieldFdf.setPreferredSize(new Dimension(300, 20)); jTextFieldFdf.addFocusListener(new java.awt.event.FocusAdapter() { public void focusLost(java.awt.event.FocusEvent e) { @@ -1055,6 +1123,9 @@ public class FpdFlash extends IInternalFrame { return; } jTextFieldFdf.setText(filePath.substring(wsDir.length() + 1).replace('\\', '/')); + ffc.genFlashDefinitionFile(jTextFieldFdf.getText()); + docConsole.setSaved(false); + initFvInFdfTable(filePath); } } @@ -1062,7 +1133,101 @@ public class FpdFlash extends IInternalFrame { } return jButtonFdfBrowse; } + + private void initFvAdditionalTable() { + Vector vFvNames = new Vector(); + ffc.getFvImagesFvImageFvImageNames(vFvNames); + for (int i = 0; i < vFvNames.size(); ++i) { + String fvName = vFvNames.get(i); + if (fvNameExists(fvName)) { + continue; + } + HashMap mFvOpts = new HashMap(); + ffc.getFvImagesFvImageOptions(fvName, mFvOpts); + String bSize = ""; + String numBlks = ""; + String fvSize = ""; + String fvFile = ""; + if (mFvOpts.get("EFI_FILE_NAME") != null) { + fvFile = mFvOpts.get("EFI_FILE_NAME"); + } + if (mFvOpts.get("EFI_BLOCK_SIZE") != null && mFvOpts.get("EFI_NUM_BLOCKS") != null) { + bSize = mFvOpts.get("EFI_BLOCK_SIZE"); + numBlks = mFvOpts.get("EFI_NUM_BLOCKS"); + boolean blockSizeWellFormat = true; + boolean numOfBlockWellFormat = true; + if (!DataValidation.isHexDoubleWordDataType(bSize) && !DataValidation.isInt(bSize)) { + blockSizeWellFormat = false; + JOptionPane.showMessageDialog(frame, fvName + " block size bad format."); + } + if (!DataValidation.isHexDoubleWordDataType(numBlks) && !DataValidation.isInt(numBlks)) { + numOfBlockWellFormat = false; + JOptionPane.showMessageDialog(frame, fvName + " number of blocks bad format."); + } + if (blockSizeWellFormat && numOfBlockWellFormat) { + int size = Integer.decode(bSize); + int num = Integer.decode(numBlks); + fvSize = size*num + ""; + } + } + fvAdditionalTableModel.addRow(new String[]{fvName, fvSize, fvFile}); + addTabForFv(new FvInfoFromFdf(fvName, "", "")); + } + } + private void initFvInFdfTable(String fdfPath){ + Vector vFvInfo = new Vector(); + getFvInfoFromFdf(fdfPath, vFvInfo); + getFlashInfoFromFdf (fdfPath, vBlockSize, erasePolarity); + ffc.setTypedFvImageNameValue("Attributes", "ErasePolarity", erasePolarity); + // BugBug: assume all blocks have same size; + String blkSize = vBlockSize.get(0); + + getFvInFdfTableModel().setRowCount(0); + for (int j = 0; j < vFvInfo.size(); ++j) { + FvInfoFromFdf fvInfo = vFvInfo.get(j); + String[] row = {fvInfo.getFvName(), fvInfo.getSize(), fvInfo.getEfiFileName()}; + getFvInFdfTableModel().addRow(row); + try { + int blockSize = Integer.decode(blkSize); + int fvSize = Integer.decode(row[1]); + int numBlocks = fvSize/blockSize; + // if no options for this FV before, generate a new options entry for this FV. + if (ffc.getFvImagesFvImageWithName(row[0], "Options") == null) { + HashMap mOptions = new HashMap(); + mOptions.put("EFI_BLOCK_SIZE", blkSize); + mOptions.put("EFI_NUM_BLOCKS", numBlocks+""); + mOptions.put("EFI_FILE_NAME", row[2]); + ffc.genFvImagesFvImage(new String[]{row[0]}, "Options", mOptions); + memModified = true; + } + else { + ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_BLOCK_SIZE", blkSize); + ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_NUM_BLOCKS", numBlocks + ""); + ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_FILE_NAME", row[2]); + } + } + catch (NumberFormatException e){ + JOptionPane.showMessageDialog(frame, e.getMessage()); + } + } + + for (int k = 0; k < vFvInfo.size(); ++k) { + FvInfoFromFdf fvInfo = vFvInfo.get(k); + addTabForFv(fvInfo); + } + + } + + private void addTabForFv (FvInfoFromFdf fvInfo) { + String fvName = fvInfo.getFvName(); + String outputFile = fvInfo.getEfiFileName(); + int index = jTabbedPane.indexOfTab(fvName); + if (index >= startIndexOfDynamicTab) { + return; + } + jTabbedPane.addTab(fvName, null, new ModuleOrderPane(fvName, outputFile), null); + } /** * This method initializes jTextField4 * @@ -1204,6 +1369,7 @@ public class FpdFlash extends IInternalFrame { jButtonUpdateFvImage = new JButton(); jButtonUpdateFvImage.setPreferredSize(new Dimension(120, 20)); jButtonUpdateFvImage.setActionCommand("Update"); + jButtonUpdateFvImage.setEnabled(false); jButtonUpdateFvImage.setText("Update FV"); jButtonUpdateFvImage.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { @@ -1231,6 +1397,448 @@ public class FpdFlash extends IInternalFrame { return jButtonUpdateFvImage; } +// private JButton getJButtonTest() { +// if (jButtonTest == null) { +// jButtonTest = new JButton(); +// jButtonTest.addActionListener(new java.awt.event.ActionListener() { +// public void actionPerformed(java.awt.event.ActionEvent e) { +// docConsole.setSaved(false); +// String[][] includeModules = {{"1", "a"}, {"2", "b"}}; +// ffc.genBuildOptionsUserExtensions("FV_RECOVERY", "FvRecovery.inf", null, includeModules); +// int i = ffc.getUserExtsIncModCount("FV_RECOVERY"); +// String[][] saa = new String[i][2]; +// ffc.getUserExtsIncMods("FV_RECOVERY", saa); +// jTextFieldFdf.setText(saa[0][0] + saa[0][1] + saa[1][0] + saa[1][1]); +// +// } +// }); +// } +// return jButtonTest; +// } + + /** + * This method initializes jPanelFdfN + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelFdfN() { + if (jPanelFdfN == null) { + jPanelFdfN = new JPanel(); + jPanelFdfN.add(getJCheckBoxFdf(), null); + jPanelFdfN.add(getJTextFieldFdf(), null); + jPanelFdfN.add(getJButtonFdfBrowse(), null); + } + return jPanelFdfN; + } + + /** + * This method initializes jPanelFdfS + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelFdfS() { + if (jPanelFdfS == null) { + FlowLayout flowLayout4 = new FlowLayout(); + flowLayout4.setAlignment(java.awt.FlowLayout.RIGHT); + jPanelFdfS = new JPanel(); + jPanelFdfS.setLayout(flowLayout4); + jPanelFdfS.add(getJButtonAddFv(), null); + jPanelFdfS.add(getJButtonDelFv(), null); + jPanelFdfS.add(getJButtonAddFvOptions(), null); + } + return jPanelFdfS; + } + + /** + * This method initializes jSplitPaneFdfC + * + * @return javax.swing.JSplitPane + */ + private JSplitPane getJSplitPaneFdfC() { + if (jSplitPaneFdfC == null) { + jSplitPaneFdfC = new JSplitPane(); + jSplitPaneFdfC.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); + jSplitPaneFdfC.setDividerSize(5); + jSplitPaneFdfC.setTopComponent(getJPanelFdfCTop()); + jSplitPaneFdfC.setBottomComponent(getJPanelFdfCBottom()); + jSplitPaneFdfC.setDividerLocation(280); + } + return jSplitPaneFdfC; + } + + /** + * This method initializes jPanelFdfCTop + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelFdfCTop() { + if (jPanelFdfCTop == null) { + jPanelFdfCTop = new JPanel(); + jPanelFdfCTop.setLayout(new BorderLayout()); + jPanelFdfCTop.add(getJPanelFdfCTopN(), java.awt.BorderLayout.NORTH); + jPanelFdfCTop.add(getJPanelFdfCTopS(), java.awt.BorderLayout.SOUTH); + jPanelFdfCTop.add(getJPanelFdfCTopC(), java.awt.BorderLayout.CENTER); + } + return jPanelFdfCTop; + } + + /** + * This method initializes jPanelFdfCBottom + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelFdfCBottom() { + if (jPanelFdfCBottom == null) { + jPanelFdfCBottom = new JPanel(); + jPanelFdfCBottom.setLayout(new BorderLayout()); + jPanelFdfCBottom.add(getJPanelFdfCBottomN(), java.awt.BorderLayout.NORTH); + jPanelFdfCBottom.add(getJPanelFdfCBottomC(), java.awt.BorderLayout.CENTER); + } + return jPanelFdfCBottom; + } + + /** + * This method initializes jPanelFdfCTopN + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelFdfCTopN() { + if (jPanelFdfCTopN == null) { + jLabelFvInFdf = new JLabel(); + jLabelFvInFdf.setText("FVs in Flash Definition File"); + jPanelFdfCTopN = new JPanel(); + jPanelFdfCTopN.add(jLabelFvInFdf, null); + } + return jPanelFdfCTopN; + } + + /** + * This method initializes jPanelFdfCTopS + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelFdfCTopS() { + if (jPanelFdfCTopS == null) { + FlowLayout flowLayout1 = new FlowLayout(); + flowLayout1.setAlignment(java.awt.FlowLayout.RIGHT); + jPanelFdfCTopS = new JPanel(); + jPanelFdfCTopS.setLayout(flowLayout1); + jPanelFdfCTopS.add(getJButtonFvInFdfOptions(), null); + } + return jPanelFdfCTopS; + } + + /** + * This method initializes jPanelFdfCTopC + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelFdfCTopC() { + if (jPanelFdfCTopC == null) { + jPanelFdfCTopC = new JPanel(); + jPanelFdfCTopC.add(getJScrollPaneFvInFdf(), null); + } + return jPanelFdfCTopC; + } + + /** + * This method initializes jPanelFdfCBottomN + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelFdfCBottomN() { + if (jPanelFdfCBottomN == null) { + jLabelFvAdditional = new JLabel(); + jLabelFvAdditional.setText("Additional FVs"); + jPanelFdfCBottomN = new JPanel(); + jPanelFdfCBottomN.add(jLabelFvAdditional, null); + } + return jPanelFdfCBottomN; + } + + /** + * This method initializes jPanelFdfCBottomC + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelFdfCBottomC() { + if (jPanelFdfCBottomC == null) { + jPanelFdfCBottomC = new JPanel(); + jPanelFdfCBottomC.add(getJScrollPaneFvAdditional(), null); + } + return jPanelFdfCBottomC; + } + + /** + * This method initializes jScrollPaneFvInFdf + * + * @return javax.swing.JScrollPane + */ + private JScrollPane getJScrollPaneFvInFdf() { + if (jScrollPaneFvInFdf == null) { + jScrollPaneFvInFdf = new JScrollPane(); + jScrollPaneFvInFdf.setPreferredSize(new java.awt.Dimension(653,200)); + jScrollPaneFvInFdf.setViewportView(getJTableFvInFdf()); + } + return jScrollPaneFvInFdf; + } + + /** + * This method initializes jTableFvInFdf + * + * @return javax.swing.JTable + */ + private JTable getJTableFvInFdf() { + if (jTableFvInFdf == null) { + jTableFvInFdf = new JTable(); + jTableFvInFdf.setRowHeight(20); + jTableFvInFdf.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jTableFvInFdf.setModel(getFvInFdfTableModel()); + } + return jTableFvInFdf; + } + + /** + * This method initializes fvInFdfTableModel + * + * @return org.tianocore.frameworkwizard.platform.ui.NonEditableTableModel + */ + private NonEditableTableModel getFvInFdfTableModel() { + if (fvInFdfTableModel == null) { + fvInFdfTableModel = new NonEditableTableModel(); + fvInFdfTableModel.addColumn("FV Name"); + fvInFdfTableModel.addColumn("Size"); + fvInFdfTableModel.addColumn("Corresponding File Name"); + } + return fvInFdfTableModel; + } + + /** + * This method initializes jButtonFvInFdfOptions + * + * @return javax.swing.JButton + */ + private JButton getJButtonFvInFdfOptions() { + if (jButtonFvInFdfOptions == null) { + jButtonFvInFdfOptions = new JButton(); + jButtonFvInFdfOptions.setPreferredSize(new java.awt.Dimension(80,20)); + jButtonFvInFdfOptions.setEnabled(false); + jButtonFvInFdfOptions.setText("Options"); + jButtonFvInFdfOptions.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent e) { + int selectedRow = jTableFvInFdf.getSelectedRow(); + if (selectedRow < 0) { + return; + } + } + }); + } + return jButtonFvInFdfOptions; + } + + /** + * This method initializes jScrollPaneFvAdditional + * + * @return javax.swing.JScrollPane + */ + private JScrollPane getJScrollPaneFvAdditional() { + if (jScrollPaneFvAdditional == null) { + jScrollPaneFvAdditional = new JScrollPane(); + jScrollPaneFvAdditional.setPreferredSize(new java.awt.Dimension(653,200)); + jScrollPaneFvAdditional.setViewportView(getJTableFvAdditional()); + } + return jScrollPaneFvAdditional; + } + + /** + * This method initializes jTableFvAdditional + * + * @return javax.swing.JTable + */ + private JTable getJTableFvAdditional() { + if (jTableFvAdditional == null) { + jTableFvAdditional = new JTable(); + jTableFvAdditional.setRowHeight(20); + jTableFvAdditional.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jTableFvAdditional.setModel(getFvAdditionalTableModel()); + + jTableFvAdditional.getSelectionModel().addListSelectionListener(new ListSelectionListener() { + public void valueChanged(ListSelectionEvent e) { + if (e.getValueIsAdjusting()) { + return; + } + ListSelectionModel lsm = (ListSelectionModel) e.getSource(); + if (lsm.isSelectionEmpty()) { + return; + } else { + selectedRowInFvAdditionalTable = lsm.getMinSelectionIndex(); + oldFvName = jTableFvAdditional.getValueAt(selectedRowInFvAdditionalTable, 0)+""; + } + } + }); + + jTableFvAdditional.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) { + if (col == 0) { + String newFvName = m.getValueAt(row, 0) + ""; + if (newFvName.equals(oldFvName)) { + return; + } + if (fvNameExists(newFvName)) { + JOptionPane.showMessageDialog(frame, "This FV already exists. Please choose another FV name."); + m.setValueAt(oldFvName, row, 0); + return; + } + + tabIndexForFv = jTabbedPane.indexOfTab(oldFvName); + if (tabIndexForFv >= startIndexOfDynamicTab) { + jTabbedPane.setTitleAt(tabIndexForFv, newFvName); + // change FvName in UserExtensions + ffc.updateBuildOptionsUserExtensions(oldFvName, newFvName); + // change FvBinding in ModuleSA + ffc.appendFvBindingFor(oldFvName, newFvName); + ffc.removeFvBindingAll(oldFvName); + // change FvImageNames in Flash + ffc.updateFvImageNameAll(oldFvName, newFvName); + + } else { + jTabbedPane.addTab(newFvName, new ModuleOrderPane(newFvName, "")); + // Add FvImageNames in Flash + String[] fvNames = {newFvName}; + ffc.AddFvImageFvImageNames(fvNames); + } + + oldFvName = newFvName; + } + docConsole.setSaved(false); + } + } + }); + } + return jTableFvAdditional; + } + + private boolean fvNameExistsInFvInFdfTable (String fvName) { + for (int i = 0; i < jTableFvInFdf.getRowCount(); ++i) { + if (fvInFdfTableModel.getValueAt(i, 0).equals(fvName)) { + return true; + } + } + return false; + } + + private boolean fvNameExists (String fvName) { + if (fvNameExistsInFvInFdfTable(fvName)) { + return true; + } + + for (int j = 0; j < jTableFvAdditional.getRowCount(); ++j) { + if (fvAdditionalTableModel.getValueAt(j, 0).equals(fvName) && j != selectedRowInFvAdditionalTable) { + return true; + } + } + return false; + } + + /** + * This method initializes fvAdditionalTableModel + * + * @return javax.swing.table.DefaultTableModel + */ + private DefaultTableModel getFvAdditionalTableModel() { + if (fvAdditionalTableModel == null) { + fvAdditionalTableModel = new DefaultTableModel(); + fvAdditionalTableModel.addColumn("FV Name"); + fvAdditionalTableModel.addColumn("Size"); + fvAdditionalTableModel.addColumn("Corresponding File Name"); + } + return fvAdditionalTableModel; + } + + /** + * This method initializes jButtonAddFv + * + * @return javax.swing.JButton + */ + private JButton getJButtonAddFv() { + if (jButtonAddFv == null) { + jButtonAddFv = new JButton(); + jButtonAddFv.setPreferredSize(new java.awt.Dimension(80,20)); + jButtonAddFv.setEnabled(true); + jButtonAddFv.setText("New"); + jButtonAddFv.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent e) { + if (jTableFvAdditional.isEditing()) { + jTableFvAdditional.getCellEditor().stopCellEditing(); + } + String[] row = {"", "", ""}; + fvAdditionalTableModel.addRow(row); + } + }); + } + return jButtonAddFv; + } + + /** + * This method initializes jButtonDelFv + * + * @return javax.swing.JButton + */ + private JButton getJButtonDelFv() { + if (jButtonDelFv == null) { + jButtonDelFv = new JButton(); + jButtonDelFv.setPreferredSize(new java.awt.Dimension(80,20)); + jButtonDelFv.setEnabled(true); + jButtonDelFv.setText("Delete"); + jButtonDelFv.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent e) { + //delete row in FvAdditional table. + int selectedRow = jTableFvAdditional.getSelectedRow(); + if (selectedRow < 0) { + return; + } + String fvName = fvAdditionalTableModel.getValueAt(selectedRow, 0) + ""; + fvAdditionalTableModel.removeRow(selectedRow); + // + //delete tab with selected FV name. + // + jTabbedPane.removeTabAt(jTabbedPane.indexOfTab(fvName)); + //delete FV Name from FvImages element. + ffc.updateFvImageNameAll(fvName, null); + //delete FvBinding from ModuleSA. + ffc.removeFvBindingAll(fvName); + docConsole.setSaved(false); + } + }); + } + return jButtonDelFv; + } + + /** + * This method initializes jButtonAddFvOptions + * + * @return javax.swing.JButton + */ + private JButton getJButtonAddFvOptions() { + if (jButtonAddFvOptions == null) { + jButtonAddFvOptions = new JButton(); + jButtonAddFvOptions.setPreferredSize(new java.awt.Dimension(80,20)); + jButtonAddFvOptions.setEnabled(false); + jButtonAddFvOptions.setText("Options"); + jButtonAddFvOptions.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent e) { + System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed() + } + }); + } + return jButtonAddFvOptions; + } + /** * @param args */ @@ -1260,34 +1868,24 @@ public class FpdFlash extends IInternalFrame { if (jTableFvInfo.isEditing()) { jTableFvInfo.getCellEditor().stopCellEditing(); } + if (jTableFvAdditional.isEditing()) { + jTableFvAdditional.getCellEditor().stopCellEditing(); + } } }); } private void init(FpdFileContents ffc) { - if (ffc.getFvImagesFvImageCount() == 0) { - return; - } - String[][] saa = new String[ffc.getFvImagesFvImageCount()][2]; -// ArrayList> options = new ArrayList>(ffc.getFvImagesFvImageCount()); -// -// for (int j = 0; j < ffc.getFvImagesFvImageCount(); ++j){ -// options.add(new LinkedHashMap()); -// } - ffc.getFvImagesFvImages(saa); - - int i = 0; - while (i < saa.length) { - - fvImageParaTableModel.addRow(saa[i]); - ++i; + jTextFieldFdf.setText(""); + String fdfFile = ffc.getFlashDefinitionFile(); + if (fdfFile != null) { + jTextFieldFdf.setText(fdfFile); } -// String fdfFile = ffc.getFlashDefinitionFile(); -// if (fdfFile != null) { -// jTextField3.setText(fdfFile); -// } + String fdfPath = System.getenv("WORKSPACE") + File.separator + fdfFile; + initFvInFdfTable(fdfPath); + initFvAdditionalTable(); } private void getOptionNameValue(Map m){ @@ -1312,6 +1910,605 @@ public class FpdFlash extends IInternalFrame { } return jContentPane; } + + private void getFlashInfoFromFdf (String fdfPath, Vector vBlockSize, String erasePolarity) { + File fdf = new File(fdfPath); + if (!fdf.exists()) { + return; + } + int lines = 0; + + try { + FileReader reader = new FileReader(fdf); + BufferedReader in = new BufferedReader(reader); + String str; + + while ((str = in.readLine()) != null) { + ++lines; + str = str.trim(); + // + // skip empty line, comment (start with //) + // + if (str.length() == 0 || str.startsWith("//")) { + continue; + } + // + // ErasePolarity + // + if (str.startsWith("ErasePolarity")) { + erasePolarity = str.substring(str.indexOf("=") + 1, str.lastIndexOf(",")); + } + // + // dig into Block section. + // + if (str.startsWith("Block") && str.endsWith("}")) { + String[] blockSec = str.split(","); + String nv = blockSec[1].trim(); + String[] sizeSec = nv.split("="); + vBlockSize.add(sizeSec[1].trim()); + } + + } + + reader.close(); + in.close(); + } + catch (Exception e) { + + } + } + + private void getFvInfoFromFdf(String fdfPath, Vector vFvInfo) { + File fdf = new File(fdfPath); + if (!fdf.exists()) { + return; + } + int lines = 0; + + try { + FileReader reader = new FileReader(fdf); + BufferedReader in = new BufferedReader(reader); + String str; + + while ((str = in.readLine()) != null) { + ++lines; + str = str.trim(); + // + // skip empty line, comment (start with //) + // + if (str.length() == 0 || str.startsWith("//")) { + continue; + } + // + // dig into Region {} section, create FvInfoFromFdf object for it. + // + if (str.startsWith("Region") && str.endsWith("{")) { + FvInfoFromFdf fvInfo = new FvInfoFromFdf(); + boolean nameFound = false; + boolean sizeFound = false; + while ((str = in.readLine()) != null) { + ++lines; + str = str.trim(); + // + // skip empty line, comment (start with //) + // + if (str.length() == 0 || str.startsWith("//")) { + continue; + } + + if (str.startsWith("Name")) { + int firstQuote = str.indexOf("\""); + int lastQuote = str.lastIndexOf("\""); + fvInfo.setFvName(str.substring(firstQuote + 1, lastQuote)); + nameFound = true; + } + + if (str.startsWith("Size")) { + int equalIndex = str.indexOf("="); + int commaIndex = str.indexOf(","); + fvInfo.setSize(str.substring(equalIndex + 1, commaIndex).trim()); + sizeFound = true; + } + + if (nameFound && sizeFound) { + break; + } + } + + vFvInfo.add(fvInfo); + } + // + // dig into File {} section, supply file name information to existing FvInfoFromFdf object. + // + if (str.startsWith("File")) { + boolean fileNameFound = false; + boolean fvFound = false; + String fileName = ""; + String fvName = ""; + while ((str = in.readLine()) != null) { + ++lines; + str = str.trim(); + // + // skip empty line, comment (start with //) + // + if (str.length() == 0 || str.startsWith("//")) { + continue; + } + + if (str.startsWith("Name")) { + int firstQuote = str.indexOf("\""); + int lastQuote = str.lastIndexOf("\""); + fileName = str.substring(firstQuote + 1, lastQuote); + fileNameFound = true; + } + + if (str.startsWith("Region")) { + int firstQuote = str.indexOf("\""); + int lastQuote = str.lastIndexOf("\""); + fvName = str.substring(firstQuote + 1, lastQuote); + fvFound = true; + } + + if (fileNameFound && fvFound) { + break; + } + } + + for (int i = 0; i mGuidToModuleId = null; + private ArrayList listModGuidInFv = null; + private String title = null; + private String outputFileName = null; + + public ModuleOrderPane(String tabTitle, String file) { + super(new BorderLayout()); + title = tabTitle; + outputFileName = file; + mGuidToModuleId = new HashMap(); + listModGuidInFv = new ArrayList(); + add(getJPanelModOrderN(), java.awt.BorderLayout.NORTH); + add(getJPanelModOrderS(), java.awt.BorderLayout.SOUTH); + add(getJPanelModOrderC(), java.awt.BorderLayout.CENTER); + showModulesInFv(title); + showAllModulesInPlatform(); + } + + private void showModulesInFv(String fvName) { + int size = ffc.getUserExtsIncModCount(fvName); + + if (size != -1) { + String[][] saa = new String[size][2]; + 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 }; + modInFvTableModel.addRow(row); + } + } + // + // From ModuleSAs, get module guids with FvBinding = fvName. + // + Vector vGuid = new Vector(); + ffc.getFrameworkModuleGuid(fvName, vGuid); + // + // If BuildOptions->UserExtensions already contain these module info, + // no need to add them into table again. + // + Iterator iter = vGuid.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)}; + modInFvTableModel.addRow(row); + } + } + + } + + private void showAllModulesInPlatform() { + int size = ffc.getFrameworkModulesCount(); + String[][] saa = new String[size][5]; + ffc.getFrameworkModulesInfo(saa); + + for (int i = 0; i < size; ++i) { + String name = getModuleName(saa[i][0]); + if (existedInTable(name, modInFvTableModel) || existedInTable(name, fpdModTableModel)) { + continue; + } + String[] row = {name}; + fpdModTableModel.addRow(row); + } + + TableSorter sorter = (TableSorter)jTableFpdModules.getModel(); + 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) { + int size = model.getDataVector().size(); + for (int i = 0; i < size; ++i) { + if (((Vector)model.getDataVector().elementAt(i)).contains(name)) { + return true; + } + } + return false; + } + + + + /** + * This method initializes jPanelModOrderN + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelModOrderN() { + if (jPanelModOrderN == null) { + jPanelModOrderN = new JPanel(); + } + return jPanelModOrderN; + } + + /** + * This method initializes jPanelModOrderS + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelModOrderS() { + if (jPanelModOrderS == null) { + FlowLayout flowLayout6 = new FlowLayout(); + flowLayout6.setAlignment(java.awt.FlowLayout.RIGHT); + jPanelModOrderS = new JPanel(); + jPanelModOrderS.setLayout(flowLayout6); + jPanelModOrderS.add(getJButtonOk(), null); + jPanelModOrderS.add(getJButtonCancel(), null); + } + return jPanelModOrderS; + } + + /** + * This method initializes jPanelModOrderC + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelModOrderC() { + if (jPanelModOrderC == null) { + jPanelModOrderC = new JPanel(); + jPanelModOrderC.add(getJScrollPaneModInFv(), null); + jPanelModOrderC.add(getJPanelController(), null); + jPanelModOrderC.add(getJScrollPaneFpdModules(), null); + } + return jPanelModOrderC; + } + + /** + * This method initializes jScrollPaneModInFv + * + * @return javax.swing.JScrollPane + */ + private JScrollPane getJScrollPaneModInFv() { + if (jScrollPaneModInFv == null) { + jScrollPaneModInFv = new JScrollPane(); + jScrollPaneModInFv.setPreferredSize(new java.awt.Dimension(200,500)); + jScrollPaneModInFv.setViewportView(getJTableModInFv()); + } + return jScrollPaneModInFv; + } + + /** + * This method initializes jTableModInFv + * + * @return javax.swing.JTable + */ + private JTable getJTableModInFv() { + if (jTableModInFv == null) { + modInFvTableModel = new NonEditableTableModel(); + modInFvTableModel.addColumn("Module Orders in FV"); + jTableModInFv = new JTable(modInFvTableModel); + jTableModInFv.setRowHeight(20); + jTableModInFv.setShowGrid(false); + + } + return jTableModInFv; + } + + /** + * This method initializes jPanelController + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelController() { + if (jPanelController == null) { + FlowLayout flowLayout5 = new FlowLayout(); + flowLayout5.setVgap(50); + flowLayout5.setHgap(50); + jPanelController = new JPanel(); + jPanelController.setLayout(flowLayout5); + jPanelController.setPreferredSize(new java.awt.Dimension(150,500)); + jPanelController.add(getJButtonUp(), null); + jPanelController.add(getJButtonInsert(), null); + jPanelController.add(getJButtonRemove(), null); + jPanelController.add(getJButtonDown(), null); + } + return jPanelController; + } + + /** + * This method initializes jScrollPaneFpdModules + * + * @return javax.swing.JScrollPane + */ + private JScrollPane getJScrollPaneFpdModules() { + if (jScrollPaneFpdModules == null) { + jScrollPaneFpdModules = new JScrollPane(); + jScrollPaneFpdModules.setPreferredSize(new java.awt.Dimension(200,500)); + jScrollPaneFpdModules.setViewportView(getJTableFpdModules()); + } + return jScrollPaneFpdModules; + } + + /** + * This method initializes jTableFpdModules + * + * @return javax.swing.JTable + */ + private JTable getJTableFpdModules() { + if (jTableFpdModules == null) { + fpdModTableModel = new NonEditableTableModel(); + TableSorter sorter = new TableSorter(fpdModTableModel); + jTableFpdModules = new JTable(sorter); + jTableFpdModules.setRowHeight(20); + jTableFpdModules.setShowGrid(false); + fpdModTableModel.addColumn("Modules in Platform"); + + } + return jTableFpdModules; + } + + /** + * This method initializes jButtonUp + * + * @return javax.swing.JButton + */ + private JButton getJButtonUp() { + if (jButtonUp == null) { + jButtonUp = new JButton(); + jButtonUp.setPreferredSize(new java.awt.Dimension(60,20)); + jButtonUp.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 14)); + jButtonUp.setText("^"); + jButtonUp.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent e) { + int selectedRow = jTableModInFv.getSelectedRow(); + if (selectedRow <= 0) { + return; + } + modInFvTableModel.moveRow(selectedRow, selectedRow, selectedRow - 1); + jTableModInFv.changeSelection(selectedRow - 1, 0, false, false); + } + }); + } + return jButtonUp; + } + + /** + * This method initializes jButtonInsert + * + * @return javax.swing.JButton + */ + private JButton getJButtonInsert() { + if (jButtonInsert == null) { + jButtonInsert = new JButton(); + 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) { + int selectedRowRight = jTableFpdModules.getSelectedRow(); + if (selectedRowRight < 0) { + return; + } + + int rowInModel = ((TableSorter)jTableFpdModules.getModel()).getModelRowIndex(selectedRowRight); + + String[] row = {jTableFpdModules.getValueAt(selectedRowRight, 0)+""}; + int selectedRowLeft = jTableModInFv.getSelectedRow(); + if (selectedRowLeft < 0) { + modInFvTableModel.addRow(row); + jTableModInFv.changeSelection(jTableModInFv.getRowCount() - 1, 0, false, false); + } + else { + modInFvTableModel.insertRow(selectedRowLeft, row); + jTableModInFv.changeSelection(selectedRowLeft, 0, false, false); + } + fpdModTableModel.removeRow(rowInModel); + } + }); + } + return jButtonInsert; + } + + /** + * This method initializes jButtonRemove + * + * @return javax.swing.JButton + */ + private JButton getJButtonRemove() { + if (jButtonRemove == null) { + jButtonRemove = new JButton(); + jButtonRemove.setPreferredSize(new java.awt.Dimension(60,20)); + jButtonRemove.setText(">>"); + jButtonRemove.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent e) { + int selectedRowLeft = jTableModInFv.getSelectedRow(); + if (selectedRowLeft < 0) { + return; + } + + String[] row = {jTableModInFv.getValueAt(selectedRowLeft, 0)+""}; + fpdModTableModel.addRow(row); + int viewIndex = ((TableSorter) jTableFpdModules.getModel()).getViewIndexArray()[jTableFpdModules + .getRowCount() - 1]; + jTableFpdModules.changeSelection(viewIndex, 0, false, false); + modInFvTableModel.removeRow(selectedRowLeft); + } + }); + } + return jButtonRemove; + } + + /** + * This method initializes jButtonDown + * + * @return javax.swing.JButton + */ + private JButton getJButtonDown() { + if (jButtonDown == null) { + jButtonDown = new JButton(); + jButtonDown.setPreferredSize(new java.awt.Dimension(60,20)); + jButtonDown.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 10)); + jButtonDown.setText("v"); + jButtonDown.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent e) { + int selectedRow = jTableModInFv.getSelectedRow(); + if (selectedRow >= jTableModInFv.getRowCount() - 1) { + return; + } + modInFvTableModel.moveRow(selectedRow, selectedRow, selectedRow + 1); + jTableModInFv.changeSelection(selectedRow + 1, 0, false, false); + } + }); + } + return jButtonDown; + } + + /** + * This method initializes jButtonOk + * + * @return javax.swing.JButton + */ + private JButton getJButtonOk() { + if (jButtonOk == null) { + jButtonOk = new JButton(); + jButtonOk.setPreferredSize(new java.awt.Dimension(80,20)); + jButtonOk.setText("Ok"); + jButtonOk.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent e) { + // need reset FvBindings in ModuleSA. + ffc.removeFvBindingAll(title); + // + // collect module order information to store them into -> . + // also update the FvBinding info in . + // + Vector vModInFv = new Vector(); + for (int i = 0; i < jTableModInFv.getRowCount(); ++i) { + String moduleName = jTableModInFv.getValueAt(i, 0)+""; + if (moduleName.length() == 0) { + 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; + } + } + + } + ffc.removeBuildOptionsUserExtensions(title); + ffc.genBuildOptionsUserExtensions(title, outputFileName, vModInFv); + + docConsole.setSaved(false); + jTabbedPane.setSelectedIndex(0); + } + }); + } + return jButtonOk; + } + + /** + * This method initializes jButtonCancel + * + * @return javax.swing.JButton + */ + private JButton getJButtonCancel() { + if (jButtonCancel == null) { + jButtonCancel = new JButton(); + jButtonCancel.setPreferredSize(new java.awt.Dimension(80,20)); + jButtonCancel.setText("Cancel"); + jButtonCancel.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent e) { + jTabbedPane.setSelectedIndex(0); + } + }); + } + return jButtonCancel; + } + } } // @jve:decl-index=0:visual-constraint="10,10" @@ -1320,10 +2517,47 @@ class ImageParaTableModel extends DefaultTableModel { private static final long serialVersionUID = 1L; public boolean isCellEditable(int row, int col) { - if (getValueAt(row, 1).equals("ImageName") && col >=1) { - return false; - } - return true; +// if (getValueAt(row, 1).equals("ImageName") && col >=1) { +// return false; +// } +// return true; + return false; } } +class FvInfoFromFdf { + private String fvName; + private String size; + private String efiFileName; + + public FvInfoFromFdf () { + fvName = ""; + size = ""; + efiFileName = ""; + } + public FvInfoFromFdf (String f, String s, String e) { + this(); + fvName = f; + size = s; + efiFileName = e; + } + public String getEfiFileName() { + return efiFileName; + } + public void setEfiFileName(String efiFileName) { + this.efiFileName = efiFileName; + } + public String getFvName() { + return fvName; + } + public void setFvName(String fvName) { + this.fvName = fvName; + } + public String getSize() { + return size; + } + public void setSize(String size) { + this.size = size; + } + +}