X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=Tools%2FSource%2FFrameworkWizard%2Fsrc%2Forg%2Ftianocore%2Fframeworkwizard%2Fpackaging%2Fui%2FSpdLibClassDecls.java;h=6972bfd7428f0b82a67d19d0d9276bb015d559aa;hp=61d69b191690c452b2cb0a7328d987ddba3c0a0e;hb=3658f95e1a73626ff1cdb9cde3676ebc1edc3523;hpb=d6d24759a0c47633e30acbda45a0d899764e4610 diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdLibClassDecls.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdLibClassDecls.java index 61d69b1916..6972bfd742 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdLibClassDecls.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdLibClassDecls.java @@ -16,13 +16,15 @@ import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ComponentEvent; import java.io.File; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Set; import java.util.Vector; import javax.swing.AbstractAction; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.JPanel; -import javax.swing.JRadioButton; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.JComboBox; @@ -39,17 +41,18 @@ import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; - import org.tianocore.PackageSurfaceAreaDocument; import org.tianocore.frameworkwizard.common.DataValidation; +import org.tianocore.frameworkwizard.common.GlobalData; import org.tianocore.frameworkwizard.common.Tools; import org.tianocore.frameworkwizard.common.Identifications.OpeningPackageType; import org.tianocore.frameworkwizard.common.ui.IInternalFrame; import org.tianocore.frameworkwizard.common.ui.StarLabel; import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList; import org.tianocore.frameworkwizard.platform.ui.ListEditor; +import org.tianocore.frameworkwizard.platform.ui.global.SurfaceAreaQuery; +import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification; -import javax.swing.JCheckBox; /** GUI for create library definition elements of spd file. @@ -70,11 +73,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen private JPanel jContentPane = null; - private JRadioButton jRadioButtonAdd = null; - - private JRadioButton jRadioButtonSelect = null; - - private JTextField jTextFieldAdd = null; + private JTextField jTextFieldClass = null; private JComboBox jComboBoxSelect = null; @@ -84,13 +83,11 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen private JButton jButtonRemove = null; - private JButton jButtonClearAll = null; + private JButton jButtonRemoveAll = null; - private JButton jButtonOk = null; + private JLabel jLabelHdr = null; - private JLabel jLabel = null; - - private JTextField jTextField = null; + private JTextField jTextFieldHdr = null; private JButton jButtonBrowse = null; @@ -102,7 +99,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen private OpeningPackageType docConsole = null; - private JLabel jLabel1 = null; + private JLabel jLabel1ClassName = null; private JScrollPane topScrollPane = null; // @jve:decl-index=0:visual-constraint="10,53" @@ -110,37 +107,42 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen private StarLabel starLabel = null; - private JLabel jLabel2 = null; + private JLabel jLabel2HelpText = null; private JTextField jTextFieldHelp = null; - private JLabel jLabel3 = null; - - private JTextField jTextField1 = null; + private JLabel jLabel3RecInstName = null; - private JLabel jLabel4 = null; + private JTextField jTextField1RecInstName = null; - private JTextField jTextField2 = null; + private JLabel jLabel4RecInstVer = null; - private JLabel jLabel5 = null; + private JTextField jTextField2RecInstVer = null; - private JCheckBox jCheckBox = null; + private JLabel jLabel5SupArchList = null; - private JCheckBox jCheckBox1 = null; - - private JCheckBox jCheckBox2 = null; - - private JCheckBox jCheckBox3 = null; - - private JLabel jLabel6 = null; + private JLabel jLabel6SupModList = null; - private JScrollPane jScrollPaneArch = null; + private JScrollPane jScrollPaneModules = null; + private JScrollPane jScrollPane1Arch = null; + + private ICheckBoxList iCheckBoxListModules = null; + private ICheckBoxList iCheckBoxListArch = null; - private JCheckBox jCheckBox4 = null; + private JComboBox jComboBox = null; + + private int cnClassName = 0; + private int cnHdrFile = 1; + private int cnHelpText = 2; + private int cnRecInstName = 3; + private int cnRecInstVer = 4; + private int cnSupArch = 5; + private int cnSupMod = 6; + + HashMap libNameGuidMap = new HashMap(); - private JCheckBox jCheckBox5 = null; /** This method initializes this @@ -152,53 +154,19 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen } - /** - This method initializes jRadioButtonAdd - - @return javax.swing.JRadioButton - **/ - private JRadioButton getJRadioButtonAdd() { - if (jRadioButtonAdd == null) { - jRadioButtonAdd = new JRadioButton(); - jRadioButtonAdd.setBounds(new java.awt.Rectangle(9,63,197,20)); - jRadioButtonAdd.setText("Library Class Name"); - jRadioButtonAdd.addActionListener(this); - jRadioButtonAdd.setSelected(true); - jRadioButtonAdd.setVisible(false); - } - return jRadioButtonAdd; - } - - /** - This method initializes jRadioButtonSelect - - @return javax.swing.JRadioButton - **/ - private JRadioButton getJRadioButtonSelect() { - if (jRadioButtonSelect == null) { - jRadioButtonSelect = new JRadioButton(); - jRadioButtonSelect.setBounds(new java.awt.Rectangle(9,10,198,20)); - jRadioButtonSelect.setText("Select Existing Library Class"); - jRadioButtonSelect.addActionListener(this); - jRadioButtonSelect.setSelected(true); - jRadioButtonSelect.setVisible(false); - } - return jRadioButtonSelect; - } - /** This method initializes jTextFieldAdd @return javax.swing.JTextField **/ - private JTextField getJTextFieldAdd() { - if (jTextFieldAdd == null) { - jTextFieldAdd = new JTextField(); - jTextFieldAdd.setBounds(new java.awt.Rectangle(122,6,390,20)); - jTextFieldAdd.setPreferredSize(new java.awt.Dimension(260,20)); - jTextFieldAdd.setEnabled(true); + private JTextField getJTextFieldClass() { + if (jTextFieldClass == null) { + jTextFieldClass = new JTextField(); + jTextFieldClass.setBounds(new java.awt.Rectangle(122,6,390,20)); + jTextFieldClass.setPreferredSize(new java.awt.Dimension(260,20)); + jTextFieldClass.setEnabled(true); } - return jTextFieldAdd; + return jTextFieldClass; } /** @@ -221,12 +189,14 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen This method initializes jScrollPane @return javax.swing.JScrollPane + + Used for the Table of Library Classes that are provided by this package + **/ private JScrollPane getJScrollPane() { if (jScrollPane == null) { jScrollPane = new JScrollPane(); - jScrollPane.setBounds(new java.awt.Rectangle(12,351,608,139)); - jScrollPane.setPreferredSize(new java.awt.Dimension(330,150)); + jScrollPane.setBounds(new java.awt.Rectangle(12,351,400,253)); jScrollPane.setViewportView(getJTable()); } return jScrollPane; @@ -243,13 +213,14 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen jTable = new JTable(model); jTable.setRowHeight(20); jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF); - model.addColumn("LibraryClass"); - model.addColumn("IncludeHeader"); - model.addColumn("HelpText"); - model.addColumn("RecommendedInstance"); - model.addColumn("InstanceVersion"); - model.addColumn("SupportedArch"); - model.addColumn("SupportedModule"); + jTable.setColumnSelectionAllowed(false); + model.addColumn("Class Name"); + model.addColumn("Header"); + model.addColumn("Help Text"); + model.addColumn("Recommended Instance"); + model.addColumn("Version"); + model.addColumn("Supported Architectures"); + model.addColumn("Supported Module Types"); Vector vArch = new Vector(); vArch.add("IA32"); @@ -258,7 +229,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen vArch.add("EBC"); vArch.add("ARM"); vArch.add("PPC"); - jTable.getColumnModel().getColumn(5).setCellEditor(new ListEditor(vArch)); + jTable.getColumnModel().getColumn(cnSupArch).setCellEditor(new ListEditor(vArch)); Vector vModule = new Vector(); vModule.add("BASE"); @@ -273,7 +244,8 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen vModule.add("UEFI_DRIVER"); vModule.add("UEFI_APPLICATION"); vModule.add("USER_DEFINED"); - jTable.getColumnModel().getColumn(6).setCellEditor(new ListEditor(vModule)); + + jTable.getColumnModel().getColumn(cnSupMod).setCellEditor(new ListEditor(vModule)); jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ @@ -301,25 +273,70 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen public void tableChanged(TableModelEvent arg0) { // TODO Auto-generated method stub int row = arg0.getFirstRow(); + int column = arg0.getColumn(); TableModel m = (TableModel)arg0.getSource(); if (arg0.getType() == TableModelEvent.UPDATE){ - String lib = m.getValueAt(row, 0) + ""; - String hdr = m.getValueAt(row, 1) + ""; - String hlp = m.getValueAt(row, 2) + ""; - String guid = m.getValueAt(row, 3) + ""; - String ver = m.getValueAt(row, 4) + ""; + + String lib = m.getValueAt(row, cnClassName) + ""; + String hdr = m.getValueAt(row, cnHdrFile) + ""; + String hlp = m.getValueAt(row, cnHelpText) + ""; + String name = null; + if (m.getValueAt(row, cnRecInstName) != null) { + name = m.getValueAt(row, cnRecInstName).toString(); + } + String ver = null; + if (m.getValueAt(row, cnRecInstVer) != null){ + ver = m.getValueAt(row, cnRecInstVer).toString(); + } String arch = null; - if (m.getValueAt(row, 5) != null) { - arch = m.getValueAt(row, 5).toString(); + if (m.getValueAt(row, cnSupArch) != null) { + arch = m.getValueAt(row, cnSupArch).toString(); } String module = null; - if (m.getValueAt(row, 6) != null) { - module = m.getValueAt(row, 6).toString(); + if (m.getValueAt(row, cnSupMod) != null) { + module = m.getValueAt(row, cnSupMod).toString(); } - String[] rowData = {lib, hdr, hlp}; + String[] rowData = {lib, hdr, hlp, name, ver}; if (!dataValidation(rowData)) { return; } + + String guid = null; + if (name != null && name.length() > 0) { + getLibInstances(lib); + guid = nameToGuid(name); + if (guid == null){ + JOptionPane.showMessageDialog(frame, "Recommended Instance does not exist."); + return; + } + } + + String[] sa = new String[7]; + sfc.getSpdLibClassDeclaration(sa, row); + Object cellData = m.getValueAt(row, column); + if (cellData == null) { + cellData = ""; + } + if (column == cnRecInstName) { + if (guid == null) { + if (sa[cnRecInstName] == null) { + return; + } + } + else { + if (guid.equals(sa[cnRecInstName])) { + return; + } + } + } + else { + if (cellData.equals(sa[column])) { + return; + } + if (cellData.toString().length() == 0 && sa[column] == null) { + return; + } + } docConsole.setSaved(false); sfc.updateSpdLibClass(row, lib, hdr, hlp, guid, ver, arch, module); } @@ -334,8 +351,8 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen if (jButtonAdd == null) { jButtonAdd = new JButton(); jButtonAdd.setText("Add"); - jButtonAdd.setSize(new java.awt.Dimension(80,20)); - jButtonAdd.setLocation(new java.awt.Point(365,315)); + jButtonAdd.setSize(new java.awt.Dimension(99,20)); + jButtonAdd.setBounds(new java.awt.Rectangle(321,326,99,20)); jButtonAdd.addActionListener(this); } return jButtonAdd; @@ -350,8 +367,8 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen if (jButtonRemove == null) { jButtonRemove = new JButton(); jButtonRemove.setText("Remove"); - jButtonRemove.setSize(new java.awt.Dimension(80,20)); - jButtonRemove.setLocation(new java.awt.Point(449,315)); + jButtonRemove.setSize(new java.awt.Dimension(99,20)); + jButtonRemove.setBounds(new java.awt.Rectangle(424,326,99,20)); jButtonRemove.addActionListener(this); } return jButtonRemove; @@ -362,32 +379,15 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen @return javax.swing.JButton **/ - private JButton getJButtonClearAll() { - if (jButtonClearAll == null) { - jButtonClearAll = new JButton(); - jButtonClearAll.setText("Clear All"); - jButtonClearAll.setSize(new java.awt.Dimension(86,20)); - jButtonClearAll.setLocation(new java.awt.Point(536,315)); - jButtonClearAll.addActionListener(this); + private JButton getJButtonRemoveAll() { + if (jButtonRemoveAll == null) { + jButtonRemoveAll = new JButton(); + jButtonRemoveAll.setText("Remove All"); + jButtonRemoveAll.setSize(new java.awt.Dimension(99,20)); + jButtonRemoveAll.setBounds(new java.awt.Rectangle(527,326,99,20)); + jButtonRemoveAll.addActionListener(this); } - return jButtonClearAll; - } - - /** - This method initializes jButton - - @return javax.swing.JButton - **/ - private JButton getJButtonOk() { - if (jButtonOk == null) { - jButtonOk = new JButton(); - jButtonOk.setSize(new java.awt.Dimension(90, 20)); - jButtonOk.setText("OK"); - jButtonOk.setLocation(new java.awt.Point(290, 305)); - jButtonOk.setVisible(false); - jButtonOk.addActionListener(this); - } - return jButtonOk; + return jButtonRemoveAll; } /** @@ -442,6 +442,11 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen sfc.getSpdLibClassDeclarations(saa); int i = 0; while (i < saa.length) { + if (saa[i][3] != null && saa[i][3].length() > 0) { + getLibInstances(saa[i][0]); + saa[i][3] = guidToName(saa[i][3]); + } + model.addRow(saa[i]); i++; } @@ -449,7 +454,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen private JScrollPane getJContentPane(){ if (topScrollPane == null){ topScrollPane = new JScrollPane(); - topScrollPane.setSize(new java.awt.Dimension(634,500)); +// topScrollPane.setSize(new java.awt.Dimension(634,590)); topScrollPane.setViewportView(getJContentPane1()); } return topScrollPane; @@ -461,74 +466,76 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen **/ private JPanel getJContentPane1() { if (jContentPane == null) { - jLabel6 = new JLabel(); - jLabel6.setBounds(new java.awt.Rectangle(16,252,108,16)); - jLabel6.setText("Supported Module"); - jLabel6.setEnabled(true); - jLabel5 = new JLabel(); - jLabel5.setBounds(new java.awt.Rectangle(16,215,93,16)); - jLabel5.setText("Supported Arch"); - jLabel5.setEnabled(true); - jLabel4 = new JLabel(); - jLabel4.setBounds(new java.awt.Rectangle(16,138,196,16)); - jLabel4.setEnabled(true); - jLabel4.setText("Recommended Instance Version"); - jLabel3 = new JLabel(); - jLabel3.setBounds(new java.awt.Rectangle(17,112,195,16)); - jLabel3.setEnabled(true); - jLabel3.setText("Recommended Instance GUID"); - jLabel2 = new JLabel(); - jLabel2.setBounds(new java.awt.Rectangle(16,33,82,20)); - jLabel2.setText("Help Text"); - starLabel = new StarLabel(); - starLabel.setBounds(new java.awt.Rectangle(1,33,10,20)); - jLabel1 = new JLabel(); - jLabel1.setBounds(new java.awt.Rectangle(16,6,82,20)); - jLabel1.setText("Library Class"); + // Library Class jStarLabel1 = new StarLabel(); jStarLabel1.setLocation(new java.awt.Point(1,7)); + jLabel1ClassName = new JLabel(); + jLabel1ClassName.setBounds(new java.awt.Rectangle(16,6,82,20)); + jLabel1ClassName.setText("Library Class"); + + // Help Text + starLabel = new StarLabel(); + starLabel.setBounds(new java.awt.Rectangle(1,33,10,20)); + jLabel2HelpText = new JLabel(); + jLabel2HelpText.setBounds(new java.awt.Rectangle(16,33,82,20)); + jLabel2HelpText.setText("Help Text"); + + // Header File jStarLabel2 = new StarLabel(); - jStarLabel2.setLocation(new java.awt.Point(-1,74)); - jLabel = new JLabel(); - jLabel.setBounds(new java.awt.Rectangle(14,74,199,22)); - jLabel.setText("Include Header for Specified Class"); + jStarLabel2.setLocation(new java.awt.Point(1,74)); + jLabelHdr = new JLabel(); + jLabelHdr.setBounds(new java.awt.Rectangle(14,74,199,22)); + jLabelHdr.setText("Include Header for Specified Class"); + + jLabel6SupModList = new JLabel(); + jLabel6SupModList.setBounds(new java.awt.Rectangle(16,252,108,16)); + jLabel6SupModList.setText("Supported Module"); + jLabel6SupModList.setEnabled(true); + + jLabel5SupArchList = new JLabel(); + jLabel5SupArchList.setBounds(new java.awt.Rectangle(15,169,93,16)); + jLabel5SupArchList.setText("Supported Arch"); + jLabel5SupArchList.setEnabled(true); + jLabel4RecInstVer = new JLabel(); + jLabel4RecInstVer.setBounds(new java.awt.Rectangle(16,138,196,16)); + jLabel4RecInstVer.setEnabled(true); + jLabel4RecInstVer.setText("Recommended Instance Version"); + jLabel3RecInstName = new JLabel(); + jLabel3RecInstName.setBounds(new java.awt.Rectangle(17,112,195,16)); + jLabel3RecInstName.setEnabled(true); + jLabel3RecInstName.setText("Recommended Instance Name"); jContentPane = new JPanel(); - jContentPane.setPreferredSize(new Dimension(480, 400)); + jContentPane.setPreferredSize(new Dimension(680, 600)); jContentPane.setLayout(null); - jContentPane.add(jLabel, null); + jContentPane.add(jLabelHdr, null); jContentPane.add(jStarLabel1, null); jContentPane.add(jStarLabel2, null); - jContentPane.add(getJRadioButtonAdd(), null); - jContentPane.add(getJRadioButtonSelect(), null); - jContentPane.add(getJTextFieldAdd(), null); + jContentPane.add(getJTextFieldClass(), null); jContentPane.add(getJComboBoxSelect(), null); jContentPane.add(getJScrollPane(), null); jContentPane.add(getJButtonAdd(), null); jContentPane.add(getJButtonRemove(), null); - jContentPane.add(getJButtonClearAll(), null); - jContentPane.add(getJButtonOk(), null); + jContentPane.add(getJButtonRemoveAll(), null); - jContentPane.add(getJTextField(), null); + jContentPane.add(getJTextFieldHdr(), null); jContentPane.add(getJButtonBrowse(), null); - jContentPane.add(jLabel1, null); + jContentPane.add(jLabel1ClassName, null); jContentPane.add(starLabel, null); - jContentPane.add(jLabel2, null); + jContentPane.add(jLabel2HelpText, null); jContentPane.add(getJTextFieldHelp(), null); - jContentPane.add(jLabel3, null); - jContentPane.add(getJTextField1(), null); - jContentPane.add(jLabel4, null); - jContentPane.add(getJTextField2(), null); - jContentPane.add(jLabel5, null); - jContentPane.add(getJCheckBox(), null); - jContentPane.add(getJCheckBox1(), null); - jContentPane.add(getJCheckBox2(), null); - jContentPane.add(getJCheckBox3(), null); - jContentPane.add(jLabel6, null); + + jContentPane.add(jLabel3RecInstName, null); + jContentPane.add(getJTextField1RecInstName(), null); + jContentPane.add(jLabel4RecInstVer, null); + jContentPane.add(getJTextField2RecInstVer(), null); + jContentPane.add(jLabel5SupArchList, null); + jContentPane.add(jLabel6SupModList, null); + + jContentPane.add(getJScrollPaneModules(), null); + jContentPane.add(getJScrollPane1Arch(), null); + jContentPane.add(getJComboBox(), null); - jContentPane.add(getJScrollPaneArch(), null); - jContentPane.add(getJCheckBox4(), null); - jContentPane.add(getJCheckBox5(), null); } return jContentPane; @@ -584,34 +591,46 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen */ public void actionPerformed(ActionEvent arg0) { - docConsole.setSaved(false); - if (arg0.getSource() == jButtonOk) { - this.save(); - this.dispose(); - - } - if (arg0.getSource() == jButtonAdd) { //ToDo: check before add - String[] row = {null, null, null, jTextField1.getText(), jTextField2.getText(), null, null}; - row[0] = jTextFieldAdd.getText(); - row[1] = jTextField.getText().replace('\\', '/'); - row[2] = jTextFieldHelp.getText(); - row[5] = booleanToString(jCheckBox.isSelected(), jCheckBox1.isSelected(), jCheckBox2.isSelected(), jCheckBox3.isSelected(), jCheckBox4.isSelected(), jCheckBox5.isSelected()); - if (row[5].length() == 0){ - row[5] = null; + // LAH WAS String[] row = {null, null, null, jComboBox.getSelectedItem()+"", jTextField2RecInstVer.getText(), null, null}; + String[] row = {null, null, null, null, null, null, null}; + row[cnClassName] = jTextFieldClass.getText(); + row[cnHdrFile] = jTextFieldHdr.getText().replace('\\', '/'); + row[cnHelpText] = jTextFieldHelp.getText(); + row[cnRecInstName] = jComboBox.getSelectedItem()+""; + row[cnRecInstVer] = jTextField2RecInstVer.getText(); + row[cnSupArch] = vectorToString(iCheckBoxListArch.getAllCheckedItemsString()); + if (row[cnSupArch].length() == 0) { + row[cnSupArch] = null; } - row[6] = vectorToString(iCheckBoxListArch.getAllCheckedItemsString()); - if (row[6].length() == 0){ - row[6] = null; + row[cnSupMod] = vectorToString(iCheckBoxListModules.getAllCheckedItemsString()); + if (row[cnSupMod].length() == 0){ + row[cnSupMod] = null; } if (!dataValidation(row)) { return; } + // + //convert to GUID before storing recommended lib instance. + // + getLibInstances(row[cnClassName]); + String recommendGuid = nameToGuid(row[cnRecInstName]); + if (row[cnRecInstName].equals("null")) { + row[cnRecInstName] = null; + } + else{ + if (recommendGuid == null) { + JOptionPane.showMessageDialog(frame, "Recommended Instance does not exist."); + return; + } + } + + sfc.genSpdLibClassDeclarations(row[cnClassName], recommendGuid, row[cnHdrFile], row[cnHelpText], row[cnSupArch], null, null, row[cnRecInstVer], null, row[cnSupMod]); model.addRow(row); - sfc.genSpdLibClassDeclarations(row[0], row[3], row[1], row[2], row[5], null, null, row[4], null, row[6]); - + jTable.changeSelection(model.getRowCount()-1, 0, false, false); + docConsole.setSaved(false); } // // remove selected line @@ -623,56 +642,44 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen int rowSelected = selectedRow; if (rowSelected >= 0) { model.removeRow(rowSelected); + docConsole.setSaved(false); sfc.removeSpdLibClass(rowSelected); } } - if (arg0.getSource() == jButtonClearAll) { + if (arg0.getSource() == jButtonRemoveAll) { if (model.getRowCount() == 0) { return; } - + docConsole.setSaved(false); model.setRowCount(0); sfc.removeSpdLibClass(); } - - if (arg0.getSource() == jRadioButtonAdd) { - if (jRadioButtonAdd.isSelected()) { - jRadioButtonSelect.setSelected(false); - jTextFieldAdd.setEnabled(true); - jComboBoxSelect.setEnabled(false); - } - if (!jRadioButtonSelect.isSelected() && !jRadioButtonAdd.isSelected()) { - jRadioButtonAdd.setSelected(true); - jTextFieldAdd.setEnabled(true); - jComboBoxSelect.setEnabled(false); - } - } - - if (arg0.getSource() == jRadioButtonSelect) { - if (jRadioButtonSelect.isSelected()) { - jRadioButtonAdd.setSelected(false); - jTextFieldAdd.setEnabled(false); - jComboBoxSelect.setEnabled(true); - } - if (!jRadioButtonSelect.isSelected() && !jRadioButtonAdd.isSelected()) { - jRadioButtonSelect.setSelected(true); - jTextFieldAdd.setEnabled(false); - jComboBoxSelect.setEnabled(true); - } - } } private boolean dataValidation(String[] row) { - if (!DataValidation.isKeywordType(row[0])) { - JOptionPane.showMessageDialog(frame, "Library Class is NOT KeyWord Type."); + if (!DataValidation.isKeywordType(row[cnClassName])) { + JOptionPane.showMessageDialog(frame, "Library Class name entered does not match KeyWord datatype."); + return false; + } + if (!DataValidation.isPathAndFilename(row[cnHdrFile])) { + JOptionPane.showMessageDialog(frame, "Include Header does not match the PathAndFilename datatype."); return false; } - if (!DataValidation.isPathAndFilename(row[1])) { - JOptionPane.showMessageDialog(frame, "Include Header is NOT PathAndFilename Type."); + if (row[cnHelpText].length() == 0) { + JOptionPane.showMessageDialog(frame, "Help Text must be entered!"); + return false; } - if (row[2].length() == 0) { - JOptionPane.showMessageDialog(frame, "HelpText could NOT be empty."); + if (row[cnRecInstVer] != null && row[cnRecInstVer].length() > 0) { + if (row[cnRecInstName] == null || row[cnRecInstName].length() == 0) { + JOptionPane.showMessageDialog(frame, "Recommended Instance Version must associate with the Instance Name."); + return false; + } + + if (!DataValidation.isVersionDataType(row[cnRecInstVer])) { + JOptionPane.showMessageDialog(frame, "Recommended Instance Version does not match Version datatype."); + return false; + } } return true; } @@ -688,13 +695,13 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen @return javax.swing.JTextField **/ - private JTextField getJTextField() { - if (jTextField == null) { - jTextField = new JTextField(); - jTextField.setBounds(new java.awt.Rectangle(221,75,290,21)); - jTextField.setPreferredSize(new java.awt.Dimension(260,20)); + private JTextField getJTextFieldHdr() { + if (jTextFieldHdr == null) { + jTextFieldHdr = new JTextField(); + jTextFieldHdr.setBounds(new java.awt.Rectangle(218,75,305,21)); + jTextFieldHdr.setPreferredSize(new java.awt.Dimension(260,20)); } - return jTextField; + return jTextFieldHdr; } /** @@ -705,9 +712,9 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen private JButton getJButtonBrowse() { if (jButtonBrowse == null) { jButtonBrowse = new JButton(); - jButtonBrowse.setBounds(new java.awt.Rectangle(528,75,90,20)); + jButtonBrowse.setBounds(new java.awt.Rectangle(527,75,90,20)); jButtonBrowse.setText("Browse"); - jButtonBrowse.setPreferredSize(new java.awt.Dimension(80,20)); + jButtonBrowse.setPreferredSize(new java.awt.Dimension(99,20)); jButtonBrowse.addActionListener(new AbstractAction() { /** @@ -732,7 +739,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen theFile = chooser.getSelectedFile(); String file = theFile.getPath(); if (!file.startsWith(dirPrefix)) { - JOptionPane.showMessageDialog(frame, "You can only select files in current package!"); + JOptionPane.showMessageDialog(frame, "You can only select files in current package directory structure!"); return; } @@ -744,7 +751,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen headerDest = theFile.getPath(); int fileIndex = headerDest.indexOf(System.getProperty("file.separator"), dirPrefix.length()); - jTextField.setText(headerDest.substring(fileIndex + 1).replace('\\', '/')); + jTextFieldHdr.setText(headerDest.substring(fileIndex + 1).replace('\\', '/')); } @@ -756,9 +763,9 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen public void componentResized(ComponentEvent arg0) { int intPreferredWidth = 500; - resizeComponentWidth(this.jTextFieldAdd, this.getWidth(), intPreferredWidth); - resizeComponentWidth(this.jTextFieldHelp, this.getWidth(), intPreferredWidth); - resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth); + Tools.resizeComponentWidth(this.jTextFieldClass, this.getWidth(), intPreferredWidth); + Tools.resizeComponentWidth(this.jTextFieldHelp, this.getWidth(), intPreferredWidth); + Tools.resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth-10); } /** @@ -776,107 +783,48 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen } /** - * This method initializes jTextField1 + * This method initializes jTextField1RecInstName * * @return javax.swing.JTextField */ - private JTextField getJTextField1() { - if (jTextField1 == null) { - jTextField1 = new JTextField(); - jTextField1.setBounds(new java.awt.Rectangle(220,110,291,20)); - jTextField1.setEnabled(true); + private JTextField getJTextField1RecInstName() { + if (jTextField1RecInstName == null) { + jTextField1RecInstName = new JTextField(); + jTextField1RecInstName.setBounds(new java.awt.Rectangle(218,110,291,20)); + jTextField1RecInstName.setEnabled(true); + jTextField1RecInstName.setVisible(false); } - return jTextField1; + return jTextField1RecInstName; } /** - * This method initializes jTextField2 + * This method initializes jTextField2RecInstVer * * @return javax.swing.JTextField */ - private JTextField getJTextField2() { - if (jTextField2 == null) { - jTextField2 = new JTextField(); - jTextField2.setBounds(new java.awt.Rectangle(218,135,292,20)); - jTextField2.setEnabled(true); - } - return jTextField2; - } - - /** - * This method initializes jCheckBox - * - * @return javax.swing.JCheckBox - */ - private JCheckBox getJCheckBox() { - if (jCheckBox == null) { - jCheckBox = new JCheckBox(); - jCheckBox.setBounds(new java.awt.Rectangle(123,213,57,21)); - jCheckBox.setText("IA32"); - jCheckBox.setPreferredSize(new java.awt.Dimension(21,20)); + private JTextField getJTextField2RecInstVer() { + if (jTextField2RecInstVer == null) { + jTextField2RecInstVer = new JTextField(); + jTextField2RecInstVer.setBounds(new java.awt.Rectangle(218,135,292,20)); + jTextField2RecInstVer.setEnabled(true); } - return jCheckBox; + return jTextField2RecInstVer; } - /** - * This method initializes jCheckBox1 - * - * @return javax.swing.JCheckBox - */ - private JCheckBox getJCheckBox1() { - if (jCheckBox1 == null) { - jCheckBox1 = new JCheckBox(); - jCheckBox1.setBounds(new java.awt.Rectangle(182,213,49,20)); - jCheckBox1.setText("X64"); - jCheckBox1.setPreferredSize(new java.awt.Dimension(21,20)); + private JScrollPane getJScrollPaneModules() { + if (jScrollPaneModules == null) { + jScrollPaneModules = new JScrollPane(); + jScrollPaneModules.setBounds(new java.awt.Rectangle(218,245,293,73)); + jScrollPaneModules.setPreferredSize(new java.awt.Dimension(320, 80)); + jScrollPaneModules.setViewportView(getICheckBoxListSupportedModules()); } - return jCheckBox1; - } - - /** - * This method initializes jCheckBox2 - * - * @return javax.swing.JCheckBox - */ - private JCheckBox getJCheckBox2() { - if (jCheckBox2 == null) { - jCheckBox2 = new JCheckBox(); - jCheckBox2.setText("IPF"); - jCheckBox2.setSize(new java.awt.Dimension(50,20)); - jCheckBox2.setLocation(new java.awt.Point(237,213)); - jCheckBox2.setPreferredSize(new java.awt.Dimension(21,20)); - } - return jCheckBox2; - } - - /** - * This method initializes jCheckBox3 - * - * @return javax.swing.JCheckBox - */ - private JCheckBox getJCheckBox3() { - if (jCheckBox3 == null) { - jCheckBox3 = new JCheckBox(); - jCheckBox3.setBounds(new java.awt.Rectangle(286,213,50,20)); - jCheckBox3.setText("EBC"); - jCheckBox3.setPreferredSize(new java.awt.Dimension(21,20)); - } - return jCheckBox3; - } - - private JScrollPane getJScrollPaneArch() { - if (jScrollPaneArch == null) { - jScrollPaneArch = new JScrollPane(); - jScrollPaneArch.setBounds(new java.awt.Rectangle(130,252,230,88)); - jScrollPaneArch.setPreferredSize(new java.awt.Dimension(320, 80)); - jScrollPaneArch.setViewportView(getICheckBoxListSupportedArchitectures()); - } - return jScrollPaneArch; + return jScrollPaneModules; } - private ICheckBoxList getICheckBoxListSupportedArchitectures() { - if (iCheckBoxListArch == null) { - iCheckBoxListArch = new ICheckBoxList(); + private ICheckBoxList getICheckBoxListSupportedModules() { + if (iCheckBoxListModules == null) { + iCheckBoxListModules = new ICheckBoxList(); + iCheckBoxListModules.setBounds(new java.awt.Rectangle(218,246,292,73)); Vector v = new Vector(); v.add("BASE"); v.add("SEC"); @@ -890,32 +838,9 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen v.add("UEFI_DRIVER"); v.add("UEFI_APPLICATION"); v.add("USER_DEFINED"); - iCheckBoxListArch.setAllItems(v); + iCheckBoxListModules.setAllItems(v); } - return iCheckBoxListArch; - } - - private String booleanToString(boolean b1, boolean b2, boolean b3, boolean b4, boolean b5, boolean b6){ - String s = " "; - if (b1){ - s += "IA32 "; - } - if (b2){ - s += "X64 "; - } - if (b3){ - s += "IPF "; - } - if (b4){ - s += "EBC "; - } - if (b5){ - s += "ARM "; - } - if (b6){ - s += "PPC "; - } - return s.trim(); + return iCheckBoxListModules; } private String vectorToString(Vector v) { @@ -926,39 +851,115 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen } return s.trim(); } + + private JScrollPane getJScrollPane1Arch() { + if (jScrollPane1Arch == null) { + jScrollPane1Arch = new JScrollPane(); + jScrollPane1Arch.setBounds(new java.awt.Rectangle(218,170,293,73)); + jScrollPane1Arch.setPreferredSize(new java.awt.Dimension(320, 80)); + jScrollPane1Arch.setViewportView(getICheckBoxListArch()); + } + return jScrollPane1Arch; + } /** - * This method initializes jCheckBox4 + * This method initializes iCheckBoxList * - * @return javax.swing.JCheckBox + * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList */ - private JCheckBox getJCheckBox4() { - if (jCheckBox4 == null) { - jCheckBox4 = new JCheckBox(); - jCheckBox4.setBounds(new java.awt.Rectangle(343,213,60,20)); - jCheckBox4.setText("ARM"); - jCheckBox4.setPreferredSize(new Dimension(60, 20)); + private ICheckBoxList getICheckBoxListArch() { + if (iCheckBoxListArch == null) { + iCheckBoxListArch = new ICheckBoxList(); + iCheckBoxListArch.setBounds(new java.awt.Rectangle(218,171,292,66)); + Vector v = new Vector(); + v.add("IA32"); + v.add("X64"); + v.add("IPF"); + v.add("EBC"); + v.add("ARM"); + v.add("PPC"); + iCheckBoxListArch.setAllItems(v); } - return jCheckBox4; + return iCheckBoxListArch; } /** - * This method initializes jCheckBox5 + * This method initializes jComboBox * - * @return javax.swing.JCheckBox + * @return javax.swing.JComboBox */ - private JCheckBox getJCheckBox5() { - if (jCheckBox5 == null) { - jCheckBox5 = new JCheckBox(); - jCheckBox5.setBounds(new java.awt.Rectangle(400,213,60,20)); - jCheckBox5.setText("PPC"); - jCheckBox5.setPreferredSize(new Dimension(60, 20)); + private JComboBox getJComboBox() { + if (jComboBox == null) { + jComboBox = new JComboBox(); + jComboBox.setPreferredSize(new java.awt.Dimension(31,20)); + jComboBox.setSize(new java.awt.Dimension(290,20)); + jComboBox.setLocation(new java.awt.Point(218,111)); + jComboBox.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusGained(java.awt.event.FocusEvent e) { + if (jTextFieldClass.getText().length() == 0) { + return; + } + jComboBox.removeAllItems(); + getLibInstances(jTextFieldClass.getText()); + Set libNames = libNameGuidMap.keySet(); + Iterator si = libNames.iterator(); + while(si.hasNext()) { + jComboBox.addItem(si.next()); + } + } + }); + } - return jCheckBox5; + return jComboBox; } - public static void main(String[] args){ - new SpdLibClassDecls().setVisible(true); + private void getLibInstances(String libClass){ + libNameGuidMap.clear(); + try { + Iterator ismi = GlobalData.vModuleList.iterator(); + while (ismi.hasNext()) { + ModuleIdentification mi = (ModuleIdentification) ismi.next(); + + Vector classProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED", mi); + for (int i = 0; i < classProduced.size(); ++i) { + if (classProduced.get(i).equals(libClass)) { + libNameGuidMap.put(mi.getName(), mi.getGuid()); + } + } + } + + } + catch(Exception e){ + JOptionPane.showMessageDialog(frame, "Search Instances Failed."); + } + } + + private String nameToGuid(String name) { + String s = null; + if (!libNameGuidMap.containsKey(name)) { + return s; + } + + s = libNameGuidMap.get(name); + return s; + } + + private String guidToName(String guid){ + String s = ""; + if (!libNameGuidMap.containsValue(guid)) { + return s; + } + Set key = libNameGuidMap.keySet(); + Iterator is = key.iterator(); + while(is.hasNext()) { + s = is.next(); + if (libNameGuidMap.get(s).equals(guid)) { + break; + } + } + return s; + } + }