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.WorkspaceProfile;\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
+ private JTextField jTextFieldClass = null;\r
\r
private JComboBox jComboBoxSelect = null;\r
\r
\r
private JButton jButtonRemove = null;\r
\r
- private JButton jButtonClearAll = null;\r
-\r
- private JButton jButtonOk = null;\r
+ private JButton jButtonRemoveAll = null;\r
\r
- private JLabel jLabel = null;\r
+ private JLabel jLabelHdr = null;\r
\r
- private JTextField jTextField = null;\r
+ private JTextField jTextFieldHdr = null;\r
\r
private JButton jButtonBrowse = null;\r
\r
\r
private OpeningPackageType docConsole = null;\r
\r
- private JLabel jLabel1 = null;\r
+ private JLabel jLabel1ClassName = null;\r
\r
private JScrollPane topScrollPane = null; // @jve:decl-index=0:visual-constraint="10,53"\r
\r
\r
private StarLabel starLabel = null;\r
\r
- private JLabel jLabel2 = null;\r
+ private JLabel jLabel2HelpText = null;\r
\r
private JTextField jTextFieldHelp = null;\r
\r
- private JLabel jLabel3 = null;\r
-\r
- private JTextField jTextField1 = null;\r
-\r
- private JLabel jLabel4 = null;\r
+ private JLabel jLabel3RecInstName = null;\r
\r
- private JTextField jTextField2 = null;\r
+ private JTextField jTextField1RecInstName = null;\r
\r
- private JLabel jLabel5 = null;\r
+ private JLabel jLabel4RecInstVer = null;\r
\r
- private JCheckBox jCheckBox = null;\r
+ private JTextField jTextField2RecInstVer = null;\r
\r
- private JCheckBox jCheckBox1 = null;\r
+ private JLabel jLabel5SupArchList = null;\r
\r
- private JCheckBox jCheckBox2 = null;\r
-\r
- private JCheckBox jCheckBox3 = null;\r
-\r
- private JLabel jLabel6 = null;\r
+ private JLabel jLabel6SupModList = null;\r
+ \r
+ private JScrollPane jScrollPaneModules = null;\r
\r
- private JScrollPane jScrollPaneArch = null;\r
+ private JScrollPane jScrollPane1Arch = null;\r
\r
+ private ICheckBoxList iCheckBoxListModules = null;\r
+\r
private ICheckBoxList iCheckBoxListArch = null;\r
\r
- private JCheckBox jCheckBox4 = null;\r
+ private JComboBox jComboBox = null;\r
+\r
+ private int cnClassName = 0;\r
+ private int cnHdrFile = 1;\r
+ private int cnHelpText = 2;\r
+ private int cnRecInstName = 3;\r
+ private int cnRecInstVer = 4;\r
+ private int cnSupArch = 5;\r
+ private int cnSupMod = 6;\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
@return javax.swing.JTextField \r
**/\r
- private JTextField getJTextFieldAdd() {\r
- if (jTextFieldAdd == null) {\r
- jTextFieldAdd = new JTextField();\r
- jTextFieldAdd.setBounds(new java.awt.Rectangle(122,6,390,20));\r
- jTextFieldAdd.setPreferredSize(new java.awt.Dimension(260,20));\r
- jTextFieldAdd.setEnabled(true);\r
+ private JTextField getJTextFieldClass() {\r
+ if (jTextFieldClass == null) {\r
+ jTextFieldClass = new JTextField();\r
+ jTextFieldClass.setBounds(new java.awt.Rectangle(122,6,390,20));\r
+ jTextFieldClass.setPreferredSize(new java.awt.Dimension(260,20));\r
+ jTextFieldClass.setEnabled(true);\r
}\r
- return jTextFieldAdd;\r
+ return jTextFieldClass;\r
}\r
\r
/**\r
This method initializes jScrollPane \r
\r
@return javax.swing.JScrollPane \r
+\r
+ Used for the Table of Library Classes that are provided by this package\r
+\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.setPreferredSize(new java.awt.Dimension(330,150));\r
+ jScrollPane.setBounds(new java.awt.Rectangle(12,351,400,253));\r
jScrollPane.setViewportView(getJTable());\r
}\r
return jScrollPane;\r
jTable = new JTable(model);\r
jTable.setRowHeight(20);\r
jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
- model.addColumn("LibraryClass");\r
- model.addColumn("IncludeHeader");\r
- model.addColumn("HelpText");\r
- model.addColumn("RecommendedInstance");\r
- model.addColumn("InstanceVersion");\r
- model.addColumn("SupportedArch");\r
- model.addColumn("SupportedModule");\r
+ jTable.setColumnSelectionAllowed(false);\r
+ model.addColumn("Class Name");\r
+ model.addColumn("Header");\r
+ model.addColumn("Help Text");\r
+ model.addColumn("Recommended Instance");\r
+ model.addColumn("Version");\r
+ model.addColumn("Sup. Arch");\r
+ model.addColumn("Mod. Types");\r
\r
Vector<String> vArch = new Vector<String>();\r
vArch.add("IA32");\r
vArch.add("EBC");\r
vArch.add("ARM");\r
vArch.add("PPC");\r
- jTable.getColumnModel().getColumn(5).setCellEditor(new ListEditor(vArch));\r
+ jTable.getColumnModel().getColumn(cnSupArch).setCellEditor(new ListEditor(vArch));\r
\r
Vector<String> vModule = new Vector<String>();\r
vModule.add("BASE");\r
vModule.add("UEFI_DRIVER");\r
vModule.add("UEFI_APPLICATION");\r
vModule.add("USER_DEFINED");\r
- jTable.getColumnModel().getColumn(6).setCellEditor(new ListEditor(vModule));\r
+\r
+ jTable.getColumnModel().getColumn(cnSupMod).setCellEditor(new ListEditor(vModule));\r
\r
jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
public void tableChanged(TableModelEvent arg0) {\r
// TODO Auto-generated method stub\r
int row = arg0.getFirstRow();\r
+ int column = arg0.getColumn();\r
TableModel m = (TableModel)arg0.getSource();\r
if (arg0.getType() == TableModelEvent.UPDATE){\r
- String lib = m.getValueAt(row, 0) + "";\r
- String hdr = m.getValueAt(row, 1) + "";\r
- String hlp = m.getValueAt(row, 2) + "";\r
- String guid = m.getValueAt(row, 3) + "";\r
- String ver = m.getValueAt(row, 4) + "";\r
+ \r
+ String lib = m.getValueAt(row, cnClassName) + "";\r
+ String hdr = m.getValueAt(row, cnHdrFile) + "";\r
+ String hlp = m.getValueAt(row, cnHelpText) + "";\r
+ String name = null;\r
+ if (m.getValueAt(row, cnRecInstName) != null) {\r
+ name = m.getValueAt(row, cnRecInstName).toString();\r
+ } \r
+ String ver = null;\r
+ if (m.getValueAt(row, cnRecInstVer) != null){\r
+ ver = m.getValueAt(row, cnRecInstVer).toString();\r
+ }\r
String arch = null;\r
- if (m.getValueAt(row, 5) != null) {\r
- arch = m.getValueAt(row, 5).toString();\r
+ if (m.getValueAt(row, cnSupArch) != null) {\r
+ arch = m.getValueAt(row, cnSupArch).toString();\r
}\r
String module = null;\r
- if (m.getValueAt(row, 6) != null) {\r
- module = m.getValueAt(row, 6).toString();\r
+ if (m.getValueAt(row, cnSupMod) != null) {\r
+ module = m.getValueAt(row, cnSupMod).toString();\r
}\r
- String[] rowData = {lib, hdr, hlp};\r
+ String[] rowData = {lib, hdr, hlp, name, ver};\r
if (!dataValidation(rowData)) {\r
return;\r
}\r
+ \r
+ String guid = null;\r
+ if (name != null && name.length() > 0) {\r
+ getLibInstances(lib);\r
+ guid = nameToGuid(name);\r
+ if (guid == null){\r
+ JOptionPane.showMessageDialog(frame, "Recommended Instance NOT exists.");\r
+ return;\r
+ }\r
+ }\r
+ \r
+ String[] sa = new String[7];\r
+ sfc.getSpdLibClassDeclaration(sa, row);\r
+ Object cellData = m.getValueAt(row, column);\r
+ if (cellData == null) {\r
+ cellData = "";\r
+ }\r
+ if (column == cnRecInstName) {\r
+ if (guid == null) {\r
+ if (sa[cnRecInstName] == null) {\r
+ return;\r
+ }\r
+ }\r
+ else {\r
+ if (guid.equals(sa[cnRecInstName])) {\r
+ return;\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ if (cellData.equals(sa[column])) {\r
+ return;\r
+ }\r
+ if (cellData.toString().length() == 0 && sa[column] == null) {\r
+ return;\r
+ }\r
+ }\r
docConsole.setSaved(false);\r
sfc.updateSpdLibClass(row, lib, hdr, hlp, guid, ver, arch, module);\r
}\r
if (jButtonAdd == null) {\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.setSize(new java.awt.Dimension(99,20));\r
+ jButtonAdd.setBounds(new java.awt.Rectangle(321,326,99,20));\r
jButtonAdd.addActionListener(this);\r
}\r
return jButtonAdd;\r
if (jButtonRemove == null) {\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.setSize(new java.awt.Dimension(99,20));\r
+ jButtonRemove.setBounds(new java.awt.Rectangle(424,326,99,20));\r
jButtonRemove.addActionListener(this);\r
}\r
return jButtonRemove;\r
\r
@return javax.swing.JButton \r
**/\r
- private JButton getJButtonClearAll() {\r
- if (jButtonClearAll == null) {\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.addActionListener(this);\r
+ private JButton getJButtonRemoveAll() {\r
+ if (jButtonRemoveAll == null) {\r
+ jButtonRemoveAll = new JButton();\r
+ jButtonRemoveAll.setText("Remove All");\r
+ jButtonRemoveAll.setSize(new java.awt.Dimension(99,20));\r
+ jButtonRemoveAll.setBounds(new java.awt.Rectangle(527,326,99,20));\r
+ jButtonRemoveAll.addActionListener(this);\r
}\r
- return jButtonClearAll;\r
- }\r
-\r
- /**\r
- This method initializes jButton \r
- \r
- @return javax.swing.JButton \r
- **/\r
- private JButton getJButtonOk() {\r
- if (jButtonOk == null) {\r
- jButtonOk = new JButton();\r
- jButtonOk.setSize(new java.awt.Dimension(90, 20));\r
- jButtonOk.setText("OK");\r
- jButtonOk.setLocation(new java.awt.Point(290, 305));\r
- jButtonOk.setVisible(false);\r
- jButtonOk.addActionListener(this);\r
- }\r
- return jButtonOk;\r
+ return jButtonRemoveAll;\r
}\r
\r
/**\r
sfc.getSpdLibClassDeclarations(saa);\r
int i = 0;\r
while (i < saa.length) {\r
+ if (saa[i][3] != null && saa[i][3].length() > 0) {\r
+ getLibInstances(saa[i][0]);\r
+ saa[i][3] = guidToName(saa[i][3]);\r
+ }\r
+ \r
model.addRow(saa[i]);\r
i++;\r
}\r
private JScrollPane getJContentPane(){\r
if (topScrollPane == null){\r
topScrollPane = new JScrollPane();\r
- topScrollPane.setSize(new java.awt.Dimension(634,500));\r
+// topScrollPane.setSize(new java.awt.Dimension(634,590));\r
topScrollPane.setViewportView(getJContentPane1());\r
}\r
return topScrollPane;\r
**/\r
private JPanel getJContentPane1() {\r
if (jContentPane == null) {\r
- jLabel6 = new JLabel();\r
- jLabel6.setBounds(new java.awt.Rectangle(16,252,108,16));\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.setText("Supported Arch");\r
- jLabel5.setEnabled(true);\r
- jLabel4 = new JLabel();\r
- jLabel4.setBounds(new java.awt.Rectangle(16,138,196,16));\r
- jLabel4.setEnabled(true);\r
- jLabel4.setText("Recommended Instance Version");\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
- jLabel2 = new JLabel();\r
- jLabel2.setBounds(new java.awt.Rectangle(16,33,82,20));\r
- jLabel2.setText("Help Text");\r
- starLabel = new StarLabel();\r
- starLabel.setBounds(new java.awt.Rectangle(1,33,10,20));\r
- jLabel1 = new JLabel();\r
- jLabel1.setBounds(new java.awt.Rectangle(16,6,82,20));\r
- jLabel1.setText("Library Class");\r
+ // Library Class\r
jStarLabel1 = new StarLabel();\r
jStarLabel1.setLocation(new java.awt.Point(1,7));\r
+ jLabel1ClassName = new JLabel();\r
+ jLabel1ClassName.setBounds(new java.awt.Rectangle(16,6,82,20));\r
+ jLabel1ClassName.setText("Library Class");\r
+\r
+ // Help Text\r
+ starLabel = new StarLabel();\r
+ starLabel.setBounds(new java.awt.Rectangle(1,33,10,20));\r
+ jLabel2HelpText = new JLabel();\r
+ jLabel2HelpText.setBounds(new java.awt.Rectangle(16,33,82,20));\r
+ jLabel2HelpText.setText("Help Text");\r
+\r
+ // Header File\r
jStarLabel2 = new StarLabel();\r
- jStarLabel2.setLocation(new java.awt.Point(-1,74));\r
- jLabel = new JLabel();\r
- jLabel.setBounds(new java.awt.Rectangle(14,74,199,22));\r
- jLabel.setText("Include Header for Specified Class");\r
+ jStarLabel2.setLocation(new java.awt.Point(1,74));\r
+ jLabelHdr = new JLabel();\r
+ jLabelHdr.setBounds(new java.awt.Rectangle(14,74,199,22));\r
+ jLabelHdr.setText("Include Header for Specified Class");\r
+\r
+ jLabel6SupModList = new JLabel();\r
+ jLabel6SupModList.setBounds(new java.awt.Rectangle(16,252,108,16));\r
+ jLabel6SupModList.setText("Supported Module");\r
+ jLabel6SupModList.setEnabled(true);\r
+\r
+ jLabel5SupArchList = new JLabel();\r
+ jLabel5SupArchList.setBounds(new java.awt.Rectangle(15,169,93,16));\r
+ jLabel5SupArchList.setText("Supported Arch");\r
+ jLabel5SupArchList.setEnabled(true);\r
+ jLabel4RecInstVer = new JLabel();\r
+ jLabel4RecInstVer.setBounds(new java.awt.Rectangle(16,138,196,16));\r
+ jLabel4RecInstVer.setEnabled(true);\r
+ jLabel4RecInstVer.setText("Recommended Instance Version");\r
+ jLabel3RecInstName = new JLabel();\r
+ jLabel3RecInstName.setBounds(new java.awt.Rectangle(17,112,195,16));\r
+ jLabel3RecInstName.setEnabled(true);\r
+ jLabel3RecInstName.setText("Recommended Instance Name");\r
\r
jContentPane = new JPanel();\r
- jContentPane.setPreferredSize(new Dimension(480, 400));\r
+ jContentPane.setPreferredSize(new Dimension(680, 600));\r
jContentPane.setLayout(null);\r
- jContentPane.add(jLabel, null);\r
+ jContentPane.add(jLabelHdr, 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(getJTextFieldClass(), null);\r
jContentPane.add(getJComboBoxSelect(), null);\r
jContentPane.add(getJScrollPane(), null);\r
jContentPane.add(getJButtonAdd(), null);\r
jContentPane.add(getJButtonRemove(), null);\r
- jContentPane.add(getJButtonClearAll(), null);\r
- jContentPane.add(getJButtonOk(), null);\r
+ jContentPane.add(getJButtonRemoveAll(), null);\r
\r
- jContentPane.add(getJTextField(), null);\r
+ jContentPane.add(getJTextFieldHdr(), null);\r
jContentPane.add(getJButtonBrowse(), null);\r
- jContentPane.add(jLabel1, null);\r
+ jContentPane.add(jLabel1ClassName, null);\r
jContentPane.add(starLabel, null);\r
- jContentPane.add(jLabel2, null);\r
+ jContentPane.add(jLabel2HelpText, null);\r
jContentPane.add(getJTextFieldHelp(), null);\r
- jContentPane.add(jLabel3, null);\r
- jContentPane.add(getJTextField1(), 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(jLabel3RecInstName, null);\r
+ jContentPane.add(getJTextField1RecInstName(), null);\r
+ jContentPane.add(jLabel4RecInstVer, null);\r
+ jContentPane.add(getJTextField2RecInstVer(), null);\r
+ jContentPane.add(jLabel5SupArchList, null);\r
+ jContentPane.add(jLabel6SupModList, null);\r
+ \r
+ jContentPane.add(getJScrollPaneModules(), null);\r
+ jContentPane.add(getJScrollPane1Arch(), null);\r
+ jContentPane.add(getJComboBox(), null);\r
\r
- jContentPane.add(getJScrollPaneArch(), null);\r
- jContentPane.add(getJCheckBox4(), null);\r
- jContentPane.add(getJCheckBox5(), null);\r
}\r
\r
return jContentPane;\r
*/\r
public void actionPerformed(ActionEvent arg0) {\r
\r
- docConsole.setSaved(false);\r
- if (arg0.getSource() == jButtonOk) {\r
- this.save();\r
- this.dispose();\r
-\r
- }\r
-\r
if (arg0.getSource() == jButtonAdd) {\r
\r
//ToDo: check before add\r
- String[] row = {null, null, null, jTextField1.getText(), jTextField2.getText(), null, null};\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
- if (row[5].length() == 0){\r
- row[5] = null;\r
+ // LAH WAS String[] row = {null, null, null, jComboBox.getSelectedItem()+"", jTextField2RecInstVer.getText(), null, null};\r
+ String[] row = {null, null, null, null, null, null, null};\r
+ row[cnClassName] = jTextFieldClass.getText();\r
+ row[cnHdrFile] = jTextFieldHdr.getText().replace('\\', '/');\r
+ row[cnHelpText] = jTextFieldHelp.getText();\r
+ row[cnRecInstName] = jComboBox.getSelectedItem()+"";\r
+ row[cnRecInstVer] = jTextField2RecInstVer.getText();\r
+ row[cnSupArch] = vectorToString(iCheckBoxListArch.getAllCheckedItemsString());\r
+ if (row[cnSupArch].length() == 0) {\r
+ row[cnSupArch] = null;\r
}\r
- row[6] = vectorToString(iCheckBoxListArch.getAllCheckedItemsString());\r
- if (row[6].length() == 0){\r
- row[6] = null;\r
+ row[cnSupMod] = vectorToString(iCheckBoxListModules.getAllCheckedItemsString());\r
+ if (row[cnSupMod].length() == 0){\r
+ row[cnSupMod] = null;\r
}\r
if (!dataValidation(row)) {\r
return;\r
}\r
+ //\r
+ //convert to GUID before storing recommended lib instance.\r
+ //\r
+ getLibInstances(row[cnClassName]);\r
+ String recommendGuid = nameToGuid(row[cnRecInstName]);\r
+ if (row[cnRecInstName].equals("null")) {\r
+ row[cnRecInstName] = null;\r
+ }\r
+ else{\r
+ if (recommendGuid == null) {\r
+ JOptionPane.showMessageDialog(frame, "Recommended Instance NOT exists.");\r
+ return;\r
+ }\r
+ }\r
+\r
+ sfc.genSpdLibClassDeclarations(row[cnClassName], recommendGuid, row[cnHdrFile], row[cnHelpText], row[cnSupArch], null, null, row[cnRecInstVer], null, row[cnSupMod]);\r
model.addRow(row);\r
- sfc.genSpdLibClassDeclarations(row[0], row[3], row[1], row[2], row[5], null, null, row[4], null, row[6]);\r
- \r
+ jTable.changeSelection(model.getRowCount()-1, 0, false, false);\r
+ docConsole.setSaved(false);\r
}\r
//\r
// remove selected line\r
int rowSelected = selectedRow;\r
if (rowSelected >= 0) {\r
model.removeRow(rowSelected);\r
+ docConsole.setSaved(false);\r
sfc.removeSpdLibClass(rowSelected);\r
}\r
}\r
\r
- if (arg0.getSource() == jButtonClearAll) {\r
+ if (arg0.getSource() == jButtonRemoveAll) {\r
if (model.getRowCount() == 0) {\r
return;\r
}\r
- \r
+ docConsole.setSaved(false);\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
- if (!DataValidation.isKeywordType(row[0])) {\r
+ if (!DataValidation.isKeywordType(row[cnClassName])) {\r
JOptionPane.showMessageDialog(frame, "Library Class is NOT KeyWord Type.");\r
return false;\r
}\r
- if (!DataValidation.isPathAndFilename(row[1])) {\r
+ if (!DataValidation.isPathAndFilename(row[cnHdrFile])) {\r
JOptionPane.showMessageDialog(frame, "Include Header is NOT PathAndFilename Type.");\r
+ return false;\r
+ }\r
+ if (row[cnHelpText].length() == 0) {\r
+ JOptionPane.showMessageDialog(frame, "Help Text Must NOT be empty.");\r
+ return false;\r
}\r
- if (row[2].length() == 0) {\r
- JOptionPane.showMessageDialog(frame, "HelpText could NOT be empty.");\r
+ if (row[cnRecInstVer] != null && row[cnRecInstVer].length() > 0) {\r
+ if (row[cnRecInstName] == null || row[cnRecInstName].length() == 0) {\r
+ JOptionPane.showMessageDialog(frame, "Recommended Instance Version must associate with Instance Name.");\r
+ return false;\r
+ }\r
+ \r
+ if (!DataValidation.isVersionDataType(row[cnRecInstVer])) {\r
+ JOptionPane.showMessageDialog(frame, "Recommended Instance Version is NOT VersionDataType.");\r
+ return false;\r
+ }\r
}\r
return true;\r
}\r
\r
@return javax.swing.JTextField \r
**/\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.setPreferredSize(new java.awt.Dimension(260,20));\r
+ private JTextField getJTextFieldHdr() {\r
+ if (jTextFieldHdr == null) {\r
+ jTextFieldHdr = new JTextField();\r
+ jTextFieldHdr.setBounds(new java.awt.Rectangle(218,75,305,21));\r
+ jTextFieldHdr.setPreferredSize(new java.awt.Dimension(260,20));\r
}\r
- return jTextField;\r
+ return jTextFieldHdr;\r
}\r
\r
/**\r
private JButton getJButtonBrowse() {\r
if (jButtonBrowse == null) {\r
jButtonBrowse = new JButton();\r
- jButtonBrowse.setBounds(new java.awt.Rectangle(528,75,90,20));\r
+ jButtonBrowse.setBounds(new java.awt.Rectangle(527,75,90,20));\r
jButtonBrowse.setText("Browse");\r
- jButtonBrowse.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonBrowse.setPreferredSize(new java.awt.Dimension(99,20));\r
jButtonBrowse.addActionListener(new AbstractAction() {\r
\r
/**\r
\r
headerDest = theFile.getPath();\r
int fileIndex = headerDest.indexOf(System.getProperty("file.separator"), dirPrefix.length());\r
- jTextField.setText(headerDest.substring(fileIndex + 1).replace('\\', '/'));\r
+ jTextFieldHdr.setText(headerDest.substring(fileIndex + 1).replace('\\', '/'));\r
\r
}\r
\r
public void componentResized(ComponentEvent arg0) {\r
int intPreferredWidth = 500;\r
\r
- resizeComponentWidth(this.jTextFieldAdd, this.getWidth(), intPreferredWidth);\r
- resizeComponentWidth(this.jTextFieldHelp, this.getWidth(), intPreferredWidth);\r
- resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth);\r
+ Tools.resizeComponentWidth(this.jTextFieldClass, this.getWidth(), intPreferredWidth);\r
+ Tools.resizeComponentWidth(this.jTextFieldHelp, this.getWidth(), intPreferredWidth);\r
+ Tools.resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth-10);\r
\r
}\r
/**\r
}\r
\r
/**\r
- * This method initializes jTextField1 \r
+ * This method initializes jTextField1RecInstName \r
* \r
* @return javax.swing.JTextField \r
*/\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.setEnabled(true);\r
+ private JTextField getJTextField1RecInstName() {\r
+ if (jTextField1RecInstName == null) {\r
+ jTextField1RecInstName = new JTextField();\r
+ jTextField1RecInstName.setBounds(new java.awt.Rectangle(218,110,291,20));\r
+ jTextField1RecInstName.setEnabled(true);\r
+ jTextField1RecInstName.setVisible(false);\r
}\r
- return jTextField1;\r
+ return jTextField1RecInstName;\r
}\r
\r
/**\r
- * This method initializes jTextField2 \r
+ * This method initializes jTextField2RecInstVer \r
* \r
* @return javax.swing.JTextField \r
*/\r
- private JTextField getJTextField2() {\r
- if (jTextField2 == null) {\r
- jTextField2 = new JTextField();\r
- jTextField2.setBounds(new java.awt.Rectangle(218,135,292,20));\r
- jTextField2.setEnabled(true);\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
+ private JTextField getJTextField2RecInstVer() {\r
+ if (jTextField2RecInstVer == null) {\r
+ jTextField2RecInstVer = new JTextField();\r
+ jTextField2RecInstVer.setBounds(new java.awt.Rectangle(218,135,292,20));\r
+ jTextField2RecInstVer.setEnabled(true);\r
}\r
- return jCheckBox;\r
+ return jTextField2RecInstVer;\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
+ private JScrollPane getJScrollPaneModules() {\r
+ if (jScrollPaneModules == null) {\r
+ jScrollPaneModules = new JScrollPane();\r
+ jScrollPaneModules.setBounds(new java.awt.Rectangle(218,245,293,73));\r
+ jScrollPaneModules.setPreferredSize(new java.awt.Dimension(320, 80));\r
+ jScrollPaneModules.setViewportView(getICheckBoxListSupportedModules());\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.setPreferredSize(new java.awt.Dimension(320, 80));\r
- jScrollPaneArch.setViewportView(getICheckBoxListSupportedArchitectures());\r
- }\r
- return jScrollPaneArch;\r
+ return jScrollPaneModules;\r
}\r
\r
- private ICheckBoxList getICheckBoxListSupportedArchitectures() {\r
- if (iCheckBoxListArch == null) {\r
- iCheckBoxListArch = new ICheckBoxList();\r
+ private ICheckBoxList getICheckBoxListSupportedModules() {\r
+ if (iCheckBoxListModules == null) {\r
+ iCheckBoxListModules = new ICheckBoxList();\r
+ iCheckBoxListModules.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
v.add("UEFI_DRIVER");\r
v.add("UEFI_APPLICATION");\r
v.add("USER_DEFINED");\r
- iCheckBoxListArch.setAllItems(v);\r
+ iCheckBoxListModules.setAllItems(v);\r
}\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
+ return iCheckBoxListModules;\r
}\r
\r
private String vectorToString(Vector<String> v) {\r
}\r
return s.trim();\r
}\r
+ \r
+ private JScrollPane getJScrollPane1Arch() {\r
+ if (jScrollPane1Arch == null) {\r
+ jScrollPane1Arch = new JScrollPane();\r
+ jScrollPane1Arch.setBounds(new java.awt.Rectangle(218,170,293,73));\r
+ jScrollPane1Arch.setPreferredSize(new java.awt.Dimension(320, 80));\r
+ jScrollPane1Arch.setViewportView(getICheckBoxListArch());\r
+ }\r
+ return jScrollPane1Arch;\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 getICheckBoxListArch() {\r
+ if (iCheckBoxListArch == null) {\r
+ iCheckBoxListArch = new ICheckBoxList();\r
+ iCheckBoxListArch.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
+ iCheckBoxListArch.setAllItems(v);\r
}\r
- return jCheckBox4;\r
+ return iCheckBoxListArch;\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 (jTextFieldClass.getText().length() == 0) {\r
+ return;\r
+ }\r
+ jComboBox.removeAllItems();\r
+ getLibInstances(jTextFieldClass.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
+ WorkspaceProfile.initInfo("Tools" + File.separator + "Conf" + File.separator + "FrameworkDatabase.db", System.getenv("WORKSPACE"));\r
+ \r
+ Set<PackageIdentification> spi = WorkspaceProfile.getPackageList();\r
+ Iterator ispi = spi.iterator();\r
+ \r
+ while (ispi.hasNext()) {\r
+ PackageIdentification pi = (PackageIdentification) ispi.next();\r
+\r
+ Set<ModuleIdentification> smi = WorkspaceProfile.getModules(pi);\r
+ Iterator ismi = smi.iterator();\r
+ while (ismi.hasNext()) {\r
+ ModuleIdentification mi = (ModuleIdentification) ismi.next();\r
+ Map<String, XmlObject> m = WorkspaceProfile.getNativeMsa(mi);\r
+ SurfaceAreaQuery.setDoc(m);\r
+ Vector<String> classProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED", mi);\r
+ for (int i = 0; i < classProduced.size(); ++i) {\r
+ if (classProduced.get(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
+ private String nameToGuid(String name) {\r
+ String s = null;\r
+ if (!libNameGuidMap.containsKey(name)) {\r
+ return s;\r
+ }\r
+ \r
+ s = libNameGuidMap.get(name);\r
+ return s;\r
+ }\r
+ \r
+ private String guidToName(String guid){\r
+ String s = "";\r
+ if (!libNameGuidMap.containsValue(guid)) {\r
+ return s;\r
+ }\r
+ Set<String> key = libNameGuidMap.keySet();\r
+ Iterator<String> is = key.iterator();\r
+ while(is.hasNext()) {\r
+ s = is.next();\r
+ if (libNameGuidMap.get(s).equals(guid)) {\r
+ break;\r
+ }\r
+ }\r
+ return s;\r
+ }\r
+\r
}\r
\r
\r