package org.tianocore.frameworkwizard.platform.ui;\r
\r
import java.awt.BorderLayout;\r
+import java.awt.Dimension;\r
+import java.awt.Toolkit;\r
\r
import javax.swing.JFrame;\r
import javax.swing.JOptionPane;\r
import java.util.ListIterator;\r
import java.util.Map;\r
import java.util.Set;\r
+import java.util.Vector;\r
+\r
+import javax.swing.JTextField;\r
\r
public class FpdModuleSA extends JDialog implements ActionListener {\r
\r
private LibraryTableModel model1 = null;\r
private LibraryTableModel model2 = null;\r
private LibraryTableModel model3 = null;\r
+ private DefaultTableModel optionsTableModel = null;\r
private FpdFileContents ffc = null;\r
private String moduleKey = null;\r
private HashMap<String, ArrayList<String>> classInstanceMap = null;\r
private ArrayList<String> classProduced = null;\r
private HashMap<String, ArrayList<String>> classConsumed = null;\r
+ private JPanel jPanel8 = null;\r
+ private JLabel jLabel6 = null;\r
+ private JTextField jTextField = null;\r
+ private JLabel jLabel7 = null;\r
+ private JTextField jTextField1 = null;\r
+ private JLabel jLabel8 = null;\r
+ private JTextField jTextField2 = null;\r
+ private JScrollPane jScrollPane6 = null;\r
+ private JTable jTable4 = null;\r
+ private JButton jButton4 = null;\r
+ private JButton jButton5 = null;\r
/**\r
* This is the default constructor\r
*/\r
model.setRowCount(0);\r
int pcdCount = ffc.getPcdDataCount(key);\r
if (pcdCount != 0) {\r
- String[][] saa = new String[pcdCount][6];\r
+ String[][] saa = new String[pcdCount][7];\r
ffc.getPcdData(key, saa);\r
for (int i = 0; i < saa.length; ++i) {\r
model.addRow(saa[i]);\r
}\r
}\r
- \r
+ //\r
+ // display library classes that need to be resolved. also potential instances for them.\r
+ //\r
+ resolveLibraryInstances(key);\r
//\r
// display lib instances already selected for key\r
//\r
String[][] saa = new String[instanceCount][5];\r
ffc.getLibraryInstances(key, saa);\r
for (int i = 0; i < saa.length; ++i) {\r
- if (getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]) != null) {\r
- saa[i][0] = getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]).getName();\r
+ ModuleIdentification mi = getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]);\r
+ if (mi != null) {\r
+ saa[i][0] = mi.getName();\r
+ saa[i][2] = mi.getVersion();\r
+ saa[i][4] = mi.getPackage().getVersion();\r
+ //\r
+ // re-evaluate lib instance usage when adding a already-selected lib instance.\r
+ //\r
+ resolveLibraryInstances(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]);\r
+ model1.addRow(saa[i]);\r
}\r
\r
- model1.addRow(saa[i]);\r
+ \r
}\r
}\r
+ \r
//\r
- // display library classes that need to be resolved. also potential instances for them.\r
+ // display module SA options\r
//\r
- resolveLibraryInstances(key);\r
+ String fvBinding = ffc.getFvBinding(key);\r
+ if (fvBinding != null) {\r
+ jTextField.setText(fvBinding);\r
+ }\r
+ String fileGuid = ffc.getFfsFileNameGuid(key);\r
+ if (fileGuid != null) {\r
+ jTextField1.setText(fileGuid);\r
+ }\r
+ String ffsKey = ffc.getFfsFormatKey(key);\r
+ if (ffsKey != null) {\r
+ jTextField2.setText(ffsKey);\r
+ }\r
}\r
\r
private void resolveLibraryInstances(String key) {\r
\r
while(ispi.hasNext()) {\r
PackageIdentification pi = (PackageIdentification)ispi.next();\r
- if ( !pi.getGuid().equals(keyPart[2]) || !pi.getVersion().equals(keyPart[3])){\r
+ if ( !pi.getGuid().equals(keyPart[2])){\r
+// || !pi.getVersion().equals(keyPart[3])){\r
continue;\r
}\r
Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
Iterator ismi = smi.iterator();\r
while(ismi.hasNext()) {\r
ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
- if (mi.getGuid().equals(keyPart[0]) && mi.getVersion().equals(keyPart[1])){\r
+ if (mi.getGuid().equals(keyPart[0])){\r
+// && mi.getVersion().equals(keyPart[1])){\r
return mi;\r
}\r
}\r
*/\r
private void initialize() {\r
this.setSize(664, 515);\r
+ this.centerWindow();\r
this.setModal(true);\r
this.setTitle("Module Settings");\r
this.setContentPane(getJContentPane());\r
if (jTabbedPane == null) {\r
jTabbedPane = new JTabbedPane();\r
jTabbedPane.addTab("PCD Build Definition", null, getJPanel(), null);\r
+ jTabbedPane.addTab("Module SA Options", null, getJPanel8(), null);\r
jTabbedPane.addTab("Libraries", null, getJPanel1(), null);\r
}\r
return jTabbedPane;\r
jPanel1.add(getJPanel7(), java.awt.BorderLayout.CENTER);\r
jPanel1.addComponentListener(new java.awt.event.ComponentAdapter() {\r
public void componentShown(java.awt.event.ComponentEvent e) {\r
+ init(moduleKey);\r
}\r
});\r
}\r
if (jTable == null) {\r
model = new PartialEditableTableModel();\r
jTable = new JTable(model);\r
+ jTable.setRowHeight(20);\r
+ jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
model.addColumn("CName");\r
model.addColumn("TokenSpaceGUID");\r
model.addColumn("ItemType");\r
model.addColumn("Token");\r
+ model.addColumn("MaxDatumSize");\r
model.addColumn("DataType");\r
model.addColumn("DefaultValue");\r
\r
model1.addColumn("PackageGUID");\r
model1.addColumn("PackageVersion");\r
jTable1 = new JTable(model1);\r
- \r
+ jTable1.setRowHeight(20);\r
+ jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
public void valueChanged(ListSelectionEvent e) {\r
model2 = new LibraryTableModel();\r
model2.addColumn("LibraryClass");\r
jTable2 = new JTable(model2);\r
- \r
+ jTable2.setRowHeight(20);\r
+ jTable2.setShowGrid(false);\r
jTable2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
jTable2.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
public void valueChanged(ListSelectionEvent e) {\r
model3.addColumn("PackageGUID");\r
model3.addColumn("PackageVersion");\r
jTable3 = new JTable(model3);\r
- \r
+ jTable3.setRowHeight(20);\r
+ jTable3.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
jTable3.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
jTable3.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
public void valueChanged(ListSelectionEvent e) {\r
//\r
// Add pcd information of selected instance to current moduleSA\r
//\r
+ try{\r
ffc.addFrameworkModulesPcdBuildDefs(getModuleId(instanceValue), ffc.getModuleSA(moduleKey));\r
- \r
+ }\r
+ catch (Exception exception) {\r
+ JOptionPane.showMessageDialog(frame, "PCD Insertion Fail. " + exception.getMessage());\r
+ }\r
resolveLibraryInstances(instanceValue);\r
}\r
});\r
this.setVisible(false);\r
}\r
}\r
+ /**\r
+ * This method initializes jPanel8 \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanel8() {\r
+ if (jPanel8 == null) {\r
+ jLabel8 = new JLabel();\r
+ jLabel8.setText("FFS Format Key");\r
+ jLabel7 = new JLabel();\r
+ jLabel7.setText("FFS File GUID");\r
+ jLabel6 = new JLabel();\r
+ jLabel6.setText("FV Binding");\r
+ jPanel8 = new JPanel();\r
+ jPanel8.add(jLabel6, null);\r
+ jPanel8.add(getJTextField(), null);\r
+ jPanel8.add(jLabel7, null);\r
+ jPanel8.add(getJTextField1(), null);\r
+ jPanel8.add(jLabel8, null);\r
+ jPanel8.add(getJTextField2(), null);\r
+ jPanel8.add(getJScrollPane6(), null);\r
+ jPanel8.add(getJButton4(), null);\r
+ jPanel8.add(getJButton5(), null);\r
+ jPanel8.addComponentListener(new java.awt.event.ComponentAdapter() {\r
+ public void componentShown(java.awt.event.ComponentEvent e) {\r
+ init(moduleKey);\r
+ }\r
+ });\r
+ }\r
+ return jPanel8;\r
+ }\r
+ /**\r
+ * This method initializes jTextField \r
+ * \r
+ * @return javax.swing.JTextField \r
+ */\r
+ private JTextField getJTextField() {\r
+ if (jTextField == null) {\r
+ jTextField = new JTextField();\r
+ jTextField.setPreferredSize(new java.awt.Dimension(100,20));\r
+ jTextField.addFocusListener(new java.awt.event.FocusAdapter() {\r
+ public void focusLost(java.awt.event.FocusEvent e) {\r
+ ffc.setFvBinding(moduleKey, jTextField.getText());\r
+ }\r
+ });\r
+ }\r
+ return jTextField;\r
+ }\r
+ /**\r
+ * This method initializes jTextField1 \r
+ * \r
+ * @return javax.swing.JTextField \r
+ */\r
+ private JTextField getJTextField1() {\r
+ if (jTextField1 == null) {\r
+ jTextField1 = new JTextField();\r
+ jTextField1.setPreferredSize(new java.awt.Dimension(100,20));\r
+ jTextField1.addFocusListener(new java.awt.event.FocusAdapter() {\r
+ public void focusLost(java.awt.event.FocusEvent e) {\r
+ ffc.setFfsFileNameGuid(moduleKey, jTextField1.getText());\r
+ }\r
+ });\r
+ }\r
+ return jTextField1;\r
+ }\r
+ /**\r
+ * This method initializes jTextField2 \r
+ * \r
+ * @return javax.swing.JTextField \r
+ */\r
+ private JTextField getJTextField2() {\r
+ if (jTextField2 == null) {\r
+ jTextField2 = new JTextField();\r
+ jTextField2.setPreferredSize(new java.awt.Dimension(100,20));\r
+ jTextField2.addFocusListener(new java.awt.event.FocusAdapter() {\r
+ public void focusLost(java.awt.event.FocusEvent e) {\r
+ ffc.setFfsFormatKey(moduleKey, jTextField2.getText());\r
+ }\r
+ });\r
+ }\r
+ return jTextField2;\r
+ }\r
+ /**\r
+ * This method initializes jScrollPane6 \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPane6() {\r
+ if (jScrollPane6 == null) {\r
+ jScrollPane6 = new JScrollPane();\r
+ jScrollPane6.setPreferredSize(new java.awt.Dimension(600,200));\r
+ jScrollPane6.setViewportView(getJTable4());\r
+ }\r
+ return jScrollPane6;\r
+ }\r
+ /**\r
+ * This method initializes jTable4 \r
+ * \r
+ * @return javax.swing.JTable \r
+ */\r
+ private JTable getJTable4() {\r
+ if (jTable4 == null) {\r
+ optionsTableModel = new DefaultTableModel();\r
+ optionsTableModel.addColumn("BuildTargets");\r
+ optionsTableModel.addColumn("ToolChainFamily");\r
+ optionsTableModel.addColumn("TagName");\r
+ optionsTableModel.addColumn("ToolCode");\r
+ optionsTableModel.addColumn("SupportedArchs");\r
+ optionsTableModel.addColumn("Contents");\r
+ jTable4 = new JTable(optionsTableModel);\r
+ jTable4.setRowHeight(20);\r
+ Vector<String> vArch = new Vector<String>();\r
+ vArch.add("IA32");\r
+ vArch.add("X64");\r
+ vArch.add("IPF");\r
+ vArch.add("EBC");\r
+ vArch.add("ARM");\r
+ vArch.add("PPC");\r
+ jTable4.getColumnModel().getColumn(4).setCellEditor(new ListEditor(vArch));\r
+ jTable4.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ jTable4.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
+ jTable4.getModel().addTableModelListener(new TableModelListener() {\r
+ public void tableChanged(TableModelEvent arg0) {\r
+ // TODO Auto-generated method stub\r
+ int row = arg0.getFirstRow();\r
+ TableModel m = (TableModel)arg0.getSource();\r
+ \r
+ if (arg0.getType() == TableModelEvent.UPDATE){\r
+ //ToDo Data Validition check.\r
+ String targets = m.getValueAt(row, 0) + "";\r
+ Vector<Object> targetName = null;\r
+ if (targets.length() > 0) {\r
+ targetName = new Vector<Object>();\r
+ String[] sArray = targets.split(" ");\r
+ for (int i = 0; i < sArray.length; ++i) {\r
+ targetName.add(sArray[i]);\r
+ }\r
+ }\r
+ \r
+ String toolChain = m.getValueAt(row, 1) + "";\r
+ String tagName = m.getValueAt(row, 2) + "";\r
+ String toolCode = m.getValueAt(row, 3) + "";\r
+ String archs = m.getValueAt(row, 4) + "";\r
+ Vector<Object> supArch = null;\r
+ if (archs.length() > 0) {\r
+ supArch = new Vector<Object>();\r
+ String[] sArray1 = archs.split(" ");\r
+ for (int i = 0; i < sArray1.length; ++i) {\r
+ supArch.add(sArray1[i]);\r
+ }\r
+ }\r
+ \r
+ String contents = m.getValueAt(row, 5) + "";\r
+ \r
+ ffc.updateModuleSAOptionsOpt(moduleKey, row, targetName, toolChain, tagName, toolCode, supArch, contents);\r
+ }\r
+ }\r
+ });\r
+ }\r
+ return jTable4;\r
+ }\r
+ /**\r
+ * This method initializes jButton4 \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButton4() {\r
+ if (jButton4 == null) {\r
+ jButton4 = new JButton();\r
+ jButton4.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButton4.setText("New");\r
+ jButton4.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ String[] row = {"", "", "", "", "IA32", ""};\r
+ optionsTableModel.addRow(row);\r
+ Vector<Object> v = new Vector<Object>();\r
+ Vector<Object> v1 = new Vector<Object>();\r
+ v1.add("IA32");\r
+ ffc.genModuleSAOptionsOpt(moduleKey, v, "", "", "", v1, "");\r
+ }\r
+ });\r
+ }\r
+ return jButton4;\r
+ }\r
+ /**\r
+ * This method initializes jButton5 \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButton5() {\r
+ if (jButton5 == null) {\r
+ jButton5 = new JButton();\r
+ jButton5.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButton5.setText("Delete");\r
+ jButton5.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ if (jTable4.getSelectedRow() < 0) {\r
+ return;\r
+ }\r
+ \r
+ ffc.removeModuleSAOptionsOpt(moduleKey, jTable4.getSelectedRow());\r
+ optionsTableModel.removeRow(jTable4.getSelectedRow());\r
+ }\r
+ });\r
+ }\r
+ return jButton5;\r
+ }\r
+ \r
+ /**\r
+ Start the window at the center of screen\r
+ \r
+ **/\r
+ protected void centerWindow(int intWidth, int intHeight) {\r
+ Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
+ this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
+ }\r
+\r
+ /**\r
+ Start the window at the center of screen\r
+ \r
+ **/\r
+ protected void centerWindow() {\r
+ centerWindow(this.getSize().width, this.getSize().height);\r
+ }\r
+\r
\r
} // @jve:decl-index=0:visual-constraint="10,10"\r
\r
public boolean isCellEditable(int row, int col) {\r
switch (col){\r
case 2:\r
- return true;\r
+ return false;\r
default:\r
return false; \r
}\r