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=e97004c3ca03877765d277320987b0c6440869b9;hp=74999ef5ec944fa5bf75838b8d18b6d2294347c5;hb=5342724213d3797764f4deddcaf5677d7340b23a;hpb=701d95b339340ec89c71ae980a2b72e1e4d9680e 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 74999ef5ec..e97004c3ca 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; @@ -100,22 +100,20 @@ public class FpdFlash extends IInternalFrame { private ImageParaTableModel fvImageParaTableModel = null; private DefaultTableModel fvOptionTableModel = null; private JPanel jPanelFvImageC = null; - private JCheckBox jCheckBoxFvImagePara = null; private JLabel jLabelFvParaType = null; private JComboBox jComboBoxFvParaType = null; 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; private JTable jTableFvInfo = null; private JButton jButtonDelFvImage = null; - private JCheckBox jCheckBoxFvImageOpts = null; private JPanel jPanelFvImagePara = null; private OpeningPlatformType docConsole = null; private FpdFileContents ffc = null; @@ -147,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; @@ -160,9 +158,17 @@ public class FpdFlash extends IInternalFrame { private String oldFvName = null; private Vector vBlockSize = new Vector(); private String determinedFvBlockSize = null; + private final String defaultBlkSize = "0x10000"; private String erasePolarity = ""; boolean memModified = false; - + private FvOptsTableModel fvInFdfOptTableModel = null; + private FvOptsTableModel fvAdditionalOptTableModel = null; + private boolean sizeFromOptionDlg = false; + private boolean fileFromOptionDlg = false; + private JLabel jLabelOptions = null; + private JPanel jPanelBgFvName = null; + private JPanel jPanelBgFvImage = null; + private JPanel jPanelW = null; public FpdFlash() { super(); @@ -196,7 +202,10 @@ public class FpdFlash extends IInternalFrame { */ private JPanel getJPanelContentEast() { if (jPanelContentEast == null) { + FlowLayout flowLayout7 = new FlowLayout(); + flowLayout7.setVgap(50); jPanelContentEast = new JPanel(); + jPanelContentEast.setLayout(flowLayout7); } return jPanelContentEast; } @@ -266,32 +275,16 @@ public class FpdFlash extends IInternalFrame { if (jPanelFvImages == null) { jPanelFvImages = new JPanel(); jPanelFvImages.setLayout(new BorderLayout()); - jPanelFvImages.add(getJPanelFvImageN(), java.awt.BorderLayout.NORTH); -// jPanelFvImages.add(getJPanelFvImageW(), java.awt.BorderLayout.WEST); - jPanelFvImages.add(getJPanelFvImageS(), java.awt.BorderLayout.SOUTH); + jPanelFvImages.add(getJPanelFvImageS(), java.awt.BorderLayout.NORTH); + jPanelFvImages.add(getJPanelFvImageN(), java.awt.BorderLayout.SOUTH); jPanelFvImages.add(getJPanelFvImageC(), java.awt.BorderLayout.CENTER); + jPanelFvImages.add(getJPanelW(), java.awt.BorderLayout.EAST); jPanelFvImages.addComponentListener(new java.awt.event.ComponentAdapter() { public void componentShown(java.awt.event.ComponentEvent e) { - fvImageParaTableModel.setRowCount(0); - fvPropertyTableModel.setRowCount(0); +// 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]); - } } }); @@ -316,9 +309,9 @@ public class FpdFlash extends IInternalFrame { jLabelFvPropName.setPreferredSize(new java.awt.Dimension(38,20)); FlowLayout flowLayout2 = new FlowLayout(); flowLayout2.setAlignment(java.awt.FlowLayout.LEFT); - flowLayout2.setHgap(15); + flowLayout2.setHgap(5); jPanelFvImageN = new JPanel(); - jPanelFvImageN.setPreferredSize(new java.awt.Dimension(576,100)); + jPanelFvImageN.setPreferredSize(new java.awt.Dimension(576,130)); jPanelFvImageN.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); jPanelFvImageN.setLayout(flowLayout2); jPanelFvImageN.add(getJCheckBoxFvProperty(), null); @@ -342,7 +335,7 @@ public class FpdFlash extends IInternalFrame { GridLayout gridLayout2 = new GridLayout(); gridLayout2.setRows(1); jPanelFvImageS = new JPanel(); - jPanelFvImageS.setPreferredSize(new java.awt.Dimension(480,190)); + jPanelFvImageS.setPreferredSize(new java.awt.Dimension(480,150)); jPanelFvImageS.setLayout(gridLayout2); jPanelFvImageS.add(getJScrollPaneFvInfo(), null); } @@ -451,7 +444,7 @@ public class FpdFlash extends IInternalFrame { private JScrollPane getJScrollPaneFvProp() { if (jScrollPaneFvProp == null) { jScrollPaneFvProp = new JScrollPane(); - jScrollPaneFvProp.setPreferredSize(new java.awt.Dimension(350,55)); + jScrollPaneFvProp.setPreferredSize(new java.awt.Dimension(350,100)); jScrollPaneFvProp.setViewportView(getJTableFvProp()); } return jScrollPaneFvProp; @@ -563,15 +556,12 @@ public class FpdFlash extends IInternalFrame { if (jPanelFvImageC == null) { jLabelFvParaName = new JLabel(); jLabelFvParaName.setPreferredSize(new Dimension(38, 20)); - jLabelFvParaName.setEnabled(false); jLabelFvParaName.setText("Name"); jLabelFvImageNames = new JLabel(); jLabelFvImageNames.setText("FV Image Names"); - jLabelFvImageNames.setEnabled(false); jLabelFvImageNames.setPreferredSize(new java.awt.Dimension(150,20)); jLabelFvParaType = new JLabel(); jLabelFvParaType.setText("Type"); - jLabelFvParaType.setEnabled(false); jLabelFvParaType.setPreferredSize(new java.awt.Dimension(70,20)); FlowLayout flowLayout3 = new FlowLayout(); flowLayout3.setAlignment(java.awt.FlowLayout.LEFT); @@ -587,41 +577,6 @@ public class FpdFlash extends IInternalFrame { } - /** - * This method initializes jCheckBox2 - * - * @return javax.swing.JCheckBox - */ - private JCheckBox getJCheckBoxFvImagePara() { - if (jCheckBoxFvImagePara == null) { - jCheckBoxFvImagePara = new JCheckBox(); - jCheckBoxFvImagePara.setText("FV Image Parameters"); - jCheckBoxFvImagePara.setPreferredSize(new java.awt.Dimension(200,20)); - jCheckBoxFvImagePara.addItemListener(new ItemListener(){ - - public void itemStateChanged(ItemEvent arg0) { - // TODO Auto-generated method stub - boolean seleted = jCheckBoxFvImagePara.isSelected(); - - jLabelFvParaType.setEnabled(seleted); - jLabelFvImageNames.setEnabled(seleted); - jLabelFvParaName.setEnabled(seleted); - jComboBoxFvParaType.setEnabled(seleted); - jTextFieldFvParaName.setEnabled(seleted); - - jTableFvImageNames.setEnabled(seleted); - jButtonFvParaAdd.setEnabled(seleted); - jButtonFvParaDel.setEnabled(seleted); - - - } - - }); - } - return jCheckBoxFvImagePara; - } - - /** * This method initializes jComboBox * @@ -630,17 +585,29 @@ public class FpdFlash extends IInternalFrame { private JComboBox getJComboBoxFvParaType() { if (jComboBoxFvParaType == null) { jComboBoxFvParaType = new JComboBox(); -// jComboBoxFvParaType.addItem("ImageName"); jComboBoxFvParaType.addItem("Attributes"); - jComboBoxFvParaType.addItem("Options"); -// jComboBoxFvParaType.addItem("Components"); + jComboBoxFvParaType.addItem("Components"); + jComboBoxFvParaType.setSelectedIndex(0); jComboBoxFvParaType.setPreferredSize(new java.awt.Dimension(180,20)); - jComboBoxFvParaType.setEnabled(false); jComboBoxFvParaType.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent arg0) { // TODO disable attribute settings when ValidImageNames selected. + int selectedRow = jTableFvInfo.getSelectedRow(); + if (selectedRow < 0) { + return; + } + String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+""; + String oldType = jTableFvInfo.getValueAt(selectedRow, 1)+""; + int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, oldType); + if (fvImagePos < 0) { + return; + } + String type = jComboBoxFvParaType.getSelectedItem()+""; + ffc.updateFvImagesFvImageType(fvImagePos, type); + jTableFvInfo.setValueAt(type, selectedRow, 1); + docConsole.setSaved(false); } }); @@ -658,7 +625,6 @@ public class FpdFlash extends IInternalFrame { if (jTextFieldFvParaName == null) { jTextFieldFvParaName = new JTextField(); jTextFieldFvParaName.setPreferredSize(new java.awt.Dimension(140,20)); - jTextFieldFvParaName.setEnabled(false); } return jTextFieldFvParaName; } @@ -669,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(false); - 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() { /** * */ @@ -684,12 +650,34 @@ public class FpdFlash extends IInternalFrame { public void actionPerformed(java.awt.event.ActionEvent e) { if (jTextFieldFvParaName.getText().length() > 0){ String[] row = {jTextFieldFvParaName.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); + + if (fvImagePos < 0) { + // new FvImage. + ffc.genFvImagesFvImage(row, jComboBoxFvParaType.getSelectedItem()+"", null); + } + else { + //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; } @@ -701,7 +689,7 @@ public class FpdFlash extends IInternalFrame { private JScrollPane getJScrollPaneFvImageNames() { if (jScrollPaneFvImageNames == null) { jScrollPaneFvImageNames = new JScrollPane(); - jScrollPaneFvImageNames.setPreferredSize(new java.awt.Dimension(350,50)); + jScrollPaneFvImageNames.setPreferredSize(new java.awt.Dimension(350,80)); jScrollPaneFvImageNames.setViewportView(getJTableFvImageNames()); } return jScrollPaneFvImageNames; @@ -715,10 +703,11 @@ public class FpdFlash extends IInternalFrame { */ private JTable getJTableFvImageNames() { if (jTableFvImageNames == null) { - fvImageNameTableModel = new DefaultTableModel(); + fvImageNameTableModel = new IDefaultTableModel(); jTableFvImageNames = new JTable(fvImageNameTableModel); - jTableFvImageNames.setEnabled(false); + jTableFvImageNames.setRowHeight(20); fvImageNameTableModel.addColumn("FV Image Name"); + } return jTableFvImageNames; } @@ -729,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(false); - 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() { /** * */ @@ -743,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() { @@ -760,6 +791,10 @@ public class FpdFlash extends IInternalFrame { if (jPanelFvImageOpts == null) { //ToDo add ButtonGroup for RadioButtons + FlowLayout flowLayout5 = new FlowLayout(); + flowLayout5.setAlignment(java.awt.FlowLayout.LEFT); + jLabelOptions = new JLabel(); + jLabelOptions.setText("Attribute"); jLabelFvImageOptValue = new JLabel(); jLabelFvImageOptValue.setEnabled(true); jLabelFvImageOptValue.setText("Value"); @@ -769,21 +804,18 @@ public class FpdFlash extends IInternalFrame { jLabelFvImageOptName.setText("Name"); jLabelFvImageOptName.setPreferredSize(new Dimension(38, 20)); jPanelFvImageOpts = new JPanel(); - jPanelFvImageOpts.setPreferredSize(new java.awt.Dimension(480,150)); + jPanelFvImageOpts.setLayout(flowLayout5); + jPanelFvImageOpts.setPreferredSize(new java.awt.Dimension(450,130)); - jPanelFvImageOpts.setLayout(new FlowLayout()); jPanelFvImageOpts.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.LOWERED)); - jPanelFvImageOpts.add(getJCheckBoxFvImageOpts(), null); + jPanelFvImageOpts.add(jLabelOptions, null); jPanelFvImageOpts.add(jLabelFvImageOptName, null); jPanelFvImageOpts.add(getJTextFieldFvImageOptName(), null); jPanelFvImageOpts.add(jLabelFvImageOptValue, null); jPanelFvImageOpts.add(getJTextFieldFvImageOptValue(), null); jPanelFvImageOpts.add(getJScrollPane(), null); jPanelFvImageOpts.add(getJPanelFvImageOptsButtonGroup(), null); - jPanelFvImageOpts.add(getJButtonAddFvImage(), null); - jPanelFvImageOpts.add(getJButtonDelFvImage(), null); - jPanelFvImageOpts.add(getJButtonUpdateFvImage(), null); @@ -802,9 +834,8 @@ public class FpdFlash extends IInternalFrame { private JButton getJButtonAddFvImage() { if (jButtonAddFvImage == null) { jButtonAddFvImage = new JButton(); - jButtonAddFvImage.setPreferredSize(new java.awt.Dimension(120,20)); -// jButton4.setEnabled(false); - jButtonAddFvImage.setText("Add FV Image"); + jButtonAddFvImage.setPreferredSize(new java.awt.Dimension(150,20)); + jButtonAddFvImage.setText("New FV Attributes"); jButtonAddFvImage.addActionListener(new AbstractAction() { /** * @@ -812,36 +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(); - if (!jCheckBoxFvImageOpts.isSelected() && jComboBoxFvParaType.getSelectedIndex() != 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); - } - ffc.genFvImagesFvImage(imageName.split(" "), jComboBoxFvParaType.getSelectedItem()+"", m); - docConsole.setSaved(false); - Object[] row = {imageName, jComboBoxFvParaType.getSelectedItem()}; - fvImageParaTableModel.addRow(row); +// 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); } }); } @@ -876,16 +895,8 @@ public class FpdFlash extends IInternalFrame { fvImageParaTableModel.addColumn("FvImageNames"); fvImageParaTableModel.addColumn("Type"); - -// 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.setRowHeight(20); jTableFvInfo.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting()){ @@ -897,29 +908,34 @@ 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]}; + String fvNameList = fvImageParaTableModel.getValueAt(selectedRow, 0)+""; + String type = fvImageParaTableModel.getValueAt(selectedRow, 1)+""; + 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] }; + if (row[0].length() > 0) { fvImageNameTableModel.addRow(row); } + } + + int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type); + if (fvImagePos < 0) { return; } LinkedHashMap optionMap = new LinkedHashMap(); - ffc.getFvImagesFvImageOptions(selectedRow, optionMap); + ffc.getFvImagesFvImageOptions(fvImagePos, optionMap); if (optionMap.size() > 0){ - fvOptionTableModel.setRowCount(0); Set key = optionMap.keySet(); Iterator i = key.iterator(); while (i.hasNext()) { - String k = (String)i.next(); String[] row = {k, optionMap.get(k)}; - fvOptionTableModel.addRow(row); } } - } } }); @@ -938,9 +954,8 @@ public class FpdFlash extends IInternalFrame { private JButton getJButtonDelFvImage() { if (jButtonDelFvImage == null) { jButtonDelFvImage = new JButton(); - jButtonDelFvImage.setPreferredSize(new java.awt.Dimension(120,20)); - jButtonDelFvImage.setEnabled(false); - jButtonDelFvImage.setText("Delete Row"); + jButtonDelFvImage.setPreferredSize(new java.awt.Dimension(150,20)); + jButtonDelFvImage.setText("Delete FV Attributes"); jButtonDelFvImage.addActionListener(new AbstractAction() { /** * @@ -950,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); } } @@ -962,33 +983,6 @@ public class FpdFlash extends IInternalFrame { } - /** - * This method initializes jCheckBox3 - * - * @return javax.swing.JCheckBox - */ - private JCheckBox getJCheckBoxFvImageOpts() { - if (jCheckBoxFvImageOpts == null) { - jCheckBoxFvImageOpts = new JCheckBox(); - jCheckBoxFvImageOpts.setText("FV Image Options"); - jCheckBoxFvImageOpts.addItemListener(new ItemListener(){ - - public void itemStateChanged(ItemEvent arg0) { - // TODO Auto-generated method stub -// boolean selected = jCheckBox3.isSelected(); - - if (!jCheckBoxFvImagePara.isSelected() || jComboBoxFvParaType.getSelectedIndex() == 0) { - return; - } - - } - - }); - } - return jCheckBoxFvImageOpts; - } - - /** * This method initializes jPanel6 * @@ -996,21 +990,22 @@ public class FpdFlash extends IInternalFrame { */ private JPanel getJPanelFvImagePara() { if (jPanelFvImagePara == null) { + FlowLayout flowLayout6 = new FlowLayout(); + flowLayout6.setAlignment(java.awt.FlowLayout.LEFT); StarLabel starLabel = new StarLabel(); starLabel.setVisible(false); jPanelFvImagePara = new JPanel(); - jPanelFvImagePara.setPreferredSize(new java.awt.Dimension(480,120)); + jPanelFvImagePara.setLayout(flowLayout6); + jPanelFvImagePara.setPreferredSize(new java.awt.Dimension(450,140)); jPanelFvImagePara.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED)); - jPanelFvImagePara.add(getJCheckBoxFvImagePara(), null); - jPanelFvImagePara.add(jLabelFvParaType, null); - jPanelFvImagePara.add(getJComboBoxFvParaType(), null); jPanelFvImagePara.add(new StarLabel(), null); jPanelFvImagePara.add(jLabelFvImageNames, null); jPanelFvImagePara.add(jLabelFvParaName, null); jPanelFvImagePara.add(getJTextFieldFvParaName(), null); - jPanelFvImagePara.add(getJButtonFvParaAdd(), null); jPanelFvImagePara.add(getJScrollPaneFvImageNames(), null); - jPanelFvImagePara.add(getJButtonFvParaDel(), null); + jPanelFvImagePara.add(getJPanelBgFvName(), null); + jPanelFvImagePara.add(jLabelFvParaType, null); + jPanelFvImagePara.add(getJComboBoxFvParaType(), null); } return jPanelFvImagePara; } @@ -1138,6 +1133,34 @@ public class FpdFlash extends IInternalFrame { return jButtonFdfBrowse; } + private void initFvAttributes () { + if (ffc.getFvImagesFvImageCount("Attributes") == 0 && ffc.getFvImagesFvImageCount("Components") == 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.getFvImagesFvImageCount("Components")][2]; + ffc.getFvImagesFvImages(saa, "Components"); + 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]); + } + } + private void initFvAdditionalTable() { Vector vFvNames = new Vector(); ffc.getFvImagesFvImageFvImageNames(vFvNames); @@ -1146,35 +1169,7 @@ public class FpdFlash extends IInternalFrame { 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}); + fvAdditionalTableModel.addRow(getBasicFvInfo(fvName)); addTabForFv(new FvInfoFromFdf(fvName, "", "")); } } @@ -1187,17 +1182,17 @@ 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; - String blkSize = "0x10000"; + String blkSize = defaultBlkSize; if (vBlockSize.size() > 0) { blkSize = vBlockSize.get(0); if (!DataValidation.isInt(blkSize) && !DataValidation.isHexDoubleWordDataType(blkSize)) { JOptionPane.showMessageDialog(frame, "FDF file does NOT contain valid FV block size. Default size 0x10000 will be used."); - blkSize = "0x10000"; + blkSize = defaultBlkSize; } } determinedFvBlockSize = blkSize; @@ -1327,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); } } }); @@ -1355,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()); } } }); @@ -1371,7 +1399,7 @@ public class FpdFlash extends IInternalFrame { private JScrollPane getJScrollPane() { if (jScrollPane == null) { jScrollPane = new JScrollPane(); - jScrollPane.setPreferredSize(new java.awt.Dimension(350,80)); + jScrollPane.setPreferredSize(new java.awt.Dimension(350,100)); jScrollPane.setViewportView(getJTableFvImageOpts()); } return jScrollPane; @@ -1384,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); @@ -1404,10 +1432,10 @@ public class FpdFlash extends IInternalFrame { private JButton getJButtonUpdateFvImage() { if (jButtonUpdateFvImage == null) { jButtonUpdateFvImage = new JButton(); - jButtonUpdateFvImage.setPreferredSize(new Dimension(120, 20)); + jButtonUpdateFvImage.setPreferredSize(new java.awt.Dimension(150,20)); jButtonUpdateFvImage.setActionCommand("Update"); - jButtonUpdateFvImage.setEnabled(false); - jButtonUpdateFvImage.setText("Update FV"); + jButtonUpdateFvImage.setText("Update FV Attributes"); + jButtonUpdateFvImage.setVisible(false); jButtonUpdateFvImage.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { int row = jTableFvInfo.getSelectedRow(); @@ -1434,25 +1462,6 @@ 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 * @@ -1640,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"); @@ -1659,7 +1668,7 @@ public class FpdFlash extends IInternalFrame { if (jButtonFvInFdfOptions == null) { jButtonFvInFdfOptions = new JButton(); jButtonFvInFdfOptions.setPreferredSize(new java.awt.Dimension(80,20)); - jButtonFvInFdfOptions.setEnabled(false); + jButtonFvInFdfOptions.setEnabled(true); jButtonFvInFdfOptions.setText("Options"); jButtonFvInFdfOptions.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { @@ -1667,11 +1676,46 @@ public class FpdFlash extends IInternalFrame { if (selectedRow < 0) { return; } + String fvName = jTableFvInFdf.getValueAt(selectedRow, 0)+""; + if (fvName.length() == 0) { + return; + } + DefaultTableModel dtm = getFvInFdfOptTableModel(); + new FpdFvOptions(fvName, dtm, ffc, docConsole); } }); } return jButtonFvInFdfOptions; } + + private DefaultTableModel getFvInFdfOptTableModel() { + if (fvInFdfOptTableModel == null) { + fvInFdfOptTableModel = new FvOptsTableModel(); + fvInFdfOptTableModel.addColumn("Name"); + fvInFdfOptTableModel.addColumn("Value"); + Vector v = new Vector(); + v.add("EFI_BLOCK_SIZE"); + v.add("EFI_NUM_BLOCKS"); + v.add("EFI_FILE_NAME"); + fvInFdfOptTableModel.setVKeyWords(v); + fvInFdfOptTableModel.setVNonEditableName(v); + } + return fvInFdfOptTableModel; + } + + private DefaultTableModel getFvAdditionalOptTableModel() { + if (fvAdditionalOptTableModel == null) { + fvAdditionalOptTableModel = new FvOptsTableModel(); + fvAdditionalOptTableModel.addColumn("Name"); + fvAdditionalOptTableModel.addColumn("Value"); + Vector v = new Vector(); + v.add("EFI_BLOCK_SIZE"); + v.add("EFI_NUM_BLOCKS"); + v.add("EFI_FILE_NAME"); + fvAdditionalOptTableModel.setVNonEditableName(v); + } + return fvAdditionalOptTableModel; + } /** * This method initializes jScrollPaneFvAdditional @@ -1748,13 +1792,13 @@ 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; } - if (col == 1) { + if (col == 1 && !sizeFromOptionDlg) { String fvSize = m.getValueAt(row, col) + ""; if (!DataValidation.isInt(fvSize) && !DataValidation.isHexDoubleWordDataType(fvSize)) { JOptionPane.showMessageDialog(frame, "FV size should be Integer or Hex format."); @@ -1764,9 +1808,15 @@ public class FpdFlash extends IInternalFrame { ffc.getFvImagesFvImageOptions(oldFvName, mFvOpts); String blkSize = mFvOpts.get("EFI_BLOCK_SIZE"); if (blkSize == null) { - ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", determinedFvBlockSize); + if (determinedFvBlockSize != null) { + blkSize = determinedFvBlockSize; + } + else { + blkSize = defaultBlkSize; + } + ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", blkSize); int fs = Integer.decode(fvSize); - int bs = Integer.decode(determinedFvBlockSize); + int bs = Integer.decode(blkSize); ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+""); docConsole.setSaved(false); } @@ -1774,9 +1824,9 @@ public class FpdFlash extends IInternalFrame { if (!DataValidation.isInt(blkSize) && !DataValidation.isHexDoubleWordDataType(blkSize)) { int retVal = JOptionPane.showConfirmDialog(frame, "Confirm", "FPD file contains error block size format. Would you like to replace it with a default value?", JOptionPane.YES_NO_OPTION); if (retVal == JOptionPane.YES_OPTION) { - ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", determinedFvBlockSize); + ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", defaultBlkSize); int fs = Integer.decode(fvSize); - int bs = Integer.decode(determinedFvBlockSize); + int bs = Integer.decode(defaultBlkSize); ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+""); docConsole.setSaved(false); return; @@ -1793,7 +1843,7 @@ public class FpdFlash extends IInternalFrame { } } - if (col == 2) { + if (col == 2 && !fileFromOptionDlg) { ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_FILE_NAME", m.getValueAt(row, col)+""); docConsole.setSaved(false); } @@ -1910,17 +1960,118 @@ public class FpdFlash extends IInternalFrame { if (jButtonAddFvOptions == null) { jButtonAddFvOptions = new JButton(); jButtonAddFvOptions.setPreferredSize(new java.awt.Dimension(80,20)); - jButtonAddFvOptions.setEnabled(false); + jButtonAddFvOptions.setEnabled(true); 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() + int selectedRow = jTableFvAdditional.getSelectedRow(); + if (selectedRow < 0) { + return; + } + String fvName = jTableFvAdditional.getValueAt(selectedRow, 0)+""; + String oldFvSize = jTableFvAdditional.getValueAt(selectedRow, 1)+""; + String oldFileName = jTableFvAdditional.getValueAt(selectedRow, 2)+""; + if (fvName.length() == 0) { + return; + } + DefaultTableModel dtm = getFvAdditionalOptTableModel(); + new FpdFvOptions(fvName, dtm, ffc, docConsole); + + String[] updatedFvInfo = getBasicFvInfo (fvName); + if (!oldFvSize.equalsIgnoreCase(updatedFvInfo[1])) { + sizeFromOptionDlg = true; + jTableFvAdditional.setValueAt(updatedFvInfo[1], selectedRow, 1); + sizeFromOptionDlg = false; + } + if (!oldFileName.equals(updatedFvInfo[2])) { + fileFromOptionDlg = true; + jTableFvAdditional.setValueAt(updatedFvInfo[2], selectedRow, 2); + fileFromOptionDlg = false; + } } }); } return jButtonAddFvOptions; } + private String[] getBasicFvInfo (String fvName) { + 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 = "0x" + Integer.toHexString(size*num); + } + } + + return new String[]{fvName, fvSize, fvFile}; + + } + + /** + * This method initializes jPanelBgFvName + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelBgFvName() { + if (jPanelBgFvName == null) { + jPanelBgFvName = new JPanel(); + jPanelBgFvName.setPreferredSize(new java.awt.Dimension(80,55)); + jPanelBgFvName.add(getJButtonFvNameAdd(), null); + jPanelBgFvName.add(getJButtonFvNameDel(), null); + } + return jPanelBgFvName; + } + + /** + * This method initializes jPanelBgFvImage + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelBgFvImage() { + if (jPanelBgFvImage == null) { + jPanelBgFvImage = new JPanel(); + jPanelBgFvImage.setPreferredSize(new java.awt.Dimension(150,100)); + jPanelBgFvImage.add(getJButtonAddFvImage(), null); + jPanelBgFvImage.add(getJButtonDelFvImage(), null); + jPanelBgFvImage.add(getJButtonUpdateFvImage(), null); + } + return jPanelBgFvImage; + } + + /** + * This method initializes jPanelW + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelW() { + if (jPanelW == null) { + jPanelW = new JPanel(); + jPanelW.add(getJPanelBgFvImage(), null); + } + return jPanelW; + } + /** * @param args */ @@ -1935,7 +2086,7 @@ public class FpdFlash extends IInternalFrame { * @return void */ private void initialize() { - this.setSize(518, 650); + this.setSize(660, 650); this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); this.setContentPane(getJContentPane()); this.setTitle("FPD Flash Definitions"); @@ -1958,6 +2109,7 @@ public class FpdFlash extends IInternalFrame { } private void init(FpdFileContents ffc) { + initFvAttributes(); jTextFieldFdf.setText(""); String fdfFile = ffc.getFlashDefinitionFile(); @@ -2153,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 { /** @@ -2174,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; @@ -2185,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); @@ -2198,34 +2451,40 @@ 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); } } @@ -2238,11 +2497,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); } @@ -2250,29 +2514,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; } @@ -2344,12 +2614,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; } @@ -2396,12 +2732,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; @@ -2440,7 +2842,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) { @@ -2450,8 +2852,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); @@ -2477,7 +2888,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(); @@ -2485,7 +2896,17 @@ 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}; + if (name.length() == 0 || name.equals("N/A")) { + return; + } + fpdModTableModel.addRow(row); int viewIndex = ((TableSorter) jTableFpdModules.getModel()).getViewIndexArray()[jTableFpdModules .getRowCount() - 1]; @@ -2542,23 +2963,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); @@ -2594,6 +3014,57 @@ public class FpdFlash extends IInternalFrame { } // @jve:decl-index=0:visual-constraint="10,10" +class FvOptsTableModel extends DefaultTableModel { + + private static final long serialVersionUID = 1L; + + private Vector vNonEditableName = new Vector(); + private Vector vKeyWords = new Vector(); + + public boolean isCellEditable(int row, int col) { + if (vNonEditableName.size() > 0 || vKeyWords.size() > 0) { + if (vKeyWords.contains(getValueAt(row, 0))) { + return false; + } + if (vNonEditableName.contains(getValueAt(row, 0)) && col == 0) { + return false; + } + } + + return true; + } + + /** + * @return Returns the vKeyWords. + */ + protected Vector getVKeyWords() { + return vKeyWords; + } + + /** + * @param keyWords The vKeyWords to set. + */ + protected void setVKeyWords(Vector keyWords) { + vKeyWords.removeAllElements(); + vKeyWords.addAll(keyWords); + } + + /** + * @return Returns the vNonEditableName. + */ + protected Vector getVNonEditableName() { + return vNonEditableName; + } + + /** + * @param nonEditableName The vNonEditableName to set. + */ + protected void setVNonEditableName(Vector nonEditableName) { + vNonEditableName.removeAllElements(); + vNonEditableName.addAll(nonEditableName); + } + +} class ImageParaTableModel extends DefaultTableModel { private static final long serialVersionUID = 1L;