import java.awt.event.ActionEvent;\r
import java.awt.event.ComponentEvent;\r
import java.io.File;\r
+import java.util.HashMap;\r
+import java.util.Iterator;\r
+import java.util.Map;\r
+import java.util.Set;\r
import java.util.Vector;\r
\r
import javax.swing.AbstractAction;\r
import javax.swing.JFileChooser;\r
import javax.swing.JOptionPane;\r
import javax.swing.JPanel;\r
-import javax.swing.JRadioButton;\r
import javax.swing.JTable;\r
import javax.swing.JTextField;\r
import javax.swing.JComboBox;\r
import javax.swing.table.DefaultTableModel;\r
import javax.swing.table.TableModel;\r
\r
+import org.apache.xmlbeans.XmlObject;\r
import org.tianocore.PackageSurfaceAreaDocument;\r
import org.tianocore.frameworkwizard.common.DataValidation;\r
import org.tianocore.frameworkwizard.common.Tools;\r
import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
import org.tianocore.frameworkwizard.platform.ui.ListEditor;\r
+import org.tianocore.frameworkwizard.platform.ui.global.GlobalData;\r
+import org.tianocore.frameworkwizard.platform.ui.global.SurfaceAreaQuery;\r
+import org.tianocore.frameworkwizard.platform.ui.id.ModuleIdentification;\r
+import org.tianocore.frameworkwizard.platform.ui.id.PackageIdentification;\r
\r
-import javax.swing.JCheckBox;\r
\r
/**\r
GUI for create library definition elements of spd file.\r
\r
private JPanel jContentPane = null;\r
\r
- private JRadioButton jRadioButtonAdd = null;\r
-\r
- private JRadioButton jRadioButtonSelect = null;\r
-\r
private JTextField jTextFieldAdd = null;\r
\r
private JComboBox jComboBoxSelect = null;\r
\r
private JLabel jLabel5 = null;\r
\r
- private JCheckBox jCheckBox = null;\r
-\r
- private JCheckBox jCheckBox1 = null;\r
-\r
- private JCheckBox jCheckBox2 = null;\r
-\r
- private JCheckBox jCheckBox3 = null;\r
-\r
private JLabel jLabel6 = null;\r
\r
private JScrollPane jScrollPaneArch = null;\r
\r
+ private JScrollPane jScrollPane1 = null;\r
+ \r
private ICheckBoxList iCheckBoxListArch = null;\r
\r
- private JCheckBox jCheckBox4 = null;\r
+ private ICheckBoxList iCheckBoxList = null;\r
+\r
+ private JComboBox jComboBox = null;\r
+ \r
+ HashMap<String, String> libNameGuidMap = new HashMap<String, String>();\r
\r
- private JCheckBox jCheckBox5 = null;\r
\r
/**\r
This method initializes this\r
\r
}\r
\r
- /**\r
- This method initializes jRadioButtonAdd \r
- \r
- @return javax.swing.JRadioButton \r
- **/\r
- private JRadioButton getJRadioButtonAdd() {\r
- if (jRadioButtonAdd == null) {\r
- jRadioButtonAdd = new JRadioButton();\r
- jRadioButtonAdd.setBounds(new java.awt.Rectangle(9,63,197,20));\r
- jRadioButtonAdd.setText("Library Class Name");\r
- jRadioButtonAdd.addActionListener(this);\r
- jRadioButtonAdd.setSelected(true);\r
- jRadioButtonAdd.setVisible(false);\r
- }\r
- return jRadioButtonAdd;\r
- }\r
-\r
- /**\r
- This method initializes jRadioButtonSelect \r
- \r
- @return javax.swing.JRadioButton \r
- **/\r
- private JRadioButton getJRadioButtonSelect() {\r
- if (jRadioButtonSelect == null) {\r
- jRadioButtonSelect = new JRadioButton();\r
- jRadioButtonSelect.setBounds(new java.awt.Rectangle(9,10,198,20));\r
- jRadioButtonSelect.setText("Select Existing Library Class");\r
- jRadioButtonSelect.addActionListener(this);\r
- jRadioButtonSelect.setSelected(true);\r
- jRadioButtonSelect.setVisible(false);\r
- }\r
- return jRadioButtonSelect;\r
- }\r
-\r
/**\r
This method initializes jTextFieldAdd \r
\r
private JScrollPane getJScrollPane() {\r
if (jScrollPane == null) {\r
jScrollPane = new JScrollPane();\r
- jScrollPane.setBounds(new java.awt.Rectangle(12,351,608,139));\r
+ jScrollPane.setBounds(new java.awt.Rectangle(12,351,608,253));\r
jScrollPane.setPreferredSize(new java.awt.Dimension(330,150));\r
jScrollPane.setViewportView(getJTable());\r
}\r
jButtonAdd = new JButton();\r
jButtonAdd.setText("Add");\r
jButtonAdd.setSize(new java.awt.Dimension(80,20));\r
- jButtonAdd.setLocation(new java.awt.Point(365,315));\r
+ jButtonAdd.setLocation(new java.awt.Point(359,326));\r
jButtonAdd.addActionListener(this);\r
}\r
return jButtonAdd;\r
jButtonRemove = new JButton();\r
jButtonRemove.setText("Remove");\r
jButtonRemove.setSize(new java.awt.Dimension(80,20));\r
- jButtonRemove.setLocation(new java.awt.Point(449,315));\r
+ jButtonRemove.setLocation(new java.awt.Point(443,326));\r
jButtonRemove.addActionListener(this);\r
}\r
return jButtonRemove;\r
jButtonClearAll = new JButton();\r
jButtonClearAll.setText("Clear All");\r
jButtonClearAll.setSize(new java.awt.Dimension(86,20));\r
- jButtonClearAll.setLocation(new java.awt.Point(536,315));\r
+ jButtonClearAll.setLocation(new java.awt.Point(530,326));\r
jButtonClearAll.addActionListener(this);\r
}\r
return jButtonClearAll;\r
jLabel6.setText("Supported Module");\r
jLabel6.setEnabled(true);\r
jLabel5 = new JLabel();\r
- jLabel5.setBounds(new java.awt.Rectangle(16,215,93,16));\r
+ jLabel5.setBounds(new java.awt.Rectangle(15,169,93,16));\r
jLabel5.setText("Supported Arch");\r
jLabel5.setEnabled(true);\r
jLabel4 = new JLabel();\r
jLabel3 = new JLabel();\r
jLabel3.setBounds(new java.awt.Rectangle(17,112,195,16));\r
jLabel3.setEnabled(true);\r
- jLabel3.setText("Recommended Instance GUID");\r
+ jLabel3.setText("Recommended Instance Name");\r
jLabel2 = new JLabel();\r
jLabel2.setBounds(new java.awt.Rectangle(16,33,82,20));\r
jLabel2.setText("Help Text");\r
jContentPane.add(jLabel, null);\r
jContentPane.add(jStarLabel1, null);\r
jContentPane.add(jStarLabel2, null);\r
- jContentPane.add(getJRadioButtonAdd(), null);\r
- jContentPane.add(getJRadioButtonSelect(), null);\r
jContentPane.add(getJTextFieldAdd(), null);\r
jContentPane.add(getJComboBoxSelect(), null);\r
jContentPane.add(getJScrollPane(), null);\r
jContentPane.add(jLabel4, null);\r
jContentPane.add(getJTextField2(), null);\r
jContentPane.add(jLabel5, null);\r
- jContentPane.add(getJCheckBox(), null);\r
- jContentPane.add(getJCheckBox1(), null);\r
- jContentPane.add(getJCheckBox2(), null);\r
- jContentPane.add(getJCheckBox3(), null);\r
jContentPane.add(jLabel6, null);\r
\r
jContentPane.add(getJScrollPaneArch(), null);\r
- jContentPane.add(getJCheckBox4(), null);\r
- jContentPane.add(getJCheckBox5(), null);\r
+ jContentPane.add(getJScrollPane1(), null);\r
+ jContentPane.add(getJComboBox(), null);\r
+ \r
}\r
\r
return jContentPane;\r
row[0] = jTextFieldAdd.getText();\r
row[1] = jTextField.getText().replace('\\', '/');\r
row[2] = jTextFieldHelp.getText();\r
- row[5] = booleanToString(jCheckBox.isSelected(), jCheckBox1.isSelected(), jCheckBox2.isSelected(), jCheckBox3.isSelected(), jCheckBox4.isSelected(), jCheckBox5.isSelected());\r
+ row[5] = vectorToString(iCheckBoxList.getAllCheckedItemsString());\r
if (row[5].length() == 0){\r
row[5] = null;\r
}\r
return;\r
}\r
model.addRow(row);\r
+ jTable.changeSelection(model.getRowCount()-1, 0, false, false);\r
docConsole.setSaved(false);\r
sfc.genSpdLibClassDeclarations(row[0], row[3], row[1], row[2], row[5], null, null, row[4], null, row[6]);\r
\r
model.setRowCount(0);\r
sfc.removeSpdLibClass();\r
}\r
-\r
- if (arg0.getSource() == jRadioButtonAdd) {\r
- if (jRadioButtonAdd.isSelected()) {\r
- jRadioButtonSelect.setSelected(false);\r
- jTextFieldAdd.setEnabled(true);\r
- jComboBoxSelect.setEnabled(false);\r
- }\r
- if (!jRadioButtonSelect.isSelected() && !jRadioButtonAdd.isSelected()) {\r
- jRadioButtonAdd.setSelected(true);\r
- jTextFieldAdd.setEnabled(true);\r
- jComboBoxSelect.setEnabled(false);\r
- }\r
- }\r
-\r
- if (arg0.getSource() == jRadioButtonSelect) {\r
- if (jRadioButtonSelect.isSelected()) {\r
- jRadioButtonAdd.setSelected(false);\r
- jTextFieldAdd.setEnabled(false);\r
- jComboBoxSelect.setEnabled(true);\r
- }\r
- if (!jRadioButtonSelect.isSelected() && !jRadioButtonAdd.isSelected()) {\r
- jRadioButtonSelect.setSelected(true);\r
- jTextFieldAdd.setEnabled(false);\r
- jComboBoxSelect.setEnabled(true);\r
- }\r
- }\r
}\r
\r
private boolean dataValidation(String[] row) {\r
private JTextField getJTextField() {\r
if (jTextField == null) {\r
jTextField = new JTextField();\r
- jTextField.setBounds(new java.awt.Rectangle(221,75,290,21));\r
+ jTextField.setBounds(new java.awt.Rectangle(218,75,290,21));\r
jTextField.setPreferredSize(new java.awt.Dimension(260,20));\r
}\r
return jTextField;\r
private JTextField getJTextField1() {\r
if (jTextField1 == null) {\r
jTextField1 = new JTextField();\r
- jTextField1.setBounds(new java.awt.Rectangle(220,110,291,20));\r
+ jTextField1.setBounds(new java.awt.Rectangle(218,110,291,20));\r
jTextField1.setEnabled(true);\r
+ jTextField1.setVisible(false);\r
}\r
return jTextField1;\r
}\r
return jTextField2;\r
}\r
\r
- /**\r
- * This method initializes jCheckBox \r
- * \r
- * @return javax.swing.JCheckBox \r
- */\r
- private JCheckBox getJCheckBox() {\r
- if (jCheckBox == null) {\r
- jCheckBox = new JCheckBox();\r
- jCheckBox.setBounds(new java.awt.Rectangle(123,213,57,21));\r
- jCheckBox.setText("IA32");\r
- jCheckBox.setPreferredSize(new java.awt.Dimension(21,20));\r
- }\r
- return jCheckBox;\r
- }\r
-\r
- /**\r
- * This method initializes jCheckBox1 \r
- * \r
- * @return javax.swing.JCheckBox \r
- */\r
- private JCheckBox getJCheckBox1() {\r
- if (jCheckBox1 == null) {\r
- jCheckBox1 = new JCheckBox();\r
- jCheckBox1.setBounds(new java.awt.Rectangle(182,213,49,20));\r
- jCheckBox1.setText("X64");\r
- jCheckBox1.setPreferredSize(new java.awt.Dimension(21,20));\r
- }\r
- return jCheckBox1;\r
- }\r
-\r
- /**\r
- * This method initializes jCheckBox2 \r
- * \r
- * @return javax.swing.JCheckBox \r
- */\r
- private JCheckBox getJCheckBox2() {\r
- if (jCheckBox2 == null) {\r
- jCheckBox2 = new JCheckBox();\r
- jCheckBox2.setText("IPF");\r
- jCheckBox2.setSize(new java.awt.Dimension(50,20));\r
- jCheckBox2.setLocation(new java.awt.Point(237,213));\r
- jCheckBox2.setPreferredSize(new java.awt.Dimension(21,20));\r
- }\r
- return jCheckBox2;\r
- }\r
-\r
- /**\r
- * This method initializes jCheckBox3 \r
- * \r
- * @return javax.swing.JCheckBox \r
- */\r
- private JCheckBox getJCheckBox3() {\r
- if (jCheckBox3 == null) {\r
- jCheckBox3 = new JCheckBox();\r
- jCheckBox3.setBounds(new java.awt.Rectangle(286,213,50,20));\r
- jCheckBox3.setText("EBC");\r
- jCheckBox3.setPreferredSize(new java.awt.Dimension(21,20));\r
- }\r
- return jCheckBox3;\r
- }\r
-\r
private JScrollPane getJScrollPaneArch() {\r
if (jScrollPaneArch == null) {\r
jScrollPaneArch = new JScrollPane();\r
- jScrollPaneArch.setBounds(new java.awt.Rectangle(130,252,230,88));\r
+ jScrollPaneArch.setBounds(new java.awt.Rectangle(218,245,293,73));\r
jScrollPaneArch.setPreferredSize(new java.awt.Dimension(320, 80));\r
jScrollPaneArch.setViewportView(getICheckBoxListSupportedArchitectures());\r
}\r
private ICheckBoxList getICheckBoxListSupportedArchitectures() {\r
if (iCheckBoxListArch == null) {\r
iCheckBoxListArch = new ICheckBoxList();\r
+ iCheckBoxListArch.setBounds(new java.awt.Rectangle(218,246,292,73));\r
Vector<String> v = new Vector<String>();\r
v.add("BASE");\r
v.add("SEC");\r
return iCheckBoxListArch;\r
}\r
\r
- private String booleanToString(boolean b1, boolean b2, boolean b3, boolean b4, boolean b5, boolean b6){\r
- String s = " ";\r
- if (b1){\r
- s += "IA32 ";\r
- }\r
- if (b2){\r
- s += "X64 ";\r
- }\r
- if (b3){\r
- s += "IPF ";\r
- }\r
- if (b4){\r
- s += "EBC ";\r
- }\r
- if (b5){\r
- s += "ARM ";\r
- }\r
- if (b6){\r
- s += "PPC ";\r
- }\r
- return s.trim();\r
- }\r
- \r
private String vectorToString(Vector<String> v) {\r
String s = " ";\r
for (int i = 0; i < v.size(); ++i) {\r
}\r
return s.trim();\r
}\r
+ \r
+ private JScrollPane getJScrollPane1() {\r
+ if (jScrollPane1 == null) {\r
+ jScrollPane1 = new JScrollPane();\r
+ jScrollPane1.setBounds(new java.awt.Rectangle(218,170,293,73));\r
+ jScrollPane1.setPreferredSize(new java.awt.Dimension(320, 80));\r
+ jScrollPane1.setViewportView(getICheckBoxList());\r
+ }\r
+ return jScrollPane1;\r
+ }\r
/**\r
- * This method initializes jCheckBox4 \r
+ * This method initializes iCheckBoxList \r
* \r
- * @return javax.swing.JCheckBox \r
+ * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList \r
*/\r
- private JCheckBox getJCheckBox4() {\r
- if (jCheckBox4 == null) {\r
- jCheckBox4 = new JCheckBox();\r
- jCheckBox4.setBounds(new java.awt.Rectangle(343,213,60,20));\r
- jCheckBox4.setText("ARM");\r
- jCheckBox4.setPreferredSize(new Dimension(60, 20));\r
+ private ICheckBoxList getICheckBoxList() {\r
+ if (iCheckBoxList == null) {\r
+ iCheckBoxList = new ICheckBoxList();\r
+ iCheckBoxList.setBounds(new java.awt.Rectangle(218,171,292,66));\r
+ Vector<String> v = new Vector<String>();\r
+ v.add("IA32");\r
+ v.add("X64");\r
+ v.add("IPF");\r
+ v.add("EBC");\r
+ v.add("ARM");\r
+ v.add("PPC");\r
+ iCheckBoxList.setAllItems(v);\r
}\r
- return jCheckBox4;\r
+ return iCheckBoxList;\r
}\r
\r
/**\r
- * This method initializes jCheckBox5 \r
+ * This method initializes jComboBox \r
* \r
- * @return javax.swing.JCheckBox \r
+ * @return javax.swing.JComboBox \r
*/\r
- private JCheckBox getJCheckBox5() {\r
- if (jCheckBox5 == null) {\r
- jCheckBox5 = new JCheckBox();\r
- jCheckBox5.setBounds(new java.awt.Rectangle(400,213,60,20));\r
- jCheckBox5.setText("PPC");\r
- jCheckBox5.setPreferredSize(new Dimension(60, 20));\r
+ private JComboBox getJComboBox() {\r
+ if (jComboBox == null) {\r
+ jComboBox = new JComboBox();\r
+ jComboBox.setPreferredSize(new java.awt.Dimension(31,20));\r
+ jComboBox.setSize(new java.awt.Dimension(290,20));\r
+ jComboBox.setLocation(new java.awt.Point(218,111));\r
+ jComboBox.addFocusListener(new java.awt.event.FocusAdapter() {\r
+ public void focusGained(java.awt.event.FocusEvent e) {\r
+ if (jTextFieldAdd.getText().length() == 0) {\r
+ return;\r
+ }\r
+ jComboBox.removeAllItems();\r
+ getLibInstances(jTextFieldAdd.getText());\r
+ Set<String> libNames = libNameGuidMap.keySet();\r
+ Iterator<String> si = libNames.iterator();\r
+ while(si.hasNext()) {\r
+ jComboBox.addItem(si.next());\r
+ }\r
+ }\r
+ });\r
+ \r
}\r
- return jCheckBox5;\r
+ return jComboBox;\r
}\r
\r
- public static void main(String[] args){\r
- new SpdLibClassDecls().setVisible(true);\r
+ private void getLibInstances(String libClass){\r
+ libNameGuidMap.clear();\r
+ try {\r
+ GlobalData.initInfo("Tools" + File.separator + "Conf" + File.separator + "FrameworkDatabase.db", System.getenv("WORKSPACE"));\r
+ \r
+ Set<PackageIdentification> spi = GlobalData.getPackageList();\r
+ Iterator ispi = spi.iterator();\r
+ \r
+ while (ispi.hasNext()) {\r
+ PackageIdentification pi = (PackageIdentification) ispi.next();\r
+\r
+ Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
+ Iterator ismi = smi.iterator();\r
+ while (ismi.hasNext()) {\r
+ ModuleIdentification mi = (ModuleIdentification) ismi.next();\r
+ Map<String, XmlObject> m = GlobalData.getNativeMsa(mi);\r
+ SurfaceAreaQuery.setDoc(m);\r
+ String[] classProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED");\r
+ for (int i = 0; i < classProduced.length; ++i) {\r
+ if (classProduced[i].equals(libClass)) {\r
+ libNameGuidMap.put(mi.getName(), mi.getGuid());\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ catch(Exception e){\r
+ JOptionPane.showMessageDialog(frame, "Search Instances Fail.");\r
+ }\r
+ \r
}\r
+\r
}\r
\r
\r