import javax.swing.JPanel;\r
\r
import javax.swing.AbstractAction;\r
-import javax.swing.DefaultCellEditor;\r
import javax.swing.JFileChooser;\r
import javax.swing.JFrame;\r
import javax.swing.JOptionPane;\r
import javax.swing.ListSelectionModel;\r
\r
import org.tianocore.PlatformSurfaceAreaDocument;\r
+import org.tianocore.frameworkwizard.common.DataValidation;\r
import org.tianocore.frameworkwizard.common.GlobalData;\r
+import org.tianocore.frameworkwizard.common.IDefaultTableModel;\r
import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
-import org.tianocore.frameworkwizard.platform.ui.FpdFrameworkModules;\r
import org.tianocore.frameworkwizard.platform.ui.global.WorkspaceProfile;\r
\r
import java.awt.FlowLayout;\r
import java.awt.event.ActionEvent;\r
+import java.awt.event.ComponentAdapter;\r
+import java.awt.event.ComponentEvent;\r
import java.awt.event.ItemEvent;\r
import java.awt.event.ItemListener;\r
import java.io.BufferedReader;\r
import java.io.File;\r
import java.io.FileReader;\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
import java.util.Iterator;\r
import java.util.LinkedHashMap;\r
import java.util.Map;\r
import javax.swing.event.TableModelEvent;\r
import javax.swing.event.TableModelListener;\r
import javax.swing.table.DefaultTableModel;\r
-import javax.swing.table.TableColumn;\r
import javax.swing.table.TableModel;\r
import javax.swing.JComboBox;\r
import java.awt.Dimension;\r
* \r
*/\r
private static final long serialVersionUID = 1L;\r
+ private final int startIndexOfDynamicTab = 2;\r
static JFrame frame;\r
private JPanel jContentPane = null;\r
private JPanel jPanelContentEast = null;\r
private ImageParaTableModel fvImageParaTableModel = null;\r
private DefaultTableModel fvOptionTableModel = null;\r
private JPanel jPanelFvImageC = null;\r
- private JCheckBox jCheckBoxFvImagePara = null;\r
private JLabel jLabelFvParaType = null;\r
private JComboBox jComboBoxFvParaType = null;\r
private JLabel jLabelFvImageNames = null;\r
private JLabel jLabelFvParaName = null;\r
private JTextField jTextFieldFvParaName = null;\r
- private JButton jButtonFvParaAdd = null;\r
+ private JButton jButtonFvNameAdd = null;\r
private JScrollPane jScrollPaneFvImageNames = null;\r
private JTable jTableFvImageNames = null;\r
- private JButton jButtonFvParaDel = null;\r
+ private JButton jButtonFvNameDel = null;\r
private JPanel jPanelFvImageOpts = null;\r
private JButton jButtonAddFvImage = null;\r
private JScrollPane jScrollPaneFvInfo = null;\r
private JTable jTableFvInfo = null;\r
private JButton jButtonDelFvImage = null;\r
- private JCheckBox jCheckBoxFvImageOpts = null;\r
private JPanel jPanelFvImagePara = null;\r
private OpeningPlatformType docConsole = null;\r
private FpdFileContents ffc = null;\r
private JLabel jLabelFvAdditional = null;\r
private JScrollPane jScrollPaneFvInFdf = null;\r
private JTable jTableFvInFdf = null;\r
- private NonEditableTableModel fvInFdfTableModel = null; // @jve:decl-index=0:visual-constraint=""\r
+ private IDefaultTableModel fvInFdfTableModel = null; // @jve:decl-index=0:visual-constraint=""\r
private JButton jButtonFvInFdfOptions = null;\r
private JScrollPane jScrollPaneFvAdditional = null;\r
private JTable jTableFvAdditional = null;\r
- private DefaultTableModel fvAddtionalTableModel = null; // @jve:decl-index=0:visual-constraint=""\r
+ private DefaultTableModel fvAdditionalTableModel = null; // @jve:decl-index=0:visual-constraint=""\r
private JButton jButtonAddFv = null;\r
private JButton jButtonDelFv = null;\r
private JButton jButtonAddFvOptions = null;\r
- \r
+ private int tabIndexForFv = -1;\r
+ private int selectedRowInFvAdditionalTable = -1;\r
+ private String oldFvName = null;\r
+ private Vector<String> vBlockSize = new Vector<String>();\r
+ private String determinedFvBlockSize = null;\r
+ private final String defaultBlkSize = "0x10000";\r
+ private String erasePolarity = "";\r
+ boolean memModified = false;\r
+ private FvOptsTableModel fvInFdfOptTableModel = null;\r
+ private FvOptsTableModel fvAdditionalOptTableModel = null;\r
+ private boolean sizeFromOptionDlg = false;\r
+ private boolean fileFromOptionDlg = false;\r
+ private JLabel jLabelOptions = null;\r
+ private JPanel jPanelBgFvName = null;\r
+ private JPanel jPanelBgFvImage = null;\r
+ private JPanel jPanelW = null;\r
\r
public FpdFlash() {\r
super();\r
public FpdFlash(OpeningPlatformType opt) {\r
this(opt.getXmlFpd());\r
docConsole = opt;\r
+ if (memModified) {\r
+ docConsole.setSaved(false);\r
+ JOptionPane.showMessageDialog(frame, "Platform Synced with FDF file.");\r
+ memModified = false;\r
+ }\r
}\r
\r
/**\r
*/\r
private JPanel getJPanelContentEast() {\r
if (jPanelContentEast == null) {\r
+ FlowLayout flowLayout7 = new FlowLayout();\r
+ flowLayout7.setVgap(50);\r
jPanelContentEast = new JPanel();\r
+ jPanelContentEast.setLayout(flowLayout7);\r
}\r
return jPanelContentEast;\r
}\r
if (jPanelFvImages == null) {\r
jPanelFvImages = new JPanel();\r
jPanelFvImages.setLayout(new BorderLayout());\r
- jPanelFvImages.add(getJPanelFvImageN(), java.awt.BorderLayout.NORTH);\r
-// jPanelFvImages.add(getJPanelFvImageW(), java.awt.BorderLayout.WEST);\r
- jPanelFvImages.add(getJPanelFvImageS(), java.awt.BorderLayout.SOUTH);\r
+ jPanelFvImages.add(getJPanelFvImageS(), java.awt.BorderLayout.NORTH);\r
+ jPanelFvImages.add(getJPanelFvImageN(), java.awt.BorderLayout.SOUTH);\r
jPanelFvImages.add(getJPanelFvImageC(), java.awt.BorderLayout.CENTER);\r
+ jPanelFvImages.add(getJPanelW(), java.awt.BorderLayout.EAST);\r
+ jPanelFvImages.addComponentListener(new java.awt.event.ComponentAdapter() {\r
+ public void componentShown(java.awt.event.ComponentEvent e) {\r
+// fvImageParaTableModel.setRowCount(0);\r
+// fvPropertyTableModel.setRowCount(0);\r
+ \r
+ \r
+ }\r
+ });\r
\r
}\r
return jPanelFvImages;\r
jLabelFvPropName.setPreferredSize(new java.awt.Dimension(38,20));\r
FlowLayout flowLayout2 = new FlowLayout();\r
flowLayout2.setAlignment(java.awt.FlowLayout.LEFT);\r
- flowLayout2.setHgap(15);\r
+ flowLayout2.setHgap(5);\r
jPanelFvImageN = new JPanel();\r
- jPanelFvImageN.setPreferredSize(new java.awt.Dimension(576,100));\r
+ jPanelFvImageN.setPreferredSize(new java.awt.Dimension(576,130));\r
jPanelFvImageN.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));\r
jPanelFvImageN.setLayout(flowLayout2);\r
jPanelFvImageN.add(getJCheckBoxFvProperty(), null);\r
GridLayout gridLayout2 = new GridLayout();\r
gridLayout2.setRows(1);\r
jPanelFvImageS = new JPanel();\r
- jPanelFvImageS.setPreferredSize(new java.awt.Dimension(480,190));\r
+ jPanelFvImageS.setPreferredSize(new java.awt.Dimension(480,150));\r
jPanelFvImageS.setLayout(gridLayout2);\r
jPanelFvImageS.add(getJScrollPaneFvInfo(), null);\r
}\r
private JScrollPane getJScrollPaneFvProp() {\r
if (jScrollPaneFvProp == null) {\r
jScrollPaneFvProp = new JScrollPane();\r
- jScrollPaneFvProp.setPreferredSize(new java.awt.Dimension(350,55));\r
+ jScrollPaneFvProp.setPreferredSize(new java.awt.Dimension(350,100));\r
jScrollPaneFvProp.setViewportView(getJTableFvProp());\r
}\r
return jScrollPaneFvProp;\r
if (jPanelFvImageC == null) {\r
jLabelFvParaName = new JLabel();\r
jLabelFvParaName.setPreferredSize(new Dimension(38, 20));\r
- jLabelFvParaName.setEnabled(false);\r
jLabelFvParaName.setText("Name");\r
jLabelFvImageNames = new JLabel();\r
jLabelFvImageNames.setText("FV Image Names");\r
- jLabelFvImageNames.setEnabled(false);\r
jLabelFvImageNames.setPreferredSize(new java.awt.Dimension(150,20));\r
jLabelFvParaType = new JLabel();\r
jLabelFvParaType.setText("Type");\r
- jLabelFvParaType.setEnabled(false);\r
jLabelFvParaType.setPreferredSize(new java.awt.Dimension(70,20));\r
FlowLayout flowLayout3 = new FlowLayout();\r
flowLayout3.setAlignment(java.awt.FlowLayout.LEFT);\r
}\r
\r
\r
- /**\r
- * This method initializes jCheckBox2 \r
- * \r
- * @return javax.swing.JCheckBox \r
- */\r
- private JCheckBox getJCheckBoxFvImagePara() {\r
- if (jCheckBoxFvImagePara == null) {\r
- jCheckBoxFvImagePara = new JCheckBox();\r
- jCheckBoxFvImagePara.setText("FV Image Parameters");\r
- jCheckBoxFvImagePara.setPreferredSize(new java.awt.Dimension(200,20));\r
- jCheckBoxFvImagePara.addItemListener(new ItemListener(){\r
-\r
- public void itemStateChanged(ItemEvent arg0) {\r
- // TODO Auto-generated method stub\r
- boolean seleted = jCheckBoxFvImagePara.isSelected();\r
- \r
- jLabelFvParaType.setEnabled(seleted);\r
- jLabelFvImageNames.setEnabled(seleted);\r
- jLabelFvParaName.setEnabled(seleted);\r
- jComboBoxFvParaType.setEnabled(seleted);\r
- jTextFieldFvParaName.setEnabled(seleted);\r
- \r
- jTableFvImageNames.setEnabled(seleted);\r
- jButtonFvParaAdd.setEnabled(seleted);\r
- jButtonFvParaDel.setEnabled(seleted);\r
- \r
- \r
- }\r
- \r
- });\r
- }\r
- return jCheckBoxFvImagePara;\r
- }\r
-\r
-\r
/**\r
* This method initializes jComboBox \r
* \r
private JComboBox getJComboBoxFvParaType() {\r
if (jComboBoxFvParaType == null) {\r
jComboBoxFvParaType = new JComboBox();\r
- jComboBoxFvParaType.addItem("ImageName");\r
jComboBoxFvParaType.addItem("Attributes");\r
- jComboBoxFvParaType.addItem("Options");\r
jComboBoxFvParaType.addItem("Components");\r
+ jComboBoxFvParaType.setSelectedIndex(0);\r
jComboBoxFvParaType.setPreferredSize(new java.awt.Dimension(180,20));\r
- jComboBoxFvParaType.setEnabled(false);\r
jComboBoxFvParaType.addItemListener(new ItemListener() {\r
\r
public void itemStateChanged(ItemEvent arg0) {\r
// TODO disable attribute settings when ValidImageNames selected.\r
+ int selectedRow = jTableFvInfo.getSelectedRow();\r
+ if (selectedRow < 0) {\r
+ return;\r
+ }\r
+ String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
+ String oldType = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
+ int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, oldType);\r
+ if (fvImagePos < 0) {\r
+ return;\r
+ }\r
\r
+ String type = jComboBoxFvParaType.getSelectedItem()+"";\r
+ ffc.updateFvImagesFvImageType(fvImagePos, type);\r
+ jTableFvInfo.setValueAt(type, selectedRow, 1);\r
+ docConsole.setSaved(false);\r
}\r
\r
});\r
if (jTextFieldFvParaName == null) {\r
jTextFieldFvParaName = new JTextField();\r
jTextFieldFvParaName.setPreferredSize(new java.awt.Dimension(140,20));\r
- jTextFieldFvParaName.setEnabled(false);\r
}\r
return jTextFieldFvParaName;\r
}\r
* \r
* @return javax.swing.JButton \r
*/\r
- private JButton getJButtonFvParaAdd() {\r
- if (jButtonFvParaAdd == null) {\r
- jButtonFvParaAdd = new JButton();\r
- jButtonFvParaAdd.setPreferredSize(new Dimension(80, 20));\r
- jButtonFvParaAdd.setEnabled(false);\r
- jButtonFvParaAdd.setText("Add");\r
- jButtonFvParaAdd.addActionListener(new AbstractAction() {\r
+ private JButton getJButtonFvNameAdd() {\r
+ if (jButtonFvNameAdd == null) {\r
+ jButtonFvNameAdd = new JButton();\r
+ jButtonFvNameAdd.setPreferredSize(new Dimension(80, 20));\r
+ jButtonFvNameAdd.setEnabled(true);\r
+ jButtonFvNameAdd.setText("Add");\r
+ jButtonFvNameAdd.addActionListener(new AbstractAction() {\r
/**\r
* \r
*/\r
public void actionPerformed(java.awt.event.ActionEvent e) {\r
if (jTextFieldFvParaName.getText().length() > 0){\r
String[] row = {jTextFieldFvParaName.getText()}; \r
+ int selectedRow = jTableFvInfo.getSelectedRow();\r
+ if (selectedRow < 0) {\r
+ return;\r
+ }\r
+ \r
+ String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
+ String type = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
+ int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
+ \r
+ if (fvImagePos < 0) {\r
+ // new FvImage.\r
+ ffc.genFvImagesFvImage(row, jComboBoxFvParaType.getSelectedItem()+"", null); \r
+ }\r
+ else {\r
+ //append Fv name.\r
+ ffc.addFvImageNamesInFvImage(fvImagePos, row); \r
+ }\r
+ docConsole.setSaved(false);\r
fvImageNameTableModel.addRow(row);\r
+ fvNameList += " ";\r
+ fvNameList += row[0];\r
+ jTableFvInfo.setValueAt(fvNameList.trim(), selectedRow, 0);\r
+ jTableFvImageNames.changeSelection(jTableFvImageNames.getRowCount() - 1, 0, false, false);\r
}\r
}\r
});\r
}\r
- return jButtonFvParaAdd;\r
+ return jButtonFvNameAdd;\r
}\r
\r
\r
private JScrollPane getJScrollPaneFvImageNames() {\r
if (jScrollPaneFvImageNames == null) {\r
jScrollPaneFvImageNames = new JScrollPane();\r
- jScrollPaneFvImageNames.setPreferredSize(new java.awt.Dimension(350,50));\r
+ jScrollPaneFvImageNames.setPreferredSize(new java.awt.Dimension(350,80));\r
jScrollPaneFvImageNames.setViewportView(getJTableFvImageNames());\r
}\r
return jScrollPaneFvImageNames;\r
*/\r
private JTable getJTableFvImageNames() {\r
if (jTableFvImageNames == null) {\r
- fvImageNameTableModel = new DefaultTableModel();\r
+ fvImageNameTableModel = new IDefaultTableModel();\r
jTableFvImageNames = new JTable(fvImageNameTableModel);\r
- jTableFvImageNames.setEnabled(false);\r
+ jTableFvImageNames.setRowHeight(20);\r
fvImageNameTableModel.addColumn("FV Image Name");\r
+ \r
}\r
return jTableFvImageNames;\r
}\r
* \r
* @return javax.swing.JButton \r
*/\r
- private JButton getJButtonFvParaDel() {\r
- if (jButtonFvParaDel == null) {\r
- jButtonFvParaDel = new JButton();\r
- jButtonFvParaDel.setPreferredSize(new Dimension(80, 20));\r
- jButtonFvParaDel.setEnabled(false);\r
- jButtonFvParaDel.setText("Delete");\r
- jButtonFvParaDel.addActionListener(new AbstractAction() {\r
+ private JButton getJButtonFvNameDel() {\r
+ if (jButtonFvNameDel == null) {\r
+ jButtonFvNameDel = new JButton();\r
+ jButtonFvNameDel.setPreferredSize(new Dimension(80, 20));\r
+ jButtonFvNameDel.setEnabled(true);\r
+ jButtonFvNameDel.setText("Delete");\r
+ jButtonFvNameDel.addActionListener(new AbstractAction() {\r
/**\r
* \r
*/\r
\r
public void actionPerformed(java.awt.event.ActionEvent e) {\r
if (jTableFvImageNames.getSelectedRow() >= 0){\r
- \r
+ int selectedRow = jTableFvInfo.getSelectedRow();\r
+ if (selectedRow < 0) {\r
+ return;\r
+ }\r
+ \r
+ String selectedFvName = jTableFvImageNames.getValueAt(jTableFvImageNames.getSelectedRow(), 0)+"";\r
+ String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
+ String type = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
+ int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
+ \r
+ if (fvImagePos < 0) {\r
+ return; \r
+ }\r
+ else {\r
+ //delete Fv name.\r
+ ffc.updateFvImageNamesInFvImage(fvImagePos, selectedFvName, null);\r
+ }\r
+ docConsole.setSaved(false);\r
+ String newList = removeFvNameFromList(fvNameList, selectedFvName);\r
+ jTableFvInfo.setValueAt(newList, selectedRow, 0); \r
fvImageNameTableModel.removeRow(jTableFvImageNames.getSelectedRow());\r
}\r
}\r
});\r
}\r
- return jButtonFvParaDel;\r
- }\r
-\r
-\r
+ return jButtonFvNameDel;\r
+ }\r
+\r
+ private String removeFvNameFromList (String list, String name) {\r
+ String[] nameArray = list.split(" ");\r
+ int occursAt = -1;\r
+ for (int i = 0; i < nameArray.length; ++i) {\r
+ if (nameArray[i].equals(name)) {\r
+ occursAt = i;\r
+ break;\r
+ }\r
+ }\r
+ \r
+ if (occursAt == -1) {\r
+ return list;\r
+ }\r
+ \r
+ String newList = " ";\r
+ for (int j = 0; j < nameArray.length; ++j) {\r
+ if (j != occursAt) {\r
+ newList += nameArray[j];\r
+ newList += " ";\r
+ }\r
+ }\r
+ \r
+ return newList.trim();\r
+ }\r
\r
\r
private JPanel getJPanelFvImageOpts() {\r
\r
if (jPanelFvImageOpts == null) {\r
//ToDo add ButtonGroup for RadioButtons\r
+ FlowLayout flowLayout5 = new FlowLayout();\r
+ flowLayout5.setAlignment(java.awt.FlowLayout.LEFT);\r
+ jLabelOptions = new JLabel();\r
+ jLabelOptions.setText("Attribute");\r
jLabelFvImageOptValue = new JLabel();\r
jLabelFvImageOptValue.setEnabled(true);\r
jLabelFvImageOptValue.setText("Value");\r
jLabelFvImageOptName.setText("Name");\r
jLabelFvImageOptName.setPreferredSize(new Dimension(38, 20));\r
jPanelFvImageOpts = new JPanel();\r
- jPanelFvImageOpts.setPreferredSize(new java.awt.Dimension(480,150));\r
+ jPanelFvImageOpts.setLayout(flowLayout5);\r
+ jPanelFvImageOpts.setPreferredSize(new java.awt.Dimension(450,130));\r
\r
- jPanelFvImageOpts.setLayout(new FlowLayout());\r
\r
jPanelFvImageOpts.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.LOWERED));\r
- jPanelFvImageOpts.add(getJCheckBoxFvImageOpts(), null);\r
+ jPanelFvImageOpts.add(jLabelOptions, null);\r
jPanelFvImageOpts.add(jLabelFvImageOptName, null);\r
jPanelFvImageOpts.add(getJTextFieldFvImageOptName(), null);\r
jPanelFvImageOpts.add(jLabelFvImageOptValue, null);\r
jPanelFvImageOpts.add(getJTextFieldFvImageOptValue(), null);\r
jPanelFvImageOpts.add(getJScrollPane(), null);\r
jPanelFvImageOpts.add(getJPanelFvImageOptsButtonGroup(), null);\r
- jPanelFvImageOpts.add(getJButtonAddFvImage(), null);\r
- jPanelFvImageOpts.add(getJButtonDelFvImage(), null);\r
- jPanelFvImageOpts.add(getJButtonUpdateFvImage(), null);\r
\r
\r
\r
private JButton getJButtonAddFvImage() {\r
if (jButtonAddFvImage == null) {\r
jButtonAddFvImage = new JButton();\r
- jButtonAddFvImage.setPreferredSize(new java.awt.Dimension(120,20));\r
-// jButton4.setEnabled(false);\r
- jButtonAddFvImage.setText("Add FV Image");\r
+ jButtonAddFvImage.setPreferredSize(new java.awt.Dimension(150,20));\r
+ jButtonAddFvImage.setText("New FV Attributes");\r
jButtonAddFvImage.addActionListener(new AbstractAction() {\r
/**\r
* \r
private static final long serialVersionUID = 1L;\r
\r
public void actionPerformed(java.awt.event.ActionEvent e) {\r
- if (jTableFvInfo.isEditing()) {\r
- jTableFvInfo.getCellEditor().stopCellEditing();\r
- }\r
- if (jTableFvImageOpts.isEditing()) {\r
- jTableFvImageOpts.getCellEditor().stopCellEditing();\r
- }\r
- if (jTableFvImageNames.getRowCount()== 0){\r
- return;\r
- }\r
- String imageName = " ";\r
- for (int i = 0; i < jTableFvImageNames.getRowCount(); ++i){\r
- imageName += (String)jTableFvImageNames.getValueAt(i, 0);\r
- imageName += " ";\r
- }\r
- imageName = imageName.trim();\r
\r
- if (!jCheckBoxFvImageOpts.isSelected() && jComboBoxFvParaType.getSelectedIndex() != 0){\r
- return;\r
- \r
- }\r
+// String imageName = " ";\r
+// for (int i = 0; i < jTableFvImageNames.getRowCount(); ++i){\r
+// imageName += (String)jTableFvImageNames.getValueAt(i, 0);\r
+// imageName += " ";\r
+// }\r
+// imageName = imageName.trim();\r
\r
- LinkedHashMap<String, String> m = null;\r
- if (jCheckBoxFvImageOpts.isSelected()) {\r
- m = new LinkedHashMap<String, String>();\r
- getOptionNameValue(m);\r
- }\r
- ffc.genFvImagesFvImage(imageName.split(" "), jComboBoxFvParaType.getSelectedItem()+"", m);\r
- docConsole.setSaved(false);\r
- Object[] row = {imageName, jComboBoxFvParaType.getSelectedItem()};\r
- fvImageParaTableModel.addRow(row); \r
+// LinkedHashMap<String, String> m = null;\r
+// m = new LinkedHashMap<String, String>();\r
+// getOptionNameValue(m);\r
+// ffc.genFvImagesFvImage(imageName.split(" "), jComboBoxFvParaType.getSelectedItem()+"", m);\r
+// docConsole.setSaved(false);\r
+ fvImageNameTableModel.setRowCount(0);\r
+ fvOptionTableModel.setRowCount(0);\r
+ Object[] row = {"", jComboBoxFvParaType.getSelectedItem()};\r
+ fvImageParaTableModel.addRow(row);\r
+ jTableFvInfo.changeSelection(jTableFvInfo.getRowCount() - 1, 0, false, false);\r
}\r
});\r
}\r
fvImageParaTableModel.addColumn("FvImageNames");\r
fvImageParaTableModel.addColumn("Type");\r
\r
- \r
- TableColumn typeCol = jTableFvInfo.getColumnModel().getColumn(1);\r
- JComboBox cb = new JComboBox();\r
- cb.addItem("ImageName");\r
- cb.addItem("Attributes");\r
- cb.addItem("Options");\r
- cb.addItem("Components");\r
- typeCol.setCellEditor(new DefaultCellEditor(cb));\r
- \r
jTableFvInfo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ jTableFvInfo.setRowHeight(20);\r
jTableFvInfo.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
public void valueChanged(ListSelectionEvent e) {\r
if (e.getValueIsAdjusting()){\r
}\r
else{\r
int selectedRow = lsm.getMinSelectionIndex();\r
- if (fvImageParaTableModel.getValueAt(selectedRow, 1).equals("ImageName")) {\r
- String[] fvNames = fvImageParaTableModel.getValueAt(selectedRow, 0).toString().split(" ");\r
- for (int i = 0; i < fvNames.length; ++i) {\r
- String[] row = {fvNames[i]};\r
+ String fvNameList = fvImageParaTableModel.getValueAt(selectedRow, 0)+"";\r
+ String type = fvImageParaTableModel.getValueAt(selectedRow, 1)+"";\r
+ jComboBoxFvParaType.setSelectedItem(type);\r
+ String[] fvNames = fvNameList.split(" ");\r
+ fvImageNameTableModel.setRowCount(0);\r
+ fvOptionTableModel.setRowCount(0);\r
+ for (int i = 0; i < fvNames.length; ++i) {\r
+ String[] row = { fvNames[i] };\r
+ if (row[0].length() > 0) {\r
fvImageNameTableModel.addRow(row);\r
}\r
+ }\r
+ \r
+ int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
+ if (fvImagePos < 0) {\r
return;\r
}\r
LinkedHashMap<String, String> optionMap = new LinkedHashMap<String, String>();\r
- ffc.getFvImagesFvImageOptions(selectedRow, optionMap);\r
+ ffc.getFvImagesFvImageOptions(fvImagePos, optionMap);\r
if (optionMap.size() > 0){\r
- fvOptionTableModel.setRowCount(0);\r
Set<String> key = optionMap.keySet();\r
Iterator<String> i = key.iterator();\r
while (i.hasNext()) {\r
- \r
String k = (String)i.next();\r
String[] row = {k, optionMap.get(k)};\r
- \r
fvOptionTableModel.addRow(row);\r
}\r
}\r
- \r
}\r
}\r
});\r
private JButton getJButtonDelFvImage() {\r
if (jButtonDelFvImage == null) {\r
jButtonDelFvImage = new JButton();\r
- jButtonDelFvImage.setPreferredSize(new java.awt.Dimension(120,20));\r
-// jButton6.setEnabled(false);\r
- jButtonDelFvImage.setText("Delete Row");\r
+ jButtonDelFvImage.setPreferredSize(new java.awt.Dimension(150,20));\r
+ jButtonDelFvImage.setText("Delete FV Attributes");\r
jButtonDelFvImage.addActionListener(new AbstractAction() {\r
/**\r
* \r
public void actionPerformed(ActionEvent arg0) {\r
// TODO Auto-generated method stub\r
if (jTableFvInfo.getSelectedRow() >= 0 ) {\r
- ffc.removeFvImagesFvImage(jTableFvInfo.getSelectedRow());\r
+ String fvNameList = fvImageParaTableModel.getValueAt(jTableFvInfo.getSelectedRow(), 0)+"";\r
+ int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, jComboBoxFvParaType.getSelectedItem()+"");\r
+ \r
+ ffc.removeFvImagesFvImage(fvImagePos);\r
fvImageParaTableModel.removeRow(jTableFvInfo.getSelectedRow());\r
docConsole.setSaved(false);\r
+ \r
+ fvImageNameTableModel.setRowCount(0);\r
+ fvOptionTableModel.setRowCount(0);\r
}\r
}\r
\r
}\r
\r
\r
- /**\r
- * This method initializes jCheckBox3 \r
- * \r
- * @return javax.swing.JCheckBox \r
- */\r
- private JCheckBox getJCheckBoxFvImageOpts() {\r
- if (jCheckBoxFvImageOpts == null) {\r
- jCheckBoxFvImageOpts = new JCheckBox();\r
- jCheckBoxFvImageOpts.setText("FV Image Options");\r
- jCheckBoxFvImageOpts.addItemListener(new ItemListener(){\r
-\r
- public void itemStateChanged(ItemEvent arg0) {\r
- // TODO Auto-generated method stub\r
-// boolean selected = jCheckBox3.isSelected();\r
- \r
- if (!jCheckBoxFvImagePara.isSelected() || jComboBoxFvParaType.getSelectedIndex() == 0) {\r
- return;\r
- }\r
- \r
- }\r
- \r
- });\r
- }\r
- return jCheckBoxFvImageOpts;\r
- }\r
-\r
-\r
/**\r
* This method initializes jPanel6 \r
* \r
*/\r
private JPanel getJPanelFvImagePara() {\r
if (jPanelFvImagePara == null) {\r
+ FlowLayout flowLayout6 = new FlowLayout();\r
+ flowLayout6.setAlignment(java.awt.FlowLayout.LEFT);\r
StarLabel starLabel = new StarLabel();\r
starLabel.setVisible(false);\r
jPanelFvImagePara = new JPanel();\r
- jPanelFvImagePara.setPreferredSize(new java.awt.Dimension(480,120));\r
+ jPanelFvImagePara.setLayout(flowLayout6);\r
+ jPanelFvImagePara.setPreferredSize(new java.awt.Dimension(450,140));\r
jPanelFvImagePara.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));\r
- jPanelFvImagePara.add(getJCheckBoxFvImagePara(), null);\r
- jPanelFvImagePara.add(jLabelFvParaType, null);\r
- jPanelFvImagePara.add(getJComboBoxFvParaType(), null);\r
jPanelFvImagePara.add(new StarLabel(), null);\r
jPanelFvImagePara.add(jLabelFvImageNames, null);\r
jPanelFvImagePara.add(jLabelFvParaName, null);\r
jPanelFvImagePara.add(getJTextFieldFvParaName(), null);\r
- jPanelFvImagePara.add(getJButtonFvParaAdd(), null);\r
jPanelFvImagePara.add(getJScrollPaneFvImageNames(), null);\r
- jPanelFvImagePara.add(getJButtonFvParaDel(), null);\r
+ jPanelFvImagePara.add(getJPanelBgFvName(), null);\r
+ jPanelFvImagePara.add(jLabelFvParaType, null);\r
+ jPanelFvImagePara.add(getJComboBoxFvParaType(), null);\r
}\r
return jPanelFvImagePara;\r
}\r
jPanelFdf.add(getJPanelFdfN(), java.awt.BorderLayout.NORTH);\r
jPanelFdf.add(getJPanelFdfS(), java.awt.BorderLayout.SOUTH);\r
jPanelFdf.add(getJSplitPaneFdfC(), java.awt.BorderLayout.CENTER);\r
-// jPanelFdf.addComponentListener(new ComponentAdapter(){\r
-// public void componentShown(ComponentEvent e) {\r
+ jPanelFdf.addComponentListener(new ComponentAdapter(){\r
+ public void componentShown(ComponentEvent e) {\r
// if (ffc.getFlashDefinitionFile() != null) {\r
// jTextFieldFdf.setText(ffc.getFlashDefinitionFile());\r
+// initFvInFdfTable(System.getenv("WORKSPACE") + File.separator + jTextFieldFdf.getText());\r
+// \r
// }\r
-// }\r
-// public void componentHidden(ComponentEvent e) {\r
-// if (jCheckBoxFdf.isSelected()) {\r
-// ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
-// }\r
-// }\r
-// });\r
+ }\r
+ public void componentHidden(ComponentEvent e) {\r
+ if (jCheckBoxFdf.isSelected()) {\r
+ ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
+ }\r
+ }\r
+ });\r
}\r
return jPanelFdf;\r
}\r
if (jTextFieldFdf == null) {\r
jTextFieldFdf = new JTextField();\r
jTextFieldFdf.setEnabled(false);\r
+ jTextFieldFdf.setEditable(false);\r
jTextFieldFdf.setPreferredSize(new Dimension(300, 20));\r
jTextFieldFdf.addFocusListener(new java.awt.event.FocusAdapter() {\r
public void focusLost(java.awt.event.FocusEvent e) {\r
jTextFieldFdf.setText(filePath.substring(wsDir.length() + 1).replace('\\', '/'));\r
ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
docConsole.setSaved(false);\r
- Vector<FvInfoFromFdf> vFvInfo = new Vector<FvInfoFromFdf>();\r
- getFvInfoFromFdf(filePath, vFvInfo);\r
- getFvInFdfTableModel().setRowCount(0);\r
- for (int j = 0; j < vFvInfo.size(); ++j) {\r
- FvInfoFromFdf fvInfo = vFvInfo.get(j);\r
- String[] row = {fvInfo.getFvName(), fvInfo.getSize(), fvInfo.getEfiFileName()};\r
- getFvInFdfTableModel().addRow(row);\r
- }\r
+ initFvInFdfTable(filePath);\r
}\r
}\r
\r
}\r
return jButtonFdfBrowse;\r
}\r
+ \r
+ private void initFvAttributes () {\r
+ if (ffc.getFvImagesFvImageCount("Attributes") == 0 && ffc.getFvImagesFvImageCount("Components") == 0) {\r
+ return;\r
+ }\r
+ String[][] saa = new String[ffc.getFvImagesFvImageCount("Attributes")][2];\r
+ ffc.getFvImagesFvImages(saa, "Attributes");\r
+ \r
+ int i = 0;\r
+ while (i < saa.length) {\r
+ fvImageParaTableModel.addRow(saa[i]);\r
+ ++i;\r
+ }\r
+ \r
+ saa = new String[ffc.getFvImagesFvImageCount("Components")][2];\r
+ ffc.getFvImagesFvImages(saa, "Components");\r
+ i = 0;\r
+ while (i < saa.length) {\r
+ fvImageParaTableModel.addRow(saa[i]);\r
+ ++i;\r
+ }\r
+ \r
+ saa = new String[ffc.getFvImagesNameValueCount()][2];\r
+ ffc.getFvImagesNameValues(saa);\r
+ for (int m = 0; m < saa.length; ++m) {\r
+ fvPropertyTableModel.addRow(saa[m]);\r
+ }\r
+ }\r
+ \r
+ private void initFvAdditionalTable() {\r
+ Vector<String> vFvNames = new Vector<String>();\r
+ ffc.getFvImagesFvImageFvImageNames(vFvNames);\r
+ for (int i = 0; i < vFvNames.size(); ++i) {\r
+ String fvName = vFvNames.get(i);\r
+ if (fvNameExists(fvName)) {\r
+ continue;\r
+ }\r
+ fvAdditionalTableModel.addRow(getBasicFvInfo(fvName));\r
+ addTabForFv(new FvInfoFromFdf(fvName, "", ""));\r
+ }\r
+ }\r
\r
+ private void initFvInFdfTable(String fdfPath){\r
+ Vector<FvInfoFromFdf> vFvInfo = new Vector<FvInfoFromFdf>();\r
+ getFvInfoFromFdf(fdfPath, vFvInfo);\r
+ getFlashInfoFromFdf (fdfPath);\r
+ if (!erasePolarity.equals("1") && !erasePolarity.equals("0")) {\r
+ JOptionPane.showMessageDialog(frame, "FDF file does NOT contain valid Erase Polarity.");\r
+ }\r
+ else {\r
+ ffc.setTypedFvImageNameValue("Attributes", "EFI_ERASE_POLARITY", erasePolarity);\r
+ }\r
+ \r
+ // BugBug: assume all blocks have same size;\r
+ \r
+ String blkSize = defaultBlkSize;\r
+ if (vBlockSize.size() > 0) {\r
+ blkSize = vBlockSize.get(0);\r
+ if (!DataValidation.isInt(blkSize) && !DataValidation.isHexDoubleWordDataType(blkSize)) {\r
+ JOptionPane.showMessageDialog(frame, "FDF file does NOT contain valid FV block size. Default size 0x10000 will be used.");\r
+ blkSize = defaultBlkSize;\r
+ }\r
+ }\r
+ determinedFvBlockSize = blkSize;\r
+ \r
+ getFvInFdfTableModel().setRowCount(0);\r
+ for (int j = 0; j < vFvInfo.size(); ++j) {\r
+ FvInfoFromFdf fvInfo = vFvInfo.get(j);\r
+ String[] row = {fvInfo.getFvName(), fvInfo.getSize(), fvInfo.getEfiFileName()};\r
+ // if FV addtional table contains the same FV from fdf file, remove that row.\r
+ for (int k = 0; k < jTableFvAdditional.getRowCount(); ++k) {\r
+ if (fvAdditionalTableModel.getValueAt(k, 0).equals(row[0])) {\r
+ fvAdditionalTableModel.removeRow(k);\r
+ }\r
+ }\r
+ getFvInFdfTableModel().addRow(row);\r
+ try {\r
+ int blockSize = Integer.decode(blkSize);\r
+ int fvSize = Integer.decode(row[1]);\r
+ int numBlocks = fvSize/blockSize;\r
+ HashMap<String, String> mOptions = new HashMap<String, String>();\r
+ // if no options for this FV before, generate a new options entry for this FV.\r
+ if (ffc.getFvImagesFvImageWithName(row[0], "Options") == null) {\r
+ \r
+ mOptions.put("EFI_BLOCK_SIZE", blkSize);\r
+ mOptions.put("EFI_NUM_BLOCKS", numBlocks+"");\r
+ mOptions.put("EFI_FILE_NAME", row[2]);\r
+ ffc.genFvImagesFvImage(new String[]{row[0]}, "Options", mOptions);\r
+ memModified = true;\r
+ }\r
+ else {\r
+ ffc.getFvImagesFvImageOptions(row[0], mOptions);\r
+ if (mOptions.get("EFI_BLOCK_SIZE") == null || !mOptions.get("EFI_BLOCK_SIZE").equalsIgnoreCase(blkSize)) {\r
+ ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_BLOCK_SIZE", blkSize);\r
+ memModified = true;\r
+ }\r
+ if (mOptions.get("EFI_NUM_BLOCKS") == null || Integer.decode(mOptions.get("EFI_NUM_BLOCKS")) != numBlocks) {\r
+ ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_NUM_BLOCKS", numBlocks + "");\r
+ memModified = true;\r
+ }\r
+ if (mOptions.get("EFI_FILE_NAME") == null || !mOptions.get("EFI_FILE_NAME").equals(row[2])) {\r
+ ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_FILE_NAME", row[2]);\r
+ memModified = true;\r
+ }\r
+ \r
+ }\r
+ }\r
+ catch (NumberFormatException e){\r
+ JOptionPane.showMessageDialog(frame, e.getMessage());\r
+ }\r
+ }\r
+\r
+ for (int k = 0; k < vFvInfo.size(); ++k) {\r
+ FvInfoFromFdf fvInfo = vFvInfo.get(k);\r
+ addTabForFv(fvInfo);\r
+ }\r
+ \r
+ }\r
+ \r
+ private void addTabForFv (FvInfoFromFdf fvInfo) {\r
+ String fvName = fvInfo.getFvName();\r
+ String outputFile = fvInfo.getEfiFileName();\r
+ int index = jTabbedPane.indexOfTab(fvName);\r
+ if (index >= startIndexOfDynamicTab) {\r
+ return;\r
+ }\r
+ jTabbedPane.addTab(fvName, null, new ModuleOrderPane(fvName, outputFile), null);\r
+ }\r
/**\r
* This method initializes jTextField4 \r
* \r
\r
public void actionPerformed(ActionEvent e) {\r
if (jTextFieldFvImageOptName.getText().length() > 0 && jTextFieldFvImageOptValue.getText().length() > 0){\r
- String[] row = {jTextFieldFvImageOptName.getText(), jTextFieldFvImageOptValue.getText()}; \r
+ int selectedRow = jTableFvInfo.getSelectedRow();\r
+ if (selectedRow < 0) {\r
+ return;\r
+ }\r
+ \r
+ String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
+ String type = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
+ int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
+ String[] row = {jTextFieldFvImageOptName.getText(), jTextFieldFvImageOptValue.getText()};\r
+ \r
+ if (fvImagePos < 0) {\r
+ return;\r
+ }\r
+ else {\r
+ //append options to FvImage.\r
+ ffc.setFvImagesFvImageNameValue(fvImagePos, row[0], row[1]);\r
+ }\r
+ docConsole.setSaved(false);\r
fvOptionTableModel.addRow(row);\r
+ jTableFvImageOpts.changeSelection(jTableFvImageOpts.getRowCount() - 1, 0, false, false);\r
}\r
}\r
});\r
\r
public void actionPerformed(ActionEvent e) {\r
if (jTableFvImageOpts.getSelectedRow() >= 0){\r
- fvOptionTableModel.removeRow(jTableFvProp.getSelectedRow());\r
+ int selectedRow = jTableFvInfo.getSelectedRow();\r
+ if (selectedRow < 0) {\r
+ return;\r
+ }\r
+ \r
+ String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
+ String type = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
+ int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
+ if (fvImagePos < 0) {\r
+ return;\r
+ }\r
+ \r
+ String optName = fvOptionTableModel.getValueAt(jTableFvImageOpts.getSelectedRow(), 0)+"";\r
+ ffc.removeFvImageNameValue(fvImagePos, optName);\r
+ docConsole.setSaved(false);\r
+ fvOptionTableModel.removeRow(jTableFvImageOpts.getSelectedRow());\r
}\r
}\r
});\r
private JScrollPane getJScrollPane() {\r
if (jScrollPane == null) {\r
jScrollPane = new JScrollPane();\r
- jScrollPane.setPreferredSize(new java.awt.Dimension(350,80));\r
+ jScrollPane.setPreferredSize(new java.awt.Dimension(350,100));\r
jScrollPane.setViewportView(getJTableFvImageOpts());\r
}\r
return jScrollPane;\r
*/\r
private JTable getJTableFvImageOpts() {\r
if (jTableFvImageOpts == null) {\r
- fvOptionTableModel = new DefaultTableModel();\r
+ fvOptionTableModel = new IDefaultTableModel();\r
fvOptionTableModel.addColumn("Name");\r
fvOptionTableModel.addColumn("Value");\r
jTableFvImageOpts = new JTable(fvOptionTableModel);\r
private JButton getJButtonUpdateFvImage() {\r
if (jButtonUpdateFvImage == null) {\r
jButtonUpdateFvImage = new JButton();\r
- jButtonUpdateFvImage.setPreferredSize(new Dimension(120, 20));\r
+ jButtonUpdateFvImage.setPreferredSize(new java.awt.Dimension(150,20));\r
jButtonUpdateFvImage.setActionCommand("Update");\r
- jButtonUpdateFvImage.setText("Update FV");\r
+ jButtonUpdateFvImage.setText("Update FV Attributes");\r
+ jButtonUpdateFvImage.setVisible(false);\r
jButtonUpdateFvImage.addActionListener(new java.awt.event.ActionListener() {\r
public void actionPerformed(java.awt.event.ActionEvent e) {\r
int row = jTableFvInfo.getSelectedRow();\r
return jButtonUpdateFvImage;\r
}\r
\r
-// private JButton getJButtonTest() {\r
-// if (jButtonTest == null) {\r
-// jButtonTest = new JButton();\r
-// jButtonTest.addActionListener(new java.awt.event.ActionListener() {\r
-// public void actionPerformed(java.awt.event.ActionEvent e) {\r
-// docConsole.setSaved(false);\r
-// String[][] includeModules = {{"1", "a"}, {"2", "b"}};\r
-// ffc.genBuildOptionsUserExtensions("FV_RECOVERY", "FvRecovery.inf", null, includeModules);\r
-// int i = ffc.getUserExtsIncModCount("FV_RECOVERY");\r
-// String[][] saa = new String[i][2];\r
-// ffc.getUserExtsIncMods("FV_RECOVERY", saa);\r
-// jTextFieldFdf.setText(saa[0][0] + saa[0][1] + saa[1][0] + saa[1][1]);\r
-// \r
-// }\r
-// });\r
-// }\r
-// return jButtonTest;\r
-// }\r
-\r
/**\r
* This method initializes jPanelFdfN \r
* \r
* \r
* @return org.tianocore.frameworkwizard.platform.ui.NonEditableTableModel \r
*/\r
- private NonEditableTableModel getFvInFdfTableModel() {\r
+ private IDefaultTableModel getFvInFdfTableModel() {\r
if (fvInFdfTableModel == null) {\r
- fvInFdfTableModel = new NonEditableTableModel();\r
+ fvInFdfTableModel = new IDefaultTableModel();\r
fvInFdfTableModel.addColumn("FV Name");\r
fvInFdfTableModel.addColumn("Size");\r
fvInFdfTableModel.addColumn("Corresponding File Name");\r
if (jButtonFvInFdfOptions == null) {\r
jButtonFvInFdfOptions = new JButton();\r
jButtonFvInFdfOptions.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonFvInFdfOptions.setEnabled(true);\r
jButtonFvInFdfOptions.setText("Options");\r
jButtonFvInFdfOptions.addActionListener(new java.awt.event.ActionListener() {\r
public void actionPerformed(java.awt.event.ActionEvent e) {\r
if (selectedRow < 0) {\r
return;\r
}\r
+ String fvName = jTableFvInFdf.getValueAt(selectedRow, 0)+"";\r
+ if (fvName.length() == 0) {\r
+ return;\r
+ }\r
+ DefaultTableModel dtm = getFvInFdfOptTableModel();\r
+ new FpdFvOptions(fvName, dtm, ffc, docConsole);\r
}\r
});\r
}\r
return jButtonFvInFdfOptions;\r
}\r
+ \r
+ private DefaultTableModel getFvInFdfOptTableModel() {\r
+ if (fvInFdfOptTableModel == null) {\r
+ fvInFdfOptTableModel = new FvOptsTableModel();\r
+ fvInFdfOptTableModel.addColumn("Name");\r
+ fvInFdfOptTableModel.addColumn("Value");\r
+ Vector<Object> v = new Vector<Object>();\r
+ v.add("EFI_BLOCK_SIZE");\r
+ v.add("EFI_NUM_BLOCKS");\r
+ v.add("EFI_FILE_NAME");\r
+ fvInFdfOptTableModel.setVKeyWords(v);\r
+ fvInFdfOptTableModel.setVNonEditableName(v);\r
+ }\r
+ return fvInFdfOptTableModel;\r
+ }\r
+ \r
+ private DefaultTableModel getFvAdditionalOptTableModel() {\r
+ if (fvAdditionalOptTableModel == null) {\r
+ fvAdditionalOptTableModel = new FvOptsTableModel();\r
+ fvAdditionalOptTableModel.addColumn("Name");\r
+ fvAdditionalOptTableModel.addColumn("Value");\r
+ Vector<Object> v = new Vector<Object>();\r
+ v.add("EFI_BLOCK_SIZE");\r
+ v.add("EFI_NUM_BLOCKS");\r
+ v.add("EFI_FILE_NAME");\r
+ fvAdditionalOptTableModel.setVNonEditableName(v);\r
+ }\r
+ return fvAdditionalOptTableModel;\r
+ }\r
\r
/**\r
* This method initializes jScrollPaneFvAdditional \r
jTableFvAdditional = new JTable();\r
jTableFvAdditional.setRowHeight(20);\r
jTableFvAdditional.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);\r
- jTableFvAdditional.setModel(getFvAddtionalTableModel());\r
+ jTableFvAdditional.setModel(getFvAdditionalTableModel());\r
+ \r
+ jTableFvAdditional.getSelectionModel().addListSelectionListener(new ListSelectionListener() {\r
+ public void valueChanged(ListSelectionEvent e) {\r
+ if (e.getValueIsAdjusting()) {\r
+ return;\r
+ }\r
+ ListSelectionModel lsm = (ListSelectionModel) e.getSource();\r
+ if (lsm.isSelectionEmpty()) {\r
+ return;\r
+ } else {\r
+ selectedRowInFvAdditionalTable = lsm.getMinSelectionIndex();\r
+ oldFvName = jTableFvAdditional.getValueAt(selectedRowInFvAdditionalTable, 0)+"";\r
+ }\r
+ }\r
+ });\r
+ \r
+ jTableFvAdditional.getModel().addTableModelListener(new TableModelListener() {\r
+ public void tableChanged(TableModelEvent arg0) {\r
+ // TODO Auto-generated method stub\r
+ int row = arg0.getFirstRow();\r
+ int col = arg0.getColumn();\r
+ TableModel m = (TableModel) arg0.getSource();\r
+ \r
+ if (arg0.getType() == TableModelEvent.UPDATE) {\r
+ if (col == 0) {\r
+ String newFvName = m.getValueAt(row, 0) + "";\r
+ if (newFvName.equals(oldFvName)) {\r
+ return;\r
+ }\r
+ if (fvNameExists(newFvName)) {\r
+ JOptionPane.showMessageDialog(frame, "This FV already exists. Please choose another FV name.");\r
+ m.setValueAt(oldFvName, row, 0);\r
+ return;\r
+ }\r
+ \r
+ tabIndexForFv = jTabbedPane.indexOfTab(oldFvName);\r
+ if (tabIndexForFv >= startIndexOfDynamicTab) {\r
+ jTabbedPane.setTitleAt(tabIndexForFv, newFvName);\r
+ // change FvName in UserExtensions\r
+ ffc.updateBuildOptionsUserExtensions(oldFvName, newFvName);\r
+ // change FvBinding in ModuleSA\r
+ ffc.appendFvBindingFor(oldFvName, newFvName);\r
+ ffc.removeFvBindingAll(oldFvName);\r
+ // change FvImageNames in Flash\r
+ ffc.updateFvImageNameAll(oldFvName, newFvName);\r
+ \r
+ } else {\r
+ jTabbedPane.addTab(newFvName, new ModuleOrderPane(newFvName, ""));\r
+ // Add FvImageNames in Flash\r
+ String[] fvNames = {newFvName};\r
+ ffc.addFvImageFvImageNames(fvNames);\r
+ }\r
+ docConsole.setSaved(false);\r
+ oldFvName = newFvName;\r
+ }\r
+ \r
+ if (col == 1 && !sizeFromOptionDlg) {\r
+ String fvSize = m.getValueAt(row, col) + "";\r
+ if (!DataValidation.isInt(fvSize) && !DataValidation.isHexDoubleWordDataType(fvSize)) {\r
+ JOptionPane.showMessageDialog(frame, "FV size should be Integer or Hex format.");\r
+ return;\r
+ }\r
+ HashMap<String, String> mFvOpts = new HashMap<String, String>();\r
+ ffc.getFvImagesFvImageOptions(oldFvName, mFvOpts);\r
+ String blkSize = mFvOpts.get("EFI_BLOCK_SIZE");\r
+ if (blkSize == null) {\r
+ if (determinedFvBlockSize != null) {\r
+ blkSize = determinedFvBlockSize;\r
+ }\r
+ else {\r
+ blkSize = defaultBlkSize;\r
+ }\r
+ ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", blkSize);\r
+ int fs = Integer.decode(fvSize);\r
+ int bs = Integer.decode(blkSize);\r
+ ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"");\r
+ docConsole.setSaved(false);\r
+ }\r
+ else {\r
+ if (!DataValidation.isInt(blkSize) && !DataValidation.isHexDoubleWordDataType(blkSize)) {\r
+ 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);\r
+ if (retVal == JOptionPane.YES_OPTION) {\r
+ ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", defaultBlkSize);\r
+ int fs = Integer.decode(fvSize);\r
+ int bs = Integer.decode(defaultBlkSize);\r
+ ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"");\r
+ docConsole.setSaved(false);\r
+ return;\r
+ }\r
+ else {\r
+ return;\r
+ }\r
+ \r
+ }\r
+ int fs = Integer.decode(fvSize);\r
+ int bs = Integer.decode(blkSize);\r
+ ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"");\r
+ docConsole.setSaved(false);\r
+ }\r
+ }\r
+ \r
+ if (col == 2 && !fileFromOptionDlg) {\r
+ ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_FILE_NAME", m.getValueAt(row, col)+"");\r
+ docConsole.setSaved(false);\r
+ }\r
+ \r
+ }\r
+ }\r
+ });\r
}\r
return jTableFvAdditional;\r
}\r
+ \r
+ private boolean fvNameExistsInFvInFdfTable (String fvName) {\r
+ for (int i = 0; i < jTableFvInFdf.getRowCount(); ++i) {\r
+ if (fvInFdfTableModel.getValueAt(i, 0).equals(fvName)) {\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+ \r
+ private boolean fvNameExists (String fvName) {\r
+ if (fvNameExistsInFvInFdfTable(fvName)) {\r
+ return true;\r
+ }\r
+ \r
+ for (int j = 0; j < jTableFvAdditional.getRowCount(); ++j) {\r
+ if (fvAdditionalTableModel.getValueAt(j, 0).equals(fvName) && j != selectedRowInFvAdditionalTable) {\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+ }\r
\r
/**\r
- * This method initializes fvAddtionalTableModel \r
+ * This method initializes fvAdditionalTableModel \r
* \r
* @return javax.swing.table.DefaultTableModel \r
*/\r
- private DefaultTableModel getFvAddtionalTableModel() {\r
- if (fvAddtionalTableModel == null) {\r
- fvAddtionalTableModel = new DefaultTableModel();\r
- fvAddtionalTableModel.addColumn("FV Name");\r
- fvAddtionalTableModel.addColumn("Size");\r
- fvAddtionalTableModel.addColumn("Corresponding File Name");\r
+ private DefaultTableModel getFvAdditionalTableModel() {\r
+ if (fvAdditionalTableModel == null) {\r
+ fvAdditionalTableModel = new DefaultTableModel();\r
+ fvAdditionalTableModel.addColumn("FV Name");\r
+ fvAdditionalTableModel.addColumn("Size");\r
+ fvAdditionalTableModel.addColumn("Corresponding File Name");\r
}\r
- return fvAddtionalTableModel;\r
+ return fvAdditionalTableModel;\r
}\r
\r
/**\r
if (jButtonAddFv == null) {\r
jButtonAddFv = new JButton();\r
jButtonAddFv.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonAddFv.setEnabled(true);\r
jButtonAddFv.setText("New");\r
+ jButtonAddFv.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ if (jTableFvAdditional.isEditing()) {\r
+ jTableFvAdditional.getCellEditor().stopCellEditing();\r
+ }\r
+ String[] row = {"", "", ""};\r
+ fvAdditionalTableModel.addRow(row);\r
+ }\r
+ });\r
}\r
return jButtonAddFv;\r
}\r
if (jButtonDelFv == null) {\r
jButtonDelFv = new JButton();\r
jButtonDelFv.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonDelFv.setEnabled(true);\r
jButtonDelFv.setText("Delete");\r
+ jButtonDelFv.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ //delete row in FvAdditional table.\r
+ int selectedRow = jTableFvAdditional.getSelectedRow();\r
+ if (selectedRow < 0) {\r
+ return;\r
+ }\r
+ String fvName = fvAdditionalTableModel.getValueAt(selectedRow, 0) + "";\r
+ fvAdditionalTableModel.removeRow(selectedRow);\r
+ //\r
+ //delete tab with selected FV name.\r
+ //\r
+ jTabbedPane.removeTabAt(jTabbedPane.indexOfTab(fvName));\r
+ //delete FV Name from FvImages element.\r
+ ffc.updateFvImageNameAll(fvName, null);\r
+ //delete FvBinding from ModuleSA.\r
+ ffc.removeFvBindingAll(fvName);\r
+ docConsole.setSaved(false);\r
+ }\r
+ });\r
}\r
return jButtonDelFv;\r
}\r
if (jButtonAddFvOptions == null) {\r
jButtonAddFvOptions = new JButton();\r
jButtonAddFvOptions.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonAddFvOptions.setEnabled(true);\r
jButtonAddFvOptions.setText("Options");\r
+ jButtonAddFvOptions.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ int selectedRow = jTableFvAdditional.getSelectedRow();\r
+ if (selectedRow < 0) {\r
+ return;\r
+ }\r
+ String fvName = jTableFvAdditional.getValueAt(selectedRow, 0)+"";\r
+ String oldFvSize = jTableFvAdditional.getValueAt(selectedRow, 1)+"";\r
+ String oldFileName = jTableFvAdditional.getValueAt(selectedRow, 2)+"";\r
+ if (fvName.length() == 0) {\r
+ return;\r
+ }\r
+ DefaultTableModel dtm = getFvAdditionalOptTableModel();\r
+ new FpdFvOptions(fvName, dtm, ffc, docConsole);\r
+ \r
+ String[] updatedFvInfo = getBasicFvInfo (fvName);\r
+ if (!oldFvSize.equalsIgnoreCase(updatedFvInfo[1])) {\r
+ sizeFromOptionDlg = true;\r
+ jTableFvAdditional.setValueAt(updatedFvInfo[1], selectedRow, 1);\r
+ sizeFromOptionDlg = false;\r
+ }\r
+ if (!oldFileName.equals(updatedFvInfo[2])) {\r
+ fileFromOptionDlg = true;\r
+ jTableFvAdditional.setValueAt(updatedFvInfo[2], selectedRow, 2);\r
+ fileFromOptionDlg = false;\r
+ }\r
+ }\r
+ });\r
}\r
return jButtonAddFvOptions;\r
}\r
\r
+ private String[] getBasicFvInfo (String fvName) {\r
+ HashMap<String, String> mFvOpts = new HashMap<String, String>();\r
+ ffc.getFvImagesFvImageOptions(fvName, mFvOpts);\r
+ String bSize = "";\r
+ String numBlks = "";\r
+ String fvSize = "";\r
+ String fvFile = "";\r
+ if (mFvOpts.get("EFI_FILE_NAME") != null) {\r
+ fvFile = mFvOpts.get("EFI_FILE_NAME");\r
+ }\r
+ if (mFvOpts.get("EFI_BLOCK_SIZE") != null && mFvOpts.get("EFI_NUM_BLOCKS") != null) {\r
+ bSize = mFvOpts.get("EFI_BLOCK_SIZE");\r
+ numBlks = mFvOpts.get("EFI_NUM_BLOCKS");\r
+ boolean blockSizeWellFormat = true;\r
+ boolean numOfBlockWellFormat = true;\r
+ if (!DataValidation.isHexDoubleWordDataType(bSize) && !DataValidation.isInt(bSize)) {\r
+ blockSizeWellFormat = false;\r
+ JOptionPane.showMessageDialog(frame, fvName + " block size bad format.");\r
+ } \r
+ if (!DataValidation.isHexDoubleWordDataType(numBlks) && !DataValidation.isInt(numBlks)) {\r
+ numOfBlockWellFormat = false;\r
+ JOptionPane.showMessageDialog(frame, fvName + " number of blocks bad format.");\r
+ }\r
+ if (blockSizeWellFormat && numOfBlockWellFormat) {\r
+ int size = Integer.decode(bSize);\r
+ int num = Integer.decode(numBlks);\r
+ fvSize = "0x" + Integer.toHexString(size*num);\r
+ }\r
+ }\r
+ \r
+ return new String[]{fvName, fvSize, fvFile};\r
+\r
+ }\r
+ \r
+ /**\r
+ * This method initializes jPanelBgFvName \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelBgFvName() {\r
+ if (jPanelBgFvName == null) {\r
+ jPanelBgFvName = new JPanel();\r
+ jPanelBgFvName.setPreferredSize(new java.awt.Dimension(80,55));\r
+ jPanelBgFvName.add(getJButtonFvNameAdd(), null);\r
+ jPanelBgFvName.add(getJButtonFvNameDel(), null);\r
+ }\r
+ return jPanelBgFvName;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jPanelBgFvImage \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelBgFvImage() {\r
+ if (jPanelBgFvImage == null) {\r
+ jPanelBgFvImage = new JPanel();\r
+ jPanelBgFvImage.setPreferredSize(new java.awt.Dimension(150,100));\r
+ jPanelBgFvImage.add(getJButtonAddFvImage(), null);\r
+ jPanelBgFvImage.add(getJButtonDelFvImage(), null);\r
+ jPanelBgFvImage.add(getJButtonUpdateFvImage(), null);\r
+ }\r
+ return jPanelBgFvImage;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jPanelW \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelW() {\r
+ if (jPanelW == null) {\r
+ jPanelW = new JPanel();\r
+ jPanelW.add(getJPanelBgFvImage(), null);\r
+ }\r
+ return jPanelW;\r
+ }\r
+\r
/**\r
* @param args\r
*/\r
* @return void\r
*/\r
private void initialize() {\r
- this.setSize(518, 650);\r
+ this.setSize(660, 650);\r
this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
this.setContentPane(getJContentPane());\r
this.setTitle("FPD Flash Definitions");\r
if (jTableFvInfo.isEditing()) {\r
jTableFvInfo.getCellEditor().stopCellEditing();\r
}\r
+ if (jTableFvAdditional.isEditing()) {\r
+ jTableFvAdditional.getCellEditor().stopCellEditing();\r
+ }\r
}\r
});\r
}\r
\r
private void init(FpdFileContents ffc) {\r
- if (ffc.getFvImagesFvImageCount() == 0) {\r
- return;\r
- }\r
- String[][] saa = new String[ffc.getFvImagesFvImageCount()][2];\r
- ffc.getFvImagesFvImages(saa);\r
- \r
- int i = 0;\r
- while (i < saa.length) {\r
- \r
- fvImageParaTableModel.addRow(saa[i]);\r
- ++i;\r
- }\r
- \r
- saa = new String[ffc.getFvImagesNameValueCount()][2];\r
- ffc.getFvImagesNameValues(saa);\r
- for (int m = 0; m < saa.length; ++m) {\r
- fvPropertyTableModel.addRow(saa[m]);\r
- }\r
+ initFvAttributes();\r
\r
jTextFieldFdf.setText("");\r
String fdfFile = ffc.getFlashDefinitionFile();\r
- if (fdfFile != null) {\r
+ if (fdfFile != null && fdfFile.length() > 0) {\r
jTextFieldFdf.setText(fdfFile);\r
+ String fdfPath = System.getenv("WORKSPACE") + File.separator + fdfFile;\r
+ initFvInFdfTable(fdfPath);\r
}\r
\r
- String fdfPath = System.getenv("WORKSPACE") + File.separator + fdfFile;\r
- Vector<FvInfoFromFdf> vFvInfo = new Vector<FvInfoFromFdf>();\r
- getFvInfoFromFdf(fdfPath, vFvInfo);\r
- getFvInFdfTableModel().setRowCount(0);\r
- for (int j = 0; j < vFvInfo.size(); ++j) {\r
- FvInfoFromFdf fvInfo = vFvInfo.get(j);\r
- String[] row = {fvInfo.getFvName(), fvInfo.getSize(), fvInfo.getEfiFileName()};\r
- getFvInFdfTableModel().addRow(row);\r
- }\r
- \r
-\r
- for (int k = 0; k < vFvInfo.size(); ++k) {\r
- FvInfoFromFdf fvInfo = vFvInfo.get(k);\r
- getJTabbedPane().addTab(fvInfo.getFvName(), null, new ModuleOrderPane(), null);\r
-\r
- }\r
+ initFvAdditionalTable();\r
}\r
\r
private void getOptionNameValue(Map<String, String> m){\r
return jContentPane;\r
}\r
\r
+ private void getFlashInfoFromFdf (String fdfPath) {\r
+ File fdf = new File(fdfPath);\r
+ if (!fdf.exists()) {\r
+ return;\r
+ }\r
+ int lines = 0;\r
+\r
+ try {\r
+ FileReader reader = new FileReader(fdf);\r
+ BufferedReader in = new BufferedReader(reader);\r
+ String str;\r
+\r
+ while ((str = in.readLine()) != null) {\r
+ ++lines;\r
+ str = str.trim();\r
+ //\r
+ // skip empty line, comment (start with //) \r
+ //\r
+ if (str.length() == 0 || str.startsWith("//")) {\r
+ continue;\r
+ }\r
+ //\r
+ // ErasePolarity\r
+ //\r
+ if (str.startsWith("ErasePolarity")) {\r
+ erasePolarity = str.substring(str.indexOf("=") + 1, str.lastIndexOf(",")).trim();\r
+ }\r
+ //\r
+ // dig into Block section.\r
+ //\r
+ if (str.startsWith("Block") && str.endsWith("}")) {\r
+ String[] blockSec = str.split(",");\r
+ String nv = blockSec[1].trim();\r
+ String[] sizeSec = nv.split("=");\r
+ vBlockSize.add(sizeSec[1].trim());\r
+ }\r
+ \r
+ }\r
+ \r
+ reader.close();\r
+ in.close();\r
+ }\r
+ catch (Exception e) {\r
+ \r
+ }\r
+ }\r
+ \r
private void getFvInfoFromFdf(String fdfPath, Vector<FvInfoFromFdf> vFvInfo) {\r
File fdf = new File(fdfPath);\r
if (!fdf.exists()) {\r
}\r
\r
}\r
- } catch (Exception e) {\r
+ \r
+ reader.close();\r
+ in.close();\r
+ }\r
+ catch (Exception e) {\r
\r
}\r
\r
private JButton jButtonDown = null;\r
private JButton jButtonOk = null;\r
private JButton jButtonCancel = null;\r
- private NonEditableTableModel modInFvTableModel = null;\r
- private NonEditableTableModel fpdModTableModel = null;\r
+ private IDefaultTableModel modInFvTableModel = null;\r
+ private IDefaultTableModel fpdModTableModel = null;\r
+ private HashMap<String, ModuleIdentification> mGuidToModuleId = null;\r
+ private ArrayList<String> listModGuidInFv = null;\r
+ private String title = null;\r
+ private String outputFileName = null;\r
\r
- public ModuleOrderPane() {\r
+ public ModuleOrderPane(String tabTitle, String file) {\r
super(new BorderLayout());\r
+ title = tabTitle;\r
+ outputFileName = file;\r
+ mGuidToModuleId = new HashMap<String, ModuleIdentification>();\r
+ listModGuidInFv = new ArrayList<String>();\r
add(getJPanelModOrderN(), java.awt.BorderLayout.NORTH);\r
add(getJPanelModOrderS(), java.awt.BorderLayout.SOUTH);\r
add(getJPanelModOrderC(), java.awt.BorderLayout.CENTER);\r
- addComponentListener(new java.awt.event.ComponentAdapter() {\r
- public void componentShown(java.awt.event.ComponentEvent e) {\r
- String title = jTabbedPane.getTitleAt(jTabbedPane.getSelectedIndex()); // TODO Auto-generated Event stub componentShown()\r
- showModulesInFv(title);\r
- showAllModulesInPlatform();\r
- }\r
- });\r
+ showModulesInFv(title);\r
+ showAllModulesInPlatform();\r
}\r
\r
private void showModulesInFv(String fvName) {\r
ffc.getUserExtsIncMods(fvName, saa);\r
\r
for (int i = 0; i < size; ++i) {\r
+ listModGuidInFv.add(saa[i][0].toLowerCase());\r
String name = getModuleName(saa[i][0]);\r
String[] row = { name };\r
modInFvTableModel.addRow(row);\r
Iterator<String> iter = vGuid.iterator();\r
while (iter.hasNext()){\r
String guid = iter.next();\r
- String moduleName = getModuleName(guid);\r
- if (existedInTable(moduleName, modInFvTableModel)) {\r
- vGuid.remove(guid);\r
+// String moduleName = getModuleName(guid);\r
+// if (existedInTable(moduleName, modInFvTableModel)) {\r
+// vGuid.remove(guid);\r
+// }\r
+ if (!listModGuidInFv.contains(guid.toLowerCase())) {\r
+ String[] row = {getModuleName(guid)};\r
+ modInFvTableModel.addRow(row);\r
}\r
}\r
- \r
- for (int j = 0; j < vGuid.size(); ++j) {\r
- String[] row = {getModuleName(vGuid.get(j))};\r
- modInFvTableModel.addRow(row);\r
- }\r
+\r
}\r
\r
private void showAllModulesInPlatform() {\r
private String getModuleName (String guid) {\r
\r
for (int i = 0; i < GlobalData.vModuleList.size(); ++i) {\r
- String mg = GlobalData.vModuleList.get(i).getGuid();\r
+ ModuleIdentification mi = GlobalData.vModuleList.get(i);\r
+ String mg = mi.getGuid();\r
if (mg == null) {\r
continue;\r
}\r
if (mg.equalsIgnoreCase(guid)) {\r
- return GlobalData.vModuleList.get(i).getName();\r
+ mGuidToModuleId.put(guid.toLowerCase(), mi);\r
+ return mi.getName();\r
}\r
}\r
\r
return false;\r
}\r
\r
+ \r
+ \r
/**\r
* This method initializes jPanelModOrderN \r
* \r
*/\r
private JTable getJTableModInFv() {\r
if (jTableModInFv == null) {\r
- modInFvTableModel = new NonEditableTableModel();\r
+ modInFvTableModel = new IDefaultTableModel();\r
modInFvTableModel.addColumn("Module Orders in FV");\r
jTableModInFv = new JTable(modInFvTableModel);\r
jTableModInFv.setRowHeight(20);\r
jTableModInFv.setShowGrid(false);\r
+ \r
}\r
return jTableModInFv;\r
}\r
*/\r
private JTable getJTableFpdModules() {\r
if (jTableFpdModules == null) {\r
- fpdModTableModel = new NonEditableTableModel();\r
+ fpdModTableModel = new IDefaultTableModel();\r
TableSorter sorter = new TableSorter(fpdModTableModel);\r
jTableFpdModules = new JTable(sorter);\r
jTableFpdModules.setRowHeight(20);\r
jTableFpdModules.setShowGrid(false);\r
fpdModTableModel.addColumn("Modules in Platform");\r
+\r
}\r
return jTableFpdModules;\r
}\r
if (selectedRowLeft < 0) {\r
modInFvTableModel.addRow(row);\r
jTableModInFv.changeSelection(jTableModInFv.getRowCount() - 1, 0, false, false);\r
- fpdModTableModel.removeRow(rowInModel);\r
}\r
else {\r
modInFvTableModel.insertRow(selectedRowLeft, row);\r
jTableModInFv.changeSelection(selectedRowLeft, 0, false, false);\r
}\r
+ fpdModTableModel.removeRow(rowInModel);\r
}\r
});\r
}\r
jButtonOk = new JButton();\r
jButtonOk.setPreferredSize(new java.awt.Dimension(80,20));\r
jButtonOk.setText("Ok");\r
+ jButtonOk.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ // need reset FvBindings in ModuleSA.\r
+ ffc.removeFvBindingAll(title);\r
+ //\r
+ // collect module order information to store them into <BuildOptions> -> <UserExtensions>.\r
+ // also update the FvBinding info in <ModuleSA>.\r
+ //\r
+ Vector<String[]> vModInFv = new Vector<String[]>();\r
+ for (int i = 0; i < jTableModInFv.getRowCount(); ++i) {\r
+ String moduleName = jTableModInFv.getValueAt(i, 0)+"";\r
+ if (moduleName.length() == 0) {\r
+ continue;\r
+ }\r
+ ModuleIdentification mi = null;\r
+ Set<String> key = mGuidToModuleId.keySet();\r
+ Iterator<String> iter = key.iterator();\r
+ while (iter.hasNext()) {\r
+ String guid = iter.next();\r
+ mi = mGuidToModuleId.get(guid);\r
+ if (mi.getName().equals(moduleName)) {\r
+ String[] sa = {guid, WorkspaceProfile.getModuleBaseName(mi)};\r
+ vModInFv.add(sa);\r
+ ffc.updateFvBindingInModuleSA (mi, title);\r
+ break;\r
+ }\r
+ }\r
+ \r
+ }\r
+ ffc.removeBuildOptionsUserExtensions(title);\r
+ ffc.genBuildOptionsUserExtensions(title, outputFileName, vModInFv);\r
+ \r
+ docConsole.setSaved(false);\r
+ jTabbedPane.setSelectedIndex(0);\r
+ }\r
+ });\r
}\r
return jButtonOk;\r
}\r
\r
} // @jve:decl-index=0:visual-constraint="10,10"\r
\r
+class FvOptsTableModel extends DefaultTableModel {\r
+\r
+ private static final long serialVersionUID = 1L;\r
+ \r
+ private Vector<Object> vNonEditableName = new Vector<Object>();\r
+ private Vector<Object> vKeyWords = new Vector<Object>();\r
+ \r
+ public boolean isCellEditable(int row, int col) {\r
+ if (vNonEditableName.size() > 0 || vKeyWords.size() > 0) {\r
+ if (vKeyWords.contains(getValueAt(row, 0))) {\r
+ return false;\r
+ }\r
+ if (vNonEditableName.contains(getValueAt(row, 0)) && col == 0) {\r
+ return false;\r
+ }\r
+ } \r
+ \r
+ return true;\r
+ }\r
+\r
+ /**\r
+ * @return Returns the vKeyWords.\r
+ */\r
+ protected Vector<Object> getVKeyWords() {\r
+ return vKeyWords;\r
+ }\r
+\r
+ /**\r
+ * @param keyWords The vKeyWords to set.\r
+ */\r
+ protected void setVKeyWords(Vector<Object> keyWords) {\r
+ vKeyWords.removeAllElements();\r
+ vKeyWords.addAll(keyWords);\r
+ }\r
+\r
+ /**\r
+ * @return Returns the vNonEditableName.\r
+ */\r
+ protected Vector<Object> getVNonEditableName() {\r
+ return vNonEditableName;\r
+ }\r
+\r
+ /**\r
+ * @param nonEditableName The vNonEditableName to set.\r
+ */\r
+ protected void setVNonEditableName(Vector<Object> nonEditableName) {\r
+ vNonEditableName.removeAllElements();\r
+ vNonEditableName.addAll(nonEditableName);\r
+ }\r
+ \r
+}\r
class ImageParaTableModel extends DefaultTableModel {\r
\r
private static final long serialVersionUID = 1L;\r
\r
public boolean isCellEditable(int row, int col) {\r
- if (getValueAt(row, 1).equals("ImageName") && col >=1) {\r
- return false;\r
- }\r
- return true;\r
+// if (getValueAt(row, 1).equals("ImageName") && col >=1) {\r
+// return false;\r
+// }\r
+// return true;\r
+ return false;\r
}\r
}\r
\r