From a490bca85d9cd7ee7fd4934b7336c3da69b78f80 Mon Sep 17 00:00:00 2001 From: jlin16 Date: Wed, 26 Jul 2006 09:42:04 +0000 Subject: [PATCH] fix the problem that if no data updated in wizard editors, the Save indicator will not pop-up. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1100 6f19259b-4bc3-4df7-8a09-765794883524 --- .../packaging/ui/SpdFileContents.java | 150 +++++++++++++++++- .../packaging/ui/SpdGuidDecls.java | 23 ++- .../packaging/ui/SpdHeader.java | 119 ++++---------- .../packaging/ui/SpdLibClassDecls.java | 64 ++++++-- .../packaging/ui/SpdMsaFiles.java | 13 ++ .../packaging/ui/SpdPackageDefinitions.java | 8 +- .../packaging/ui/SpdPackageHeaders.java | 13 ++ .../packaging/ui/SpdPcdDefs.java | 81 +++++++++- .../packaging/ui/SpdPpiDecls.java | 17 +- .../packaging/ui/SpdProtocolDecls.java | 17 +- .../platform/ui/FpdHeader.java | 109 ++++--------- 11 files changed, 414 insertions(+), 200 deletions(-) diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdFileContents.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdFileContents.java index a66861c30c..00e7f81bdf 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdFileContents.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdFileContents.java @@ -641,14 +641,14 @@ public class SpdFileContents { libClass[i][1] = lc.getIncludeHeader(); libClass[i][2] = lc.getHelpText(); // LAH added logic so you cannot set the version unless the GUID is defined. -/* LAH do not set now - if (lc.getRecommendedInstanceGuid() != null) { + +// if (lc.getRecommendedInstanceGuid() != null) { libClass[i][3] = lc.getRecommendedInstanceGuid(); - if (lc.getRecommendedInstanceVersion() != null) { +// if (lc.getRecommendedInstanceVersion() != null) { libClass[i][4] = lc.getRecommendedInstanceVersion(); - } - } -*/ +// } +// } + if (lc.getSupArchList() != null) { libClass[i][5] = listToString(lc.getSupArchList()); } @@ -993,6 +993,27 @@ public class SpdFileContents { incHdrAttribPath, incHdrAttribClass, incHdrAttribVer, incHdrAttribOverrideID, incHdrAttribModuleType, spdLibClassDeclarations); } + + public void getSpdLibClassDeclaration(String[] sa, int i) { + if (getSpdLibClassDeclarations() == null) { + return; + } + XmlCursor cursor = getSpdLibClassDeclarations().newCursor(); + if (cursor.toFirstChild()) { + for (int j = 0; j < i; ++j) { + cursor.toNextSibling(); + } + LibraryClassDeclarationsDocument.LibraryClassDeclarations.LibraryClass lc = (LibraryClassDeclarationsDocument.LibraryClassDeclarations.LibraryClass)cursor.getObject(); + sa[0] = lc.getName(); + sa[1] = lc.getIncludeHeader(); + sa[2] = lc.getHelpText(); + sa[3] = lc.getRecommendedInstanceGuid(); + sa[4] = lc.getRecommendedInstanceVersion(); + sa[5] = listToString(lc.getSupArchList()); + sa[6] = listToString(lc.getSupModuleList()); + } + cursor.dispose(); + } /** Set library class declaration contents under parent tag @@ -1118,6 +1139,20 @@ public class SpdFileContents { setSpdMsaFile(msaFileName, moduleName, ver, guid, spdMsaFiles); } + + public void getSpdMsaFile (String[] sa, int i) { + if (getSpdMsaFiles() == null) { + return; + } + XmlCursor cursor = getSpdMsaFiles().newCursor(); + if (cursor.toFirstChild()) { + for (int j = 0; j < i; ++j) { + cursor.toNextSibling(); + } + sa[0] = cursor.getTextValue(); + } + cursor.dispose(); + } /** Set MsaFile contents under parent element. @@ -1159,6 +1194,22 @@ public class SpdFileContents { setSpdIncludeHeader(ModHdrModType, hdrFile, hdrAttribGuid, hdrAttribArch, hdrAttribPath, hdrAttribClass, hdrAttribVer, hdrAttribOverID, spdModHdrs); } + + public void getSpdModuleHeader(String[] sa, int i) { + if (getSpdModHdrs() == null) { + return; + } + XmlCursor cursor = getSpdModHdrs().newCursor(); + if (cursor.toFirstChild()) { + for (int j = 0; j < i; ++j) { + cursor.toNextSibling(); + } + PackageHeadersDocument.PackageHeaders.IncludePkgHeader ih = (PackageHeadersDocument.PackageHeaders.IncludePkgHeader)cursor.getObject(); + sa[0] = ih.getModuleType()+""; + sa[1] = ih.getStringValue(); + } + cursor.dispose(); + } /** Generate GUID declaration element using parameters passed in. @@ -1213,7 +1264,70 @@ public class SpdFileContents { setSpdEntry(ppiDeclEntryName, ppiDeclCName, ppiDeclGuid, ppiDeclFeatureFlag, archList, modTypeList, guidTypeList, spdPpiDeclarations); } + + public void getSpdGuidDeclaration(String[] sa, int i) { + if (getSpdGuidDeclarations() == null) { + return; + } + getSpdEntry(sa, i, getSpdGuidDeclarations()); + } + + public void getSpdProtocolDeclaration(String[] sa, int i) { + if (getSpdProtocolDeclarations() == null) { + return; + } + getSpdEntry(sa, i, getSpdProtocolDeclarations()); + } + + public void getSpdPpiDeclaration(String[] sa, int i) { + if (getSpdPpiDeclarations() == null) { + return; + } + getSpdEntry(sa, i, getSpdPpiDeclarations()); + } + public void getSpdEntry(String[] sa, int i, XmlObject parent) { + XmlCursor cursor = parent.newCursor(); + if (cursor.toFirstChild()) { + for (int j = 0; j < i; ++j) { + cursor.toNextSibling(); + } + if (parent instanceof GuidDeclarationsDocument.GuidDeclarations) { + GuidDeclarationsDocument.GuidDeclarations.Entry e = (GuidDeclarationsDocument.GuidDeclarations.Entry)cursor.getObject(); + sa[0] = e.getName(); + sa[1] = e.getCName(); + sa[2] = e.getGuidValue(); + sa[3] = e.getHelpText(); + sa[4] = listToString(e.getSupArchList()); + sa[5] = listToString(e.getSupModuleList()); + sa[6] = listToString(e.getGuidTypeList()); + } + + if (parent instanceof ProtocolDeclarationsDocument.ProtocolDeclarations) { + ProtocolDeclarationsDocument.ProtocolDeclarations.Entry e = (ProtocolDeclarationsDocument.ProtocolDeclarations.Entry)cursor.getObject(); + sa[0] = e.getName(); + sa[1] = e.getCName(); + sa[2] = e.getGuidValue(); + sa[3] = e.getHelpText(); + sa[4] = listToString(e.getSupArchList()); + sa[5] = listToString(e.getSupModuleList()); + sa[6] = listToString(e.getGuidTypeList()); + } + + if (parent instanceof PpiDeclarationsDocument.PpiDeclarations) { + PpiDeclarationsDocument.PpiDeclarations.Entry e = (PpiDeclarationsDocument.PpiDeclarations.Entry)cursor.getObject(); + sa[0] = e.getName(); + sa[1] = e.getCName(); + sa[2] = e.getGuidValue(); + sa[3] = e.getHelpText(); + sa[4] = listToString(e.getSupArchList()); + sa[5] = listToString(e.getSupModuleList()); + sa[6] = listToString(e.getGuidTypeList()); + } + + } + cursor.dispose(); + } /** Set Entry contents using parameters passed in @@ -1358,6 +1472,30 @@ public class SpdFileContents { setSpdPcdEntry(pcdItemTypes, cName, token, dataType, spaceGuid, help, defaultString, archList, modTypeList, spdPcdDefinitions); } + + public void getSpdPcdDeclaration(String[] sa, int i) { + if (getSpdPcdDefinitions() == null) { + return; + } + + XmlCursor cursor = getSpdPcdDefinitions().newCursor(); + if (cursor.toFirstChild()) { + for (int j = 0; j < i; ++j) { + cursor.toNextSibling(); + } + PcdDeclarationsDocument.PcdDeclarations.PcdEntry pe = (PcdDeclarationsDocument.PcdDeclarations.PcdEntry)cursor.getObject(); + sa[0] = pe.getCName(); + sa[1] = pe.getToken()+""; + sa[2] = pe.getTokenSpaceGuidCName(); + sa[3] = pe.getDatumType()+""; + sa[4] = pe.getDefaultValue(); + sa[5] = pe.getHelpText(); + sa[6] = listToString(pe.getValidUsage()); + sa[7] = listToString(pe.getSupArchList()); + sa[8] = listToString(pe.getSupModuleList()); + } + cursor.dispose(); + } /** Set Pcd entry contents under parent tag diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdGuidDecls.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdGuidDecls.java index 6459c2c56e..120c52845b 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdGuidDecls.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdGuidDecls.java @@ -129,7 +129,7 @@ public class SpdGuidDecls extends IInternalFrame implements TableModelListener{ private JLabel jLabel3 = null; - + protected String[][] saa = null; /** This method initializes this @@ -237,6 +237,7 @@ public class SpdGuidDecls extends IInternalFrame implements TableModelListener{ } else{ selectedRow = lsm.getMinSelectionIndex(); + } } }); @@ -250,14 +251,28 @@ public class SpdGuidDecls extends IInternalFrame implements TableModelListener{ public void tableChanged(TableModelEvent arg0) { // TODO Auto-generated method stub int row = arg0.getFirstRow(); + int column = arg0.getColumn(); TableModel m = (TableModel)arg0.getSource(); if (arg0.getType() == TableModelEvent.UPDATE){ - updateRow(row, m); + updateRow(row, column, m); } } - protected void updateRow(int row, TableModel m){ + protected void updateRow(int row, int column, TableModel m){ + String[] sa = new String[7]; + sfc.getSpdGuidDeclaration(sa, row); + Object cellData = m.getValueAt(row, column); + if (cellData == null) { + cellData = ""; + } + if (cellData.equals(sa[column])) { + return; + } + if (cellData.toString().length() == 0 && sa[column] == null) { + return; + } + String name = m.getValueAt(row, 0) + ""; String cName = m.getValueAt(row, 1) + ""; String guid = m.getValueAt(row, 2) + ""; @@ -409,7 +424,7 @@ public class SpdGuidDecls extends IInternalFrame implements TableModelListener{ // // initialize table using SpdFileContents object // - String[][] saa = new String[sfc.getSpdGuidDeclarationCount()][7]; + saa = new String[sfc.getSpdGuidDeclarationCount()][7]; sfc.getSpdGuidDeclarations(saa); int i = 0; while (i < saa.length) { diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdHeader.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdHeader.java index 911469dcc9..5399dceab3 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdHeader.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdHeader.java @@ -32,7 +32,6 @@ import javax.swing.JTextField; import org.tianocore.PackageSurfaceAreaDocument; import org.tianocore.frameworkwizard.common.DataValidation; -import org.tianocore.frameworkwizard.common.Log; import org.tianocore.frameworkwizard.common.Tools; import org.tianocore.frameworkwizard.common.Identifications.OpeningPackageType; import org.tianocore.frameworkwizard.common.ui.IInternalFrame; @@ -144,6 +143,9 @@ public class SpdHeader extends IInternalFrame { JOptionPane.showMessageDialog(frame, "Package Name is NOT UiNameType."); return; } + if (jTextFieldBaseName.getText().equals(sfc.getSpdHdrPkgName())) { + return; + } docConsole.setSaved(false); sfc.setSpdHdrPkgName(jTextFieldBaseName.getText()); } @@ -169,6 +171,9 @@ public class SpdHeader extends IInternalFrame { JOptionPane.showMessageDialog(frame, "Guid is NOT GuidType."); return; } + if (jTextFieldGuid.getText().equals(sfc.getSpdHdrGuidValue())) { + return; + } docConsole.setSaved(false); sfc.setSpdHdrGuidValue(jTextFieldGuid.getText()); } @@ -194,6 +199,9 @@ public class SpdHeader extends IInternalFrame { JOptionPane.showMessageDialog(frame, "Version is NOT version type."); return; } + if (jTextFieldVersion.getText().equals(sfc.getSpdHdrVer())){ + return; + } docConsole.setSaved(false); sfc.setSpdHdrVer(jTextFieldVersion.getText()); } @@ -228,7 +236,6 @@ public class SpdHeader extends IInternalFrame { if (jTextAreaLicense == null) { jTextAreaLicense = new JTextArea(); jTextAreaLicense.setText(""); -// jTextAreaLicense.setPreferredSize(new java.awt.Dimension(317,77)); jTextAreaLicense.setLineWrap(true); jTextAreaLicense.addFocusListener(new FocusAdapter(){ public void focusLost(FocusEvent e){ @@ -236,6 +243,9 @@ public class SpdHeader extends IInternalFrame { JOptionPane.showMessageDialog(frame, "License contents could NOT be empty."); return; } + if (jTextAreaLicense.getText().equals(sfc.getSpdHdrLicense())) { + return; + } docConsole.setSaved(false); sfc.setSpdHdrLicense(jTextAreaLicense.getText()); } @@ -254,13 +264,15 @@ public class SpdHeader extends IInternalFrame { if (jTextAreaDescription == null) { jTextAreaDescription = new JTextArea(); jTextAreaDescription.setLineWrap(true); -// jTextAreaDescription.setPreferredSize(new java.awt.Dimension(317,77)); jTextAreaDescription.addFocusListener(new FocusAdapter(){ public void focusLost(FocusEvent e){ if (jTextAreaDescription.getText().length() == 0) { JOptionPane.showMessageDialog(frame, "Description contents could NOT be empty."); return; } + if (jTextAreaDescription.getText().equals(sfc.getSpdHdrDescription())) { + return; + } docConsole.setSaved(false); sfc.setSpdHdrDescription(jTextAreaDescription.getText()); } @@ -374,6 +386,9 @@ public class SpdHeader extends IInternalFrame { JOptionPane.showMessageDialog(frame, "Abstract could NOT be empty."); return; } + if (jTextFieldAbstract.getText().equals(sfc.getSpdHdrAbs())) { + return; + } docConsole.setSaved(false); sfc.setSpdHdrAbs(jTextFieldAbstract.getText()); } @@ -399,6 +414,9 @@ public class SpdHeader extends IInternalFrame { JOptionPane.showMessageDialog(frame, "Copyright contents could not be empty."); return; } + if (jTextFieldCopyright.getText().equals(sfc.getSpdHdrCopyright())) { + return; + } docConsole.setSaved(false); sfc.setSpdHdrCopyright(jTextFieldCopyright.getText()); } @@ -419,6 +437,12 @@ public class SpdHeader extends IInternalFrame { jTextField.setPreferredSize(new java.awt.Dimension(320, 20)); jTextField.addFocusListener(new FocusAdapter(){ public void focusLost(FocusEvent e){ + if (jTextField.getText().length() == 0 && sfc.getSpdHdrUrl() == null) { + return; + } + if (jTextField.getText().equals(sfc.getSpdHdrUrl())) { + return; + } sfc.setSpdHdrLicense(jTextAreaLicense.getText()); sfc.setSpdHdrUrl(jTextField.getText()); docConsole.setSaved(false); @@ -612,98 +636,15 @@ public class SpdHeader extends IInternalFrame { * */ public void actionPerformed(ActionEvent arg0) { - docConsole.setSaved(false); - if (arg0.getSource() == jButtonOk) { - this.save(); - this.setEdited(true); - } - if (arg0.getSource() == jButtonCancel) { - this.setEdited(false); - } + if (arg0.getSource() == jButtonGenerateGuid) { //ToDo: invoke GuidValueEditor jTextFieldGuid.setText(Tools.generateUuidString()); + docConsole.setSaved(false); sfc.setSpdHdrGuidValue(jTextFieldGuid.getText()); } } - - /** - Data validation for all fields - - @retval true - All datas are valid - @retval false - At least one data is invalid - - **/ - public boolean check() { - // - // Check if all required fields are not empty - // - if (isEmpty(this.jTextFieldBaseName.getText())) { - Log.wrn("Update Spd Header", "Base Name couldn't be empty"); - return false; - } - if (isEmpty(this.jTextFieldGuid.getText())) { - Log.wrn("Update Spd Header", "Guid couldn't be empty"); - return false; - } - if (isEmpty(this.jTextFieldVersion.getText())) { - Log.wrn("Update Spd Header", "Version couldn't be empty"); - return false; - } - if (isEmpty(this.jTextAreaLicense.getText())) { - Log.wrn("Update Spd Header", "License couldn't be empty"); - return false; - } - if (isEmpty(this.jTextFieldCopyright.getText())) { - Log.wrn("Update Spd Header", "Copyright couldn't be empty"); - return false; - } - if (isEmpty(this.jTextAreaDescription.getText())) { - Log.wrn("Update Spd Header", "Description couldn't be empty"); - return false; - } - if (isEmpty(this.jTextFieldAbstract.getText())) { - Log.wrn("Update Spd Header", "Abstract couldn't be empty"); - return false; - } - - // - // Check if all fields have correct data types - // - if (!DataValidation.isBaseName(this.jTextFieldBaseName.getText())) { - Log.wrn("Update Spd Header", "Incorrect data type for Base Name"); - return false; - } - if (!DataValidation.isGuid((this.jTextFieldGuid).getText())) { - Log.wrn("Update Spd Header", "Incorrect data type for Guid"); - return false; - } - if (!DataValidation.isAbstract(this.jTextFieldAbstract.getText())) { - Log.wrn("Update Spd Header", "Incorrect data type for Abstract"); - return false; - } - if (!DataValidation.isCopyright(this.jTextFieldCopyright.getText())) { - Log.wrn("Update Spd Header", "Incorrect data type for Copyright"); - return false; - } - return true; - } - - /** - Save all components of Spd Header - if exists spdHeader, set the value directly - if not exists spdHeader, new an instance first - - **/ - public void save() { - try { - - } catch (Exception e) { - Log.wrn("Save Package", e.getMessage()); - Log.err("Save Package", e.getMessage()); - } - } - + /** This method initializes Package type and Compontent type diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdLibClassDecls.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdLibClassDecls.java index 04a62ce166..33c78899d7 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdLibClassDecls.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdLibClassDecls.java @@ -278,13 +278,21 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen public void tableChanged(TableModelEvent arg0) { // TODO Auto-generated method stub int row = arg0.getFirstRow(); + int column = arg0.getColumn(); TableModel m = (TableModel)arg0.getSource(); if (arg0.getType() == TableModelEvent.UPDATE){ + String lib = m.getValueAt(row, cnClassName) + ""; String hdr = m.getValueAt(row, cnHdrFile) + ""; String hlp = m.getValueAt(row, cnHelpText) + ""; - String name = m.getValueAt(row, cnRecInstName) + ""; - String ver = m.getValueAt(row, cnRecInstVer) + ""; + String name = null; + if (m.getValueAt(row, cnRecInstName) != null) { + name = m.getValueAt(row, cnRecInstName).toString(); + } + String ver = null; + if (m.getValueAt(row, cnRecInstVer) != null){ + ver = m.getValueAt(row, cnRecInstVer).toString(); + } String arch = null; if (m.getValueAt(row, cnSupArch) != null) { arch = m.getValueAt(row, cnSupArch).toString(); @@ -297,11 +305,40 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen if (!dataValidation(rowData)) { return; } + + String guid = null; + if (name != null && name.length() > 0) { + getLibInstances(lib); + guid = nameToGuid(name); + } + + String[] sa = new String[7]; + sfc.getSpdLibClassDeclaration(sa, row); + Object cellData = m.getValueAt(row, column); + if (cellData == null) { + cellData = ""; + } + if (column == cnRecInstName) { + if (guid == null) { + if (sa[cnRecInstName] == null) { + return; + } + } + else { + if (guid.equals(sa[cnRecInstName])) { + return; + } + } + } + else { + if (cellData.equals(sa[column])) { + return; + } + if (cellData.toString().length() == 0 && sa[column] == null) { + return; + } + } docConsole.setSaved(false); - - getLibInstances(lib); - String guid = nameToGuid(name); - sfc.updateSpdLibClass(row, lib, hdr, hlp, guid, ver, arch, module); } } @@ -576,9 +613,6 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen if (!dataValidation(row)) { return; } - model.addRow(row); - jTable.changeSelection(model.getRowCount()-1, 0, false, false); - docConsole.setSaved(false); // //convert to GUID before storing recommended lib instance. // @@ -586,7 +620,9 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen String recommendGuid = nameToGuid(row[cnRecInstName]); sfc.genSpdLibClassDeclarations(row[cnClassName], recommendGuid, row[cnHdrFile], row[cnHelpText], row[cnSupArch], null, null, row[cnRecInstVer], null, row[cnSupMod]); - + model.addRow(row); + jTable.changeSelection(model.getRowCount()-1, 0, false, false); + docConsole.setSaved(false); } // // remove selected line @@ -626,7 +662,12 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen JOptionPane.showMessageDialog(frame, "Help Text Must NOT be empty."); return false; } - if (row[cnRecInstVer].length() > 0) { + if (row[cnRecInstVer] != null && row[cnRecInstVer].length() > 0) { + if (row[cnRecInstName] == null || row[cnRecInstName].length() == 0) { + JOptionPane.showMessageDialog(frame, "Recommended Instance Version must associate with Instance Name."); + return false; + } + if (!DataValidation.isVersionDataType(row[cnRecInstVer])) { JOptionPane.showMessageDialog(frame, "Recommended Instance Version is NOT VersionDataType."); return false; @@ -898,6 +939,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen private String nameToGuid(String name) { String s = null; if (!libNameGuidMap.containsKey(name)) { + JOptionPane.showMessageDialog(frame, "Recommended Instance NOT exists."); return s; } diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdMsaFiles.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdMsaFiles.java index 4c7a69d1ae..a7465835a4 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdMsaFiles.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdMsaFiles.java @@ -381,8 +381,21 @@ public class SpdMsaFiles extends IInternalFrame implements TableModelListener{ public void tableChanged(TableModelEvent arg0) { // TODO Auto-generated method stub int row = arg0.getFirstRow(); + int column = arg0.getColumn(); TableModel m = (TableModel)arg0.getSource(); if (arg0.getType() == TableModelEvent.UPDATE){ + String[] sa = new String[1]; + sfc.getSpdMsaFile(sa, row); + Object cellData = m.getValueAt(row, column); + if (cellData == null) { + cellData = ""; + } + if (cellData.equals(sa[column])) { + return; + } + if (cellData.toString().length() == 0 && sa[column] == null) { + return; + } String file = m.getValueAt(row, 0) + ""; if (file.length() == 0) { JOptionPane.showMessageDialog(this, "Msa File is NOT PathAndFilename type."); diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPackageDefinitions.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPackageDefinitions.java index 24d4be621e..56d00ae041 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPackageDefinitions.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPackageDefinitions.java @@ -128,8 +128,11 @@ public class SpdPackageDefinitions extends IInternalFrame { jComboBoxReadOnly.setSelectedIndex(1); jComboBoxReadOnly.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { + if (jComboBoxReadOnly.getSelectedItem().equals(sfc.getSpdPkgDefsRdOnly())) { + return; + } if (docConsole != null) { - docConsole.setSaved(false); + docConsole.setSaved(false); } sfc.setSpdPkgDefsRdOnly(jComboBoxReadOnly.getSelectedItem()+""); } @@ -153,6 +156,9 @@ public class SpdPackageDefinitions extends IInternalFrame { jComboBoxRePackage.setSelectedIndex(0); jComboBoxRePackage.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { + if (jComboBoxRePackage.getSelectedItem().equals(sfc.getSpdPkgDefsRePkg())) { + return; + } if (docConsole != null) { docConsole.setSaved(false); } diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPackageHeaders.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPackageHeaders.java index 5b256fce70..e490e28e2d 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPackageHeaders.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPackageHeaders.java @@ -564,8 +564,21 @@ public class SpdPackageHeaders extends IInternalFrame implements TableModelListe public void tableChanged(TableModelEvent arg0) { // TODO Auto-generated method stub int row = arg0.getFirstRow(); + int column = arg0.getColumn(); TableModel m = (TableModel)arg0.getSource(); if (arg0.getType() == TableModelEvent.UPDATE){ + String[] sa = new String[2]; + sfc.getSpdModuleHeader(sa, row); + Object cellData = m.getValueAt(row, column); + if (cellData == null) { + cellData = ""; + } + if (cellData.equals(sa[column])) { + return; + } + if (cellData.toString().length() == 0 && sa[column] == null) { + return; + } String pkg = m.getValueAt(row, 0) + ""; String hdr = m.getValueAt(row, 1) + ""; String[] rowData = {pkg, hdr}; diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPcdDefs.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPcdDefs.java index ba2d55bd7a..4b9924c32a 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPcdDefs.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPcdDefs.java @@ -721,16 +721,66 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{ public void tableChanged(TableModelEvent arg0) { // TODO Auto-generated method stub int row = arg0.getFirstRow(); + int column = arg0.getColumn(); TableModel m = (TableModel)arg0.getSource(); if (arg0.getType() == TableModelEvent.UPDATE){ + String[] sa = new String[9]; + sfc.getSpdPcdDeclaration(sa, row); + Object cellData = m.getValueAt(row, column); + if (column < 6) { + + if (cellData == null) { + cellData = ""; + } + if (cellData.equals(sa[column])) { + return; + } + if (cellData.toString().length() == 0 && sa[column] == null) { + return; + } + } + String usage = getValidUsage(new Boolean(m.getValueAt(row, 6)+""), new Boolean(m.getValueAt(row, 7)+""), new Boolean(m.getValueAt(row, 8)+""), new Boolean(m.getValueAt(row, 9)+""), new Boolean(m.getValueAt(row, 10)+"")); + if (usage.length() == 0) { + JOptionPane.showMessageDialog(frame, "You must choose at least one usage for PCD entry."); + return; + } + if (column <= 10 && column >= 6) { + if (compareTwoVectors(stringToVector(usage), stringToVector(sa[6]))) { + return; + } + } + + if (column == 11) { + if (cellData == null) { + cellData = ""; + } + if (cellData.equals(sa[7])) { + return; + } + if (cellData.toString().length() == 0 && sa[7] == null) { + return; + } + } + + if (column == 12) { + if (cellData == null) { + cellData = ""; + } + if (cellData.equals(sa[8])) { + return; + } + if (cellData.toString().length() == 0 && sa[8] == null) { + return; + } + } String cName = m.getValueAt(row, 0) + ""; String token = m.getValueAt(row, 1) + ""; String ts = m.getValueAt(row, 2) + ""; String dataType = m.getValueAt(row, 3) + ""; String defaultVal = m.getValueAt(row, 4) + ""; String help = m.getValueAt(row, 5) + ""; - String usage = getValidUsage(new Boolean(m.getValueAt(row, 6)+""), new Boolean(m.getValueAt(row, 7)+""), new Boolean(m.getValueAt(row, 8)+""), new Boolean(m.getValueAt(row, 9)+""), new Boolean(m.getValueAt(row, 10)+"")); + String archList = null; if (m.getValueAt(row, 11) != null){ @@ -740,10 +790,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{ if (m.getValueAt(row, 12) != null) { modTypeList = m.getValueAt(row, 12).toString(); } - if (usage.length() == 0) { - JOptionPane.showMessageDialog(frame, "You must choose at least one usage for PCD entry."); - return; - } + Object[] o = {cName, token, ts, dataType, defaultVal, help}; if (!dataValidation(o)){ return; @@ -967,6 +1014,30 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{ } return s.trim(); } + + protected Vector stringToVector(String s){ + if (s == null) { + return null; + } + String[] sArray = s.split(" "); + Vector v = new Vector(); + for (int i = 0; i < sArray.length; ++i) { + v.add(sArray[i]); + } + return v; + } + + private boolean compareTwoVectors(Vector v1, Vector v2) { + if (v1.size() != v2.size()) { + return false; + } + for (int i = 0; i < v1.size(); ++i) { + if (!v2.contains(v1.get(i))) { + return false; + } + } + return true; + } } // @jve:decl-index=0:visual-constraint="22,11" class CheckboxTableModel extends DefaultTableModel { diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPpiDecls.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPpiDecls.java index dcf608537b..b33f8c7d21 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPpiDecls.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPpiDecls.java @@ -62,7 +62,7 @@ public class SpdPpiDecls extends SpdGuidDecls { if (sfc.getSpdPpiDeclarationCount() == 0) { return ; } - String[][] saa = new String[sfc.getSpdPpiDeclarationCount()][7]; + saa = new String[sfc.getSpdPpiDeclarationCount()][7]; sfc.getSpdPpiDeclarations(saa); int i = 0; while (i < saa.length) { @@ -71,7 +71,20 @@ public class SpdPpiDecls extends SpdGuidDecls { } } - protected void updateRow(int row, TableModel m){ + protected void updateRow(int row, int column, TableModel m){ + String[] sa = new String[7]; + sfc.getSpdPpiDeclaration(sa, row); + Object cellData = m.getValueAt(row, column); + if (cellData == null) { + cellData = ""; + } + if (cellData.equals(sa[column])) { + return; + } + if (cellData.toString().length() == 0 && sa[column] == null) { + return; + } + String name = m.getValueAt(row, 0) + ""; String cName = m.getValueAt(row, 1) + ""; String guid = m.getValueAt(row, 2) + ""; diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdProtocolDecls.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdProtocolDecls.java index 21cebb5cb9..e5453947e5 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdProtocolDecls.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdProtocolDecls.java @@ -62,7 +62,7 @@ public class SpdProtocolDecls extends SpdGuidDecls { if (sfc.getSpdProtocolDeclarationCount() == 0) { return ; } - String[][] saa = new String[sfc.getSpdProtocolDeclarationCount()][7]; + saa = new String[sfc.getSpdProtocolDeclarationCount()][7]; sfc.getSpdProtocolDeclarations(saa); int i = 0; while (i < saa.length) { @@ -72,7 +72,20 @@ public class SpdProtocolDecls extends SpdGuidDecls { } - protected void updateRow(int row, TableModel m){ + protected void updateRow(int row, int column, TableModel m){ + String[] sa = new String[7]; + sfc.getSpdProtocolDeclaration(sa, row); + Object cellData = m.getValueAt(row, column); + if (cellData == null) { + cellData = ""; + } + if (cellData.equals(sa[column])) { + return; + } + if (cellData.toString().length() == 0 && sa[column] == null) { + return; + } + String name = m.getValueAt(row, 0) + ""; String cName = m.getValueAt(row, 1) + ""; String guid = m.getValueAt(row, 2) + ""; diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdHeader.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdHeader.java index 486518656b..d101250d15 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdHeader.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdHeader.java @@ -35,7 +35,6 @@ import javax.swing.JTextField; import org.tianocore.PlatformSurfaceAreaDocument; import org.tianocore.frameworkwizard.common.DataValidation; -import org.tianocore.frameworkwizard.common.Log; import org.tianocore.frameworkwizard.common.Tools; import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType; import org.tianocore.frameworkwizard.common.ui.IInternalFrame; @@ -146,6 +145,9 @@ public class FpdHeader extends IInternalFrame { JOptionPane.showMessageDialog(frame, "Package Name is NOT UiNameType."); return; } + if (jTextFieldBaseName.getText().equals(ffc.getFpdHdrPlatformName())) { + return; + } docConsole.setSaved(false); ffc.setFpdHdrPlatformName(jTextFieldBaseName.getText()); } @@ -171,6 +173,9 @@ public class FpdHeader extends IInternalFrame { JOptionPane.showMessageDialog(frame, "Guid is NOT GuidType."); return; } + if (jTextFieldGuid.getText().equals(ffc.getFpdHdrGuidValue())) { + return; + } docConsole.setSaved(false); ffc.setFpdHdrGuidValue(jTextFieldGuid.getText()); } @@ -196,6 +201,9 @@ public class FpdHeader extends IInternalFrame { JOptionPane.showMessageDialog(frame, "Version is NOT version type."); return; } + if (jTextFieldVersion.getText().equals(ffc.getFpdHdrVer())) { + return; + } docConsole.setSaved(false); ffc.setFpdHdrVer(jTextFieldVersion.getText()); } @@ -237,6 +245,9 @@ public class FpdHeader extends IInternalFrame { JOptionPane.showMessageDialog(frame, "License contents could NOT be empty."); return; } + if (jTextAreaLicense.getText().equals(ffc.getFpdHdrLicense())) { + return; + } docConsole.setSaved(false); ffc.setFpdHdrLicense(jTextAreaLicense.getText()); } @@ -261,6 +272,9 @@ public class FpdHeader extends IInternalFrame { JOptionPane.showMessageDialog(frame, "Description contents could NOT be empty."); return; } + if (jTextAreaDescription.getText().equals(ffc.getFpdHdrDescription())) { + return; + } docConsole.setSaved(false); ffc.setFpdHdrDescription(jTextAreaDescription.getText()); } @@ -374,6 +388,9 @@ public class FpdHeader extends IInternalFrame { JOptionPane.showMessageDialog(frame, "Abstract could NOT be empty."); return; } + if (jTextFieldAbstract.getText().equals(ffc.getFpdHdrAbs())) { + return; + } docConsole.setSaved(false); ffc.setFpdHdrAbs(jTextFieldAbstract.getText()); } @@ -399,6 +416,9 @@ public class FpdHeader extends IInternalFrame { JOptionPane.showMessageDialog(frame, "Copyright contents could not be empty."); return; } + if (jTextFieldCopyright.getText().equals(ffc.getFpdHdrCopyright())) { + return; + } docConsole.setSaved(false); ffc.setFpdHdrCopyright(jTextFieldCopyright.getText()); } @@ -419,6 +439,12 @@ public class FpdHeader extends IInternalFrame { jTextField.setPreferredSize(new Dimension(320, 20)); jTextField.addFocusListener(new FocusAdapter(){ public void focusLost(FocusEvent e){ + if (jTextField.getText().length() == 0 && ffc.getFpdHdrUrl() == null) { + return; + } + if (jTextField.getText().equals(ffc.getFpdHdrUrl())) { + return; + } ffc.setFpdHdrLicense(jTextAreaLicense.getText()); ffc.setFpdHdrUrl(jTextField.getText()); docConsole.setSaved(false); @@ -613,13 +639,7 @@ public class FpdHeader extends IInternalFrame { * */ public void actionPerformed(ActionEvent arg0) { - if (arg0.getSource() == jButtonOk) { - this.save(); - this.setEdited(true); - } - if (arg0.getSource() == jButtonCancel) { - this.setEdited(false); - } + if (arg0.getSource() == jButtonGenerateGuid) { docConsole.setSaved(false); jTextFieldGuid.setText(Tools.generateUuidString()); @@ -627,78 +647,7 @@ public class FpdHeader extends IInternalFrame { } } - /** - Data validation for all fields - - @retval true - All datas are valid - @retval false - At least one data is invalid - - **/ - public boolean check() { - // - // Check if all required fields are not empty - // - if (isEmpty(this.jTextFieldBaseName.getText())) { - Log.wrn("Update Fpd Header", "Base Name couldn't be empty"); - return false; - } - if (isEmpty(this.jTextFieldGuid.getText())) { - Log.wrn("Update Fpd Header", "Guid couldn't be empty"); - return false; - } - if (isEmpty(this.jTextFieldVersion.getText())) { - Log.wrn("Update Fpd Header", "Version couldn't be empty"); - return false; - } - if (isEmpty(this.jTextAreaLicense.getText())) { - Log.wrn("Update Fpd Header", "License couldn't be empty"); - return false; - } - if (isEmpty(this.jTextFieldCopyright.getText())) { - Log.wrn("Update Fpd Header", "Copyright couldn't be empty"); - return false; - } - if (isEmpty(this.jTextAreaDescription.getText())) { - Log.wrn("Update Fpd Header", "Description couldn't be empty"); - return false; - } - if (isEmpty(this.jTextFieldAbstract.getText())) { - Log.wrn("Update Fpd Header", "Abstract couldn't be empty"); - return false; - } - - // - // Check if all fields have correct data types - // - if (!DataValidation.isBaseName(this.jTextFieldBaseName.getText())) { - Log.wrn("Update Fpd Header", "Incorrect data type for Base Name"); - return false; - } - if (!DataValidation.isGuid((this.jTextFieldGuid).getText())) { - Log.wrn("Update Fpd Header", "Incorrect data type for Guid"); - return false; - } - if (!DataValidation.isAbstract(this.jTextFieldAbstract.getText())) { - Log.wrn("Update Fpd Header", "Incorrect data type for Abstract"); - return false; - } - if (!DataValidation.isCopyright(this.jTextFieldCopyright.getText())) { - Log.wrn("Update Fpd Header", "Incorrect data type for Copyright"); - return false; - } - return true; - } - - /** - Save all components of Fpd Header - if exists FpdHeader, set the value directly - if not exists FpdHeader, new an instance first - - **/ - public void save() { - - } - + /** This method initializes Package type and Compontent type