package org.tianocore.frameworkwizard.platform.ui;\r
\r
import java.awt.BorderLayout;\r
-import java.awt.Dimension;\r
\r
import javax.swing.JPanel;\r
-import javax.swing.JDialog;\r
import javax.swing.JTabbedPane;\r
import javax.swing.JCheckBox;\r
import javax.swing.JLabel;\r
import javax.swing.AbstractAction;\r
import java.awt.event.ActionEvent;\r
import java.awt.event.ActionListener;\r
-import java.awt.event.ItemEvent;\r
-import java.awt.event.ItemListener;\r
\r
-import javax.swing.ButtonGroup;\r
import javax.swing.DefaultCellEditor;\r
-import javax.swing.DefaultListModel;\r
import javax.swing.JTextField;\r
import javax.swing.JButton;\r
import javax.swing.JScrollPane;\r
import javax.swing.JTable;\r
import javax.swing.JComboBox;\r
-import javax.swing.JRadioButton;\r
import javax.swing.ListSelectionModel;\r
import javax.swing.event.InternalFrameAdapter;\r
import javax.swing.event.InternalFrameEvent;\r
\r
import org.tianocore.PlatformSurfaceAreaDocument;\r
import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
-import java.awt.CardLayout;\r
import java.util.ArrayList;\r
import java.util.Iterator;\r
import java.util.LinkedHashMap;\r
import java.util.Set;\r
+import java.util.Vector;\r
\r
public class FpdBuildOptions extends IInternalFrame {\r
\r
private JTable jTable5 = null;\r
private JButton jButton10 = null;\r
private JButton jButton11 = null;\r
- private DefaultListModel listModel = new DefaultListModel();\r
private JButton jButton17 = null;\r
private JButton jButton18 = null;\r
private FpdFileContents ffc = null;\r
TableModel m = (TableModel)arg0.getSource();\r
if (arg0.getType() == TableModelEvent.UPDATE){\r
//ToDo Data Validition check.\r
- String targetName = m.getValueAt(row, 0) + "";\r
+ String targets = m.getValueAt(row, 0) + "";\r
+ Vector<Object> 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
String toolChain = m.getValueAt(row, 1) + "";\r
- String supArch = m.getValueAt(row, 2) + "";\r
+ String archs = m.getValueAt(row, 2) + "";\r
+ Vector<Object> 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
+ if (supArch.size() == 0) {\r
+ supArch.add("IA32");\r
+ }\r
String toolCmd = m.getValueAt(row, 3) + "";\r
String tagName = m.getValueAt(row, 4) + "";\r
String contents = m.getValueAt(row, 5) + "";\r
Object[] o = {jTextField12.getText(), jComboBox2.getSelectedItem(), s,\r
jTextField8.getText(), jTextField13.getText(), jTextField7.getText()};\r
optionsTableModel.addRow(o);\r
- ffc.genBuildOptionsOpt(jTextField12.getText(), jComboBox2.getSelectedItem()+"", jTextField13.getText(), jTextField8.getText(), s, jTextField7.getText());\r
+ \r
+ ffc.genBuildOptionsOpt(stringToVector(jTextField12.getText()), jComboBox2.getSelectedItem()+"", jTextField13.getText(), jTextField8.getText(), stringToVector(s), jTextField7.getText());\r
}\r
});\r
}\r
return jButton10;\r
}\r
\r
+ private Vector<Object> stringToVector(String s) {\r
+ String[] sArray = s.split(" ");\r
+ Vector<Object> v = new Vector<Object>();\r
+ for (int i = 0; i < sArray.length; ++i) {\r
+ v.add(sArray[i]);\r
+ }\r
+ return v;\r
+ }\r
+ \r
private String boolToList (boolean[] bool) {\r
String s = " ";\r
if (bool[0]) {\r
if (bool[5]) {\r
s += "PPC ";\r
}\r
- \r
+ if (s == " ") {\r
+ s += "IA32";\r
+ }\r
return s.trim();\r
}\r
\r
instance.setPackageVersion(pv);\r
\r
}\r
+ \r
+ public String getFvBinding(String moduleKey){\r
+ ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+ if (msa == null || msa.getModuleSaBuildOptions() == null) {\r
+ return null;\r
+ }\r
+ return msa.getModuleSaBuildOptions().getFvBinding();\r
+ }\r
+ \r
+ public void setFvBinding(String moduleKey, String fvBinding){\r
+ ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+ if (msa == null ) {\r
+ return;\r
+ }\r
+ if(msa.getModuleSaBuildOptions() == null){\r
+ msa.addNewModuleSaBuildOptions().setFvBinding(fvBinding);\r
+ return;\r
+ }\r
+ msa.getModuleSaBuildOptions().setFvBinding(fvBinding);\r
+ }\r
+ \r
+ public String getFfsFileNameGuid(String moduleKey){\r
+ ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+ if (msa == null || msa.getModuleSaBuildOptions() == null) {\r
+ return null;\r
+ }\r
+ return msa.getModuleSaBuildOptions().getFfsFileNameGuid();\r
+ }\r
+ \r
+ public void setFfsFileNameGuid(String moduleKey, String fileGuid){\r
+ ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+ if (msa == null ) {\r
+ return;\r
+ }\r
+ if(msa.getModuleSaBuildOptions() == null){\r
+ msa.addNewModuleSaBuildOptions().setFfsFileNameGuid(fileGuid);\r
+ return;\r
+ }\r
+ msa.getModuleSaBuildOptions().setFfsFileNameGuid(fileGuid);\r
+ }\r
+ \r
+ public String getFfsFormatKey(String moduleKey){\r
+ ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+ if (msa == null || msa.getModuleSaBuildOptions() == null) {\r
+ return null;\r
+ }\r
+ return msa.getModuleSaBuildOptions().getFfsFormatKey();\r
+ }\r
+ \r
+ public void setFfsFormatKey(String moduleKey, String ffsKey){\r
+ ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+ if (msa == null ) {\r
+ return;\r
+ }\r
+ if(msa.getModuleSaBuildOptions() == null){\r
+ msa.addNewModuleSaBuildOptions().setFfsFormatKey(ffsKey);\r
+ return;\r
+ }\r
+ msa.getModuleSaBuildOptions().setFvBinding(ffsKey);\r
+ }\r
+ \r
+ public void getModuleSAOptions(String moduleKey, String[][] saa) {\r
+ ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+ if (msa.getModuleSaBuildOptions() == null || msa.getModuleSaBuildOptions().getOptions() == null\r
+ || msa.getModuleSaBuildOptions().getOptions().getOptionList() == null) {\r
+ return ;\r
+ }\r
+ \r
+ List<OptionDocument.Option> lOpt = msa.getModuleSaBuildOptions().getOptions().getOptionList();\r
+ ListIterator li = lOpt.listIterator();\r
+ int i = 0;\r
+ while(li.hasNext()) {\r
+ OptionDocument.Option opt = (OptionDocument.Option)li.next();\r
+ if (opt.getBuildTargets() != null) {\r
+ saa[i][0] = listToString(opt.getBuildTargets());\r
+ }\r
+ saa[i][1] = opt.getToolChainFamily();\r
+ if (opt.getSupArchList() != null){\r
+ saa[i][2] = listToString(opt.getSupArchList());\r
+\r
+ }\r
+ saa[i][3] = opt.getToolCode();\r
+ saa[i][4] = opt.getTagName();\r
+ saa[i][5] = opt.getStringValue();\r
+ \r
+ ++i;\r
+ }\r
+ }\r
+ \r
+ public int getModuleSAOptionsCount(String moduleKey){\r
+ ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+ if (msa.getModuleSaBuildOptions() == null || msa.getModuleSaBuildOptions().getOptions() == null\r
+ || msa.getModuleSaBuildOptions().getOptions().getOptionList() == null) {\r
+ return 0;\r
+ }\r
+ return msa.getModuleSaBuildOptions().getOptions().getOptionList().size();\r
+ }\r
+ \r
+ public void genModuleSAOptionsOpt(String moduleKey, Vector<Object> buildTargets, String toolChain, String tagName, String toolCmd, Vector<Object> archList, String contents) {\r
+ ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+ if (msa.getModuleSaBuildOptions() == null) {\r
+ msa.addNewModuleSaBuildOptions();\r
+ }\r
+ if (msa.getModuleSaBuildOptions().getOptions() == null){\r
+ msa.getModuleSaBuildOptions().addNewOptions();\r
+ }\r
+ OptionDocument.Option opt = msa.getModuleSaBuildOptions().getOptions().addNewOption();\r
+ setBuildOptionsOpt(buildTargets, toolChain, tagName, toolCmd, archList, contents, opt);\r
+ }\r
+ \r
+ public void removeModuleSAOptionsOpt(String moduleKey, int i) {\r
+ ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+ if (msa.getModuleSaBuildOptions() == null || msa.getModuleSaBuildOptions().getOptions() == null) {\r
+ return ;\r
+ }\r
+ OptionsDocument.Options opts = msa.getModuleSaBuildOptions().getOptions();\r
+ XmlCursor cursor = opts.newCursor();\r
+ if (cursor.toFirstChild()) {\r
+ for (int j = 0; j < i; ++j){\r
+ cursor.toNextSibling();\r
+ }\r
+ cursor.removeXml();\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ \r
+ public void updateModuleSAOptionsOpt(String moduleKey, int i, Vector<Object> buildTargets, String toolChain, String tagName, String toolCmd, Vector<Object> archList, String contents) {\r
+ ModuleSADocument.ModuleSA msa = getModuleSA(moduleKey);\r
+ if (msa.getModuleSaBuildOptions() == null || msa.getModuleSaBuildOptions().getOptions() == null) {\r
+ return ;\r
+ }\r
+ OptionsDocument.Options opts = msa.getModuleSaBuildOptions().getOptions();\r
+ XmlCursor cursor = opts.newCursor();\r
+ if (cursor.toFirstChild()) {\r
+ for (int j = 0; j < i; ++j){\r
+ cursor.toNextSibling();\r
+ }\r
+ OptionDocument.Option opt = (OptionDocument.Option)cursor.getObject();\r
+ setBuildOptionsOpt(buildTargets, toolChain, tagName, toolCmd, archList, contents, opt);\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ \r
/**add pcd information of module mi to a ModuleSA. \r
* @param mi\r
* @param moduleSa if null, generate a new ModuleSA.\r
++i;\r
}\r
}\r
- public void genBuildOptionsOpt(String buildTargets, String toolChain, String tagName, String toolCmd, String archList, String contents) {\r
+ public void genBuildOptionsOpt(Vector<Object> buildTargets, String toolChain, String tagName, String toolCmd, Vector<Object> archList, String contents) {\r
OptionsDocument.Options opts = getfpdBuildOpts().getOptions();\r
if (opts == null) {\r
opts = getfpdBuildOpts().addNewOptions();\r
setBuildOptionsOpt(buildTargets, toolChain, tagName, toolCmd, archList, contents, opt);\r
}\r
\r
- private void setBuildOptionsOpt(String buildTargets, String toolChain, String tagName, String toolCmd, String archList, String contents, OptionDocument.Option opt){\r
+ private void setBuildOptionsOpt(Vector<Object> buildTargets, String toolChain, String tagName, String toolCmd, Vector<Object> archList, String contents, OptionDocument.Option opt){\r
opt.setStringValue(contents);\r
-// opt.setBuildTargets(buildTargets);\r
+ \r
+ opt.setBuildTargets(buildTargets);\r
opt.setToolChainFamily(toolChain);\r
opt.setTagName(tagName);\r
opt.setToolCode(toolCmd);\r
- String[] s = archList.split(" ");\r
- ArrayList<String> al = new ArrayList<String>();\r
- for (int i = 0; i < s.length; ++i) {\r
- al.add(s[i]);\r
- }\r
- opt.setSupArchList(al);\r
+ \r
+ opt.setSupArchList(archList);\r
}\r
\r
public void removeBuildOptionsOpt(int i){\r
cursor.dispose();\r
}\r
\r
- public void updateBuildOptionsOpt(int i, String buildTargets, String toolChain, String tagName, String toolCmd, String archList, String contents) {\r
+ public void updateBuildOptionsOpt(int i, Vector<Object> buildTargets, String toolChain, String tagName, String toolCmd, Vector<Object> archList, String contents) {\r
XmlObject o = getfpdBuildOpts().getOptions();\r
if (o == null) {\r
return;\r
while(li.hasNext()) {\r
BuildOptionsDocument.BuildOptions.Ffs.Sections.Sections2.Section section = li.next();\r
if (section.isSetSectionType()) {\r
- al.add(section.getSectionType().toString());\r
- }\r
+ al.add(section.getSectionType().toString());\r
+ }\r
\r
}\r
}\r
\r
}\r
\r
- private String listToString(List<String> l) {\r
+ private String listToString(List l) {\r
if (l == null) {\r
return null;\r
}\r
import javax.swing.JButton;\r
import javax.swing.ListSelectionModel;\r
\r
-import org.tianocore.FvImagesDocument;\r
import org.tianocore.PlatformSurfaceAreaDocument;\r
import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
import java.awt.event.ItemEvent;\r
import java.awt.event.ItemListener;\r
import java.io.File;\r
-import java.util.ArrayList;\r
import java.util.Iterator;\r
import java.util.LinkedHashMap;\r
import java.util.Map;\r
if (jPanel5 == null) {\r
//ToDo add ButtonGroup for RadioButtons\r
jLabel6 = new JLabel();\r
- jLabel6.setEnabled(false);\r
+ jLabel6.setEnabled(true);\r
jLabel6.setText("Value");\r
jLabel6.setPreferredSize(new Dimension(38, 20));\r
jLabel5 = new JLabel();\r
- jLabel5.setEnabled(false);\r
+ jLabel5.setEnabled(true);\r
jLabel5.setText("Name");\r
jLabel5.setPreferredSize(new Dimension(38, 20));\r
jPanel5 = new JPanel();\r
\r
public void itemStateChanged(ItemEvent arg0) {\r
// TODO Auto-generated method stub\r
- boolean selected = jCheckBox3.isSelected();\r
+// boolean selected = jCheckBox3.isSelected();\r
\r
if (!jCheckBox2.isSelected() || jComboBox.getSelectedIndex() == 0) {\r
return;\r
private JTextField getJTextField4() {\r
if (jTextField4 == null) {\r
jTextField4 = new JTextField();\r
- jTextField4.setEnabled(false);\r
+ jTextField4.setEnabled(true);\r
jTextField4.setPreferredSize(new Dimension(100, 20));\r
}\r
return jTextField4;\r
private JTextField getJTextField5() {\r
if (jTextField5 == null) {\r
jTextField5 = new JTextField();\r
- jTextField5.setEnabled(false);\r
+ jTextField5.setEnabled(true);\r
jTextField5.setPreferredSize(new Dimension(100, 20));\r
}\r
return jTextField5;\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
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 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
// display library classes that need to be resolved. also potential instances for them.\r
//\r
resolveLibraryInstances(key);\r
+ //\r
+ // display module SA options\r
+ //\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
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
}\r
return jPanel8;\r
}\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
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
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
private JTable getJTable4() {\r
if (jTable4 == null) {\r
- jTable4 = new JTable();\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.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\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 = new Vector<Object>();\r
+ String[] sArray = targets.split(" ");\r
+ for (int i = 0; i < sArray.length; ++i) {\r
+ targetName.add(sArray[i]);\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 = new Vector<Object>();\r
+ String[] sArray1 = archs.split(" ");\r
+ for (int i = 0; i < sArray1.length; ++i) {\r
+ supArch.add(sArray1[i]);\r
+ }\r
+ if (supArch.size() == 0) {\r
+ supArch.add("IA32");\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
} // @jve:decl-index=0:visual-constraint="10,10"\r
\r