+++ /dev/null
-/** @file\r
- \r
- The file is used to create, update SourceFiles section of the MSA file\r
- \r
- Copyright (c) 2006, Intel Corporation\r
- All rights reserved. This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
- \r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
- \r
- **/\r
-package org.tianocore.frameworkwizard.module.ui.dialog;\r
-\r
-import java.awt.event.ActionEvent;\r
-import java.io.File;\r
-import java.util.Vector;\r
-\r
-import javax.swing.JButton;\r
-import javax.swing.JFileChooser;\r
-import javax.swing.JLabel;\r
-import javax.swing.JPanel;\r
-import javax.swing.JScrollPane;\r
-import javax.swing.JTextField;\r
-\r
-import org.tianocore.frameworkwizard.common.DataType;\r
-import org.tianocore.frameworkwizard.common.DataValidation;\r
-import org.tianocore.frameworkwizard.common.EnumerationData;\r
-import org.tianocore.frameworkwizard.common.Log;\r
-import org.tianocore.frameworkwizard.common.Tools;\r
-import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
-import org.tianocore.frameworkwizard.common.ui.IComboBox;\r
-import org.tianocore.frameworkwizard.common.ui.IDialog;\r
-import org.tianocore.frameworkwizard.common.ui.IFrame;\r
-import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
-import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
-import org.tianocore.frameworkwizard.module.Identifications.SourceFiles.SourceFilesIdentification;\r
-import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
-\r
-/**\r
- * The class is used to create, update SourceFiles section of the MSA file\r
- *\r
- * It extends IDialog\r
- * \r
- **/\r
-public class SourceFilesDlg extends IDialog {\r
-\r
- ///\r
- /// Define class Serial Version UID\r
- ///\r
- private static final long serialVersionUID = -6765742852142775378L;\r
-\r
- //\r
- // Define class members\r
- //\r
- private JPanel jContentPane = null;\r
-\r
- private JLabel jLabelFileName = null;\r
-\r
- private JTextField jTextFieldFileName = null;\r
-\r
- private JButton jButtonOpenFile = null;\r
-\r
- private JLabel jLabelToolChainFamily = null;\r
-\r
- private StarLabel jStarLabel1 = null;\r
-\r
- private JLabel jLabelArch = null;\r
-\r
- private JScrollPane jScrollPane = null;\r
-\r
- private JLabel jLabelTagName = null;\r
-\r
- private JTextField jTextFieldTagName = null;\r
-\r
- private JLabel jLabelToolCode = null;\r
-\r
- private JTextField jTextFieldToolCode = null;\r
-\r
- private IComboBox iComboBoxToolCode = null;\r
-\r
- private JTextField jTextFieldToolChainFamily = null;\r
-\r
- private JLabel jLabelFeatureFlag = null;\r
-\r
- private JTextField jTextFieldFeatureFlag = null;\r
-\r
- private ArchCheckBox jArchCheckBox = null;\r
-\r
- private JButton jButtonOk = null;\r
-\r
- private JButton jButtonCancel = null;\r
-\r
- //\r
- // Not used by UI\r
- //\r
- private SourceFilesIdentification sfid[] = null;\r
-\r
- private String msaFileName = "";\r
-\r
- private EnumerationData ed = new EnumerationData();\r
- \r
- private WorkspaceTools wt = new WorkspaceTools();\r
-\r
- /**\r
- This method initializes jTextFieldFileName \r
- \r
- @return javax.swing.JTextField jTextFieldFileName\r
- \r
- **/\r
- private JTextField getJTextFieldSourceFilesDirectory() {\r
- if (jTextFieldFileName == null) {\r
- jTextFieldFileName = new JTextField();\r
- jTextFieldFileName.setBounds(new java.awt.Rectangle(168, 12, 250, 20));\r
- jTextFieldFileName.setPreferredSize(new java.awt.Dimension(250, 20));\r
- jTextFieldFileName.setToolTipText("Path is relative to the MSA file and must include the file name");\r
- }\r
- return jTextFieldFileName;\r
- }\r
-\r
- /**\r
- This method initializes jButtonOpenFile \r
- \r
- @return javax.swing.JButton jButtonOpenFile\r
- \r
- **/\r
- private JButton getJButtonOpenFile() {\r
- if (jButtonOpenFile == null) {\r
- jButtonOpenFile = new JButton();\r
- jButtonOpenFile.setText("Browse");\r
- jButtonOpenFile.setBounds(new java.awt.Rectangle(422, 12, 85, 20));\r
- jButtonOpenFile.setPreferredSize(new java.awt.Dimension(85, 20));\r
- jButtonOpenFile.addActionListener(this);\r
- }\r
- return jButtonOpenFile;\r
- }\r
-\r
- /**\r
- This method initializes jScrollPane \r
- \r
- @return javax.swing.JScrollPane \r
- */\r
- private JScrollPane getJScrollPane() {\r
- if (jScrollPane == null) {\r
- jScrollPane = new JScrollPane();\r
- jScrollPane.setViewportView(getJContentPane());\r
- }\r
- return jScrollPane;\r
- }\r
-\r
- /**\r
- * This method initializes jTextFieldTagName \r
- * \r
- * @return javax.swing.JTextField \r
- */\r
- private JTextField getJTextFieldTagName() {\r
- if (jTextFieldTagName == null) {\r
- jTextFieldTagName = new JTextField();\r
- jTextFieldTagName.setBounds(new java.awt.Rectangle(168, 37, 340, 20));\r
- jTextFieldTagName.setPreferredSize(new java.awt.Dimension(340, 20));\r
- jTextFieldTagName.setToolTipText("You may specify a specific tool chain tag name, such as BILL1");\r
- }\r
- return jTextFieldTagName;\r
- }\r
-\r
- private IComboBox getIComboBoxToolCode() {\r
- if (iComboBoxToolCode == null) {\r
- iComboBoxToolCode = new IComboBox();\r
- iComboBoxToolCode.setBounds(new java.awt.Rectangle(168, 62, 340, 20));\r
- iComboBoxToolCode.setPreferredSize(new java.awt.Dimension(340, 20));\r
- iComboBoxToolCode.setToolTipText("<html>You may select a specific tool command from drop down list,<br>"\r
- + "or you can DOUBLE-CLICK this field to enter your customized<br>"\r
- + "tool command.<br>"\r
- + "Press ENTER to save your input or press ESCAPE to quit</html>");\r
- }\r
- return iComboBoxToolCode;\r
- }\r
-\r
- /**\r
- * This method initializes jTextFieldToolCode \r
- * \r
- * @return javax.swing.JTextField \r
- */\r
- private JTextField getJTextFieldToolCode() {\r
- if (jTextFieldToolCode == null) {\r
- jTextFieldToolCode = new JTextField();\r
- jTextFieldToolCode.setBounds(new java.awt.Rectangle(168, 62, 340, 20));\r
- jTextFieldToolCode.setPreferredSize(new java.awt.Dimension(340, 20));\r
- jTextFieldToolCode.setToolTipText("You may specify a specific tool command, such as ASM");\r
- jTextFieldToolCode.setVisible(false);\r
- }\r
- return jTextFieldToolCode;\r
- }\r
-\r
- /**\r
- * This method initializes jTextFieldToolChainFamily \r
- * \r
- * @return javax.swing.JTextField \r
- */\r
- private JTextField getJTextFieldToolChainFamily() {\r
- if (jTextFieldToolChainFamily == null) {\r
- jTextFieldToolChainFamily = new JTextField();\r
- jTextFieldToolChainFamily.setBounds(new java.awt.Rectangle(168, 87, 340, 20));\r
- jTextFieldToolChainFamily.setPreferredSize(new java.awt.Dimension(340, 20));\r
- jTextFieldToolChainFamily.setToolTipText("You may specify a specific tool chain family, such as GCC");\r
- }\r
- return jTextFieldToolChainFamily;\r
- }\r
-\r
- /**\r
- * This method initializes jTextFieldFeatureFlag \r
- * \r
- * @return javax.swing.JTextField \r
- */\r
- private JTextField getJTextFieldFeatureFlag() {\r
- if (jTextFieldFeatureFlag == null) {\r
- jTextFieldFeatureFlag = new JTextField();\r
- jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(168, 137, 340, 20));\r
- jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(340, 20));\r
- jTextFieldFeatureFlag.setToolTipText("RESERVED FOR FUTURE USE");\r
- jTextFieldFeatureFlag.setEnabled(false);\r
- }\r
- return jTextFieldFeatureFlag;\r
- }\r
-\r
- /**\r
- This method initializes jButtonOk \r
- \r
- @return javax.swing.JButton \r
- \r
- **/\r
- private JButton getJButtonOk() {\r
- if (jButtonOk == null) {\r
- jButtonOk = new JButton();\r
- jButtonOk.setBounds(new java.awt.Rectangle(317, 172, 90, 20));\r
- jButtonOk.setText("Ok");\r
- jButtonOk.addActionListener(this);\r
- }\r
- return jButtonOk;\r
- }\r
-\r
- /**\r
- This method initializes jButtonCancel \r
- \r
- @return javax.swing.JButton \r
- \r
- **/\r
- private JButton getJButtonCancel() {\r
- if (jButtonCancel == null) {\r
- jButtonCancel = new JButton();\r
- jButtonCancel.setBounds(new java.awt.Rectangle(412, 172, 90, 20));\r
- jButtonCancel.setText("Cancel");\r
- jButtonCancel.addActionListener(this);\r
- }\r
- return jButtonCancel;\r
- }\r
-\r
- public static void main(String[] args) {\r
-\r
- }\r
-\r
- /**\r
- This is the default constructor\r
- \r
- **/\r
- public SourceFilesDlg(SourceFilesIdentification inSourceFilesIdentification, IFrame iFrame, ModuleIdentification mid) {\r
- super(iFrame, true);\r
- init(inSourceFilesIdentification, mid);\r
- }\r
-\r
- /**\r
- This method initializes this\r
- \r
- **/\r
- private void init() {\r
- this.setSize(525, 240);\r
- this.setContentPane(getJScrollPane());\r
- this.setTitle("Source Files");\r
- this.setViewMode(false);\r
- this.centerWindow();\r
- Tools.generateComboBoxByVector(iComboBoxToolCode, ed.getVToolCode());\r
- }\r
-\r
- /** \r
- This method initializes this\r
- Fill values to all fields if these values are not empty\r
- \r
- \r
- @param inSourceFiles The input data of SourceFilesDocument.SourceFiles\r
- \r
- **/\r
- private void init(SourceFilesIdentification inSourceFilesIdentifications, ModuleIdentification mid) {\r
- init();\r
- this.msaFileName = mid.getPath();\r
- \r
- //\r
- // Init arch with module's arch\r
- //\r
- this.jArchCheckBox.setEnabledItems(wt.getModuleArch(mid));\r
-\r
- if (inSourceFilesIdentifications != null) {\r
- this.jTextFieldFileName.setText(inSourceFilesIdentifications.getFilename());\r
- this.jTextFieldTagName.setText(inSourceFilesIdentifications.getTagName());\r
-\r
-// //\r
-// // Generate Tool Code selection list\r
-// //\r
-// Vector<String> v = ed.getVToolCode();\r
-// boolean isFind = false;\r
-// String strToolCode = inSourceFilesIdentifications.getToolCode();\r
-//\r
-// //\r
-// // If the input value is not in the default list, add it to the list\r
-// //\r
-// if (strToolCode != null) {\r
-// for (int index = 0; index < v.size(); index++) {\r
-// if (v.elementAt(index).equals(strToolCode)) {\r
-// isFind = true;\r
-// break;\r
-// }\r
-// }\r
-// if (!isFind && !isEmpty(strToolCode)) {\r
-// v.addElement(strToolCode);\r
-// }\r
-// }\r
-\r
- Tools.generateComboBoxByVector(iComboBoxToolCode, ed.getVToolCode());\r
- this.iComboBoxToolCode.setSelectedItem(inSourceFilesIdentifications.getToolCode());\r
-\r
- this.jTextFieldToolChainFamily.setText(inSourceFilesIdentifications.getToolChainFamily());\r
- jTextFieldFeatureFlag.setText(inSourceFilesIdentifications.getFeatureFlag());\r
- this.jArchCheckBox.setSelectedItems(inSourceFilesIdentifications.getSupArchList());\r
- }\r
- }\r
-\r
- /**\r
- Disable all components when the mode is view\r
- \r
- @param isView true - The view mode; false - The non-view mode\r
- \r
- **/\r
- public void setViewMode(boolean isView) {\r
- if (isView) {\r
- this.jTextFieldFileName.setEnabled(!isView);\r
- this.jButtonOpenFile.setEnabled(!isView);\r
- }\r
- }\r
-\r
- /**\r
- This method initializes jContentPane\r
- \r
- @return javax.swing.JPanel jContentPane\r
- \r
- **/\r
- private JPanel getJContentPane() {\r
- if (jContentPane == null) {\r
- jArchCheckBox = new ArchCheckBox();\r
- jArchCheckBox.setBounds(new java.awt.Rectangle(168, 112, 340, 20));\r
- jArchCheckBox.setPreferredSize(new java.awt.Dimension(340, 20));\r
- jLabelFeatureFlag = new JLabel();\r
- jLabelFeatureFlag.setBounds(new java.awt.Rectangle(12, 137, 155, 20));\r
- jLabelFeatureFlag.setText("Feature Flag Expression");\r
- jLabelFeatureFlag.setEnabled(false);\r
- jLabelToolCode = new JLabel();\r
- jLabelToolCode.setBounds(new java.awt.Rectangle(12, 62, 155, 20));\r
- jLabelToolCode.setText("Tool Code");\r
- jLabelTagName = new JLabel();\r
- jLabelTagName.setBounds(new java.awt.Rectangle(12, 37, 155, 20));\r
- jLabelTagName.setText("Tag Name");\r
- jLabelArch = new JLabel();\r
- jLabelArch.setBounds(new java.awt.Rectangle(12, 112, 155, 20));\r
- jLabelArch.setText("Supported Architectures");\r
- jLabelToolChainFamily = new JLabel();\r
- jLabelToolChainFamily.setBounds(new java.awt.Rectangle(12, 87, 155, 20));\r
- jLabelToolChainFamily.setText("Tool Chain Family");\r
- jLabelFileName = new JLabel();\r
- jLabelFileName.setText("File Name");\r
- jLabelFileName.setBounds(new java.awt.Rectangle(12, 12, 155, 20));\r
-\r
- jContentPane = new JPanel();\r
- jContentPane.setLayout(null);\r
- jContentPane.setPreferredSize(new java.awt.Dimension(505, 192));\r
-\r
- jContentPane.add(jLabelFileName, null);\r
- jContentPane.add(getJTextFieldSourceFilesDirectory(), null);\r
- jContentPane.add(getJButtonOpenFile(), null);\r
- jContentPane.add(jLabelToolChainFamily, null);\r
- jStarLabel1 = new StarLabel();\r
- jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
-\r
- jContentPane.add(jStarLabel1, null);\r
- jContentPane.add(jLabelArch, null);\r
- jContentPane.add(jLabelTagName, null);\r
- jContentPane.add(getJTextFieldTagName(), null);\r
- jContentPane.add(jLabelToolCode, null);\r
- jContentPane.add(getJTextFieldToolCode(), null);\r
- jContentPane.add(getIComboBoxToolCode(), null);\r
- jContentPane.add(getJTextFieldToolChainFamily(), null);\r
- jContentPane.add(jLabelFeatureFlag, null);\r
- jContentPane.add(getJTextFieldFeatureFlag(), null);\r
- jContentPane.add(jArchCheckBox, null);\r
- jContentPane.add(getJButtonOk(), null);\r
- jContentPane.add(getJButtonCancel(), null);\r
- }\r
- return jContentPane;\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
- *\r
- * Override actionPerformed to listen all actions\r
- * \r
- */\r
- public void actionPerformed(ActionEvent arg0) {\r
- if (arg0.getSource() == jButtonOpenFile) {\r
- selectFile();\r
- }\r
-\r
- if (arg0.getSource() == jButtonOk) {\r
- if (checkAdd()) {\r
- getCurrentSourceFiles();\r
- this.returnType = DataType.RETURN_TYPE_OK;\r
- this.setVisible(false);\r
- }\r
- }\r
-\r
- if (arg0.getSource() == jButtonCancel) {\r
- this.returnType = DataType.RETURN_TYPE_CANCEL;\r
- this.setVisible(false);\r
- }\r
- }\r
-\r
- private SourceFilesIdentification[] getCurrentSourceFiles() {\r
- String name = this.jTextFieldFileName.getText();\r
- String s[] = name.split(";");\r
- String tagName = this.jTextFieldTagName.getText();\r
- String toolCode = this.iComboBoxToolCode.getSelectedItem().toString();\r
- if (toolCode.equals(DataType.EMPTY_SELECT_ITEM)) {\r
- toolCode = "";\r
- }\r
- String tcf = this.jTextFieldToolChainFamily.getText();\r
- String featureFlag = this.jTextFieldFeatureFlag.getText();\r
- Vector<String> arch = this.jArchCheckBox.getSelectedItemsVector();\r
- sfid = new SourceFilesIdentification[s.length];\r
- for (int index = 0; index < s.length; index++) {\r
- sfid[index] = new SourceFilesIdentification(s[index], tagName, toolCode, tcf, featureFlag, arch);\r
- }\r
- return sfid;\r
- }\r
-\r
- /**\r
- Data validation for all fields\r
- \r
- @retval true - All datas are valid\r
- @retval false - At least one data is invalid\r
- \r
- **/\r
- public boolean checkAdd() {\r
- //\r
- // Check Filename\r
- //\r
- if (isEmpty(this.jTextFieldFileName.getText())) {\r
- Log.wrn("Update Source Files", "File Name must be entered!");\r
- return false;\r
- }\r
- if (!DataValidation.isFilename(this.jTextFieldFileName.getText())) {\r
- Log.wrn("Update Source Files", "Incorrect data type for File Name");\r
- return false;\r
- }\r
-\r
- //\r
- // Check TagName \r
- //\r
- if (!isEmpty(this.jTextFieldTagName.getText())) {\r
- if (!DataValidation.isTagName(this.jTextFieldTagName.getText())) {\r
- Log.wrn("Update Source Files", "Incorrect data type for Tag Name");\r
- return false;\r
- }\r
- }\r
-\r
- //\r
- // Check ToolCode \r
- //\r
- if (!isEmpty(this.jTextFieldToolCode.getText())) {\r
- if (!DataValidation.isToolCode(this.jTextFieldToolCode.getText())) {\r
- Log.wrn("Update Source Files", "Incorrect data type for Tool Code");\r
- return false;\r
- }\r
- }\r
-\r
- //\r
- // Check ToolChainFamily \r
- //\r
- if (!isEmpty(this.jTextFieldToolChainFamily.getText())) {\r
- if (!DataValidation.isToolChainFamily(this.jTextFieldToolChainFamily.getText())) {\r
- Log.wrn("Update Source Files", "Incorrect data type for Tool Chain Family");\r
- return false;\r
- }\r
- }\r
-\r
- //\r
- // Check FeatureFlag\r
- //\r
- if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
- if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
- Log.wrn("Update Source Files", "Incorrect data type for Feature Flag");\r
- return false;\r
- }\r
- }\r
-\r
- return true;\r
- }\r
-\r
- /**\r
- Display a file open browser to let user select file\r
- \r
- **/\r
- private void selectFile() {\r
- JFileChooser fc = new JFileChooser();\r
- fc.setCurrentDirectory(new File(Tools.getFilePathOnly(msaFileName)));\r
- fc.setMultiSelectionEnabled(true);\r
- int result = fc.showOpenDialog(new JPanel());\r
- if (result == JFileChooser.APPROVE_OPTION) {\r
- File f[] = fc.getSelectedFiles();\r
- String s = "";\r
- for (int index = 0; index < f.length; index++) {\r
- String relativePath = "";\r
- relativePath = Tools.getRelativePath(Tools.getFilePathOnly(f[index].getPath()), Tools.getFilePathOnly(msaFileName));\r
- if (!Tools.isEmpty(relativePath)) {\r
- relativePath = relativePath + DataType.UNIX_FILE_SEPARATOR;\r
- }\r
- s = s + relativePath + f[index].getName() + ";";\r
- }\r
- this.jTextFieldFileName.setText(s);\r
- }\r
- }\r
-\r
- public SourceFilesIdentification[] getSfid() {\r
- return sfid;\r
- }\r
-\r
- public void setSfid(SourceFilesIdentification[] sfid) {\r
- this.sfid = sfid;\r
- }\r
-}\r