+ /**\r
+ * This method initializes jPanelModuleSaOpts\r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelModuleSaOpts() {\r
+ if (jPanelModuleSaOpts == null) {\r
+ jLabelPad = new JLabel();\r
+ jLabelPad.setText("");\r
+ jLabelPad.setPreferredSize(new java.awt.Dimension(250,16));\r
+ FlowLayout flowLayout4 = new FlowLayout();\r
+ flowLayout4.setAlignment(java.awt.FlowLayout.LEFT);\r
+ jLabelFfsFormatKey = new JLabel();\r
+ jLabelFfsFormatKey.setText("FFS Format Key");\r
+ jLabelFfsFormatKey.setPreferredSize(new java.awt.Dimension(90,16));\r
+ jLabelFfsFileGuid = new JLabel();\r
+ jLabelFfsFileGuid.setText("FFS File GUID");\r
+ jLabelFfsFileGuid.setPreferredSize(new java.awt.Dimension(90,16));\r
+ jLabelFvBinding = new JLabel();\r
+ jLabelFvBinding.setText("FV Binding");\r
+ jLabelFvBinding.setPreferredSize(new java.awt.Dimension(90,16));\r
+ jPanelModuleSaOpts = new JPanel();\r
+ jPanelModuleSaOpts.setLayout(flowLayout4);\r
+ jPanelModuleSaOpts.add(jLabelFvBinding, null);\r
+ jPanelModuleSaOpts.add(getJTextFieldFvBinding(), null);\r
+ jPanelModuleSaOpts.add(jLabelFfsFileGuid, null);\r
+ jPanelModuleSaOpts.add(getJTextFieldFileGuid(), null);\r
+ jPanelModuleSaOpts.add(jLabelFfsFormatKey, null);\r
+ jPanelModuleSaOpts.add(getJTextFieldFfsKey(), null);\r
+ jPanelModuleSaOpts.add(getJScrollPaneModuleSaOptions(), null);\r
+ jPanelModuleSaOpts.add(jLabelPad, null);\r
+ jPanelModuleSaOpts.add(getJButtonNew(), null);\r
+ jPanelModuleSaOpts.add(getJButtonDeleteOption(), null);\r
+ jPanelModuleSaOpts.addComponentListener(new java.awt.event.ComponentAdapter() {\r
+ public void componentShown(java.awt.event.ComponentEvent e) {\r
+ initModuleSAOptions(moduleKey);\r
+ }\r
+ });\r
+ }\r
+ return jPanelModuleSaOpts;\r
+ }\r
+ /**\r
+ * This method initializes jTextField \r
+ * \r
+ * @return javax.swing.JTextField \r
+ */\r
+ private JTextField getJTextFieldFvBinding() {\r
+ if (jTextFieldFvBinding == null) {\r
+ jTextFieldFvBinding = new JTextField();\r
+ jTextFieldFvBinding.setPreferredSize(new java.awt.Dimension(150,20));\r
+ jTextFieldFvBinding.addFocusListener(new java.awt.event.FocusAdapter() {\r
+ public void focusLost(java.awt.event.FocusEvent e) {\r
+ String originalFvBinding = ffc.getFvBinding(moduleKey);\r
+ String newFvBinding = jTextFieldFvBinding.getText();\r
+ if (newFvBinding.equals(originalFvBinding)) {\r
+ return;\r
+ }\r
+ if (newFvBinding.length() == 0 && originalFvBinding == null) {\r
+ return;\r
+ }\r
+ docConsole.setSaved(false);\r
+ ffc.setFvBinding(moduleKey, newFvBinding);\r
+ }\r
+ });\r
+ \r
+ }\r
+ return jTextFieldFvBinding;\r
+ }\r
+ /**\r
+ * This method initializes jTextField1 \r
+ * \r
+ * @return javax.swing.JTextField \r
+ */\r
+ private JTextField getJTextFieldFileGuid() {\r
+ if (jTextFieldFileGuid == null) {\r
+ jTextFieldFileGuid = new JTextField();\r
+ jTextFieldFileGuid.setPreferredSize(new java.awt.Dimension(300,20));\r
+ jTextFieldFileGuid.addFocusListener(new java.awt.event.FocusAdapter() {\r
+ public void focusLost(java.awt.event.FocusEvent e) {\r
+ String originalFileGuid = ffc.getFfsFileNameGuid(moduleKey);\r
+ String newFileGuid = jTextFieldFileGuid.getText();\r
+ if (newFileGuid.equals(originalFileGuid)) {\r
+ return;\r
+ }\r
+ if (newFileGuid.length() == 0 && originalFileGuid == null) {\r
+ return;\r
+ }\r
+ if (newFileGuid.length() > 0) {\r
+ if (!DataValidation.isGuid(newFileGuid)) {\r
+ JOptionPane.showMessageDialog(frame, "FFS File Guid is NOT GUID Type.");\r
+ return;\r
+ }\r
+ }\r
+ \r
+ docConsole.setSaved(false);\r
+ if (newFileGuid.length() == 0) {\r
+ newFileGuid = null;\r
+ }\r
+ ffc.setFfsFileNameGuid(moduleKey, newFileGuid);\r
+ }\r
+ });\r
+ \r
+ }\r
+ return jTextFieldFileGuid;\r
+ }\r
+ /**\r
+ * This method initializes jTextFieldFfsKey \r
+ * \r
+ * @return javax.swing.JTextField \r
+ */\r
+ private JTextField getJTextFieldFfsKey() {\r
+ if (jTextFieldFfsKey == null) {\r
+ jTextFieldFfsKey = new JTextField();\r
+ jTextFieldFfsKey.setPreferredSize(new java.awt.Dimension(250,20));\r
+ jTextFieldFfsKey.addFocusListener(new java.awt.event.FocusAdapter() {\r
+ public void focusLost(java.awt.event.FocusEvent e) {\r
+ String originalFfsKey = ffc.getFfsFormatKey(moduleKey);\r
+ String newFfsKey = jTextFieldFfsKey.getText();\r
+ if (newFfsKey.equals(originalFfsKey)) {\r
+ return;\r
+ }\r
+ if (newFfsKey.length() == 0 && originalFfsKey == null) {\r
+ return;\r
+ }\r
+ docConsole.setSaved(false);\r
+ ffc.setFfsFormatKey(moduleKey, newFfsKey);\r
+ }\r
+ });\r
+ \r
+ }\r
+ return jTextFieldFfsKey;\r
+ }\r
+ /**\r
+ * This method initializes jScrollPaneModuleSaOptions\r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPaneModuleSaOptions() {\r
+ if (jScrollPaneModuleSaOptions == null) {\r
+ jScrollPaneModuleSaOptions = new JScrollPane();\r
+ jScrollPaneModuleSaOptions.setPreferredSize(new java.awt.Dimension(600,200));\r
+ jScrollPaneModuleSaOptions.setViewportView(getJTableModuleSaOptions());\r
+ }\r
+ return jScrollPaneModuleSaOptions;\r
+ }\r
+ /**\r
+ * This method initializes jTableModuleSaOptions\r
+ * \r
+ * @return javax.swing.JTable \r
+ */\r
+ private JTable getJTableModuleSaOptions() {\r
+ if (jTableModuleSaOptions == null) {\r
+ optionsTableModel = new DefaultTableModel();\r
+ optionsTableModel.addColumn("BuildTargets");\r
+ optionsTableModel.addColumn("ToolChainFamily");\r
+ optionsTableModel.addColumn("TagName");\r
+ optionsTableModel.addColumn("ToolCode");\r
+ optionsTableModel.addColumn("SupportedArchs");\r
+ optionsTableModel.addColumn("Contents");\r
+ jTableModuleSaOptions = new JTable(optionsTableModel);\r
+ jTableModuleSaOptions.setRowHeight(20);\r
+ Vector<String> vArch = new Vector<String>();\r
+ vArch.add("IA32");\r
+ vArch.add("X64");\r
+ vArch.add("IPF");\r
+ vArch.add("EBC");\r
+ vArch.add("ARM");\r
+ vArch.add("PPC");\r
+ jTableModuleSaOptions.getColumnModel().getColumn(4).setCellEditor(new ListEditor(vArch));\r
+ jTableModuleSaOptions.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ jTableModuleSaOptions.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
+ jTableModuleSaOptions.getModel().addTableModelListener(new TableModelListener() {\r
+ public void tableChanged(TableModelEvent arg0) {\r
+ // TODO Auto-generated method stub\r
+ int row = arg0.getFirstRow();\r
+ TableModel m = (TableModel)arg0.getSource();\r
+ \r
+ if (arg0.getType() == TableModelEvent.UPDATE){\r
+ //ToDo Data Validition check.\r
+ String targets = m.getValueAt(row, 0) + "";\r
+ Vector<Object> targetName = null;\r
+ if (targets.length() > 0) {\r
+ targetName = new Vector<Object>();\r
+ String[] sArray = targets.split(" ");\r
+ for (int i = 0; i < sArray.length; ++i) {\r
+ targetName.add(sArray[i]);\r
+ }\r
+ }\r
+ \r
+ String toolChain = m.getValueAt(row, 1) + "";\r
+ String tagName = m.getValueAt(row, 2) + "";\r
+ String toolCode = m.getValueAt(row, 3) + "";\r
+ String archs = m.getValueAt(row, 4) + "";\r
+ Vector<Object> supArch = null;\r
+ if (archs.length() > 0) {\r
+ supArch = new Vector<Object>();\r
+ String[] sArray1 = archs.split(" ");\r
+ for (int i = 0; i < sArray1.length; ++i) {\r
+ supArch.add(sArray1[i]);\r
+ }\r
+ }\r
+ \r
+ String contents = m.getValueAt(row, 5) + "";\r
+ docConsole.setSaved(false);\r
+ ffc.updateModuleSAOptionsOpt(moduleKey, row, targetName, toolChain, tagName, toolCode, supArch, contents);\r
+ }\r
+ }\r
+ });\r
+ }\r
+ return jTableModuleSaOptions;\r
+ }\r
+ /**\r
+ * This method initializes jButtonNew\r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonNew() {\r
+ if (jButtonNew == null) {\r
+ jButtonNew = new JButton();\r
+ jButtonNew.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonNew.setText("New");\r
+ jButtonNew.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ String[] row = {"", "", "", "", "", ""};\r
+ optionsTableModel.addRow(row);\r
+ Vector<Object> v = new Vector<Object>();\r
+ Vector<Object> v1 = null;\r
+ docConsole.setSaved(false);\r
+ ffc.genModuleSAOptionsOpt(moduleKey, v, "", "", "", v1, "");\r
+ }\r
+ });\r
+ }\r
+ return jButtonNew;\r
+ }\r
+ /**\r
+ * This method initializes jButtonDelete\r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonDeleteOption() {\r
+ if (jButtonDeleteOption == null) {\r
+ jButtonDeleteOption = new JButton();\r
+ jButtonDeleteOption.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonDeleteOption.setText("Delete");\r
+ jButtonDeleteOption.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ if (jTableModuleSaOptions.getSelectedRow() < 0) {\r
+ return;\r
+ }\r
+ docConsole.setSaved(false);\r
+ ffc.removeModuleSAOptionsOpt(moduleKey, jTableModuleSaOptions.getSelectedRow());\r
+ optionsTableModel.removeRow(jTableModuleSaOptions.getSelectedRow());\r
+ }\r
+ });\r
+ }\r
+ return jButtonDeleteOption;\r
+ }\r
+ \r
+ /**\r
+ Start the window at the center of screen\r
+ \r
+ **/\r
+ protected void centerWindow(int intWidth, int intHeight) {\r
+ Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
+ this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
+ }\r
+\r
+ /**\r
+ Start the window at the center of screen\r
+ \r
+ **/\r
+ protected void centerWindow() {\r
+ centerWindow(this.getSize().width, this.getSize().height);\r
+ }\r
+/**\r
+ * This method initializes jPanelPcdFields\r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+private JPanel getJPanelPcdFields() {\r
+ if (jPanelPcdFields == null) {\r
+ GridLayout gridLayout = new GridLayout();\r
+ gridLayout.setRows(3);\r
+ gridLayout.setColumns(2);\r
+ jPanelPcdFields = new JPanel();\r
+ jPanelPcdFields.setLayout(gridLayout);\r
+ jPanelPcdFields.setPreferredSize(new java.awt.Dimension(600,90));\r
+ jPanelPcdFields.add(getJPanelPcdFieldsFirstRow(), null);\r
+ jPanelPcdFields.add(getJPanelPcdFieldsSecondRow(), null);\r
+ jPanelPcdFields.add(getJPanelPcdFieldsThirdRow(), null);\r
+ }\r
+ return jPanelPcdFields;\r
+}\r
+/**\r
+ * This method initializes jPanelPcdFieldsSecondRow\r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+private JPanel getJPanelPcdFieldsSecondRow() {\r
+ if (jPanelPcdFieldsSecondRow == null) {\r
+ FlowLayout flowLayout2 = new FlowLayout();\r
+ flowLayout2.setAlignment(java.awt.FlowLayout.LEFT);\r
+ jLabelMaxDatumSize = new JLabel();\r
+ jLabelMaxDatumSize.setText("Max Datum Size");\r
+ jPanelPcdFieldsSecondRow = new JPanel();\r
+ jPanelPcdFieldsSecondRow.setLayout(flowLayout2);\r
+ jPanelPcdFieldsSecondRow.add(jLabelMaxDatumSize, null);\r
+ jPanelPcdFieldsSecondRow.add(getJTextFieldMaxDatumSize(), null);\r
+ }\r
+ return jPanelPcdFieldsSecondRow;\r
+}\r
+/**\r
+ * This method initializes jPanelPcdFieldsThirdRow\r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+private JPanel getJPanelPcdFieldsThirdRow() {\r
+ if (jPanelPcdFieldsThirdRow == null) {\r
+ FlowLayout flowLayout3 = new FlowLayout();\r
+ flowLayout3.setAlignment(java.awt.FlowLayout.LEFT);\r
+ jLabelPcdDefaultValue = new JLabel();\r
+ jLabelPcdDefaultValue.setText("Default Value");\r
+ jLabelPcdDefaultValue.setPreferredSize(new java.awt.Dimension(91,16));\r
+ jPanelPcdFieldsThirdRow = new JPanel();\r
+ jPanelPcdFieldsThirdRow.setLayout(flowLayout3);\r
+ jPanelPcdFieldsThirdRow.add(jLabelPcdDefaultValue, null);\r
+ jPanelPcdFieldsThirdRow.add(getJTextFieldPcdDefault(), null);\r
+ jPanelPcdFieldsThirdRow.add(getJComboBoxFeatureFlagValue(), null);\r
+ }\r
+ return jPanelPcdFieldsThirdRow;\r
+}\r
+/**\r
+ * This method initializes jPanelPcdFieldsFirstRow\r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+private JPanel getJPanelPcdFieldsFirstRow() {\r
+ if (jPanelPcdFieldsFirstRow == null) {\r
+ FlowLayout flowLayout1 = new FlowLayout();\r
+ flowLayout1.setAlignment(java.awt.FlowLayout.LEFT);\r
+ jLabelItemType = new JLabel();\r
+ jLabelItemType.setText("Item Type");\r
+ jLabelItemType.setPreferredSize(new java.awt.Dimension(91,16));\r
+ jPanelPcdFieldsFirstRow = new JPanel();\r
+ jPanelPcdFieldsFirstRow.setLayout(flowLayout1);\r
+ jPanelPcdFieldsFirstRow.add(jLabelItemType, null);\r
+ jPanelPcdFieldsFirstRow.add(getJComboBoxItemType(), null);\r
+ jPanelPcdFieldsFirstRow.add(getJButtonUpdatePcd(), null);\r
+ }\r
+ return jPanelPcdFieldsFirstRow;\r
+}\r
+/**\r
+ * This method initializes jComboBoxItemType\r
+ * \r
+ * @return javax.swing.JComboBox \r
+ */\r
+private JComboBox getJComboBoxItemType() {\r
+ if (jComboBoxItemType == null) {\r
+ jComboBoxItemType = new JComboBox();\r
+ jComboBoxItemType.setPreferredSize(new java.awt.Dimension(200,20));\r
+ jComboBoxItemType.addItemListener(new java.awt.event.ItemListener() {\r
+ public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+ int row = jTablePcd.getSelectedRow();\r
+ if (row < 0 || jTablePcd.getValueAt(row, 2).equals(jComboBoxItemType.getSelectedItem())) {\r
+ return;\r
+ }\r
+ if (jComboBoxItemType.getItemCount() == 3) {\r
+ if (!jComboBoxItemType.getSelectedItem().equals("DYNAMIC")) {\r
+ pcdDynamicToNonDynamic(jTablePcd.getValueAt(row, 0)+"", jTablePcd.getValueAt(row, 1)+"");\r
+ }\r
+ else{\r
+ pcdNonDynamicToDynamic(jTablePcd.getValueAt(row, 0)+"", jTablePcd.getValueAt(row, 1)+"");\r
+ }\r
+ }\r
+ }\r
+ });\r
+ }\r
+ return jComboBoxItemType;\r
+}\r
+\r
+private void pcdDynamicToNonDynamic(String cName, String tsGuid) {\r
+ String[][] saa = new String[ffc.getDynamicPcdBuildDataCount()][5];\r
+ ffc.getDynamicPcdBuildData(saa);\r
+ String maxSize = "";\r
+ String value = "";\r
+ for (int i = 0; i < saa.length; ++i) {\r
+ if (saa[i][0].equals(cName) && saa[i][2].equals(tsGuid)) {\r
+ maxSize = saa[i][3];\r
+ value = ffc.getDynamicPcdBuildDataValue(i);\r
+ break;\r
+ }\r
+ }\r
+ \r
+ ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
+ for (int i = 0; i < al.size(); ++i) {\r
+ String[] s = al.get(i).split(" ");\r
+ String mKey = s[0] + s[1] + s[2] + s[3];\r
+ ffc.updatePcdData(mKey, cName, tsGuid, jComboBoxItemType.getSelectedItem()+"", maxSize, value);\r
+ s[4] = jComboBoxItemType.getSelectedItem()+"";\r
+ al.set(i, s[0]+" "+s[1]+" "+s[2]+" "+s[3]+" "+s[4]);\r
+ }\r
+ \r
+ ffc.removeDynamicPcdBuildData(cName, tsGuid);\r
+}\r
+\r
+private void pcdNonDynamicToDynamic(String cName, String tsGuid) {\r
+ ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
+ for (int i = 0; i < al.size(); ++i) {\r
+ String[] s = al.get(i).split(" ");\r
+ String mKey = s[0] + " " + s[1]+ " " + s[2] + " " + s[3];\r
+ ffc.updatePcdData(mKey, cName, tsGuid, jComboBoxItemType.getSelectedItem()+"", jTextFieldMaxDatumSize.getText(), jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+"");\r
+ s[4] = jComboBoxItemType.getSelectedItem()+"";\r
+ al.set(i, s[0]+" "+s[1]+" "+s[2]+" "+s[3]+" "+s[4]);\r
+ }\r
+ try{\r
+ ffc.addDynamicPcdBuildData(cName, jTablePcd.getValueAt(jTablePcd.getSelectedRow(), 3), tsGuid, "DYNAMIC", jTablePcd.getValueAt(jTablePcd.getSelectedRow(), 5)+"", jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+"");\r
+ }\r
+ catch(Exception e){\r
+ JOptionPane.showMessageDialog(frame, "PCD value format: " + e.getMessage());\r
+ }\r
+}\r
+/**\r
+ * This method initializes jTextFieldMaxDatumSize\r
+ * \r
+ * @return javax.swing.JTextField \r
+ */\r
+private JTextField getJTextFieldMaxDatumSize() {\r
+ if (jTextFieldMaxDatumSize == null) {\r
+ jTextFieldMaxDatumSize = new JTextField();\r
+ jTextFieldMaxDatumSize.setPreferredSize(new java.awt.Dimension(200,20));\r
+ }\r
+ return jTextFieldMaxDatumSize;\r
+}\r
+/**\r
+ * This method initializes jTextField4 \r
+ * \r
+ * @return javax.swing.JTextField \r
+ */\r
+private JTextField getJTextFieldPcdDefault() {\r
+ if (jTextFieldPcdDefault == null) {\r
+ jTextFieldPcdDefault = new JTextField();\r
+ jTextFieldPcdDefault.setPreferredSize(new java.awt.Dimension(200,20));\r
+ }\r
+ return jTextFieldPcdDefault;\r
+}\r
+/**\r
+ * This method initializes jButton6 \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+private JButton getJButtonUpdatePcd() {\r
+ if (jButtonUpdatePcd == null) {\r
+ jButtonUpdatePcd = new JButton();\r
+ jButtonUpdatePcd.setPreferredSize(new java.awt.Dimension(150,20));\r
+ jButtonUpdatePcd.setText("Update PCD Data");\r
+ jButtonUpdatePcd.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ int row = jTablePcd.getSelectedRow();\r
+ if (row < 0) {\r
+ return;\r
+ }\r
+ docConsole.setSaved(false);\r
+ model.setValueAt(jComboBoxItemType.getSelectedItem(), row, 2);\r
+ model.setValueAt(jTextFieldMaxDatumSize.getText(), row, 4);\r
+ model.setValueAt(jTextFieldPcdDefault.isVisible()? jTextFieldPcdDefault.getText():jComboBoxFeatureFlagValue.getSelectedItem(), row, 6);\r
+ ffc.updatePcdData(moduleKey, model.getValueAt(row, 0)+"", model.getValueAt(row, 1)+"", model.getValueAt(row, 2)+"", model.getValueAt(row, 4)+"", model.getValueAt(row, 6)+"");\r
+ }\r
+ });\r
+ }\r
+ return jButtonUpdatePcd;\r
+}\r
+/**\r
+ * This method initializes jComboBoxFeatureFlagValue\r
+ * \r
+ * @return javax.swing.JComboBox \r
+ */\r
+private JComboBox getJComboBoxFeatureFlagValue() {\r
+ if (jComboBoxFeatureFlagValue == null) {\r
+ jComboBoxFeatureFlagValue = new JComboBox();\r
+ jComboBoxFeatureFlagValue.setPreferredSize(new java.awt.Dimension(100,20));\r
+ jComboBoxFeatureFlagValue.setVisible(false);\r
+ jComboBoxFeatureFlagValue.addItem("true");\r
+ jComboBoxFeatureFlagValue.addItem("false");\r
+ }\r
+ return jComboBoxFeatureFlagValue;\r
+}\r
+\r