mirror of https://github.com/acidanthera/audk.git
FV from FDF file options editor.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1483 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
e8a3bee036
commit
b411fc1f31
|
@ -2847,6 +2847,22 @@ public class FpdFileContents {
|
|||
}
|
||||
}
|
||||
|
||||
public void removeTypedNamedFvImageNameValue (String fvName, String type, String optName) {
|
||||
Vector<FvImagesDocument.FvImages.FvImage> vFvImage = getFvImagesFvImageWithName(fvName, type);
|
||||
for (int i = 0; i < vFvImage.size(); ++i) {
|
||||
FvImagesDocument.FvImages.FvImage fi = vFvImage.get(i);
|
||||
if (fi.getFvImageOptions() != null && fi.getFvImageOptions().getNameValueList() != null) {
|
||||
ListIterator<FvImagesDocument.FvImages.FvImage.FvImageOptions.NameValue> li = fi.getFvImageOptions().getNameValueList().listIterator();
|
||||
while (li.hasNext()) {
|
||||
FvImagesDocument.FvImages.FvImage.FvImageOptions.NameValue nv = li.next();
|
||||
if (nv.getName().equals(optName)) {
|
||||
li.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**Add name-value pair to FvImage element with type.
|
||||
* @param fvName FV name to add name-value pair.
|
||||
* @param type FvImage attribute.
|
||||
|
@ -2854,6 +2870,7 @@ public class FpdFileContents {
|
|||
* @param value
|
||||
*/
|
||||
public void setTypedNamedFvImageNameValue (String fvName, String type, String name, String value) {
|
||||
boolean fvImageExists = false;
|
||||
if (getfpdFlash().getFvImages() == null) {
|
||||
return;
|
||||
}
|
||||
|
@ -2870,8 +2887,15 @@ public class FpdFileContents {
|
|||
if (!fi.getFvImageNamesList().contains(fvName)) {
|
||||
continue;
|
||||
}
|
||||
fvImageExists = true;
|
||||
setFvImagesFvImageNameValue (fi, name, value, null);
|
||||
}
|
||||
|
||||
if (!fvImageExists) {
|
||||
HashMap<String, String> map = new HashMap<String, String>();
|
||||
map.put(name, value);
|
||||
genFvImagesFvImage(new String[]{fvName}, type, map);
|
||||
}
|
||||
}
|
||||
|
||||
/**Add to all FvImage elements with type, the name-value pair.
|
||||
|
@ -2895,6 +2919,7 @@ public class FpdFileContents {
|
|||
}
|
||||
setFvImagesFvImageNameValue (fi, name, value, null);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**Add to FvImage the name-value pair, or replace old name with newName, or generate new name-value pair if not exists before.
|
||||
|
|
|
@ -162,7 +162,8 @@ public class FpdFlash extends IInternalFrame {
|
|||
private String determinedFvBlockSize = null;
|
||||
private String erasePolarity = "";
|
||||
boolean memModified = false;
|
||||
|
||||
private FvOptsTableModel fvInFdfOptTableModel = null;
|
||||
private FvOptsTableModel fvAdditionalOptTableModel = null;
|
||||
|
||||
public FpdFlash() {
|
||||
super();
|
||||
|
@ -1171,7 +1172,7 @@ public class FpdFlash extends IInternalFrame {
|
|||
if (blockSizeWellFormat && numOfBlockWellFormat) {
|
||||
int size = Integer.decode(bSize);
|
||||
int num = Integer.decode(numBlks);
|
||||
fvSize = size*num + "";
|
||||
fvSize = "0x" + Integer.toHexString(size*num);
|
||||
}
|
||||
}
|
||||
fvAdditionalTableModel.addRow(new String[]{fvName, fvSize, fvFile});
|
||||
|
@ -1659,7 +1660,7 @@ public class FpdFlash extends IInternalFrame {
|
|||
if (jButtonFvInFdfOptions == null) {
|
||||
jButtonFvInFdfOptions = new JButton();
|
||||
jButtonFvInFdfOptions.setPreferredSize(new java.awt.Dimension(80,20));
|
||||
jButtonFvInFdfOptions.setEnabled(false);
|
||||
jButtonFvInFdfOptions.setEnabled(true);
|
||||
jButtonFvInFdfOptions.setText("Options");
|
||||
jButtonFvInFdfOptions.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent e) {
|
||||
|
@ -1667,12 +1668,30 @@ public class FpdFlash extends IInternalFrame {
|
|||
if (selectedRow < 0) {
|
||||
return;
|
||||
}
|
||||
String fvName = jTableFvInFdf.getValueAt(selectedRow, 0)+"";
|
||||
DefaultTableModel dtm = getFvInFdfOptTableModel();
|
||||
new FpdFvOptions(fvName, dtm, ffc, docConsole);
|
||||
}
|
||||
});
|
||||
}
|
||||
return jButtonFvInFdfOptions;
|
||||
}
|
||||
|
||||
private DefaultTableModel getFvInFdfOptTableModel() {
|
||||
if (fvInFdfOptTableModel == null) {
|
||||
fvInFdfOptTableModel = new FvOptsTableModel();
|
||||
fvInFdfOptTableModel.addColumn("Name");
|
||||
fvInFdfOptTableModel.addColumn("Value");
|
||||
Vector<Object> v = new Vector<Object>();
|
||||
v.add("EFI_BLOCK_SIZE");
|
||||
v.add("EFI_NUM_BLOCKS");
|
||||
v.add("EFI_FILE_NAME");
|
||||
fvInFdfOptTableModel.setVKeyWords(v);
|
||||
fvInFdfOptTableModel.setVNonEditableName(v);
|
||||
}
|
||||
return fvInFdfOptTableModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method initializes jScrollPaneFvAdditional
|
||||
*
|
||||
|
@ -1910,7 +1929,7 @@ public class FpdFlash extends IInternalFrame {
|
|||
if (jButtonAddFvOptions == null) {
|
||||
jButtonAddFvOptions = new JButton();
|
||||
jButtonAddFvOptions.setPreferredSize(new java.awt.Dimension(80,20));
|
||||
jButtonAddFvOptions.setEnabled(false);
|
||||
jButtonAddFvOptions.setEnabled(true);
|
||||
jButtonAddFvOptions.setText("Options");
|
||||
jButtonAddFvOptions.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent e) {
|
||||
|
@ -2594,6 +2613,57 @@ public class FpdFlash extends IInternalFrame {
|
|||
|
||||
} // @jve:decl-index=0:visual-constraint="10,10"
|
||||
|
||||
class FvOptsTableModel extends DefaultTableModel {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Vector<Object> vNonEditableName = new Vector<Object>();
|
||||
private Vector<Object> vKeyWords = new Vector<Object>();
|
||||
|
||||
public boolean isCellEditable(int row, int col) {
|
||||
if (vNonEditableName.size() > 0 || vKeyWords.size() > 0) {
|
||||
if (vKeyWords.contains(getValueAt(row, 0))) {
|
||||
return false;
|
||||
}
|
||||
if (vNonEditableName.contains(getValueAt(row, 0)) && col == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns the vKeyWords.
|
||||
*/
|
||||
protected Vector<Object> getVKeyWords() {
|
||||
return vKeyWords;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param keyWords The vKeyWords to set.
|
||||
*/
|
||||
protected void setVKeyWords(Vector<Object> keyWords) {
|
||||
vKeyWords.removeAllElements();
|
||||
vKeyWords.addAll(keyWords);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns the vNonEditableName.
|
||||
*/
|
||||
protected Vector<Object> getVNonEditableName() {
|
||||
return vNonEditableName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param nonEditableName The vNonEditableName to set.
|
||||
*/
|
||||
protected void setVNonEditableName(Vector<Object> nonEditableName) {
|
||||
vNonEditableName.removeAllElements();
|
||||
vNonEditableName.addAll(nonEditableName);
|
||||
}
|
||||
|
||||
}
|
||||
class ImageParaTableModel extends DefaultTableModel {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
@ -0,0 +1,269 @@
|
|||
/** @file
|
||||
Java class FpdFvOptions is GUI for FV options in FPD file.
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
**/
|
||||
package org.tianocore.frameworkwizard.platform.ui;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Toolkit;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTable;
|
||||
import javax.swing.event.TableModelEvent;
|
||||
import javax.swing.event.TableModelListener;
|
||||
import javax.swing.table.DefaultTableModel;
|
||||
import javax.swing.table.TableModel;
|
||||
import javax.swing.JButton;
|
||||
|
||||
import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class FpdFvOptions extends JDialog {
|
||||
|
||||
private JPanel jContentPane = null;
|
||||
private JPanel jPanelN = null;
|
||||
private JPanel jPanelS = null;
|
||||
private JPanel jPanelC = null;
|
||||
private JScrollPane jScrollPaneFvOptions = null;
|
||||
private JTable jTableFvOptions = null;
|
||||
private DefaultTableModel tableModel = null;
|
||||
private String fvName = null;
|
||||
private FpdFileContents ffc = null;
|
||||
private OpeningPlatformType docConsole = null;
|
||||
private JButton jButtonNew = null;
|
||||
private JButton jButtonDelete = null;
|
||||
|
||||
/**
|
||||
* This is the default constructor
|
||||
*/
|
||||
public FpdFvOptions(String name, DefaultTableModel tm, FpdFileContents ffc, OpeningPlatformType dc) {
|
||||
super();
|
||||
fvName = name;
|
||||
this.ffc = ffc;
|
||||
this.docConsole = dc;
|
||||
setTableModel(tm);
|
||||
initOptions();
|
||||
initialize();
|
||||
|
||||
}
|
||||
|
||||
private void initOptions() {
|
||||
tableModel.setRowCount(0);
|
||||
HashMap<String, String> mOpts = new HashMap<String, String>();
|
||||
ffc.getFvImagesFvImageOptions(fvName, mOpts);
|
||||
Set<String> sKey = mOpts.keySet();
|
||||
Iterator<String> iter = sKey.iterator();
|
||||
while (iter.hasNext()) {
|
||||
String name = iter.next();
|
||||
String value = mOpts.get(name);
|
||||
tableModel.addRow(new String[]{name, value});
|
||||
}
|
||||
}
|
||||
/**
|
||||
* This method initializes this
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private void initialize() {
|
||||
this.setSize(650, 400);
|
||||
this.setModal(true);
|
||||
this.setTitle("FV Options");
|
||||
this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
||||
this.setContentPane(getJContentPane());
|
||||
this.centerWindow();
|
||||
this.setVisible(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method initializes jContentPane
|
||||
*
|
||||
* @return javax.swing.JPanel
|
||||
*/
|
||||
private JPanel getJContentPane() {
|
||||
if (jContentPane == null) {
|
||||
jContentPane = new JPanel();
|
||||
jContentPane.setLayout(new BorderLayout());
|
||||
jContentPane.add(getJPanelN(), java.awt.BorderLayout.NORTH);
|
||||
jContentPane.add(getJPanelS(), java.awt.BorderLayout.SOUTH);
|
||||
jContentPane.add(getJPanelC(), java.awt.BorderLayout.CENTER);
|
||||
}
|
||||
return jContentPane;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method initializes jPanelN
|
||||
*
|
||||
* @return javax.swing.JPanel
|
||||
*/
|
||||
private JPanel getJPanelN() {
|
||||
if (jPanelN == null) {
|
||||
jPanelN = new JPanel();
|
||||
}
|
||||
return jPanelN;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method initializes jPanelS
|
||||
*
|
||||
* @return javax.swing.JPanel
|
||||
*/
|
||||
private JPanel getJPanelS() {
|
||||
if (jPanelS == null) {
|
||||
jPanelS = new JPanel();
|
||||
jPanelS.add(getJButtonNew(), null);
|
||||
jPanelS.add(getJButtonDelete(), null);
|
||||
}
|
||||
return jPanelS;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method initializes jPanelC
|
||||
*
|
||||
* @return javax.swing.JPanel
|
||||
*/
|
||||
private JPanel getJPanelC() {
|
||||
if (jPanelC == null) {
|
||||
jPanelC = new JPanel();
|
||||
jPanelC.add(getJScrollPaneFvOptions(), null);
|
||||
}
|
||||
return jPanelC;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method initializes jScrollPaneFvOptions
|
||||
*
|
||||
* @return javax.swing.JScrollPane
|
||||
*/
|
||||
private JScrollPane getJScrollPaneFvOptions() {
|
||||
if (jScrollPaneFvOptions == null) {
|
||||
jScrollPaneFvOptions = new JScrollPane();
|
||||
jScrollPaneFvOptions.setPreferredSize(new java.awt.Dimension(600,320));
|
||||
jScrollPaneFvOptions.setViewportView(getJTableFvOptions());
|
||||
}
|
||||
return jScrollPaneFvOptions;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method initializes jTableFvOptions
|
||||
*
|
||||
* @return javax.swing.JTable
|
||||
*/
|
||||
private JTable getJTableFvOptions() {
|
||||
if (jTableFvOptions == null) {
|
||||
jTableFvOptions = new JTable();
|
||||
jTableFvOptions.setRowHeight(20);
|
||||
jTableFvOptions.setModel(getTableModel());
|
||||
|
||||
jTableFvOptions.getModel().addTableModelListener(new TableModelListener() {
|
||||
public void tableChanged(TableModelEvent arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
int row = arg0.getFirstRow();
|
||||
int col = arg0.getColumn();
|
||||
TableModel m = (TableModel) arg0.getSource();
|
||||
|
||||
if (arg0.getType() == TableModelEvent.UPDATE) {
|
||||
if (m.getValueAt(row, 0).equals("")) {
|
||||
return;
|
||||
}
|
||||
ffc.setTypedNamedFvImageNameValue(fvName, "Options", m.getValueAt(row, 0)+"", m.getValueAt(row, 1)+"");
|
||||
docConsole.setSaved(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
return jTableFvOptions;
|
||||
}
|
||||
|
||||
protected DefaultTableModel getTableModel() {
|
||||
return tableModel;
|
||||
}
|
||||
|
||||
protected void setTableModel(DefaultTableModel tableModel) {
|
||||
|
||||
this.tableModel = tableModel;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
Start the window at the center of screen
|
||||
|
||||
**/
|
||||
protected void centerWindow(int intWidth, int intHeight) {
|
||||
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
|
||||
this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);
|
||||
}
|
||||
|
||||
/**
|
||||
Start the window at the center of screen
|
||||
|
||||
**/
|
||||
protected void centerWindow() {
|
||||
centerWindow(this.getSize().width, this.getSize().height);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method initializes jButtonNew
|
||||
*
|
||||
* @return javax.swing.JButton
|
||||
*/
|
||||
private JButton getJButtonNew() {
|
||||
if (jButtonNew == null) {
|
||||
jButtonNew = new JButton();
|
||||
jButtonNew.setPreferredSize(new java.awt.Dimension(80,20));
|
||||
jButtonNew.setText("New");
|
||||
jButtonNew.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent e) {
|
||||
tableModel.addRow(new String[]{"", ""});
|
||||
}
|
||||
});
|
||||
}
|
||||
return jButtonNew;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method initializes jButtonDelete
|
||||
*
|
||||
* @return javax.swing.JButton
|
||||
*/
|
||||
private JButton getJButtonDelete() {
|
||||
if (jButtonDelete == null) {
|
||||
jButtonDelete = new JButton();
|
||||
jButtonDelete.setPreferredSize(new java.awt.Dimension(80,20));
|
||||
jButtonDelete.setText("Delete");
|
||||
jButtonDelete.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent e) {
|
||||
int selectedRow = jTableFvOptions.getSelectedRow();
|
||||
if (selectedRow < 0) {
|
||||
return;
|
||||
}
|
||||
String optName = tableModel.getValueAt(selectedRow, 0)+"";
|
||||
if (((FvOptsTableModel)tableModel).getVKeyWords().contains(optName)){
|
||||
return;
|
||||
}
|
||||
|
||||
ffc.removeTypedNamedFvImageNameValue(fvName, "Options", optName);
|
||||
tableModel.removeRow(selectedRow);
|
||||
docConsole.setSaved(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
return jButtonDelete;
|
||||
}
|
||||
}
|
|
@ -440,6 +440,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
|
|||
*/
|
||||
private void initialize() {
|
||||
this.setSize(664, 515);
|
||||
this.setResizable(false);
|
||||
this.centerWindow();
|
||||
this.setModal(true);
|
||||
this.setTitle("Module Settings");
|
||||
|
|
Loading…
Reference in New Issue