+ /**\r
+ * This method initializes jPanelFdfCBottomN \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelFdfCBottomN() {\r
+ if (jPanelFdfCBottomN == null) {\r
+ jLabelFvAdditional = new JLabel();\r
+ jLabelFvAdditional.setText("Additional FVs");\r
+ jPanelFdfCBottomN = new JPanel();\r
+ jPanelFdfCBottomN.add(jLabelFvAdditional, null);\r
+ }\r
+ return jPanelFdfCBottomN;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jPanelFdfCBottomC \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelFdfCBottomC() {\r
+ if (jPanelFdfCBottomC == null) {\r
+ jPanelFdfCBottomC = new JPanel();\r
+ jPanelFdfCBottomC.add(getJScrollPaneFvAdditional(), null);\r
+ }\r
+ return jPanelFdfCBottomC;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPaneFvInFdf \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPaneFvInFdf() {\r
+ if (jScrollPaneFvInFdf == null) {\r
+ jScrollPaneFvInFdf = new JScrollPane();\r
+ jScrollPaneFvInFdf.setPreferredSize(new java.awt.Dimension(653,200));\r
+ jScrollPaneFvInFdf.setViewportView(getJTableFvInFdf());\r
+ }\r
+ return jScrollPaneFvInFdf;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTableFvInFdf \r
+ * \r
+ * @return javax.swing.JTable \r
+ */\r
+ private JTable getJTableFvInFdf() {\r
+ if (jTableFvInFdf == null) {\r
+ jTableFvInFdf = new JTable();\r
+ jTableFvInFdf.setRowHeight(20);\r
+ jTableFvInFdf.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);\r
+ jTableFvInFdf.setModel(getFvInFdfTableModel());\r
+ }\r
+ return jTableFvInFdf;\r
+ }\r
+\r
+ /**\r
+ * This method initializes fvInFdfTableModel \r
+ * \r
+ * @return org.tianocore.frameworkwizard.platform.ui.NonEditableTableModel \r
+ */\r
+ private IDefaultTableModel getFvInFdfTableModel() {\r
+ if (fvInFdfTableModel == null) {\r
+ fvInFdfTableModel = new IDefaultTableModel();\r
+ fvInFdfTableModel.addColumn("FV Name");\r
+ fvInFdfTableModel.addColumn("Size");\r
+ fvInFdfTableModel.addColumn("Corresponding File Name");\r
+ }\r
+ return fvInFdfTableModel;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonFvInFdfOptions \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonFvInFdfOptions() {\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
+ int selectedRow = jTableFvInFdf.getSelectedRow();\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
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPaneFvAdditional() {\r
+ if (jScrollPaneFvAdditional == null) {\r
+ jScrollPaneFvAdditional = new JScrollPane();\r
+ jScrollPaneFvAdditional.setPreferredSize(new java.awt.Dimension(653,200));\r
+ jScrollPaneFvAdditional.setViewportView(getJTableFvAdditional());\r
+ }\r
+ return jScrollPaneFvAdditional;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTableFvAdditional \r
+ * \r
+ * @return javax.swing.JTable \r
+ */\r
+ private JTable getJTableFvAdditional() {\r
+ if (jTableFvAdditional == null) {\r
+ jTableFvAdditional = new JTable();\r
+ jTableFvAdditional.setRowHeight(20);\r
+ jTableFvAdditional.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);\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 fvAdditionalTableModel \r
+ * \r
+ * @return javax.swing.table.DefaultTableModel \r
+ */\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 fvAdditionalTableModel;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonAddFv \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonAddFv() {\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
+\r
+ /**\r
+ * This method initializes jButtonDelFv \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonDelFv() {\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
+\r
+ /**\r
+ * This method initializes jButtonAddFvOptions \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonAddFvOptions() {\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
+ public static void main(String[] args) {\r
+ // TODO Auto-generated method stub\r
+ new FpdFlash().setVisible(true);\r
+ }\r
+\r
+ /**\r
+ * This method initializes this\r
+ * \r
+ * @return void\r
+ */\r
+ private void initialize() {\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
+ this.addInternalFrameListener(new InternalFrameAdapter(){\r
+ public void internalFrameDeactivated(InternalFrameEvent e){\r
+ if (jTableFvProp.isEditing()) {\r
+ jTableFvProp.getCellEditor().stopCellEditing();\r
+ }\r
+ if (jTableFvImageNames.isEditing()) {\r
+ jTableFvImageNames.getCellEditor().stopCellEditing();\r
+ }\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
+ initFvAttributes();\r
+ \r
+ jTextFieldFdf.setText("");\r
+ String fdfFile = ffc.getFlashDefinitionFile();\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
+ initFvAdditionalTable();\r
+ }\r
+ \r
+ private void getOptionNameValue(Map<String, String> m){\r
+ for (int i = 0; i < jTableFvImageOpts.getRowCount(); ++i) {\r
+ m.put(fvOptionTableModel.getValueAt(i, 0)+"", fvOptionTableModel.getValueAt(i, 1)+"");\r
+ }\r
+ }\r
+ /**\r
+ * This method initializes jContentPane\r
+ * \r
+ * @return javax.swing.JPanel\r
+ */\r
+ private JPanel getJContentPane() {\r
+ if (jContentPane == null) {\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(new BorderLayout());\r
+ jContentPane.add(getJPanelContentEast(), java.awt.BorderLayout.EAST);\r
+ jContentPane.add(getJPanelContentSouth(), java.awt.BorderLayout.SOUTH);\r
+ jContentPane.add(getJPanelContentWest(), java.awt.BorderLayout.WEST);\r
+ jContentPane.add(getJPanelContentNorth(), java.awt.BorderLayout.NORTH);\r
+ jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);\r
+ }\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
+ 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
+ // dig into Region {} section, create FvInfoFromFdf object for it.\r
+ //\r
+ if (str.startsWith("Region") && str.endsWith("{")) {\r
+ FvInfoFromFdf fvInfo = new FvInfoFromFdf();\r
+ boolean nameFound = false;\r
+ boolean sizeFound = false;\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
+ if (str.startsWith("Name")) {\r
+ int firstQuote = str.indexOf("\"");\r
+ int lastQuote = str.lastIndexOf("\"");\r
+ fvInfo.setFvName(str.substring(firstQuote + 1, lastQuote));\r
+ nameFound = true;\r
+ }\r
+ \r
+ if (str.startsWith("Size")) {\r
+ int equalIndex = str.indexOf("=");\r
+ int commaIndex = str.indexOf(",");\r
+ fvInfo.setSize(str.substring(equalIndex + 1, commaIndex).trim());\r
+ sizeFound = true;\r
+ }\r
+ \r
+ if (nameFound && sizeFound) {\r
+ break;\r
+ }\r
+ }\r
+ \r
+ vFvInfo.add(fvInfo);\r
+ }\r
+ //\r
+ // dig into File {} section, supply file name information to existing FvInfoFromFdf object.\r
+ //\r
+ if (str.startsWith("File")) {\r
+ boolean fileNameFound = false;\r
+ boolean fvFound = false;\r
+ String fileName = "";\r
+ String fvName = "";\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
+ if (str.startsWith("Name")) {\r
+ int firstQuote = str.indexOf("\"");\r
+ int lastQuote = str.lastIndexOf("\"");\r
+ fileName = str.substring(firstQuote + 1, lastQuote);\r
+ fileNameFound = true;\r
+ }\r
+ \r
+ if (str.startsWith("Region")) {\r
+ int firstQuote = str.indexOf("\"");\r
+ int lastQuote = str.lastIndexOf("\"");\r
+ fvName = str.substring(firstQuote + 1, lastQuote);\r
+ fvFound = true;\r
+ }\r
+ \r
+ if (fileNameFound && fvFound) {\r
+ break;\r
+ }\r
+ }\r
+ \r
+ for (int i = 0; i <vFvInfo.size(); ++i) {\r
+ if (vFvInfo.get(i).getFvName().equals(fvName)) {\r
+ vFvInfo.get(i).setEfiFileName(fileName);\r
+ }\r
+ }\r
+ }\r
+ \r
+ }\r
+ \r
+ reader.close();\r
+ in.close();\r
+ }\r
+ catch (Exception e) {\r
+ \r
+ }\r
+\r
+ }\r
+ \r
+// class ModuleSAInfo {\r
+// private int rowNumber = -1;\r
+// private String moduleGuid = null;\r
+// private String moduleVersion = null;\r
+// private String packageGuid = null;\r
+// private String packageVersion = null;\r
+// private String arch = null;\r
+// \r
+// public ModuleSAInfo (String mg, String mv, String pg, String pv, String a) {\r
+// moduleGuid = mg;\r
+// moduleVersion = mv;\r
+// packageGuid = pg;\r
+// packageVersion = pv;\r
+// arch = a;\r
+// }\r
+//\r
+// /**\r
+// * @return Returns the arch.\r
+// */\r
+// public String getArch() {\r
+// return arch;\r
+// }\r
+//\r
+// /**\r
+// * @param arch The arch to set.\r
+// */\r
+// public void setArch(String arch) {\r
+// this.arch = arch;\r
+// }\r
+//\r
+// /**\r
+// * @return Returns the moduleGuid.\r
+// */\r
+// public String getModuleGuid() {\r
+// return moduleGuid;\r
+// }\r
+//\r
+// /**\r
+// * @param moduleGuid The moduleGuid to set.\r
+// */\r
+// public void setModuleGuid(String moduleGuid) {\r
+// this.moduleGuid = moduleGuid;\r
+// }\r
+//\r
+// /**\r
+// * @return Returns the moduleVersion.\r
+// */\r
+// public String getModuleVersion() {\r
+// return moduleVersion;\r
+// }\r
+//\r
+// /**\r
+// * @param moduleVersion The moduleVersion to set.\r
+// */\r
+// public void setModuleVersion(String moduleVersion) {\r
+// this.moduleVersion = moduleVersion;\r
+// }\r
+//\r
+// /**\r
+// * @return Returns the packageGuid.\r
+// */\r
+// public String getPackageGuid() {\r
+// return packageGuid;\r
+// }\r
+//\r
+// /**\r
+// * @param packageGuid The packageGuid to set.\r
+// */\r
+// public void setPackageGuid(String packageGuid) {\r
+// this.packageGuid = packageGuid;\r
+// }\r
+//\r
+// /**\r
+// * @return Returns the packageVersion.\r
+// */\r
+// public String getPackageVersion() {\r
+// return packageVersion;\r
+// }\r
+//\r
+// /**\r
+// * @param packageVersion The packageVersion to set.\r
+// */\r
+// public void setPackageVersion(String packageVersion) {\r
+// this.packageVersion = packageVersion;\r
+// }\r
+//\r
+// /**\r
+// * @return Returns the rowNumber.\r
+// */\r
+// public int getRowNumber() {\r
+// return rowNumber;\r
+// }\r
+//\r
+// /**\r
+// * @param rowNumber The rowNumber to set.\r
+// */\r
+// public void setRowNumber(int rowNumber) {\r
+// this.rowNumber = rowNumber;\r
+// }\r
+// }\r
+ \r
+ private class ModuleOrderPane extends JPanel {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = 1L;\r
+ private JPanel jPanelModOrderN = null;\r
+ private JPanel jPanelModOrderS = null;\r
+ private JPanel jPanelModOrderC = null;\r
+ private JScrollPane jScrollPaneModInFv = null;\r
+ private JTable jTableModInFv = null;\r
+ private JPanel jPanelController = null;\r
+ private JScrollPane jScrollPaneFpdModules = null;\r
+ private JTable jTableFpdModules = null;\r
+ private JButton jButtonUp = null;\r
+ private JButton jButtonInsert = null;\r
+ private JButton jButtonRemove = null;\r
+ private JButton jButtonDown = null;\r
+ private JButton jButtonOk = null;\r
+ private JButton jButtonCancel = null;\r
+ private IDefaultTableModel modInFvTableModel = null;\r
+ private IDefaultTableModel fpdModTableModel = null;\r
+// private ArrayList<ModuleSAInfo> listTableModInFvModuleSAInfo = null;\r
+// private ArrayList<ModuleSAInfo> listTableFpdModulesModuleSAInfo = null;\r
+ private String title = null;\r
+ private String outputFileName = null;\r
+ \r
+ public ModuleOrderPane(String tabTitle, String file) {\r
+ super(new BorderLayout());\r
+ title = tabTitle;\r
+ outputFileName = file;\r
+// listTableModInFvModuleSAInfo = new ArrayList<ModuleSAInfo>();\r
+// listTableFpdModulesModuleSAInfo = new ArrayList<ModuleSAInfo>();\r
+ add(getJPanelModOrderN(), java.awt.BorderLayout.NORTH);\r
+ add(getJPanelModOrderS(), java.awt.BorderLayout.SOUTH);\r
+ add(getJPanelModOrderC(), java.awt.BorderLayout.CENTER);\r
+ showModulesInFv(title);\r
+ showAllModulesInPlatform();\r
+ }\r
+ \r
+ private void showModulesInFv(String fvName) {\r
+ int size = ffc.getUserExtsIncModCount(fvName);\r
+ \r
+ if (size != -1) {\r
+ String[][] saa = new String[size][5];\r
+ ffc.getUserExtsIncMods(fvName, saa);\r
+\r
+ for (int i = 0; i < size; ++i) {\r
+ String moduleKey = saa[i][0] + " " + saa[i][1] + " " + saa[i][2] + " " + saa[i][3];\r
+ ModuleIdentification mi = WorkspaceProfile.getModuleId(moduleKey);\r
+ String name = "N/A";\r
+ if (mi != null) {\r
+ name = mi.getName();\r
+ }\r
+ String[] row = { name, saa[i][0] , saa[i][1], saa[i][2] , saa[i][3], saa[i][4] };\r
+ modInFvTableModel.addRow(row);\r
+ }\r
+ }\r
+ //\r
+ // From ModuleSAs, get module guids with FvBinding = fvName.\r
+ //\r
+ Vector<String[]> vModuleSA = new Vector<String[]>();\r
+ ffc.getFrameworkModuleSAByFvBinding(fvName, vModuleSA);\r
+ //\r
+ // If BuildOptions->UserExtensions already contain these module info,\r
+ // no need to add them into table again.\r
+ //\r
+ Iterator<String[]> iter = vModuleSA.iterator();\r
+ while (iter.hasNext()){\r
+ String[] sa = iter.next();\r
+ if (!moduleInfoInTable (sa, modInFvTableModel)) {\r
+ String moduleKey = sa[0] + " " + sa[1] + " " + sa[2] + " " + sa[3];\r
+ ModuleIdentification mi = WorkspaceProfile.getModuleId(moduleKey);\r
+ String name = "N/A";\r
+ if (mi != null) {\r
+ name = mi.getName();\r
+ }\r
+ String[] row = { name, sa[0] , sa[1], sa[2] , sa[3], sa[4] };\r
+ modInFvTableModel.addRow(row);\r
+ }\r
+ }\r
+\r
+ }\r
+ \r
+ private void showAllModulesInPlatform() {\r
+ int size = ffc.getFrameworkModulesCount();\r
+ String[][] saa = new String[size][5];\r
+ ffc.getFrameworkModulesInfo(saa);\r
+ \r
+ for (int i = 0; i < size; ++i) {\r
+ if (moduleInfoInTable(saa[i], modInFvTableModel) || moduleInfoInTable(saa[i], fpdModTableModel)) {\r
+ continue;\r
+ }\r
+ String moduleKey = saa[i][0] + " " + saa[i][1] + " " + saa[i][2] + " " + saa[i][3];\r
+ ModuleIdentification mi = WorkspaceProfile.getModuleId(moduleKey);\r
+ String name = "N/A";\r
+ if (mi != null) {\r
+ name = mi.getName();\r
+ }\r
+ String[] row = { name, saa[i][0] , saa[i][1], saa[i][2] , saa[i][3], saa[i][4] };\r
+ fpdModTableModel.addRow(row);\r
+ }\r
+ \r
+ TableSorter sorter = (TableSorter)jTableFpdModules.getModel();\r
+ sorter.setSortState(0, TableSorter.ASCENDING);\r
+ }\r
+ \r
+ \r
+ private boolean moduleInfoInTable (String[] moduleInfo, DefaultTableModel model) {\r
+ boolean matched = false;\r
+ int size = model.getDataVector().size();\r
+ for (int i = 0; i < size; ++i) {\r
+ Vector rowData = (Vector)model.getDataVector().elementAt(i);\r
+ for (int j = 1; j < rowData.size(); ++j) {\r
+ if (rowData.elementAt(j) == null && moduleInfo[j-1] == null) {\r
+ matched = true;\r
+ }\r
+ else if (rowData.elementAt(j).equals("null") && moduleInfo[j-1] == null) {\r
+ matched = true;\r
+ }\r
+ else if (rowData.elementAt(j) == null && moduleInfo[j-1].equals("null")) {\r
+ matched = true;\r
+ }\r
+ else if (rowData.elementAt(j) != null && rowData.elementAt(j).toString().equalsIgnoreCase(moduleInfo[j-1])) {\r
+ matched = true;\r
+ }\r
+ else {\r
+ matched = false;\r
+ break;\r
+ }\r
+ }\r
+ \r
+ if (matched) {\r
+ return true;\r
+ }\r
+ \r
+ }\r
+ return false;\r
+ }\r
+ \r
+ \r
+ \r
+ /**\r
+ * This method initializes jPanelModOrderN \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelModOrderN() {\r
+ if (jPanelModOrderN == null) {\r
+ jPanelModOrderN = new JPanel();\r
+ }\r
+ return jPanelModOrderN;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jPanelModOrderS \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelModOrderS() {\r
+ if (jPanelModOrderS == null) {\r
+ FlowLayout flowLayout6 = new FlowLayout();\r
+ flowLayout6.setAlignment(java.awt.FlowLayout.RIGHT);\r
+ jPanelModOrderS = new JPanel();\r
+ jPanelModOrderS.setLayout(flowLayout6);\r
+ jPanelModOrderS.add(getJButtonOk(), null);\r
+ jPanelModOrderS.add(getJButtonCancel(), null);\r
+ }\r
+ return jPanelModOrderS;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jPanelModOrderC \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelModOrderC() {\r
+ if (jPanelModOrderC == null) {\r
+ jPanelModOrderC = new JPanel();\r
+ jPanelModOrderC.add(getJScrollPaneModInFv(), null);\r
+ jPanelModOrderC.add(getJPanelController(), null);\r
+ jPanelModOrderC.add(getJScrollPaneFpdModules(), null);\r
+ }\r
+ return jPanelModOrderC;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPaneModInFv \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPaneModInFv() {\r
+ if (jScrollPaneModInFv == null) {\r
+ jScrollPaneModInFv = new JScrollPane();\r
+ jScrollPaneModInFv.setPreferredSize(new java.awt.Dimension(200,500));\r
+ jScrollPaneModInFv.setViewportView(getJTableModInFv());\r
+ }\r
+ return jScrollPaneModInFv;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTableModInFv \r
+ * \r
+ * @return javax.swing.JTable \r
+ */\r
+ private JTable getJTableModInFv() {\r
+ if (jTableModInFv == null) {\r
+ modInFvTableModel = new IDefaultTableModel();\r
+ \r
+ jTableModInFv = new JTable(modInFvTableModel){\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = 4903583933542581721L;\r
+\r
+ public String getToolTipText(MouseEvent e) {\r
+ String tip = null;\r
+ java.awt.Point p = e.getPoint();\r
+ int rowIndex = rowAtPoint(p);\r
+// int colIndex = columnAtPoint(p);\r
+// int realColumnIndex = convertColumnIndexToModel(colIndex);\r
+\r
+ TableModel model = getModel();\r
+ String mg = (String) model.getValueAt(rowIndex, 1);\r
+ String mv = (String) model.getValueAt(rowIndex, 2);\r
+ String pg = (String) model.getValueAt(rowIndex, 3);\r
+ String pv = (String) model.getValueAt(rowIndex, 4);\r
+ String arch = (String) model.getValueAt(rowIndex, 5);\r
+ ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv);\r
+ if (mi != null) {\r
+ tip = "Path: " + mi.getPath() + "; Arch: " + arch + ";";\r
+ }\r
+ else {\r
+ tip = "No Module Path Information."; \r
+ }\r
+ \r
+ return tip;\r
+ }\r
+\r
+ };\r
+ modInFvTableModel.addColumn("Module Orders in FV");\r
+ modInFvTableModel.addColumn("mg");\r
+ modInFvTableModel.addColumn("mv");\r
+ modInFvTableModel.addColumn("pg");\r
+ modInFvTableModel.addColumn("pv");\r
+ modInFvTableModel.addColumn("arch");\r
+ \r
+ for (int i = 1; i < 6; ++i) {\r
+ jTableModInFv.removeColumn(jTableModInFv.getColumnModel().getColumn(jTableModInFv.getColumnCount()-1));\r
+ }\r
+ \r
+ jTableModInFv.setRowHeight(20);\r
+ jTableModInFv.setShowGrid(false);\r
+ jTableModInFv.setAutoCreateColumnsFromModel(false);\r
+ jTableModInFv.addMouseListener(new MouseAdapter() {\r
+\r
+ /* (non-Javadoc)\r
+ * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)\r
+ */\r
+ @Override\r
+ public void mouseClicked(MouseEvent arg0) {\r
+ if (arg0.getButton() == MouseEvent.BUTTON3) {\r
+ java.awt.Point p = arg0.getPoint();\r
+ int rowIndex = jTableModInFv.rowAtPoint(p);\r
+ TableModel model = jTableModInFv.getModel();\r
+ String mg = (String) model.getValueAt(rowIndex, 1);\r
+ String mv = (String) model.getValueAt(rowIndex, 2);\r
+ String pg = (String) model.getValueAt(rowIndex, 3);\r
+ String pv = (String) model.getValueAt(rowIndex, 4);\r
+ ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv);\r
+ String details = "PackageGuid: " + pg + "; ModuleVer:" + mv + "; PkgVer:" + pv;\r
+ if (mi != null) {\r
+ details = "In Package " + mi.getPackageId().getName() + "; ModuleVer:" + mv + "; PkgVer:" + pv;\r
+ }\r
+ JOptionPane.showMessageDialog(frame, details);\r
+ }\r
+ }\r
+ \r
+ });\r
+ }\r
+ return jTableModInFv;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jPanelController \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelController() {\r
+ if (jPanelController == null) {\r
+ FlowLayout flowLayout5 = new FlowLayout();\r
+ flowLayout5.setVgap(50);\r
+ flowLayout5.setHgap(50);\r
+ jPanelController = new JPanel();\r
+ jPanelController.setLayout(flowLayout5);\r
+ jPanelController.setPreferredSize(new java.awt.Dimension(150,500));\r
+ jPanelController.add(getJButtonUp(), null);\r
+ jPanelController.add(getJButtonInsert(), null);\r
+ jPanelController.add(getJButtonRemove(), null);\r
+ jPanelController.add(getJButtonDown(), null);\r
+ }\r
+ return jPanelController;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPaneFpdModules \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPaneFpdModules() {\r
+ if (jScrollPaneFpdModules == null) {\r
+ jScrollPaneFpdModules = new JScrollPane();\r
+ jScrollPaneFpdModules.setPreferredSize(new java.awt.Dimension(200,500));\r
+ jScrollPaneFpdModules.setViewportView(getJTableFpdModules());\r
+ }\r
+ return jScrollPaneFpdModules;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTableFpdModules \r
+ * \r
+ * @return javax.swing.JTable \r
+ */\r
+ private JTable getJTableFpdModules() {\r
+ if (jTableFpdModules == null) {\r
+ fpdModTableModel = new IDefaultTableModel();\r
+ TableSorter sorter = new TableSorter(fpdModTableModel);\r
+ jTableFpdModules = new JTable(sorter){\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = -4666296888377637808L;\r
+\r
+ public String getToolTipText(MouseEvent e) {\r
+ String tip = null;\r
+ java.awt.Point p = e.getPoint();\r
+ int rowIndex = rowAtPoint(p);\r
+// int colIndex = columnAtPoint(p);\r
+// int realColumnIndex = convertColumnIndexToModel(colIndex);\r
+\r
+ TableModel model = getModel();\r
+ String mg = (String) model.getValueAt(rowIndex, 1);\r
+ String mv = (String) model.getValueAt(rowIndex, 2);\r
+ String pg = (String) model.getValueAt(rowIndex, 3);\r
+ String pv = (String) model.getValueAt(rowIndex, 4);\r
+ String arch = (String) model.getValueAt(rowIndex, 5);\r
+ ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv);\r
+ if (mi != null) {\r
+ tip = "Path: " + mi.getPath() + "; Arch: " + arch + ";";\r
+ }\r
+ else {\r
+ tip = "No Module Path Information."; \r
+ }\r
+ \r
+ return tip;\r
+ }\r
+\r
+ };\r
+ \r
+ fpdModTableModel.addColumn("Modules in Platform");\r
+ fpdModTableModel.addColumn("mg");\r
+ fpdModTableModel.addColumn("mv");\r
+ fpdModTableModel.addColumn("pg");\r
+ fpdModTableModel.addColumn("pv");\r
+ fpdModTableModel.addColumn("arch");\r
+ \r
+ for (int i = 1; i < 6; ++i) {\r
+ jTableFpdModules.removeColumn(jTableFpdModules.getColumnModel().getColumn(jTableFpdModules.getColumnCount()-1));\r
+ }\r
+ jTableFpdModules.setRowHeight(20);\r
+ jTableFpdModules.setShowGrid(false);\r
+ jTableFpdModules.setAutoCreateColumnsFromModel(false);\r
+ jTableFpdModules.addMouseListener(new MouseAdapter() {\r
+\r
+ /* (non-Javadoc)\r
+ * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)\r
+ */\r
+ @Override\r
+ public void mouseClicked(MouseEvent arg0) {\r
+ if (arg0.getButton() == MouseEvent.BUTTON3) {\r
+ java.awt.Point p = arg0.getPoint();\r
+ int rowIndex = jTableFpdModules.rowAtPoint(p);\r
+ TableModel model = jTableFpdModules.getModel();\r
+ String mg = (String) model.getValueAt(rowIndex, 1);\r
+ String mv = (String) model.getValueAt(rowIndex, 2);\r
+ String pg = (String) model.getValueAt(rowIndex, 3);\r
+ String pv = (String) model.getValueAt(rowIndex, 4);\r
+ ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv);\r
+ String details = "PackageGuid: " + pg + "; ModuleVer:" + mv + "; PkgVer:" + pv;\r
+ if (mi != null) {\r
+ details = "In Package " + mi.getPackageId().getName() + "; ModuleVer:" + mv + "; PkgVer:" + pv;\r
+ }\r
+ JOptionPane.showMessageDialog(frame, details);\r
+ }\r
+ }\r
+ \r
+ });\r
+\r
+ }\r
+ return jTableFpdModules;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonUp \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonUp() {\r
+ if (jButtonUp == null) {\r
+ jButtonUp = new JButton();\r
+ jButtonUp.setPreferredSize(new java.awt.Dimension(60,20));\r
+ jButtonUp.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 14));\r
+ jButtonUp.setText("^");\r
+ jButtonUp.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ int selectedRow = jTableModInFv.getSelectedRow();\r
+ if (selectedRow <= 0) {\r
+ return;\r
+ }\r
+ modInFvTableModel.moveRow(selectedRow, selectedRow, selectedRow - 1);\r
+ jTableModInFv.changeSelection(selectedRow - 1, 0, false, false);\r
+ }\r
+ });\r
+ }\r
+ return jButtonUp;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonInsert \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonInsert() {\r
+ if (jButtonInsert == null) {\r
+ jButtonInsert = new JButton();\r
+ jButtonInsert.setText("<");\r
+ jButtonInsert.setPreferredSize(new java.awt.Dimension(60,20));\r
+ jButtonInsert.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ int selectedRowRight = jTableFpdModules.getSelectedRow();\r
+ if (selectedRowRight < 0) {\r
+ return;\r
+ }\r
+ \r
+ int rowInModel = ((TableSorter)jTableFpdModules.getModel()).getModelRowIndex(selectedRowRight);\r
+ String name = fpdModTableModel.getValueAt(rowInModel, 0)+"";\r
+ String mg = fpdModTableModel.getValueAt(rowInModel, 1)+"";\r
+ String mv = fpdModTableModel.getValueAt(rowInModel, 2)+"";\r
+ String pg = fpdModTableModel.getValueAt(rowInModel, 3)+"";\r
+ String pv = fpdModTableModel.getValueAt(rowInModel, 4)+"";\r
+ String arch = fpdModTableModel.getValueAt(rowInModel, 5)+"";\r
+ String[] row = {name, mg, mv, pg, pv, arch};\r
+ if (name.length() == 0 || name.equals("N/A")) {\r
+ return;\r
+ }\r
+ \r
+ int selectedRowLeft = jTableModInFv.getSelectedRow();\r
+ if (selectedRowLeft < 0) {\r
+ modInFvTableModel.addRow(row);\r
+ jTableModInFv.changeSelection(jTableModInFv.getRowCount() - 1, 0, false, false);\r
+ }\r
+ else {\r
+ modInFvTableModel.insertRow(selectedRowLeft, row);\r
+ jTableModInFv.changeSelection(selectedRowLeft, 0, false, false);\r
+ }\r
+ fpdModTableModel.removeRow(rowInModel);\r
+ }\r
+ });\r
+ }\r
+ return jButtonInsert;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonRemove \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonRemove() {\r
+ if (jButtonRemove == null) {\r
+ jButtonRemove = new JButton();\r
+ jButtonRemove.setPreferredSize(new java.awt.Dimension(60,20));\r
+ jButtonRemove.setText(">");\r
+ jButtonRemove.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ int selectedRowLeft = jTableModInFv.getSelectedRow();\r
+ if (selectedRowLeft < 0) {\r
+ return;\r
+ }\r
+ \r
+ String name = modInFvTableModel.getValueAt(selectedRowLeft, 0)+"";\r
+ String mg = modInFvTableModel.getValueAt(selectedRowLeft, 1)+"";\r
+ String mv = modInFvTableModel.getValueAt(selectedRowLeft, 2)+"";\r
+ String pg = modInFvTableModel.getValueAt(selectedRowLeft, 3)+"";\r
+ String pv = modInFvTableModel.getValueAt(selectedRowLeft, 4)+"";\r
+ String arch = modInFvTableModel.getValueAt(selectedRowLeft, 5)+"";\r
+ String[] row = {name, mg, mv, pg, pv, arch};\r
+ if (name.length() == 0 || name.equals("N/A")) {\r
+ return;\r
+ }\r
+ \r
+ fpdModTableModel.addRow(row);\r
+ int viewIndex = ((TableSorter) jTableFpdModules.getModel()).getViewIndexArray()[jTableFpdModules\r
+ .getRowCount() - 1];\r
+ jTableFpdModules.changeSelection(viewIndex, 0, false, false);\r
+ modInFvTableModel.removeRow(selectedRowLeft);\r
+ }\r
+ });\r
+ }\r
+ return jButtonRemove;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonDown \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonDown() {\r
+ if (jButtonDown == null) {\r
+ jButtonDown = new JButton();\r
+ jButtonDown.setPreferredSize(new java.awt.Dimension(60,20));\r
+ jButtonDown.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 10));\r
+ jButtonDown.setText("v");\r
+ jButtonDown.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ int selectedRow = jTableModInFv.getSelectedRow();\r
+ if (selectedRow >= jTableModInFv.getRowCount() - 1) {\r
+ return;\r
+ }\r
+ modInFvTableModel.moveRow(selectedRow, selectedRow, selectedRow + 1);\r
+ jTableModInFv.changeSelection(selectedRow + 1, 0, false, false);\r
+ }\r
+ });\r
+ }\r
+ return jButtonDown;\r
+ }\r
+ \r
+ /**\r
+ * This method initializes jButtonOk \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonOk() {\r
+ if (jButtonOk == null) {\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 = modInFvTableModel.getValueAt(i, 0)+"";\r
+ if (moduleName.length() == 0 || moduleName.equals("N/A")) {\r
+ continue;\r
+ }\r
+ \r
+ String mg = modInFvTableModel.getValueAt(i, 1)+"";\r
+ String mv = modInFvTableModel.getValueAt(i, 2)+"";\r
+ String pg = modInFvTableModel.getValueAt(i, 3)+"";\r
+ String pv = modInFvTableModel.getValueAt(i, 4)+"";\r
+ String arch = modInFvTableModel.getValueAt(i, 5)+"";\r
+ \r
+ String moduleInfo = mg + " " + mv + " " + pg + " " + pv + " " + arch;\r
+ \r
+ String[] sa = { mg, mv, pg, pv, arch};\r
+ vModInFv.add(sa);\r
+ ffc.updateFvBindingInModuleSA(moduleInfo, title);\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
+ /**\r
+ * This method initializes jButtonCancel \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonCancel() {\r
+ if (jButtonCancel == null) {\r
+ jButtonCancel = new JButton();\r
+ jButtonCancel.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonCancel.setText("Cancel");\r
+ jButtonCancel.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ jTabbedPane.setSelectedIndex(0);\r
+ }\r
+ });\r
+ }\r
+ return jButtonCancel;\r
+ }\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
+ return false;\r
+ }\r
+}\r
+\r
+class FvInfoFromFdf {\r
+ private String fvName;\r
+ private String size;\r
+ private String efiFileName;\r
+ \r
+ public FvInfoFromFdf () {\r
+ fvName = "";\r
+ size = "";\r
+ efiFileName = "";\r
+ }\r
+ public FvInfoFromFdf (String f, String s, String e) {\r
+ this();\r
+ fvName = f;\r
+ size = s;\r
+ efiFileName = e;\r
+ }\r
+ public String getEfiFileName() {\r
+ return efiFileName;\r
+ }\r
+ public void setEfiFileName(String efiFileName) {\r
+ this.efiFileName = efiFileName;\r
+ }\r
+ public String getFvName() {\r
+ return fvName;\r
+ }\r
+ public void setFvName(String fvName) {\r
+ this.fvName = fvName;\r
+ }\r
+ public String getSize() {\r
+ return size;\r
+ }\r
+ public void setSize(String size) {\r
+ this.size = size;\r
+ }\r
+ \r
+}\r