X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=Tools%2FSource%2FFrameworkWizard%2Fsrc%2Forg%2Ftianocore%2Fframeworkwizard%2Fplatform%2Fui%2FFpdModuleSA.java;h=dea31877f586cac2b3d6c7cd0de4b09f636a97e7;hp=0da5a935c93a47e52c09d3b8df98b550457b8751;hb=a0783edc77ae576d8032461935362f43293bc467;hpb=57d0e52a7180d3f3416388023f0edae9bb97f6ce diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java index 0da5a935c9..dea31877f5 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java @@ -4,6 +4,7 @@ import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Toolkit; +import javax.swing.DefaultCellEditor; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; @@ -23,13 +24,14 @@ import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; -import org.apache.xmlbeans.XmlObject; import org.tianocore.frameworkwizard.common.DataValidation; +import org.tianocore.frameworkwizard.common.GlobalData; +import org.tianocore.frameworkwizard.common.IDefaultTableModel; import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType; -import org.tianocore.frameworkwizard.platform.ui.global.GlobalData; +import org.tianocore.frameworkwizard.platform.ui.global.WorkspaceProfile; import org.tianocore.frameworkwizard.platform.ui.global.SurfaceAreaQuery; -import org.tianocore.frameworkwizard.platform.ui.id.ModuleIdentification; -import org.tianocore.frameworkwizard.platform.ui.id.PackageIdentification; +import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification; +import org.tianocore.frameworkwizard.packaging.PackageIdentification; import java.awt.FlowLayout; import java.awt.event.ActionEvent; @@ -38,8 +40,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.ListIterator; -import java.util.Map; -import java.util.Set; import java.util.Vector; import javax.swing.JTextField; @@ -86,13 +86,14 @@ public class FpdModuleSA extends JDialog implements ActionListener { private JLabel jLabelPcdHelp = null; private JButton jButtonOk = null; private JButton jButtonCancel = null; - private PartialEditableTableModel model = null; - private LibraryTableModel selectedInstancesTableModel = null; - private LibraryTableModel libClassTableModel = null; - private LibraryTableModel libInstanceTableModel = null; + private IDefaultTableModel model = null; + private IDefaultTableModel selectedInstancesTableModel = null; + private IDefaultTableModel libClassTableModel = null; + private IDefaultTableModel libInstanceTableModel = null; private DefaultTableModel optionsTableModel = null; private FpdFileContents ffc = null; private String moduleKey = null; + private int moduleSaNum = -1; private HashMap> classInstanceMap = null; private ArrayList classProduced = null; private HashMap> classConsumed = null; @@ -120,7 +121,10 @@ public class FpdModuleSA extends JDialog implements ActionListener { private JButton jButtonUpdatePcd = null; private JComboBox jComboBoxFeatureFlagValue = null; private OpeningPlatformType docConsole = null; - private JLabel jLabelPad = null; + private JPanel jPanelCustomToolChain = null; + private JPanel jPanelToolchainS = null; + private JPanel jPanelLibraryCenterN = null; + private JPanel jPanelLibraryCenterC = null; // @jve:decl-index=0:visual-constraint="20,224" /** * This is the default constructor */ @@ -135,6 +139,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { public void setKey(String k, int i, OpeningPlatformType dc){ this.moduleKey = k; + moduleSaNum = i; this.docConsole = dc; classProduced = null; classConsumed = null; @@ -151,6 +156,10 @@ public class FpdModuleSA extends JDialog implements ActionListener { // display pcd for key. // model.setRowCount(0); + jTextAreaPcdHelp.setText(""); + jComboBoxItemType.setSelectedIndex(-1); + jTextFieldMaxDatumSize.setText(""); + jTextFieldPcdDefault.setText(""); int pcdCount = ffc.getPcdDataCount(i); if (pcdCount != 0) { String[][] saa = new String[pcdCount][7]; @@ -175,39 +184,44 @@ public class FpdModuleSA extends JDialog implements ActionListener { String[][] saa = new String[instanceCount][5]; ffc.getLibraryInstances(key, saa); for (int i = 0; i < saa.length; ++i) { - ModuleIdentification mi = getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]); + ModuleIdentification mi = WorkspaceProfile.getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]); if (mi != null) { saa[i][0] = mi.getName(); saa[i][2] = mi.getVersion(); - saa[i][4] = mi.getPackage().getVersion(); + saa[i][4] = mi.getPackageId().getVersion(); // // re-evaluate lib instance usage when adding a already-selected lib instance. // resolveLibraryInstances(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]); selectedInstancesTableModel.addRow(saa[i]); } - - } } + showClassToResolved(); } - public void initModuleSAOptions(String key) { + public void initFvInfo (String key) { // // display module SA options // + jTextFieldFvBinding.setText(""); String fvBinding = ffc.getFvBinding(key); if (fvBinding != null) { jTextFieldFvBinding.setText(fvBinding); } + jTextFieldFileGuid.setText(""); String fileGuid = ffc.getFfsFileNameGuid(key); if (fileGuid != null) { jTextFieldFileGuid.setText(fileGuid); } + jTextFieldFfsKey.setText(""); String ffsKey = ffc.getFfsFormatKey(key); if (ffsKey != null) { jTextFieldFfsKey.setText(ffsKey); } + } + + public void initToolChainOptions(String key) { optionsTableModel.setRowCount(0); String[][] saa = new String[ffc.getModuleSAOptionsCount(key)][6]; @@ -218,51 +232,41 @@ public class FpdModuleSA extends JDialog implements ActionListener { } private void resolveLibraryInstances(String key) { - ModuleIdentification mi = getModuleId(key); + ModuleIdentification mi = WorkspaceProfile.getModuleId(key); PackageIdentification[] depPkgList = null; try{ - Map m = GlobalData.getNativeMsa(mi); - SurfaceAreaQuery.setDoc(m); // // Get dependency pkg list into which we will search lib instances. // - depPkgList = SurfaceAreaQuery.getDependencePkg(null); + depPkgList = SurfaceAreaQuery.getDependencePkg(null, mi); // // Get the lib class consumed, produced by this module itself. // - String[] classConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED"); + Vector vClassConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED", mi); if (this.classConsumed == null) { this.classConsumed = new HashMap>(); } - for(int i = 0; i < classConsumed.length; ++i){ - ArrayList consumedBy = this.classConsumed.get(classConsumed[i]); + for(int i = 0; i < vClassConsumed.size(); ++i){ + ArrayList consumedBy = this.classConsumed.get(vClassConsumed.get(i)); if (consumedBy == null) { consumedBy = new ArrayList(); } consumedBy.add(key); - this.classConsumed.put(classConsumed[i], consumedBy); + this.classConsumed.put(vClassConsumed.get(i), consumedBy); } - String[] classProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED"); + Vector vClassProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED", mi); if (this.classProduced == null) { this.classProduced = new ArrayList(); } - for(int i = 0; i < classProduced.length; ++i){ - if (!this.classProduced.contains(classProduced[i])){ - this.classProduced.add(classProduced[i]); + for(int i = 0; i < vClassProduced.size(); ++i){ + if (!this.classProduced.contains(vClassProduced.get(i))){ + this.classProduced.add(vClassProduced.get(i)); } } - // - // Get classes unresolved - // -// Iterator lip = this.classProduced.listIterator(); -// while(lip.hasNext()){ -// String clsProduced = lip.next(); -// this.classConsumed.remove(clsProduced); -// -// } + // // find potential instances in all dependency pkgs for classes still in classConsumed. // @@ -284,7 +288,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { } - showClassToResolved(); +// showClassToResolved(); } catch(Exception e) { e.printStackTrace(); @@ -294,12 +298,13 @@ public class FpdModuleSA extends JDialog implements ActionListener { private ArrayList getInstancesForClass(String cls, PackageIdentification[] depPkgList) throws Exception{ ArrayList al = new ArrayList(); - for (int i = 0; i < depPkgList.length; ++i) { - Set smi = GlobalData.getModules(depPkgList[i]); - Iterator ismi = smi.iterator(); +// for (int i = 0; i < depPkgList.length; ++i) { + Iterator ismi = GlobalData.vModuleList.iterator(); while(ismi.hasNext()) { ModuleIdentification mi = (ModuleIdentification)ismi.next(); - +// if (!mi.getPackageId().getGuid().equalsIgnoreCase(depPkgList[i].getGuid())) { +// continue; +// } String[] clsProduced = getClassProduced(mi); boolean isPotential = false; @@ -317,16 +322,16 @@ public class FpdModuleSA extends JDialog implements ActionListener { } if (isPotential) { al.add(mi.getGuid() + " " + mi.getVersion() + " " + - depPkgList[i].getGuid() + " " + depPkgList[i].getVersion()); + mi.getPackageId().getGuid() + " " + mi.getPackageId().getVersion()); } } - } +// } return al; } private void removeInstance(String key) { - ModuleIdentification mi = getModuleId(key); + ModuleIdentification mi = WorkspaceProfile.getModuleId(key); // // remove pcd information of instance from current ModuleSA // @@ -361,50 +366,16 @@ public class FpdModuleSA extends JDialog implements ActionListener { } - private ModuleIdentification getModuleId(String key){ - // - // Get ModuleGuid, ModuleVersion, PackageGuid, PackageVersion, Arch into string array. - // - String[] keyPart = key.split(" "); - Set spi = GlobalData.getPackageList(); - Iterator ispi = spi.iterator(); - - while(ispi.hasNext()) { - PackageIdentification pi = (PackageIdentification)ispi.next(); - if ( !pi.getGuid().equals(keyPart[2])){ - - continue; - } - if (keyPart[3] != null && keyPart[3].length() > 0 && !keyPart[3].equals("null")){ - if(!pi.getVersion().equals(keyPart[3])){ - continue; - } - } - Set smi = GlobalData.getModules(pi); - Iterator ismi = smi.iterator(); - while(ismi.hasNext()) { - ModuleIdentification mi = (ModuleIdentification)ismi.next(); - if (mi.getGuid().equals(keyPart[0])){ - if (keyPart[1] != null && keyPart[1].length() > 0 && !keyPart[1].equals("null")){ - if(!mi.getVersion().equals(keyPart[1])){ - continue; - } - } - - return mi; - } - } - } - return null; - } private String[] getClassProduced(ModuleIdentification mi){ try{ - Map m = GlobalData.getNativeMsa(mi); - SurfaceAreaQuery.setDoc(m); - String[] clsProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED"); - return clsProduced; + Vector clsProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED", mi); + String[] sClassProduced = new String[clsProduced.size()]; + for (int i = 0; i < clsProduced.size(); ++i) { + sClassProduced[i] = clsProduced.get(i); + } + return sClassProduced; }catch (Exception e) { e.printStackTrace(); @@ -415,16 +386,17 @@ public class FpdModuleSA extends JDialog implements ActionListener { private String[] getClassConsumed(ModuleIdentification mi){ - String[] clsConsumed = null; try{ - Map m = GlobalData.getNativeMsa(mi); - SurfaceAreaQuery.setDoc(m); - clsConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED"); - + Vector clsConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED", mi); + String[] sClassConsumed = new String[clsConsumed.size()]; + for (int i = 0; i < clsConsumed.size(); ++i) { + sClassConsumed[i] = clsConsumed.get(i); + } + return sClassConsumed; }catch (Exception e) { e.printStackTrace(); } - return clsConsumed; + return new String[0]; } private void showClassToResolved(){ @@ -436,25 +408,36 @@ public class FpdModuleSA extends JDialog implements ActionListener { while(li.hasNext()){ String[] s = {li.next()}; - if (classConsumed.get(s[0]) == null) { - continue; - } - if (classConsumed.get(s[0]).size() == 0) { - continue; - } +// if (classConsumed.get(s[0]) == null) { +// continue; +// } +// if (classConsumed.get(s[0]).size() == 0) { +// continue; +// } if (!classProduced.contains(s[0])){ libClassTableModel.addRow(s); } } libInstanceTableModel.setRowCount(0); } + + private void addLibInstance (ModuleIdentification libMi) throws Exception{ + + // + // Add pcd information of selected instance to current moduleSA + // + ffc.addFrameworkModulesPcdBuildDefs(libMi, null, ffc.getModuleSA(moduleKey)); + + ffc.genLibraryInstance(libMi, moduleKey); + } /** * This method initializes this * * @return void */ private void initialize() { - this.setSize(664, 515); + this.setSize(877, 555); + this.setResizable(false); this.centerWindow(); this.setModal(true); this.setTitle("Module Settings"); @@ -485,8 +468,10 @@ public class FpdModuleSA extends JDialog implements ActionListener { if (jTabbedPane == null) { jTabbedPane = new JTabbedPane(); jTabbedPane.addTab("PCD Build Definition", null, getJPanelPcd(), null); - jTabbedPane.addTab("Module SA Options", null, getJPanelModuleSaOpts(), null); jTabbedPane.addTab("Libraries", null, getJPanelLibrary(), null); + jTabbedPane.addTab("FV Info", null, getJPanelModuleSaOpts(), null); + jTabbedPane.addTab("Custom Toolchain", null, getJPanelCustomToolChain(), null); + } return jTabbedPane; } @@ -499,7 +484,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { private JPanel getJPanelPcd() { if (jPanelPcd == null) { jLabelPcdData = new JLabel(); - jLabelPcdData.setText("PcdData"); + jLabelPcdData.setText(" PCD Data"); jPanelPcd = new JPanel(); jPanelPcd.setLayout(new BorderLayout()); jPanelPcd.add(jLabelPcdData, java.awt.BorderLayout.NORTH); @@ -507,7 +492,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { jPanelPcd.add(getJPanelPcdSouth(), java.awt.BorderLayout.SOUTH); jPanelPcd.addComponentListener(new java.awt.event.ComponentAdapter() { public void componentShown(java.awt.event.ComponentEvent e) { -// initPcdBuildDefinition(moduleKey); + initPcdBuildDefinition(moduleSaNum); } }); @@ -556,10 +541,10 @@ public class FpdModuleSA extends JDialog implements ActionListener { */ private JTable getJTablePcd() { if (jTablePcd == null) { - model = new PartialEditableTableModel(); + model = new IDefaultTableModel(); jTablePcd = new JTable(model); jTablePcd.setRowHeight(20); - jTablePcd.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF); + jTablePcd.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_ALL_COLUMNS); model.addColumn("CName"); model.addColumn("TokenSpaceGUID"); model.addColumn("ItemType"); @@ -581,18 +566,23 @@ public class FpdModuleSA extends JDialog implements ActionListener { } else{ int selectedRow = lsm.getMinSelectionIndex(); - String cName = jTablePcd.getValueAt(selectedRow, 0)+""; - String[] pcdInfo = {"", ""}; - getPcdInfo(cName, pcdInfo); + String cName = model.getValueAt(selectedRow, 0)+""; + String tsGuid = model.getValueAt(selectedRow, 1)+""; + String itemType = model.getValueAt(selectedRow, 2)+""; + // + // array for pcd related information: helpText, itemType, moduleType. + // + String[] pcdInfo = {"", "", ""}; + getPcdInfo(cName, tsGuid, pcdInfo); jTextAreaPcdHelp.setText(pcdInfo[0]); - initComboBox(pcdInfo[1]); - jComboBoxItemType.setSelectedItem(pcdInfo[1]); + initComboBox(pcdInfo[1], pcdInfo[2]); + jComboBoxItemType.setSelectedItem(itemType); jTextFieldMaxDatumSize.setEnabled(true); jTextFieldMaxDatumSize.setVisible(true); jTextFieldMaxDatumSize.setText(jTablePcd.getValueAt(selectedRow, 4)+""); jTextFieldPcdDefault.setEnabled(true); jTextFieldPcdDefault.setText(jTablePcd.getValueAt(selectedRow, 6)+""); - if (jTablePcd.getValueAt(selectedRow, 5).equals("VOID*")) { + if (model.getValueAt(selectedRow, 5).equals("VOID*")) { if (pcdInfo[1].equals("FEATURE_FLAG")) { jTextFieldMaxDatumSize.setVisible(false); } @@ -613,12 +603,12 @@ public class FpdModuleSA extends JDialog implements ActionListener { jTextFieldMaxDatumSize.setEnabled(false); } - if (!jTablePcd.getValueAt(selectedRow, 2).equals("DYNAMIC") && !jTablePcd.getValueAt(selectedRow, 2).equals("DYNAMIC_EX")) { - jTextFieldPcdDefault.setText(jTablePcd.getValueAt(selectedRow, 6)+""); - if (jTablePcd.getValueAt(selectedRow, 2).equals("FEATURE_FLAG")){ + if (!model.getValueAt(selectedRow, 2).equals("DYNAMIC") && !model.getValueAt(selectedRow, 2).equals("DYNAMIC_EX")) { + jTextFieldPcdDefault.setText(model.getValueAt(selectedRow, 6)+""); + if (model.getValueAt(selectedRow, 2).equals("FEATURE_FLAG")){ jTextFieldPcdDefault.setVisible(false); jComboBoxFeatureFlagValue.setVisible(true); - jComboBoxFeatureFlagValue.setSelectedItem(jTablePcd.getValueAt(selectedRow, 6)+""); + jComboBoxFeatureFlagValue.setSelectedItem(model.getValueAt(selectedRow, 6)+""); } else{ jTextFieldPcdDefault.setVisible(true); @@ -635,26 +625,14 @@ public class FpdModuleSA extends JDialog implements ActionListener { } }); - jTablePcd.getModel().addTableModelListener(new TableModelListener() { - public void tableChanged(TableModelEvent arg0) { - // TODO Auto-generated method stub -// int row = arg0.getFirstRow(); -// TableModel m = (TableModel)arg0.getSource(); - - if (arg0.getType() == TableModelEvent.UPDATE){ - //update xml doc here. - - } - } - }); } return jTablePcd; } - private void initComboBox(String originalType) { + private void initComboBox(String originalType, String mType) { jComboBoxItemType.removeAllItems(); jComboBoxItemType.addItem(originalType); - if (originalType.equals("PATCHABLE_IN_MODULE")) { + if (originalType.equals("PATCHABLE_IN_MODULE") && mType.equalsIgnoreCase("false")) { jComboBoxItemType.addItem("FIXED_AT_BUILD"); } if (originalType.equals("DYNAMIC")) { @@ -663,17 +641,17 @@ public class FpdModuleSA extends JDialog implements ActionListener { } } - private void getPcdInfo(String cName, String[] sa) { + private void getPcdInfo(String cName, String tsGuid, String[] sa) { String[][] saa = new String[ffc.getLibraryInstancesCount(moduleKey)][5]; ffc.getLibraryInstances(moduleKey, saa); try{ - if (ffc.getPcdBuildDataInfo(getModuleId(moduleKey), cName, sa)) { + if (ffc.getPcdBuildDataInfo(WorkspaceProfile.getModuleId(moduleKey), cName, tsGuid, sa)) { return; } for (int j = 0; j < saa.length; ++j) { - if (ffc.getPcdBuildDataInfo(getModuleId(saa[j][1] + " " + saa[j][2] + " " + saa[j][3] + " " + saa[j][4]), - cName, sa)) { + if (ffc.getPcdBuildDataInfo(WorkspaceProfile.getModuleId(saa[j][1] + " " + saa[j][2] + " " + saa[j][3] + " " + saa[j][4]), + cName, tsGuid, sa)) { return; } } @@ -801,7 +779,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { private JScrollPane getJScrollPaneSelectedInstances() { if (jScrollPaneSelectedInstances == null) { jScrollPaneSelectedInstances = new JScrollPane(); - jScrollPaneSelectedInstances.setPreferredSize(new java.awt.Dimension(453,150)); + jScrollPaneSelectedInstances.setPreferredSize(new java.awt.Dimension(600,150)); jScrollPaneSelectedInstances.setViewportView(getJTableSelectedInstances()); } return jScrollPaneSelectedInstances; @@ -814,7 +792,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { */ private JTable getJTableSelectedInstances() { if (jTableSelectedInstances == null) { - selectedInstancesTableModel = new LibraryTableModel(); + selectedInstancesTableModel = new IDefaultTableModel(); selectedInstancesTableModel.addColumn("Name"); selectedInstancesTableModel.addColumn("ModuleGUID"); selectedInstancesTableModel.addColumn("ModuleVersion"); @@ -822,7 +800,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { selectedInstancesTableModel.addColumn("PackageVersion"); jTableSelectedInstances = new JTable(selectedInstancesTableModel); jTableSelectedInstances.setRowHeight(20); - jTableSelectedInstances.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF); + jTableSelectedInstances.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS); jTableSelectedInstances.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); } @@ -850,7 +828,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { */ private JTable getJTableLibClass() { if (jTableLibClass == null) { - libClassTableModel = new LibraryTableModel(); + libClassTableModel = new IDefaultTableModel(); libClassTableModel.addColumn("LibraryClass"); jTableLibClass = new JTable(libClassTableModel); jTableLibClass.setRowHeight(20); @@ -880,8 +858,8 @@ public class FpdModuleSA extends JDialog implements ActionListener { while(li.hasNext()) { String instance = li.next(); String[] s = {"", "", "", "", ""}; - if (getModuleId(instance) != null) { - s[0] = getModuleId(instance).getName(); + if (WorkspaceProfile.getModuleId(instance) != null) { + s[0] = WorkspaceProfile.getModuleId(instance).getName(); } String[] instancePart = instance.split(" "); @@ -906,7 +884,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { private JScrollPane getJScrollPaneQualifiedInstance() { if (jScrollPaneQualifiedInstance == null) { jScrollPaneQualifiedInstance = new JScrollPane(); - jScrollPaneQualifiedInstance.setPreferredSize(new java.awt.Dimension(430,170)); + jScrollPaneQualifiedInstance.setPreferredSize(new java.awt.Dimension(600,170)); jScrollPaneQualifiedInstance.setViewportView(getJTableLibInstances()); } return jScrollPaneQualifiedInstance; @@ -919,7 +897,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { */ private JTable getJTableLibInstances() { if (jTableLibInstances == null) { - libInstanceTableModel = new LibraryTableModel(); + libInstanceTableModel = new IDefaultTableModel(); libInstanceTableModel.addColumn("Name"); libInstanceTableModel.addColumn("ModuleGUID"); libInstanceTableModel.addColumn("ModuleVersion"); @@ -927,7 +905,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { libInstanceTableModel.addColumn("PackageVersion"); jTableLibInstances = new JTable(libInstanceTableModel); jTableLibInstances.setRowHeight(20); - jTableLibInstances.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF); + jTableLibInstances.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS); jTableLibInstances.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); } @@ -958,12 +936,11 @@ public class FpdModuleSA extends JDialog implements ActionListener { jLabelSelectedInstances = new JLabel(); jLabelSelectedInstances.setText("Selected Instances"); jPanelLibraryCenter = new JPanel(); - jPanelLibraryCenter.add(jLabelInstanceHelp, null); - jPanelLibraryCenter.add(getJScrollPaneInstanceHelp(), null); - jPanelLibraryCenter.add(getJButtonAdd(), null); - jPanelLibraryCenter.add(getJButtonDeleteInstance(), null); - jPanelLibraryCenter.add(jLabelSelectedInstances, null); - jPanelLibraryCenter.add(getJScrollPaneSelectedInstances(), null); + jPanelLibraryCenter.setLayout(new BorderLayout()); + + jPanelLibraryCenter.add(getJPanelLibraryCenterC(), java.awt.BorderLayout.CENTER); + jPanelLibraryCenter.add(getJPanelLibraryCenterN(), java.awt.BorderLayout.NORTH); + } return jPanelLibraryCenter; } @@ -976,7 +953,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { private JScrollPane getJScrollPaneInstanceHelp() { if (jScrollPaneInstanceHelp == null) { jScrollPaneInstanceHelp = new JScrollPane(); - jScrollPaneInstanceHelp.setPreferredSize(new java.awt.Dimension(300,50)); + jScrollPaneInstanceHelp.setPreferredSize(new java.awt.Dimension(400,50)); jScrollPaneInstanceHelp.setViewportView(getJTextAreaInstanceHelp()); } return jScrollPaneInstanceHelp; @@ -1011,27 +988,26 @@ public class FpdModuleSA extends JDialog implements ActionListener { if (row < 0) { return; } - docConsole.setSaved(false); - Object[] s = {libInstanceTableModel.getValueAt(row, 0), libInstanceTableModel.getValueAt(row, 1), - libInstanceTableModel.getValueAt(row, 2), libInstanceTableModel.getValueAt(row, 3), - libInstanceTableModel.getValueAt(row, 4)}; - selectedInstancesTableModel.addRow(s); + String instanceValue = libInstanceTableModel.getValueAt(row, 1) + " " + libInstanceTableModel.getValueAt(row, 2) + " " + libInstanceTableModel.getValueAt(row, 3) + " " + libInstanceTableModel.getValueAt(row, 4); - ModuleIdentification libMi = getModuleId(instanceValue); - ffc.genLibraryInstance(libMi, moduleKey); - // - // Add pcd information of selected instance to current moduleSA - // - try{ - ffc.addFrameworkModulesPcdBuildDefs(libMi, null, ffc.getModuleSA(moduleKey)); + ModuleIdentification libMi = WorkspaceProfile.getModuleId(instanceValue); + try { + addLibInstance (libMi); } catch (Exception exception) { - JOptionPane.showMessageDialog(frame, "PCD Insertion Fail. " + exception.getMessage()); + JOptionPane.showMessageDialog(frame, "Adding Instance" + libMi.getName() + ": "+ exception.getMessage()); + return; } + docConsole.setSaved(false); + Object[] s = {libInstanceTableModel.getValueAt(row, 0), libInstanceTableModel.getValueAt(row, 1), + libInstanceTableModel.getValueAt(row, 2), libInstanceTableModel.getValueAt(row, 3), + libInstanceTableModel.getValueAt(row, 4)}; + selectedInstancesTableModel.addRow(s); resolveLibraryInstances(instanceValue); + showClassToResolved(); } }); } @@ -1113,9 +1089,6 @@ public class FpdModuleSA extends JDialog implements ActionListener { */ private JPanel getJPanelModuleSaOpts() { if (jPanelModuleSaOpts == null) { - jLabelPad = new JLabel(); - jLabelPad.setText(""); - jLabelPad.setPreferredSize(new java.awt.Dimension(250,16)); FlowLayout flowLayout4 = new FlowLayout(); flowLayout4.setAlignment(java.awt.FlowLayout.LEFT); jLabelFfsFormatKey = new JLabel(); @@ -1124,6 +1097,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { jLabelFfsFileGuid = new JLabel(); jLabelFfsFileGuid.setText("FFS File GUID"); jLabelFfsFileGuid.setPreferredSize(new java.awt.Dimension(90,16)); + jLabelFfsFileGuid.setVisible(false); jLabelFvBinding = new JLabel(); jLabelFvBinding.setText("FV Binding"); jLabelFvBinding.setPreferredSize(new java.awt.Dimension(90,16)); @@ -1135,13 +1109,9 @@ public class FpdModuleSA extends JDialog implements ActionListener { jPanelModuleSaOpts.add(getJTextFieldFileGuid(), null); jPanelModuleSaOpts.add(jLabelFfsFormatKey, null); jPanelModuleSaOpts.add(getJTextFieldFfsKey(), null); - jPanelModuleSaOpts.add(getJScrollPaneModuleSaOptions(), null); - jPanelModuleSaOpts.add(jLabelPad, null); - jPanelModuleSaOpts.add(getJButtonNew(), null); - jPanelModuleSaOpts.add(getJButtonDeleteOption(), null); jPanelModuleSaOpts.addComponentListener(new java.awt.event.ComponentAdapter() { public void componentShown(java.awt.event.ComponentEvent e) { - initModuleSAOptions(moduleKey); + initFvInfo(moduleKey); } }); } @@ -1155,7 +1125,8 @@ public class FpdModuleSA extends JDialog implements ActionListener { private JTextField getJTextFieldFvBinding() { if (jTextFieldFvBinding == null) { jTextFieldFvBinding = new JTextField(); - jTextFieldFvBinding.setPreferredSize(new java.awt.Dimension(150,20)); + jTextFieldFvBinding.setPreferredSize(new java.awt.Dimension(400,20)); + jTextFieldFvBinding.setEditable(false); jTextFieldFvBinding.addFocusListener(new java.awt.event.FocusAdapter() { public void focusLost(java.awt.event.FocusEvent e) { String originalFvBinding = ffc.getFvBinding(moduleKey); @@ -1183,6 +1154,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { if (jTextFieldFileGuid == null) { jTextFieldFileGuid = new JTextField(); jTextFieldFileGuid.setPreferredSize(new java.awt.Dimension(300,20)); + jTextFieldFileGuid.setVisible(false); jTextFieldFileGuid.addFocusListener(new java.awt.event.FocusAdapter() { public void focusLost(java.awt.event.FocusEvent e) { String originalFileGuid = ffc.getFfsFileNameGuid(moduleKey); @@ -1219,7 +1191,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { private JTextField getJTextFieldFfsKey() { if (jTextFieldFfsKey == null) { jTextFieldFfsKey = new JTextField(); - jTextFieldFfsKey.setPreferredSize(new java.awt.Dimension(150,20)); + jTextFieldFfsKey.setPreferredSize(new java.awt.Dimension(250,20)); jTextFieldFfsKey.addFocusListener(new java.awt.event.FocusAdapter() { public void focusLost(java.awt.event.FocusEvent e) { String originalFfsKey = ffc.getFfsFormatKey(moduleKey); @@ -1246,7 +1218,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { private JScrollPane getJScrollPaneModuleSaOptions() { if (jScrollPaneModuleSaOptions == null) { jScrollPaneModuleSaOptions = new JScrollPane(); - jScrollPaneModuleSaOptions.setPreferredSize(new java.awt.Dimension(600,200)); + jScrollPaneModuleSaOptions.setPreferredSize(new java.awt.Dimension(600,350)); jScrollPaneModuleSaOptions.setViewportView(getJTableModuleSaOptions()); } return jScrollPaneModuleSaOptions; @@ -1267,6 +1239,16 @@ public class FpdModuleSA extends JDialog implements ActionListener { optionsTableModel.addColumn("Contents"); jTableModuleSaOptions = new JTable(optionsTableModel); jTableModuleSaOptions.setRowHeight(20); + + javax.swing.table.TableColumn toolFamilyCol = jTableModuleSaOptions.getColumnModel().getColumn(1); + JComboBox cb = new JComboBox(); + cb.addItem("MSFT"); + cb.addItem("GCC"); + cb.addItem("CYGWIN"); + cb.addItem("INTEL"); + cb.addItem("USER_DEFINED"); + toolFamilyCol.setCellEditor(new DefaultCellEditor(cb)); + Vector vArch = new Vector(); vArch.add("IA32"); vArch.add("X64"); @@ -1275,6 +1257,9 @@ public class FpdModuleSA extends JDialog implements ActionListener { vArch.add("ARM"); vArch.add("PPC"); jTableModuleSaOptions.getColumnModel().getColumn(4).setCellEditor(new ListEditor(vArch)); + + jTableModuleSaOptions.getColumnModel().getColumn(5).setCellEditor(new LongTextEditor()); + jTableModuleSaOptions.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jTableModuleSaOptions.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF); jTableModuleSaOptions.getModel().addTableModelListener(new TableModelListener() { @@ -1434,6 +1419,7 @@ private JPanel getJPanelPcdFieldsThirdRow() { jPanelPcdFieldsThirdRow.add(jLabelPcdDefaultValue, null); jPanelPcdFieldsThirdRow.add(getJTextFieldPcdDefault(), null); jPanelPcdFieldsThirdRow.add(getJComboBoxFeatureFlagValue(), null); + jPanelPcdFieldsThirdRow.add(getJButtonUpdatePcd(), null); } return jPanelPcdFieldsThirdRow; } @@ -1453,7 +1439,6 @@ private JPanel getJPanelPcdFieldsFirstRow() { jPanelPcdFieldsFirstRow.setLayout(flowLayout1); jPanelPcdFieldsFirstRow.add(jLabelItemType, null); jPanelPcdFieldsFirstRow.add(getJComboBoxItemType(), null); - jPanelPcdFieldsFirstRow.add(getJButtonUpdatePcd(), null); } return jPanelPcdFieldsFirstRow; } @@ -1469,15 +1454,19 @@ private JComboBox getJComboBoxItemType() { jComboBoxItemType.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { int row = jTablePcd.getSelectedRow(); - if (row < 0 || jTablePcd.getValueAt(row, 2).equals(jComboBoxItemType.getSelectedItem())) { + if (row < 0 || model.getValueAt(row, 2).equals(jComboBoxItemType.getSelectedItem())) { return; } if (jComboBoxItemType.getItemCount() == 3) { if (!jComboBoxItemType.getSelectedItem().equals("DYNAMIC")) { - pcdDynamicToNonDynamic(jTablePcd.getValueAt(row, 0)+"", jTablePcd.getValueAt(row, 1)+""); + + if (jComboBoxItemType.getSelectedItem().equals("FIXED_AT_BUILD")) { + jTextFieldPcdDefault.setText(""); + jTextFieldPcdDefault.setEnabled(true); + } } else{ - pcdNonDynamicToDynamic(jTablePcd.getValueAt(row, 0)+"", jTablePcd.getValueAt(row, 1)+""); + } } } @@ -1501,11 +1490,10 @@ private void pcdDynamicToNonDynamic(String cName, String tsGuid) { ArrayList al = ffc.getDynPcdMapValue(cName + " " + tsGuid); for (int i = 0; i < al.size(); ++i) { - String[] s = al.get(i).split(" "); - String mKey = s[0] + s[1] + s[2] + s[3]; + String mKey = moduleInfo (al.get(i)); ffc.updatePcdData(mKey, cName, tsGuid, jComboBoxItemType.getSelectedItem()+"", maxSize, value); - s[4] = jComboBoxItemType.getSelectedItem()+""; - al.set(i, s[0]+" "+s[1]+" "+s[2]+" "+s[3]+" "+s[4]); + String itemType = jComboBoxItemType.getSelectedItem()+""; + al.set(i, mKey + " " + itemType); } ffc.removeDynamicPcdBuildData(cName, tsGuid); @@ -1514,11 +1502,10 @@ private void pcdDynamicToNonDynamic(String cName, String tsGuid) { private void pcdNonDynamicToDynamic(String cName, String tsGuid) { ArrayList al = ffc.getDynPcdMapValue(cName + " " + tsGuid); for (int i = 0; i < al.size(); ++i) { - String[] s = al.get(i).split(" "); - String mKey = s[0] + " " + s[1]+ " " + s[2] + " " + s[3]; + String mKey = moduleInfo (al.get(i)); ffc.updatePcdData(mKey, cName, tsGuid, jComboBoxItemType.getSelectedItem()+"", jTextFieldMaxDatumSize.getText(), jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+""); - s[4] = jComboBoxItemType.getSelectedItem()+""; - al.set(i, s[0]+" "+s[1]+" "+s[2]+" "+s[3]+" "+s[4]); + String itemType = jComboBoxItemType.getSelectedItem()+""; + al.set(i, mKey + " " + itemType); } try{ ffc.addDynamicPcdBuildData(cName, jTablePcd.getValueAt(jTablePcd.getSelectedRow(), 3), tsGuid, "DYNAMIC", jTablePcd.getValueAt(jTablePcd.getSelectedRow(), 5)+"", jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+""); @@ -1527,6 +1514,12 @@ private void pcdNonDynamicToDynamic(String cName, String tsGuid) { JOptionPane.showMessageDialog(frame, "PCD value format: " + e.getMessage()); } } + +private String moduleInfo (String pcdInfo) { + + return pcdInfo.substring(0, pcdInfo.lastIndexOf(" ")); +} + /** * This method initializes jTextFieldMaxDatumSize * @@ -1568,9 +1561,17 @@ private JButton getJButtonUpdatePcd() { return; } docConsole.setSaved(false); - model.setValueAt(jComboBoxItemType.getSelectedItem(), row, 2); + String oldItemType = model.getValueAt(row, 2)+""; + String newItemType = jComboBoxItemType.getSelectedItem()+""; + model.setValueAt(newItemType, row, 2); model.setValueAt(jTextFieldMaxDatumSize.getText(), row, 4); model.setValueAt(jTextFieldPcdDefault.isVisible()? jTextFieldPcdDefault.getText():jComboBoxFeatureFlagValue.getSelectedItem(), row, 6); + if (oldItemType.equals("DYNAMIC") && !newItemType.equals("DYNAMIC")) { + pcdDynamicToNonDynamic(model.getValueAt(row, 0)+"", model.getValueAt(row, 1)+""); + } + if (!oldItemType.equals("DYNAMIC") && newItemType.equals("DYNAMIC")) { + pcdNonDynamicToDynamic(model.getValueAt(row, 0)+"", model.getValueAt(row, 1)+""); + } ffc.updatePcdData(moduleKey, model.getValueAt(row, 0)+"", model.getValueAt(row, 1)+"", model.getValueAt(row, 2)+"", model.getValueAt(row, 4)+"", model.getValueAt(row, 6)+""); } }); @@ -1587,39 +1588,76 @@ private JComboBox getJComboBoxFeatureFlagValue() { jComboBoxFeatureFlagValue = new JComboBox(); jComboBoxFeatureFlagValue.setPreferredSize(new java.awt.Dimension(100,20)); jComboBoxFeatureFlagValue.setVisible(false); - jComboBoxFeatureFlagValue.addItem("true"); - jComboBoxFeatureFlagValue.addItem("false"); + jComboBoxFeatureFlagValue.addItem("TRUE"); + jComboBoxFeatureFlagValue.addItem("FALSE"); } return jComboBoxFeatureFlagValue; } - - -} // @jve:decl-index=0:visual-constraint="10,10" - -class PartialEditableTableModel extends DefaultTableModel { - /** - * - */ - private static final long serialVersionUID = 1L; - - public boolean isCellEditable(int row, int col) { - switch (col){ - case 2: - return false; - default: - return false; - } - +/** + * This method initializes jPanelCustomToolChain + * + * @return javax.swing.JPanel + */ +private JPanel getJPanelCustomToolChain() { + if (jPanelCustomToolChain == null) { + jPanelCustomToolChain = new JPanel(); + jPanelCustomToolChain.setLayout(new BorderLayout()); + jPanelCustomToolChain.add(getJPanelToolchainS(), java.awt.BorderLayout.SOUTH); + jPanelCustomToolChain.add(getJScrollPaneModuleSaOptions(), java.awt.BorderLayout.CENTER); + jPanelCustomToolChain.addComponentListener(new java.awt.event.ComponentAdapter() { + public void componentShown(java.awt.event.ComponentEvent e) { + initToolChainOptions(moduleKey); + } + }); } + return jPanelCustomToolChain; +} +/** + * This method initializes jPanelToolchainS + * + * @return javax.swing.JPanel + */ +private JPanel getJPanelToolchainS() { + if (jPanelToolchainS == null) { + jPanelToolchainS = new JPanel(); + jPanelToolchainS.add(getJButtonNew(), null); + jPanelToolchainS.add(getJButtonDeleteOption(), null); + } + return jPanelToolchainS; } -class LibraryTableModel extends DefaultTableModel { - /** - * - */ - private static final long serialVersionUID = 1L; - - public boolean isCellEditable(int row, int col) { - return false; +/** + * This method initializes jPanelLibraryCenterN + * + * @return javax.swing.JPanel + */ +private JPanel getJPanelLibraryCenterN() { + if (jPanelLibraryCenterN == null) { + FlowLayout flowLayout5 = new FlowLayout(); + flowLayout5.setAlignment(java.awt.FlowLayout.CENTER); + flowLayout5.setHgap(10); + jPanelLibraryCenterN = new JPanel(); + jPanelLibraryCenterN.setLayout(flowLayout5); + jPanelLibraryCenterN.add(jLabelInstanceHelp, null); + jPanelLibraryCenterN.add(getJScrollPaneInstanceHelp(), null); + jPanelLibraryCenterN.add(getJButtonAdd(), null); + jPanelLibraryCenterN.add(getJButtonDeleteInstance(), null); + } + return jPanelLibraryCenterN; +} +/** + * This method initializes jPanelLibraryCenterC + * + * @return javax.swing.JPanel + */ +private JPanel getJPanelLibraryCenterC() { + if (jPanelLibraryCenterC == null) { + jPanelLibraryCenterC = new JPanel(); + jPanelLibraryCenterC.add(jLabelSelectedInstances, null); + jPanelLibraryCenterC.add(getJScrollPaneSelectedInstances(), null); } + return jPanelLibraryCenterC; } + + +} // @jve:decl-index=0:visual-constraint="10,10"