+ 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