summaryrefslogtreecommitdiff
path: root/Tools/Source/FrameworkWizard
diff options
context:
space:
mode:
authorjlin16 <jlin16@6f19259b-4bc3-4df7-8a09-765794883524>2006-08-31 10:34:14 +0000
committerjlin16 <jlin16@6f19259b-4bc3-4df7-8a09-765794883524>2006-08-31 10:34:14 +0000
commiteb8ea8292e05228ff70862996c8897e716013d91 (patch)
tree9054a1a8cb869ecd13223f6739404e58f3d002d3 /Tools/Source/FrameworkWizard
parent0719317158cadc33959fdce23537456bc6de66eb (diff)
downloadedk2-eb8ea8292e05228ff70862996c8897e716013d91.zip
edk2-eb8ea8292e05228ff70862996c8897e716013d91.tar.gz
edk2-eb8ea8292e05228ff70862996c8897e716013d91.tar.bz2
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
Diffstat (limited to 'Tools/Source/FrameworkWizard')
-rw-r--r--Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java178
-rw-r--r--Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java140
2 files changed, 273 insertions, 45 deletions
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java
index 528bdfc..12dd2fd 100644
--- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java
+++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java
@@ -746,11 +746,15 @@ public class FpdFileContents {
}
public String getFvBinding(String moduleKey){
- ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);
- if (msa == null || msa.getModuleSaBuildOptions() == null) {
+ ModuleSADocument.ModuleSA moduleSa = getModuleSA(moduleKey);
+ return getFvBinding (moduleSa);
+ }
+
+ public String getFvBinding (ModuleSADocument.ModuleSA moduleSa) {
+ if (moduleSa == null || moduleSa.getModuleSaBuildOptions() == null) {
return null;
}
- return msa.getModuleSaBuildOptions().getFvBinding();
+ return moduleSa.getModuleSaBuildOptions().getFvBinding();
}
public void setFvBinding(ModuleSADocument.ModuleSA moduleSa, String fvBinding) {
@@ -776,6 +780,23 @@ public class FpdFileContents {
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) {
if (moduleSa == null || moduleSa.getModuleSaBuildOptions() == null || moduleSa.getModuleSaBuildOptions().getFvBinding() == null) {
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) {
ModuleSADocument.ModuleSA moduleSa = getModuleSA(moduleKey);
appendFvBinding (moduleSa, fvName);
@@ -1602,23 +1654,28 @@ public class FpdFileContents {
}
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();
userExts.setUserID("IMAGES");
userExts.setIdentifier(new BigInteger("1"));
XmlCursor cursor = userExts.newCursor();
cursor.toEndToken();
- cursor.beginElement("FvName");
+ cursor.beginElement(elementFvName);
cursor.insertChars(fvName);
cursor.toNextToken();
- cursor.beginElement("InfFileName");
+ cursor.beginElement(elementInfFileName);
cursor.insertChars(fvName + ".inf");
cursor.toNextToken();
- cursor.beginElement("IncludeModules");
+ cursor.beginElement(elementIncludeModules);
for (int i = 0; i < includeModules.size(); ++i) {
- cursor.beginElement("Module");
+ cursor.beginElement(elementModule);
cursor.insertAttributeWithValue("ModuleGuid", includeModules.get(i)[0]);
cursor.insertAttributeWithValue("BaseName", includeModules.get(i)[1]);
cursor.toEndToken();
@@ -1632,6 +1689,7 @@ public class FpdFileContents {
return -1;
}
ListIterator<UserExtensionsDocument.UserExtensions> li = getfpdBuildOpts().getUserExtensionsList().listIterator();
+ QName elementIncludeModules = new QName(xmlNs, "IncludeModules");
while (li.hasNext()) {
UserExtensionsDocument.UserExtensions ues = li.next();
if (!ues.getUserID().equals("IMAGES")) {
@@ -1641,7 +1699,7 @@ public class FpdFileContents {
cursor.toFirstChild();
String elementName = cursor.getTextValue();
if (elementName.equals(fvName)) {
- cursor.toNextSibling(new QName("", "IncludeModules"));
+ cursor.toNextSibling(elementIncludeModules);
if (cursor.toFirstChild()) {
int i = 1;
for (i = 1; cursor.toNextSibling(); ++i);
@@ -1660,6 +1718,45 @@ public class FpdFileContents {
if (getfpdBuildOpts().getUserExtensionsList() == null) {
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();
while (li.hasNext()) {
UserExtensionsDocument.UserExtensions ues = li.next();
@@ -1669,18 +1766,8 @@ public class FpdFileContents {
XmlCursor cursor = ues.newCursor();
cursor.toFirstChild();
String elementName = cursor.getTextValue();
- if (elementName.equals(fvName)) {
- cursor.toNextSibling(new QName("", "IncludeModules"));
- 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;
+ if (elementName.equals(oldFvName)) {
+ cursor.setTextValue(newFvName);
}
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) {
FvImagesDocument.FvImages fis = null;
@@ -2560,6 +2672,32 @@ public class FpdFileContents {
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){
XmlObject o = getfpdFlash().getFvImages();
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java
index 8c61e9f..a8d70e2 100644
--- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java
+++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java
@@ -75,6 +75,7 @@ public class FpdFlash extends IInternalFrame {
*
*/
private static final long serialVersionUID = 1L;
+ private final int startIndexOfDynamicTab = 2;
static JFrame frame;
private JPanel jContentPane = null;
private JPanel jPanelContentEast = null;
@@ -155,6 +156,9 @@ public class FpdFlash extends IInternalFrame {
private JButton jButtonAddFv = null;
private JButton jButtonDelFv = null;
private JButton jButtonAddFvOptions = null;
+ private int tabIndexForFv = -1;
+ private int selectedRowInFvAdditionalTable = -1;
+ private String oldFvName = null;
public FpdFlash() {
@@ -258,6 +262,30 @@ public class FpdFlash extends IInternalFrame {
// jPanelFvImages.add(getJPanelFvImageW(), java.awt.BorderLayout.WEST);
jPanelFvImages.add(getJPanelFvImageS(), java.awt.BorderLayout.SOUTH);
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;
@@ -1101,6 +1129,10 @@ public class FpdFlash extends IInternalFrame {
}
return jButtonFdfBrowse;
}
+
+ private void initFvAdditionalTable() {
+
+ }
private void initFvInFdfTable(String fdfPath){
Vector<FvInfoFromFdf> vFvInfo = new Vector<FvInfoFromFdf>();
@@ -1121,10 +1153,9 @@ public class FpdFlash extends IInternalFrame {
private void addTabForFv (FvInfoFromFdf fvInfo) {
String fvName = fvInfo.getFvName();
String outputFile = fvInfo.getEfiFileName();
- for (int i = 2; i < jTabbedPane.getTabCount(); ++i) {
- if (jTabbedPane.getTitleAt(i).equals(fvName)) {
- return;
- }
+ int index = jTabbedPane.indexOfTab(fvName);
+ if (index >= startIndexOfDynamicTab) {
+ return;
}
jTabbedPane.addTab(fvName, null, new ModuleOrderPane(fvName, outputFile), null);
}
@@ -1560,9 +1591,81 @@ public class FpdFlash extends IInternalFrame {
jTableFvAdditional.setRowHeight(20);
jTableFvAdditional.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
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;
}
+
+ 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
@@ -1588,11 +1691,15 @@ public class FpdFlash extends IInternalFrame {
if (jButtonAddFv == null) {
jButtonAddFv = new JButton();
jButtonAddFv.setPreferredSize(new java.awt.Dimension(80,20));
- jButtonAddFv.setEnabled(false);
+ jButtonAddFv.setEnabled(true);
jButtonAddFv.setText("New");
jButtonAddFv.addActionListener(new java.awt.event.ActionListener() {
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) {
- 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("");
String fdfFile = ffc.getFlashDefinitionFile();
@@ -1700,6 +1789,7 @@ public class FpdFlash extends IInternalFrame {
String fdfPath = System.getenv("WORKSPACE") + File.separator + fdfFile;
initFvInFdfTable(fdfPath);
+ initFvAdditionalTable();
}
private void getOptionNameValue(Map<String, String> m){
@@ -2216,7 +2306,7 @@ public class FpdFlash extends IInternalFrame {
if (jButtonOk == null) {
jButtonOk = new JButton();
jButtonOk.setPreferredSize(new java.awt.Dimension(80,20));
- jButtonOk.setText("Save");
+ jButtonOk.setText("Ok");
jButtonOk.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
// need reset FvBindings in ModuleSA.