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=2923a441534525cd7e31fd7c957b11b040b541c8;hp=e5a4e885744fb5d10a5346ddfe90d80c783ced9a;hb=82961247e601f509573538b105bb7758646b06a8;hpb=440537339ee813c0d52ab4e88746cd3fe42fdc33 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 e5a4e88574..2923a44153 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 @@ -1,6 +1,8 @@ package org.tianocore.frameworkwizard.platform.ui; import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.Toolkit; import javax.swing.JFrame; import javax.swing.JOptionPane; @@ -36,6 +38,9 @@ import java.util.Iterator; import java.util.ListIterator; import java.util.Map; import java.util.Set; +import java.util.Vector; + +import javax.swing.JTextField; public class FpdModuleSA extends JDialog implements ActionListener { @@ -81,11 +86,23 @@ public class FpdModuleSA extends JDialog implements ActionListener { private LibraryTableModel model1 = null; private LibraryTableModel model2 = null; private LibraryTableModel model3 = null; + private DefaultTableModel optionsTableModel = null; private FpdFileContents ffc = null; private String moduleKey = null; private HashMap> classInstanceMap = null; private ArrayList classProduced = null; private HashMap> classConsumed = null; + private JPanel jPanel8 = null; + private JLabel jLabel6 = null; + private JTextField jTextField = null; + private JLabel jLabel7 = null; + private JTextField jTextField1 = null; + private JLabel jLabel8 = null; + private JTextField jTextField2 = null; + private JScrollPane jScrollPane6 = null; + private JTable jTable4 = null; + private JButton jButton4 = null; + private JButton jButton5 = null; /** * This is the default constructor */ @@ -113,13 +130,16 @@ public class FpdModuleSA extends JDialog implements ActionListener { model.setRowCount(0); int pcdCount = ffc.getPcdDataCount(key); if (pcdCount != 0) { - String[][] saa = new String[pcdCount][6]; + String[][] saa = new String[pcdCount][7]; ffc.getPcdData(key, saa); for (int i = 0; i < saa.length; ++i) { model.addRow(saa[i]); } } - + // + // display library classes that need to be resolved. also potential instances for them. + // + resolveLibraryInstances(key); // // display lib instances already selected for key // @@ -129,17 +149,37 @@ 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) { - if (getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]) != null) { - saa[i][0] = getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]).getName(); + ModuleIdentification mi = 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(); + // + // 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]); + model1.addRow(saa[i]); } - model1.addRow(saa[i]); + } } + // - // display library classes that need to be resolved. also potential instances for them. + // display module SA options // - resolveLibraryInstances(key); + String fvBinding = ffc.getFvBinding(key); + if (fvBinding != null) { + jTextField.setText(fvBinding); + } + String fileGuid = ffc.getFfsFileNameGuid(key); + if (fileGuid != null) { + jTextField1.setText(fileGuid); + } + String ffsKey = ffc.getFfsFormatKey(key); + if (ffsKey != null) { + jTextField2.setText(ffsKey); + } } private void resolveLibraryInstances(String key) { @@ -296,14 +336,16 @@ public class FpdModuleSA extends JDialog implements ActionListener { while(ispi.hasNext()) { PackageIdentification pi = (PackageIdentification)ispi.next(); - if ( !pi.getGuid().equals(keyPart[2]) || !pi.getVersion().equals(keyPart[3])){ + if ( !pi.getGuid().equals(keyPart[2])){ +// || !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]) && mi.getVersion().equals(keyPart[1])){ + if (mi.getGuid().equals(keyPart[0])){ +// && mi.getVersion().equals(keyPart[1])){ return mi; } } @@ -368,6 +410,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { */ private void initialize() { this.setSize(664, 515); + this.centerWindow(); this.setModal(true); this.setTitle("Module Settings"); this.setContentPane(getJContentPane()); @@ -397,6 +440,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { if (jTabbedPane == null) { jTabbedPane = new JTabbedPane(); jTabbedPane.addTab("PCD Build Definition", null, getJPanel(), null); + jTabbedPane.addTab("Module SA Options", null, getJPanel8(), null); jTabbedPane.addTab("Libraries", null, getJPanel1(), null); } return jTabbedPane; @@ -440,6 +484,7 @@ public class FpdModuleSA extends JDialog implements ActionListener { jPanel1.add(getJPanel7(), java.awt.BorderLayout.CENTER); jPanel1.addComponentListener(new java.awt.event.ComponentAdapter() { public void componentShown(java.awt.event.ComponentEvent e) { + init(moduleKey); } }); } @@ -468,10 +513,13 @@ public class FpdModuleSA extends JDialog implements ActionListener { if (jTable == null) { model = new PartialEditableTableModel(); jTable = new JTable(model); + jTable.setRowHeight(20); + jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF); model.addColumn("CName"); model.addColumn("TokenSpaceGUID"); model.addColumn("ItemType"); model.addColumn("Token"); + model.addColumn("MaxDatumSize"); model.addColumn("DataType"); model.addColumn("DefaultValue"); @@ -651,7 +699,8 @@ public class FpdModuleSA extends JDialog implements ActionListener { model1.addColumn("PackageGUID"); model1.addColumn("PackageVersion"); jTable1 = new JTable(model1); - + jTable1.setRowHeight(20); + jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF); jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e) { @@ -700,7 +749,8 @@ public class FpdModuleSA extends JDialog implements ActionListener { model2 = new LibraryTableModel(); model2.addColumn("LibraryClass"); jTable2 = new JTable(model2); - + jTable2.setRowHeight(20); + jTable2.setShowGrid(false); jTable2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jTable2.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e) { @@ -772,7 +822,8 @@ public class FpdModuleSA extends JDialog implements ActionListener { model3.addColumn("PackageGUID"); model3.addColumn("PackageVersion"); jTable3 = new JTable(model3); - + jTable3.setRowHeight(20); + jTable3.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF); jTable3.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jTable3.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e) { @@ -883,8 +934,12 @@ public class FpdModuleSA extends JDialog implements ActionListener { // // Add pcd information of selected instance to current moduleSA // + try{ ffc.addFrameworkModulesPcdBuildDefs(getModuleId(instanceValue), ffc.getModuleSA(moduleKey)); - + } + catch (Exception exception) { + JOptionPane.showMessageDialog(frame, "PCD Insertion Fail. " + exception.getMessage()); + } resolveLibraryInstances(instanceValue); } }); @@ -963,6 +1018,231 @@ public class FpdModuleSA extends JDialog implements ActionListener { this.setVisible(false); } } + /** + * This method initializes jPanel8 + * + * @return javax.swing.JPanel + */ + private JPanel getJPanel8() { + if (jPanel8 == null) { + jLabel8 = new JLabel(); + jLabel8.setText("FFS Format Key"); + jLabel7 = new JLabel(); + jLabel7.setText("FFS File GUID"); + jLabel6 = new JLabel(); + jLabel6.setText("FV Binding"); + jPanel8 = new JPanel(); + jPanel8.add(jLabel6, null); + jPanel8.add(getJTextField(), null); + jPanel8.add(jLabel7, null); + jPanel8.add(getJTextField1(), null); + jPanel8.add(jLabel8, null); + jPanel8.add(getJTextField2(), null); + jPanel8.add(getJScrollPane6(), null); + jPanel8.add(getJButton4(), null); + jPanel8.add(getJButton5(), null); + jPanel8.addComponentListener(new java.awt.event.ComponentAdapter() { + public void componentShown(java.awt.event.ComponentEvent e) { + init(moduleKey); + } + }); + } + return jPanel8; + } + /** + * This method initializes jTextField + * + * @return javax.swing.JTextField + */ + private JTextField getJTextField() { + if (jTextField == null) { + jTextField = new JTextField(); + jTextField.setPreferredSize(new java.awt.Dimension(100,20)); + jTextField.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent e) { + ffc.setFvBinding(moduleKey, jTextField.getText()); + } + }); + } + return jTextField; + } + /** + * This method initializes jTextField1 + * + * @return javax.swing.JTextField + */ + private JTextField getJTextField1() { + if (jTextField1 == null) { + jTextField1 = new JTextField(); + jTextField1.setPreferredSize(new java.awt.Dimension(100,20)); + jTextField1.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent e) { + ffc.setFfsFileNameGuid(moduleKey, jTextField1.getText()); + } + }); + } + return jTextField1; + } + /** + * This method initializes jTextField2 + * + * @return javax.swing.JTextField + */ + private JTextField getJTextField2() { + if (jTextField2 == null) { + jTextField2 = new JTextField(); + jTextField2.setPreferredSize(new java.awt.Dimension(100,20)); + jTextField2.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent e) { + ffc.setFfsFormatKey(moduleKey, jTextField2.getText()); + } + }); + } + return jTextField2; + } + /** + * This method initializes jScrollPane6 + * + * @return javax.swing.JScrollPane + */ + private JScrollPane getJScrollPane6() { + if (jScrollPane6 == null) { + jScrollPane6 = new JScrollPane(); + jScrollPane6.setPreferredSize(new java.awt.Dimension(600,200)); + jScrollPane6.setViewportView(getJTable4()); + } + return jScrollPane6; + } + /** + * This method initializes jTable4 + * + * @return javax.swing.JTable + */ + private JTable getJTable4() { + if (jTable4 == null) { + optionsTableModel = new DefaultTableModel(); + optionsTableModel.addColumn("BuildTargets"); + optionsTableModel.addColumn("ToolChainFamily"); + optionsTableModel.addColumn("TagName"); + optionsTableModel.addColumn("ToolCode"); + optionsTableModel.addColumn("SupportedArchs"); + optionsTableModel.addColumn("Contents"); + jTable4 = new JTable(optionsTableModel); + jTable4.setRowHeight(20); + Vector vArch = new Vector(); + vArch.add("IA32"); + vArch.add("X64"); + vArch.add("IPF"); + vArch.add("EBC"); + vArch.add("ARM"); + vArch.add("PPC"); + jTable4.getColumnModel().getColumn(4).setCellEditor(new ListEditor(vArch)); + jTable4.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + jTable4.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF); + jTable4.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){ + //ToDo Data Validition check. + String targets = m.getValueAt(row, 0) + ""; + Vector targetName = null; + if (targets.length() > 0) { + targetName = new Vector(); + String[] sArray = targets.split(" "); + for (int i = 0; i < sArray.length; ++i) { + targetName.add(sArray[i]); + } + } + + String toolChain = m.getValueAt(row, 1) + ""; + String tagName = m.getValueAt(row, 2) + ""; + String toolCode = m.getValueAt(row, 3) + ""; + String archs = m.getValueAt(row, 4) + ""; + Vector supArch = null; + if (archs.length() > 0) { + supArch = new Vector(); + String[] sArray1 = archs.split(" "); + for (int i = 0; i < sArray1.length; ++i) { + supArch.add(sArray1[i]); + } + } + + String contents = m.getValueAt(row, 5) + ""; + + ffc.updateModuleSAOptionsOpt(moduleKey, row, targetName, toolChain, tagName, toolCode, supArch, contents); + } + } + }); + } + return jTable4; + } + /** + * This method initializes jButton4 + * + * @return javax.swing.JButton + */ + private JButton getJButton4() { + if (jButton4 == null) { + jButton4 = new JButton(); + jButton4.setPreferredSize(new java.awt.Dimension(80,20)); + jButton4.setText("New"); + jButton4.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent e) { + String[] row = {"", "", "", "", "IA32", ""}; + optionsTableModel.addRow(row); + Vector v = new Vector(); + Vector v1 = new Vector(); + v1.add("IA32"); + ffc.genModuleSAOptionsOpt(moduleKey, v, "", "", "", v1, ""); + } + }); + } + return jButton4; + } + /** + * This method initializes jButton5 + * + * @return javax.swing.JButton + */ + private JButton getJButton5() { + if (jButton5 == null) { + jButton5 = new JButton(); + jButton5.setPreferredSize(new java.awt.Dimension(80,20)); + jButton5.setText("Delete"); + jButton5.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent e) { + if (jTable4.getSelectedRow() < 0) { + return; + } + + ffc.removeModuleSAOptionsOpt(moduleKey, jTable4.getSelectedRow()); + optionsTableModel.removeRow(jTable4.getSelectedRow()); + } + }); + } + return jButton5; + } + + /** + Start the window at the center of screen + + **/ + protected void centerWindow(int intWidth, int intHeight) { + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2); + } + + /** + Start the window at the center of screen + + **/ + protected void centerWindow() { + centerWindow(this.getSize().width, this.getSize().height); + } + } // @jve:decl-index=0:visual-constraint="10,10" @@ -975,7 +1255,7 @@ class PartialEditableTableModel extends DefaultTableModel { public boolean isCellEditable(int row, int col) { switch (col){ case 2: - return true; + return false; default: return false; }