Flash UI add new FV feature. modify FvImageNames and FvBindings in fpd file if FV name changes.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1416 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
jlin16 2006-08-31 10:34:14 +00:00
parent 0719317158
commit eb8ea8292e
2 changed files with 273 additions and 45 deletions

View File

@ -746,11 +746,15 @@ public class FpdFileContents {
} }
public String getFvBinding(String moduleKey){ public String getFvBinding(String moduleKey){
ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey); ModuleSADocument.ModuleSA moduleSa = getModuleSA(moduleKey);
if (msa == null || msa.getModuleSaBuildOptions() == null) { return getFvBinding (moduleSa);
}
public String getFvBinding (ModuleSADocument.ModuleSA moduleSa) {
if (moduleSa == null || moduleSa.getModuleSaBuildOptions() == null) {
return null; return null;
} }
return msa.getModuleSaBuildOptions().getFvBinding(); return moduleSa.getModuleSaBuildOptions().getFvBinding();
} }
public void setFvBinding(ModuleSADocument.ModuleSA moduleSa, String fvBinding) { public void setFvBinding(ModuleSADocument.ModuleSA moduleSa, String fvBinding) {
@ -776,6 +780,23 @@ public class FpdFileContents {
setFvBinding (moduleSa, fvBinding); setFvBinding (moduleSa, fvBinding);
} }
private int fvBindingForModuleSA (ModuleSADocument.ModuleSA moduleSa, String fvName) {
if (moduleSa == null || moduleSa.getModuleSaBuildOptions() == null || moduleSa.getModuleSaBuildOptions().getFvBinding() == null) {
return -1;
}
String fvNameList = moduleSa.getModuleSaBuildOptions().getFvBinding();
String[] fvNamesArray = fvNameList.split(" ");
int occursAt = -1;
for (int i = 0; i < fvNamesArray.length; ++i) {
if (fvNamesArray[i].equals(fvName)) {
occursAt = i;
break;
}
}
return occursAt;
}
public void removeFvBinding (ModuleSADocument.ModuleSA moduleSa, String fvName) { public void removeFvBinding (ModuleSADocument.ModuleSA moduleSa, String fvName) {
if (moduleSa == null || moduleSa.getModuleSaBuildOptions() == null || moduleSa.getModuleSaBuildOptions().getFvBinding() == null) { if (moduleSa == null || moduleSa.getModuleSaBuildOptions() == null || moduleSa.getModuleSaBuildOptions().getFvBinding() == null) {
return; return;
@ -821,6 +842,37 @@ public class FpdFileContents {
} }
} }
public void appendFvBindingAll (String fvName) {
if (getfpdFrameworkModules().getModuleSAList() == null || getfpdFrameworkModules().getModuleSAList().size() == 0){
removeElement(getfpdFrameworkModules());
fpdFrameworkModules = null;
return;
}
Iterator<ModuleSADocument.ModuleSA> li = getfpdFrameworkModules().getModuleSAList().iterator();
while (li.hasNext()) {
ModuleSADocument.ModuleSA moduleSa = li.next();
appendFvBinding (moduleSa, fvName);
}
}
public void appendFvBindingFor (String oldFvName, String newFvName) {
if (getfpdFrameworkModules().getModuleSAList() == null || getfpdFrameworkModules().getModuleSAList().size() == 0){
removeElement(getfpdFrameworkModules());
fpdFrameworkModules = null;
return;
}
Iterator<ModuleSADocument.ModuleSA> li = getfpdFrameworkModules().getModuleSAList().iterator();
while (li.hasNext()) {
ModuleSADocument.ModuleSA moduleSa = li.next();
String fvBinding = getFvBinding (moduleSa);
if (fvBinding != null && fvBindingForModuleSA (moduleSa, oldFvName) >= 0) {
appendFvBinding (moduleSa, newFvName);
}
}
}
public void appendFvBinding (String moduleKey, String fvName) { public void appendFvBinding (String moduleKey, String fvName) {
ModuleSADocument.ModuleSA moduleSa = getModuleSA(moduleKey); ModuleSADocument.ModuleSA moduleSa = getModuleSA(moduleKey);
appendFvBinding (moduleSa, fvName); appendFvBinding (moduleSa, fvName);
@ -1602,23 +1654,28 @@ public class FpdFileContents {
} }
public void genBuildOptionsUserExtensions(String fvName, String outputFileName, Vector<String[]> includeModules) { public void genBuildOptionsUserExtensions(String fvName, String outputFileName, Vector<String[]> includeModules) {
QName elementFvName = new QName (xmlNs, "FvName");
QName elementIncludeModules = new QName(xmlNs, "IncludeModules");
QName elementInfFileName = new QName(xmlNs, "InfFileName");
QName elementModule = new QName(xmlNs, "Module");
UserExtensionsDocument.UserExtensions userExts = getfpdBuildOpts().addNewUserExtensions(); UserExtensionsDocument.UserExtensions userExts = getfpdBuildOpts().addNewUserExtensions();
userExts.setUserID("IMAGES"); userExts.setUserID("IMAGES");
userExts.setIdentifier(new BigInteger("1")); userExts.setIdentifier(new BigInteger("1"));
XmlCursor cursor = userExts.newCursor(); XmlCursor cursor = userExts.newCursor();
cursor.toEndToken(); cursor.toEndToken();
cursor.beginElement("FvName"); cursor.beginElement(elementFvName);
cursor.insertChars(fvName); cursor.insertChars(fvName);
cursor.toNextToken(); cursor.toNextToken();
cursor.beginElement("InfFileName"); cursor.beginElement(elementInfFileName);
cursor.insertChars(fvName + ".inf"); cursor.insertChars(fvName + ".inf");
cursor.toNextToken(); cursor.toNextToken();
cursor.beginElement("IncludeModules"); cursor.beginElement(elementIncludeModules);
for (int i = 0; i < includeModules.size(); ++i) { for (int i = 0; i < includeModules.size(); ++i) {
cursor.beginElement("Module"); cursor.beginElement(elementModule);
cursor.insertAttributeWithValue("ModuleGuid", includeModules.get(i)[0]); cursor.insertAttributeWithValue("ModuleGuid", includeModules.get(i)[0]);
cursor.insertAttributeWithValue("BaseName", includeModules.get(i)[1]); cursor.insertAttributeWithValue("BaseName", includeModules.get(i)[1]);
cursor.toEndToken(); cursor.toEndToken();
@ -1632,6 +1689,7 @@ public class FpdFileContents {
return -1; return -1;
} }
ListIterator<UserExtensionsDocument.UserExtensions> li = getfpdBuildOpts().getUserExtensionsList().listIterator(); ListIterator<UserExtensionsDocument.UserExtensions> li = getfpdBuildOpts().getUserExtensionsList().listIterator();
QName elementIncludeModules = new QName(xmlNs, "IncludeModules");
while (li.hasNext()) { while (li.hasNext()) {
UserExtensionsDocument.UserExtensions ues = li.next(); UserExtensionsDocument.UserExtensions ues = li.next();
if (!ues.getUserID().equals("IMAGES")) { if (!ues.getUserID().equals("IMAGES")) {
@ -1641,7 +1699,7 @@ public class FpdFileContents {
cursor.toFirstChild(); cursor.toFirstChild();
String elementName = cursor.getTextValue(); String elementName = cursor.getTextValue();
if (elementName.equals(fvName)) { if (elementName.equals(fvName)) {
cursor.toNextSibling(new QName("", "IncludeModules")); cursor.toNextSibling(elementIncludeModules);
if (cursor.toFirstChild()) { if (cursor.toFirstChild()) {
int i = 1; int i = 1;
for (i = 1; cursor.toNextSibling(); ++i); for (i = 1; cursor.toNextSibling(); ++i);
@ -1660,6 +1718,45 @@ public class FpdFileContents {
if (getfpdBuildOpts().getUserExtensionsList() == null) { if (getfpdBuildOpts().getUserExtensionsList() == null) {
return; return;
} }
XmlCursor cursor = getfpdBuildOpts().newCursor();
QName elementUserExts = new QName (xmlNs, "UserExtensions");
QName attribUserId = new QName ("UserID");
QName elementFvName = new QName (xmlNs, "FvName");
QName elementIncludeModules = new QName(xmlNs, "IncludeModules");
QName attribModuleGuid = new QName("ModuleGuid");
QName attribBaseName = new QName("BaseName");
if (cursor.toChild(elementUserExts)) {
do {
cursor.push();
if (cursor.getAttributeText(attribUserId).equals("IMAGES")) {
cursor.toChild(elementFvName);
String elementName = cursor.getTextValue();
if (elementName.equals(fvName)) {
cursor.toNextSibling(elementIncludeModules);
if (cursor.toFirstChild()) {
int i = 0;
do {
saa[i][0] = cursor.getAttributeText(attribModuleGuid);
saa[i][1] = cursor.getAttributeText(attribBaseName);
++i;
}while (cursor.toNextSibling());
}
break;
}
}
cursor.pop();
}while (cursor.toNextSibling(elementUserExts));
}
cursor.dispose();
}
public void updateBuildOptionsUserExtensions (String oldFvName, String newFvName) {
if (getfpdBuildOpts().getUserExtensionsList() == null) {
return;
}
ListIterator<UserExtensionsDocument.UserExtensions> li = getfpdBuildOpts().getUserExtensionsList().listIterator(); ListIterator<UserExtensionsDocument.UserExtensions> li = getfpdBuildOpts().getUserExtensionsList().listIterator();
while (li.hasNext()) { while (li.hasNext()) {
UserExtensionsDocument.UserExtensions ues = li.next(); UserExtensionsDocument.UserExtensions ues = li.next();
@ -1669,18 +1766,8 @@ public class FpdFileContents {
XmlCursor cursor = ues.newCursor(); XmlCursor cursor = ues.newCursor();
cursor.toFirstChild(); cursor.toFirstChild();
String elementName = cursor.getTextValue(); String elementName = cursor.getTextValue();
if (elementName.equals(fvName)) { if (elementName.equals(oldFvName)) {
cursor.toNextSibling(new QName("", "IncludeModules")); cursor.setTextValue(newFvName);
if (cursor.toFirstChild()) {
int i = 0;
do {
saa[i][0] = cursor.getAttributeText(new QName("ModuleGuid"));
saa[i][1] = cursor.getAttributeText(new QName("BaseName"));
++i;
}while (cursor.toNextSibling());
}
cursor.dispose();
return;
} }
cursor.dispose(); cursor.dispose();
} }
@ -2501,6 +2588,31 @@ public class FpdFileContents {
} }
} }
public void getFvImagesFvImageFvImageNames (Vector<String> vImageNames) {
}
public void AddFvImageFvImageNames (String[] fvNames) {
FvImagesDocument.FvImages fis = getfpdFlash().getFvImages();
if (fis == null || fis.getFvImageList() == null) {
genFvImagesFvImage (fvNames, "ImageName", null);
return;
}
ListIterator<FvImagesDocument.FvImages.FvImage> li = fis.getFvImageList().listIterator();
while (li.hasNext()) {
FvImagesDocument.FvImages.FvImage fi = li.next();
if (fi.getType().toString().equals("ImageName")) {
for (int i = 0; i < fvNames.length; ++i) {
fi.addFvImageNames(fvNames[i]);
}
return;
}
}
genFvImagesFvImage (fvNames, "ImageName", null);
}
public void genFvImagesFvImage(String[] names, String types, Map<String, String> options) { public void genFvImagesFvImage(String[] names, String types, Map<String, String> options) {
FvImagesDocument.FvImages fis = null; FvImagesDocument.FvImages fis = null;
@ -2560,6 +2672,32 @@ public class FpdFileContents {
cursor.dispose(); cursor.dispose();
} }
public void updateFvImageNameAll (String oldFvName, String newFvName) {
if (getfpdFlash().getFvImages() == null || getfpdFlash().getFvImages().getFvImageList() == null) {
return;
}
ListIterator<FvImagesDocument.FvImages.FvImage> li = getfpdFlash().getFvImages().getFvImageList().listIterator();
while (li.hasNext()) {
FvImagesDocument.FvImages.FvImage fi = li.next();
updateFvImageNamesInFvImage (fi, oldFvName, newFvName);
}
}
public void updateFvImageNamesInFvImage (FvImagesDocument.FvImages.FvImage fi, String oldFvName, String newFvName) {
QName qFvImageNames = new QName(xmlNs, "FvImageNames");
XmlCursor cursor = fi.newCursor();
if (cursor.toChild(qFvImageNames)) {
do {
if (cursor.getTextValue().equals(oldFvName)){
cursor.setTextValue(newFvName);
}
}while (cursor.toNextSibling(qFvImageNames));
}
cursor.dispose();
}
public void updateFvImagesFvImage(int i, String[] names, String types, Map<String, String> options){ public void updateFvImagesFvImage(int i, String[] names, String types, Map<String, String> options){
XmlObject o = getfpdFlash().getFvImages(); XmlObject o = getfpdFlash().getFvImages();

View File

@ -75,6 +75,7 @@ public class FpdFlash extends IInternalFrame {
* *
*/ */
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private final int startIndexOfDynamicTab = 2;
static JFrame frame; static JFrame frame;
private JPanel jContentPane = null; private JPanel jContentPane = null;
private JPanel jPanelContentEast = null; private JPanel jPanelContentEast = null;
@ -155,6 +156,9 @@ public class FpdFlash extends IInternalFrame {
private JButton jButtonAddFv = null; private JButton jButtonAddFv = null;
private JButton jButtonDelFv = null; private JButton jButtonDelFv = null;
private JButton jButtonAddFvOptions = null; private JButton jButtonAddFvOptions = null;
private int tabIndexForFv = -1;
private int selectedRowInFvAdditionalTable = -1;
private String oldFvName = null;
public FpdFlash() { public FpdFlash() {
@ -258,6 +262,30 @@ public class FpdFlash extends IInternalFrame {
// jPanelFvImages.add(getJPanelFvImageW(), java.awt.BorderLayout.WEST); // jPanelFvImages.add(getJPanelFvImageW(), java.awt.BorderLayout.WEST);
jPanelFvImages.add(getJPanelFvImageS(), java.awt.BorderLayout.SOUTH); jPanelFvImages.add(getJPanelFvImageS(), java.awt.BorderLayout.SOUTH);
jPanelFvImages.add(getJPanelFvImageC(), java.awt.BorderLayout.CENTER); jPanelFvImages.add(getJPanelFvImageC(), java.awt.BorderLayout.CENTER);
jPanelFvImages.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent e) {
fvImageParaTableModel.setRowCount(0);
fvPropertyTableModel.setRowCount(0);
if (ffc.getFvImagesFvImageCount() == 0) {
return;
}
String[][] saa = new String[ffc.getFvImagesFvImageCount()][2];
ffc.getFvImagesFvImages(saa);
int i = 0;
while (i < saa.length) {
fvImageParaTableModel.addRow(saa[i]);
++i;
}
saa = new String[ffc.getFvImagesNameValueCount()][2];
ffc.getFvImagesNameValues(saa);
for (int m = 0; m < saa.length; ++m) {
fvPropertyTableModel.addRow(saa[m]);
}
}
});
} }
return jPanelFvImages; return jPanelFvImages;
@ -1102,6 +1130,10 @@ public class FpdFlash extends IInternalFrame {
return jButtonFdfBrowse; return jButtonFdfBrowse;
} }
private void initFvAdditionalTable() {
}
private void initFvInFdfTable(String fdfPath){ private void initFvInFdfTable(String fdfPath){
Vector<FvInfoFromFdf> vFvInfo = new Vector<FvInfoFromFdf>(); Vector<FvInfoFromFdf> vFvInfo = new Vector<FvInfoFromFdf>();
getFvInfoFromFdf(fdfPath, vFvInfo); getFvInfoFromFdf(fdfPath, vFvInfo);
@ -1121,10 +1153,9 @@ public class FpdFlash extends IInternalFrame {
private void addTabForFv (FvInfoFromFdf fvInfo) { private void addTabForFv (FvInfoFromFdf fvInfo) {
String fvName = fvInfo.getFvName(); String fvName = fvInfo.getFvName();
String outputFile = fvInfo.getEfiFileName(); String outputFile = fvInfo.getEfiFileName();
for (int i = 2; i < jTabbedPane.getTabCount(); ++i) { int index = jTabbedPane.indexOfTab(fvName);
if (jTabbedPane.getTitleAt(i).equals(fvName)) { if (index >= startIndexOfDynamicTab) {
return; return;
}
} }
jTabbedPane.addTab(fvName, null, new ModuleOrderPane(fvName, outputFile), null); jTabbedPane.addTab(fvName, null, new ModuleOrderPane(fvName, outputFile), null);
} }
@ -1560,10 +1591,82 @@ public class FpdFlash extends IInternalFrame {
jTableFvAdditional.setRowHeight(20); jTableFvAdditional.setRowHeight(20);
jTableFvAdditional.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); jTableFvAdditional.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
jTableFvAdditional.setModel(getFvAddtionalTableModel()); jTableFvAdditional.setModel(getFvAddtionalTableModel());
jTableFvAdditional.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
return;
}
ListSelectionModel lsm = (ListSelectionModel) e.getSource();
if (lsm.isSelectionEmpty()) {
return;
} else {
selectedRowInFvAdditionalTable = lsm.getMinSelectionIndex();
oldFvName = jTableFvAdditional.getValueAt(selectedRowInFvAdditionalTable, 0)+"";
}
}
});
jTableFvAdditional.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 (col == 0) {
String newFvName = m.getValueAt(row, 0) + "";
if (newFvName.equals(oldFvName)) {
return;
}
if (fvNameExists(newFvName)) {
JOptionPane.showMessageDialog(frame, "This FV already exists. Please choose another FV name.");
m.setValueAt(oldFvName, row, 0);
return;
}
tabIndexForFv = jTabbedPane.indexOfTab(oldFvName);
if (tabIndexForFv >= startIndexOfDynamicTab) {
jTabbedPane.setTitleAt(tabIndexForFv, newFvName);
// change FvName in UserExtensions
ffc.updateBuildOptionsUserExtensions(oldFvName, newFvName);
// change FvBinding in ModuleSA
ffc.appendFvBindingFor(oldFvName, newFvName);
ffc.removeFvBindingAll(oldFvName);
// change FvImageNames in Flash
ffc.updateFvImageNameAll(oldFvName, newFvName);
} else {
jTabbedPane.addTab(newFvName, new ModuleOrderPane(newFvName, ""));
// Add FvImageNames in Flash
String[] fvNames = {newFvName};
ffc.AddFvImageFvImageNames(fvNames);
}
oldFvName = newFvName;
}
docConsole.setSaved(false);
}
}
});
} }
return jTableFvAdditional; return jTableFvAdditional;
} }
private boolean fvNameExists (String fvName) {
for (int i = 0; i < jTableFvInFdf.getRowCount(); ++i) {
if (fvInFdfTableModel.getValueAt(i, 0).equals(fvName)) {
return true;
}
}
for (int j = 0; j < jTableFvAdditional.getRowCount(); ++j) {
if (fvAddtionalTableModel.getValueAt(j, 0).equals(fvName) && j != selectedRowInFvAdditionalTable) {
return true;
}
}
return false;
}
/** /**
* This method initializes fvAddtionalTableModel * This method initializes fvAddtionalTableModel
* *
@ -1588,11 +1691,15 @@ public class FpdFlash extends IInternalFrame {
if (jButtonAddFv == null) { if (jButtonAddFv == null) {
jButtonAddFv = new JButton(); jButtonAddFv = new JButton();
jButtonAddFv.setPreferredSize(new java.awt.Dimension(80,20)); jButtonAddFv.setPreferredSize(new java.awt.Dimension(80,20));
jButtonAddFv.setEnabled(false); jButtonAddFv.setEnabled(true);
jButtonAddFv.setText("New"); jButtonAddFv.setText("New");
jButtonAddFv.addActionListener(new java.awt.event.ActionListener() { jButtonAddFv.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) { public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed() if (jTableFvAdditional.isEditing()) {
jTableFvAdditional.getCellEditor().stopCellEditing();
}
String[] row = {"", "", ""};
fvAddtionalTableModel.addRow(row);
} }
}); });
} }
@ -1673,24 +1780,6 @@ public class FpdFlash extends IInternalFrame {
} }
private void init(FpdFileContents ffc) { private void init(FpdFileContents ffc) {
if (ffc.getFvImagesFvImageCount() == 0) {
return;
}
String[][] saa = new String[ffc.getFvImagesFvImageCount()][2];
ffc.getFvImagesFvImages(saa);
int i = 0;
while (i < saa.length) {
fvImageParaTableModel.addRow(saa[i]);
++i;
}
saa = new String[ffc.getFvImagesNameValueCount()][2];
ffc.getFvImagesNameValues(saa);
for (int m = 0; m < saa.length; ++m) {
fvPropertyTableModel.addRow(saa[m]);
}
jTextFieldFdf.setText(""); jTextFieldFdf.setText("");
String fdfFile = ffc.getFlashDefinitionFile(); String fdfFile = ffc.getFlashDefinitionFile();
@ -1700,6 +1789,7 @@ public class FpdFlash extends IInternalFrame {
String fdfPath = System.getenv("WORKSPACE") + File.separator + fdfFile; String fdfPath = System.getenv("WORKSPACE") + File.separator + fdfFile;
initFvInFdfTable(fdfPath); initFvInFdfTable(fdfPath);
initFvAdditionalTable();
} }
private void getOptionNameValue(Map<String, String> m){ private void getOptionNameValue(Map<String, String> m){
@ -2216,7 +2306,7 @@ public class FpdFlash extends IInternalFrame {
if (jButtonOk == null) { if (jButtonOk == null) {
jButtonOk = new JButton(); jButtonOk = new JButton();
jButtonOk.setPreferredSize(new java.awt.Dimension(80,20)); jButtonOk.setPreferredSize(new java.awt.Dimension(80,20));
jButtonOk.setText("Save"); jButtonOk.setText("Ok");
jButtonOk.addActionListener(new java.awt.event.ActionListener() { jButtonOk.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) { public void actionPerformed(java.awt.event.ActionEvent e) {
// need reset FvBindings in ModuleSA. // need reset FvBindings in ModuleSA.