}\r
}\r
\r
+ public void removeTypedNamedFvImageNameValue (String fvName, String type, String optName) {\r
+ Vector<FvImagesDocument.FvImages.FvImage> vFvImage = getFvImagesFvImageWithName(fvName, type);\r
+ for (int i = 0; i < vFvImage.size(); ++i) {\r
+ FvImagesDocument.FvImages.FvImage fi = vFvImage.get(i);\r
+ if (fi.getFvImageOptions() != null && fi.getFvImageOptions().getNameValueList() != null) {\r
+ ListIterator<FvImagesDocument.FvImages.FvImage.FvImageOptions.NameValue> li = fi.getFvImageOptions().getNameValueList().listIterator();\r
+ while (li.hasNext()) {\r
+ FvImagesDocument.FvImages.FvImage.FvImageOptions.NameValue nv = li.next();\r
+ if (nv.getName().equals(optName)) {\r
+ li.remove();\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ \r
/**Add name-value pair to FvImage element with type.\r
* @param fvName FV name to add name-value pair.\r
* @param type FvImage attribute.\r
* @param value\r
*/\r
public void setTypedNamedFvImageNameValue (String fvName, String type, String name, String value) {\r
+ boolean fvImageExists = false;\r
if (getfpdFlash().getFvImages() == null) {\r
return;\r
}\r
if (!fi.getFvImageNamesList().contains(fvName)) {\r
continue;\r
}\r
+ fvImageExists = true;\r
setFvImagesFvImageNameValue (fi, name, value, null);\r
}\r
+ \r
+ if (!fvImageExists) {\r
+ HashMap<String, String> map = new HashMap<String, String>();\r
+ map.put(name, value);\r
+ genFvImagesFvImage(new String[]{fvName}, type, map);\r
+ }\r
}\r
\r
/**Add to all FvImage elements with type, the name-value pair.\r
}\r
setFvImagesFvImageNameValue (fi, name, value, null);\r
}\r
+ \r
}\r
\r
/**Add to FvImage the name-value pair, or replace old name with newName, or generate new name-value pair if not exists before.\r
private String determinedFvBlockSize = null;\r
private String erasePolarity = "";\r
boolean memModified = false;\r
- \r
+ private FvOptsTableModel fvInFdfOptTableModel = null;\r
+ private FvOptsTableModel fvAdditionalOptTableModel = null;\r
\r
public FpdFlash() {\r
super();\r
if (blockSizeWellFormat && numOfBlockWellFormat) {\r
int size = Integer.decode(bSize);\r
int num = Integer.decode(numBlks);\r
- fvSize = size*num + "";\r
+ fvSize = "0x" + Integer.toHexString(size*num);\r
}\r
}\r
fvAdditionalTableModel.addRow(new String[]{fvName, fvSize, fvFile});\r
if (jButtonFvInFdfOptions == null) {\r
jButtonFvInFdfOptions = new JButton();\r
jButtonFvInFdfOptions.setPreferredSize(new java.awt.Dimension(80,20));\r
- jButtonFvInFdfOptions.setEnabled(false);\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
+ 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
/**\r
* This method initializes jScrollPaneFvAdditional \r
if (jButtonAddFvOptions == null) {\r
jButtonAddFvOptions = new JButton();\r
jButtonAddFvOptions.setPreferredSize(new java.awt.Dimension(80,20));\r
- jButtonAddFvOptions.setEnabled(false);\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
\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
--- /dev/null
+/** @file\r
+ Java class FpdFvOptions is GUI for FV options in FPD file.\r
+ \r
+Copyright (c) 2006, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution. The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+**/\r
+package org.tianocore.frameworkwizard.platform.ui;\r
+\r
+import java.awt.BorderLayout;\r
+import java.awt.Dimension;\r
+import java.awt.Toolkit;\r
+import java.util.HashMap;\r
+import java.util.Iterator;\r
+import java.util.Set;\r
+\r
+import javax.swing.JPanel;\r
+import javax.swing.JDialog;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JTable;\r
+import javax.swing.event.TableModelEvent;\r
+import javax.swing.event.TableModelListener;\r
+import javax.swing.table.DefaultTableModel;\r
+import javax.swing.table.TableModel;\r
+import javax.swing.JButton;\r
+\r
+import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
+\r
+/**\r
+ * \r
+ *\r
+ */\r
+public class FpdFvOptions extends JDialog {\r
+\r
+ private JPanel jContentPane = null;\r
+ private JPanel jPanelN = null;\r
+ private JPanel jPanelS = null;\r
+ private JPanel jPanelC = null;\r
+ private JScrollPane jScrollPaneFvOptions = null;\r
+ private JTable jTableFvOptions = null;\r
+ private DefaultTableModel tableModel = null;\r
+ private String fvName = null;\r
+ private FpdFileContents ffc = null;\r
+ private OpeningPlatformType docConsole = null;\r
+ private JButton jButtonNew = null;\r
+ private JButton jButtonDelete = null;\r
+\r
+ /**\r
+ * This is the default constructor\r
+ */\r
+ public FpdFvOptions(String name, DefaultTableModel tm, FpdFileContents ffc, OpeningPlatformType dc) {\r
+ super();\r
+ fvName = name;\r
+ this.ffc = ffc;\r
+ this.docConsole = dc;\r
+ setTableModel(tm);\r
+ initOptions();\r
+ initialize();\r
+ \r
+ }\r
+\r
+ private void initOptions() {\r
+ tableModel.setRowCount(0);\r
+ HashMap<String, String> mOpts = new HashMap<String, String>();\r
+ ffc.getFvImagesFvImageOptions(fvName, mOpts);\r
+ Set<String> sKey = mOpts.keySet();\r
+ Iterator<String> iter = sKey.iterator();\r
+ while (iter.hasNext()) {\r
+ String name = iter.next();\r
+ String value = mOpts.get(name);\r
+ tableModel.addRow(new String[]{name, value});\r
+ }\r
+ }\r
+ /**\r
+ * This method initializes this\r
+ * \r
+ * @return void\r
+ */\r
+ private void initialize() {\r
+ this.setSize(650, 400);\r
+ this.setModal(true);\r
+ this.setTitle("FV Options");\r
+ this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
+ this.setContentPane(getJContentPane());\r
+ this.centerWindow();\r
+ this.setVisible(true);\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(getJPanelN(), java.awt.BorderLayout.NORTH);\r
+ jContentPane.add(getJPanelS(), java.awt.BorderLayout.SOUTH);\r
+ jContentPane.add(getJPanelC(), java.awt.BorderLayout.CENTER);\r
+ }\r
+ return jContentPane;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jPanelN \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelN() {\r
+ if (jPanelN == null) {\r
+ jPanelN = new JPanel();\r
+ }\r
+ return jPanelN;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jPanelS \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelS() {\r
+ if (jPanelS == null) {\r
+ jPanelS = new JPanel();\r
+ jPanelS.add(getJButtonNew(), null);\r
+ jPanelS.add(getJButtonDelete(), null);\r
+ }\r
+ return jPanelS;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jPanelC \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelC() {\r
+ if (jPanelC == null) {\r
+ jPanelC = new JPanel();\r
+ jPanelC.add(getJScrollPaneFvOptions(), null);\r
+ }\r
+ return jPanelC;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPaneFvOptions \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPaneFvOptions() {\r
+ if (jScrollPaneFvOptions == null) {\r
+ jScrollPaneFvOptions = new JScrollPane();\r
+ jScrollPaneFvOptions.setPreferredSize(new java.awt.Dimension(600,320));\r
+ jScrollPaneFvOptions.setViewportView(getJTableFvOptions());\r
+ }\r
+ return jScrollPaneFvOptions;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTableFvOptions \r
+ * \r
+ * @return javax.swing.JTable \r
+ */\r
+ private JTable getJTableFvOptions() {\r
+ if (jTableFvOptions == null) {\r
+ jTableFvOptions = new JTable();\r
+ jTableFvOptions.setRowHeight(20);\r
+ jTableFvOptions.setModel(getTableModel());\r
+ \r
+ jTableFvOptions.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 (m.getValueAt(row, 0).equals("")) {\r
+ return;\r
+ }\r
+ ffc.setTypedNamedFvImageNameValue(fvName, "Options", m.getValueAt(row, 0)+"", m.getValueAt(row, 1)+"");\r
+ docConsole.setSaved(false);\r
+ }\r
+ }\r
+ });\r
+ }\r
+ return jTableFvOptions;\r
+ }\r
+\r
+ protected DefaultTableModel getTableModel() {\r
+ return tableModel;\r
+ }\r
+\r
+ protected void setTableModel(DefaultTableModel tableModel) {\r
+ \r
+ this.tableModel = tableModel;\r
+ \r
+ }\r
+\r
+ /**\r
+ Start the window at the center of screen\r
+ \r
+ **/\r
+ protected void centerWindow(int intWidth, int intHeight) {\r
+ Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
+ this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
+ }\r
+\r
+ /**\r
+ Start the window at the center of screen\r
+ \r
+ **/\r
+ protected void centerWindow() {\r
+ centerWindow(this.getSize().width, this.getSize().height);\r
+ }\r
+\r
+/**\r
+ * This method initializes jButtonNew \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+private JButton getJButtonNew() {\r
+ if (jButtonNew == null) {\r
+ jButtonNew = new JButton();\r
+ jButtonNew.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonNew.setText("New");\r
+ jButtonNew.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ tableModel.addRow(new String[]{"", ""});\r
+ }\r
+ });\r
+ }\r
+ return jButtonNew;\r
+}\r
+\r
+/**\r
+ * This method initializes jButtonDelete \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+private JButton getJButtonDelete() {\r
+ if (jButtonDelete == null) {\r
+ jButtonDelete = new JButton();\r
+ jButtonDelete.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonDelete.setText("Delete");\r
+ jButtonDelete.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ int selectedRow = jTableFvOptions.getSelectedRow();\r
+ if (selectedRow < 0) {\r
+ return;\r
+ }\r
+ String optName = tableModel.getValueAt(selectedRow, 0)+"";\r
+ if (((FvOptsTableModel)tableModel).getVKeyWords().contains(optName)){\r
+ return;\r
+ }\r
+ \r
+ ffc.removeTypedNamedFvImageNameValue(fvName, "Options", optName);\r
+ tableModel.removeRow(selectedRow);\r
+ docConsole.setSaved(false);\r
+ }\r
+ });\r
+ }\r
+ return jButtonDelete;\r
+}\r
+}\r