]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdLibClassDecls.java
Change radio button in package header editor to a label.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / SpdLibClassDecls.java
index dade30d282d77959bdcbca787e480bf1477c17bf..6f660f5b5619b1a5285fdc134a9550fde9a80e13 100644 (file)
@@ -52,7 +52,7 @@ import org.tianocore.frameworkwizard.common.ui.IInternalFrame;
 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.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
@@ -77,7 +77,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
 \r
     private JPanel jContentPane = null;\r
 \r
-    private JTextField jTextFieldAdd = null;\r
+    private JTextField jTextFieldClass = null;\r
 \r
     private JComboBox jComboBoxSelect = null;\r
 \r
@@ -133,7 +133,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     \r
     private ICheckBoxList iCheckBoxListModules = null;\r
 \r
-    private ICheckBoxList iCheckBoxList = null;\r
+    private ICheckBoxList iCheckBoxListArch = null;\r
 \r
     private JComboBox jComboBox = null;\r
 \r
@@ -163,14 +163,14 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
        \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
@@ -200,8 +200,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JScrollPane getJScrollPane() {\r
         if (jScrollPane == null) {\r
             jScrollPane = new JScrollPane();\r
-            jScrollPane.setBounds(new java.awt.Rectangle(12,351,608,253));\r
-            jScrollPane.setPreferredSize(new java.awt.Dimension(390,150));\r
+            jScrollPane.setBounds(new java.awt.Rectangle(12,351,400,253));\r
             jScrollPane.setViewportView(getJTable());\r
         }\r
         return jScrollPane;\r
@@ -217,15 +216,13 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
            model = new DefaultTableModel();\r
            jTable = new JTable(model);\r
            jTable.setRowHeight(20);\r
-//           jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
+           jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
            jTable.setColumnSelectionAllowed(false);\r
            model.addColumn("Class Name");\r
            model.addColumn("Header");\r
            model.addColumn("Help Text");\r
-           model.addColumn("Reserved");\r
-           model.addColumn("Reserved");\r
-//           model.addColumn("Recommended Instance");\r
-//           model.addColumn("Version");\r
+           model.addColumn("Recommended Instance");\r
+           model.addColumn("Version");\r
            model.addColumn("Sup. Arch");\r
            model.addColumn("Mod. Types");\r
            \r
@@ -236,7 +233,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
            vArch.add("EBC");\r
            vArch.add("ARM");\r
            vArch.add("PPC");\r
-//           jTable.getColumnModel().getColumn(cnSupArch).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
@@ -280,13 +277,21 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     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
+            \r
             String lib = m.getValueAt(row, cnClassName) + "";\r
             String hdr = m.getValueAt(row, cnHdrFile) + "";\r
             String hlp = m.getValueAt(row, cnHelpText) + "";\r
-            String name = m.getValueAt(row, cnRecInstName) + "";\r
-            String ver = m.getValueAt(row, cnRecInstVer) + "";\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, cnSupArch) != null) {\r
                arch = m.getValueAt(row, cnSupArch).toString();\r
@@ -295,20 +300,49 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             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
-            docConsole.setSaved(false);\r
             \r
-// LAH            getLibInstances(lib);\r
-\r
-            if (name != null) {\r
-              String guid = nameToGuid(name);\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
-            // LAH WAS sfc.updateSpdLibClass(row, lib, hdr, hlp, guid, ver, arch, module);\r
-            sfc.updateSpdLibClass(row, lib, hdr, hlp, null, null, arch, module);\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
     }\r
 \r
@@ -322,7 +356,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             jButtonAdd = new JButton();\r
             jButtonAdd.setText("Add");\r
             jButtonAdd.setSize(new java.awt.Dimension(99,20));\r
-            jButtonAdd.setLocation(new java.awt.Point(321,326));\r
+            jButtonAdd.setBounds(new java.awt.Rectangle(321,326,99,20));\r
             jButtonAdd.addActionListener(this);\r
         }\r
         return jButtonAdd;\r
@@ -338,7 +372,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             jButtonRemove = new JButton();\r
             jButtonRemove.setText("Remove");\r
             jButtonRemove.setSize(new java.awt.Dimension(99,20));\r
-            jButtonRemove.setLocation(new java.awt.Point(424,326));\r
+            jButtonRemove.setBounds(new java.awt.Rectangle(424,326,99,20));\r
             jButtonRemove.addActionListener(this);\r
         }\r
         return jButtonRemove;\r
@@ -354,7 +388,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             jButtonRemoveAll = new JButton();\r
             jButtonRemoveAll.setText("Remove All");\r
             jButtonRemoveAll.setSize(new java.awt.Dimension(99,20));\r
-            jButtonRemoveAll.setLocation(new java.awt.Point(527,326));\r
+            jButtonRemoveAll.setBounds(new java.awt.Rectangle(527,326,99,20));\r
             jButtonRemoveAll.addActionListener(this);\r
         }\r
         return jButtonRemoveAll;\r
@@ -424,7 +458,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JScrollPane getJContentPane(){\r
         if (topScrollPane == null){\r
           topScrollPane = new JScrollPane();\r
-          topScrollPane.setSize(new java.awt.Dimension(634,590));\r
+//          topScrollPane.setSize(new java.awt.Dimension(634,590));\r
           topScrollPane.setViewportView(getJContentPane1());\r
         }\r
         return topScrollPane;\r
@@ -476,12 +510,12 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             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(jLabelHdr, null);\r
             jContentPane.add(jStarLabel1, null);\r
             jContentPane.add(jStarLabel2, 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
@@ -494,17 +528,17 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             jContentPane.add(starLabel, null);\r
             jContentPane.add(jLabel2HelpText, null);\r
             jContentPane.add(getJTextFieldHelp(), null);\r
-// LAH Removed until we can fix permanently\r
-//            jContentPane.add(jLabel3RecInstName, null);\r
-//            jContentPane.add(getJTextField1RecInstName(), null);\r
-//            jContentPane.add(jLabel4RecInstVer, null);\r
-//            jContentPane.add(getJTextField2RecInstVer(), 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
-// LAH            jContentPane.add(getJComboBox(), null);\r
+            jContentPane.add(getJComboBox(), null);\r
             \r
         }\r
         \r
@@ -566,10 +600,12 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             //ToDo: check before add\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] = jTextFieldAdd.getText();\r
+            row[cnClassName] = jTextFieldClass.getText();\r
             row[cnHdrFile] = jTextFieldHdr.getText().replace('\\', '/');\r
             row[cnHelpText] = jTextFieldHelp.getText();\r
-            row[cnSupArch] = vectorToString(iCheckBoxList.getAllCheckedItemsString());\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
@@ -580,18 +616,25 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             if (!dataValidation(row)) {\r
                 return;\r
             }\r
-            model.addRow(row);\r
-            jTable.changeSelection(model.getRowCount()-1, 0, false, false);\r
-            docConsole.setSaved(false);\r
             //\r
             //convert to GUID before storing recommended lib instance.\r
             //\r
             getLibInstances(row[cnClassName]);\r
-// LAH            recommendGuid = nameToGuid(row[3]);\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
-// LAH WAS             sfc.genSpdLibClassDeclarations(row[0], recommendGuid, row[1], row[2], row[5], null, null, row[4], null, row[6]);\r
-            sfc.genSpdLibClassDeclarations(row[cnClassName], null, row[cnHdrFile], row[cnHelpText], row[cnSupArch], null, null, row[cnRecInstVer], null, row[cnSupMod]);\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
+            jTable.changeSelection(model.getRowCount()-1, 0, false, false);\r
+            docConsole.setSaved(false);\r
         }\r
         //\r
         // remove selected line\r
@@ -603,6 +646,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             int rowSelected = selectedRow;\r
             if (rowSelected >= 0) {\r
                 model.removeRow(rowSelected);\r
+                docConsole.setSaved(false);\r
                 sfc.removeSpdLibClass(rowSelected);\r
             }\r
         }\r
@@ -611,7 +655,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             if (model.getRowCount() == 0) {\r
                 return;\r
             }\r
-            \r
+            docConsole.setSaved(false);\r
             model.setRowCount(0);\r
             sfc.removeSpdLibClass();\r
         }\r
@@ -624,9 +668,22 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
         }\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[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
@@ -710,9 +767,9 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     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-10);\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
@@ -804,7 +861,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             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(getICheckBoxList());\r
+            jScrollPane1Arch.setViewportView(getICheckBoxListArch());\r
         }\r
         return jScrollPane1Arch;\r
     }\r
@@ -813,10 +870,10 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
      *         \r
      * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList     \r
      */\r
-    private ICheckBoxList getICheckBoxList() {\r
-        if (iCheckBoxList == null) {\r
-            iCheckBoxList = new ICheckBoxList();\r
-            iCheckBoxList.setBounds(new java.awt.Rectangle(218,171,292,66));\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
@@ -824,9 +881,9 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             v.add("EBC");\r
             v.add("ARM");\r
             v.add("PPC");\r
-            iCheckBoxList.setAllItems(v);\r
+            iCheckBoxListArch.setAllItems(v);\r
         }\r
-        return iCheckBoxList;\r
+        return iCheckBoxListArch;\r
     }\r
 \r
     /**\r
@@ -842,11 +899,11 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             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
+                    if (jTextFieldClass.getText().length() == 0) {\r
                         return;\r
                     }\r
                     jComboBox.removeAllItems();\r
-                    getLibInstances(jTextFieldAdd.getText());\r
+                    getLibInstances(jTextFieldClass.getText());\r
                     Set<String> libNames = libNameGuidMap.keySet();\r
                     Iterator<String> si = libNames.iterator();\r
                     while(si.hasNext()) {\r
@@ -862,23 +919,23 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     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
+            WorkspaceProfile.initInfo("Tools" + File.separator + "Conf" + File.separator + "FrameworkDatabase.db", System.getenv("WORKSPACE"));\r
         \r
-            Set<PackageIdentification> spi = GlobalData.getPackageList();\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 = GlobalData.getModules(pi);\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 = GlobalData.getNativeMsa(mi);\r
+                    Map<String, XmlObject> m = WorkspaceProfile.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
+                    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
@@ -892,7 +949,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     }\r
 \r
     private String nameToGuid(String name) {\r
-        String s = "";\r
+        String s = null;\r
         if (!libNameGuidMap.containsKey(name)) {\r
             return s;\r
         }\r