/** @file\r
\r
- The file is used to create, update SourceFile of MSA/MBD file\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
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
\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.SourceFiles.SourceFilesIdentification;\r
-import org.tianocore.frameworkwizard.workspace.Workspace;\r
\r
/**\r
- The class is used to create, update SourceFile of MSA/MBD file\r
- It extends IInternalFrame\r
- \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
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 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
+ private SourceFilesIdentification sfid[] = null;\r
\r
- private JButton jButtonOk = null;\r
+ private String msaFileName = "";\r
\r
- private JButton jButtonCancel = null;\r
+ private EnumerationData ed = new EnumerationData();\r
\r
/**\r
This method initializes jTextFieldFileName \r
private JTextField getJTextFieldSourceFilesDirectory() {\r
if (jTextFieldFileName == null) {\r
jTextFieldFileName = new JTextField();\r
- jTextFieldFileName.setBounds(new java.awt.Rectangle(140, 10, 250, 20));\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
if (jButtonOpenFile == null) {\r
jButtonOpenFile = new JButton();\r
jButtonOpenFile.setText("Browse");\r
- jButtonOpenFile.setBounds(new java.awt.Rectangle(395, 10, 85, 20));\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
private JTextField getJTextFieldTagName() {\r
if (jTextFieldTagName == null) {\r
jTextFieldTagName = new JTextField();\r
- jTextFieldTagName.setBounds(new java.awt.Rectangle(140, 35, 340, 20));\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 fild to enter your customizing <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
private JTextField getJTextFieldToolCode() {\r
if (jTextFieldToolCode == null) {\r
jTextFieldToolCode = new JTextField();\r
- jTextFieldToolCode.setBounds(new java.awt.Rectangle(140, 60, 340, 20));\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
private JTextField getJTextFieldToolChainFamily() {\r
if (jTextFieldToolChainFamily == null) {\r
jTextFieldToolChainFamily = new JTextField();\r
- jTextFieldToolChainFamily.setBounds(new java.awt.Rectangle(140, 85, 340, 20));\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
private JTextField getJTextFieldFeatureFlag() {\r
if (jTextFieldFeatureFlag == null) {\r
jTextFieldFeatureFlag = new JTextField();\r
- jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(140, 110, 340, 20));\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
private JButton getJButtonOk() {\r
if (jButtonOk == null) {\r
jButtonOk = new JButton();\r
- jButtonOk.setBounds(new java.awt.Rectangle(290, 165, 90, 20));\r
+ jButtonOk.setBounds(new java.awt.Rectangle(317, 172, 90, 20));\r
jButtonOk.setText("Ok");\r
jButtonOk.addActionListener(this);\r
}\r
private JButton getJButtonCancel() {\r
if (jButtonCancel == null) {\r
jButtonCancel = new JButton();\r
- jButtonCancel.setBounds(new java.awt.Rectangle(390, 165, 90, 20));\r
+ jButtonCancel.setBounds(new java.awt.Rectangle(412, 172, 90, 20));\r
jButtonCancel.setText("Cancel");\r
jButtonCancel.addActionListener(this);\r
}\r
This is the default constructor\r
\r
**/\r
- public SourceFilesDlg(SourceFilesIdentification inSourceFilesIdentification, IFrame iFrame) {\r
+ public SourceFilesDlg(SourceFilesIdentification inSourceFilesIdentification, IFrame iFrame, String fileName) {\r
super(iFrame, true);\r
- init(inSourceFilesIdentification);\r
+ init(inSourceFilesIdentification, fileName);\r
}\r
\r
/**\r
\r
**/\r
private void init() {\r
- this.setSize(500, 235);\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
@param inSourceFiles The input data of SourceFilesDocument.SourceFiles\r
\r
**/\r
- private void init(SourceFilesIdentification inSourceFilesIdentifications) {\r
+ private void init(SourceFilesIdentification inSourceFilesIdentifications, String fileName) {\r
init();\r
- this.sfid = inSourceFilesIdentifications;\r
-\r
- if (this.sfid != null) {\r
- this.jTextFieldFileName.setText(sfid.getFilename());\r
- this.jTextFieldTagName.setText(sfid.getTagName());\r
- this.jTextFieldToolCode.setText(sfid.getToolCode());\r
- this.jTextFieldToolChainFamily.setText(sfid.getToolChainFamily());\r
- jTextFieldFeatureFlag.setText(sfid.getFeatureFlag());\r
- this.jArchCheckBox.setSelectedItems(sfid.getSupArchList());\r
+ //this.sfid = inSourceFilesIdentifications;\r
+ this.msaFileName = fileName;\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, v);\r
+ this.iComboBoxToolCode.setSelectedItem(strToolCode);\r
+\r
+ this.jTextFieldToolChainFamily.setText(inSourceFilesIdentifications.getToolChainFamily());\r
+ jTextFieldFeatureFlag.setText(inSourceFilesIdentifications.getFeatureFlag());\r
+ this.jArchCheckBox.setSelectedItems(inSourceFilesIdentifications.getSupArchList());\r
}\r
}\r
\r
private JPanel getJContentPane() {\r
if (jContentPane == null) {\r
jArchCheckBox = new ArchCheckBox();\r
- jArchCheckBox.setBounds(new java.awt.Rectangle(140, 135, 340, 20));\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(15, 110, 120, 20));\r
- jLabelFeatureFlag.setText("Feature Flag");\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(15, 60, 120, 20));\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(15, 35, 120, 20));\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(15, 135, 120, 20));\r
- jLabelArch.setText("Sup Arch List");\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(15, 85, 120, 20));\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(15, 10, 120, 20));\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(490, 185));\r
+ jContentPane.setPreferredSize(new java.awt.Dimension(505, 192));\r
\r
jContentPane.add(jLabelFileName, null);\r
jContentPane.add(getJTextFieldSourceFilesDirectory(), 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
}\r
}\r
\r
- private SourceFilesIdentification getCurrentSourceFiles() {\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.jTextFieldToolCode.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(name, tagName, toolCode, tcf, featureFlag, arch);\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
// Check Filename\r
//\r
if (isEmpty(this.jTextFieldFileName.getText())) {\r
- Log.err("File Name couldn't be empty");\r
+ Log.wrn("Update Source Files", "File Name must be entered!");\r
return false;\r
}\r
if (!DataValidation.isFilename(this.jTextFieldFileName.getText())) {\r
- Log.err("Incorrect data type for File Name");\r
+ Log.wrn("Update Source Files", "Incorrect data type for File Name");\r
return false;\r
}\r
\r
//\r
if (!isEmpty(this.jTextFieldTagName.getText())) {\r
if (!DataValidation.isTagName(this.jTextFieldTagName.getText())) {\r
- Log.err("Incorrect data type for Tag Name");\r
+ Log.wrn("Update Source Files", "Incorrect data type for Tag Name");\r
return false;\r
}\r
}\r
//\r
if (!isEmpty(this.jTextFieldToolCode.getText())) {\r
if (!DataValidation.isToolCode(this.jTextFieldToolCode.getText())) {\r
- Log.err("Incorrect data type for Tool Code");\r
+ Log.wrn("Update Source Files", "Incorrect data type for Tool Code");\r
return false;\r
}\r
}\r
//\r
if (!isEmpty(this.jTextFieldToolChainFamily.getText())) {\r
if (!DataValidation.isToolChainFamily(this.jTextFieldToolChainFamily.getText())) {\r
- Log.err("Incorrect data type for Tool Chain Family");\r
+ Log.wrn("Update Source Files", "Incorrect data type for Tool Chain Family");\r
return false;\r
}\r
}\r
//\r
if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
- Log.err("Incorrect data type for Feature Flag");\r
+ Log.wrn("Update Source Files", "Incorrect data type for Feature Flag");\r
return false;\r
}\r
}\r
\r
**/\r
private void selectFile() {\r
- JFileChooser fc = new JFileChooser(Workspace.getCurrentWorkspace());\r
-\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
- this.jTextFieldFileName.setText(fc.getSelectedFile().getName());\r
+ File f[] = fc.getSelectedFiles();\r
+ String s = "";\r
+ for (int index = 0; index < f.length; index++) {\r
+ s = s + f[index].getName() + ";";\r
+ }\r
+ this.jTextFieldFileName.setText(s);\r
}\r
}\r
\r
- public SourceFilesIdentification getSfid() {\r
+ public SourceFilesIdentification[] getSfid() {\r
return sfid;\r
}\r
\r
- public void setSfid(SourceFilesIdentification sfid) {\r
+ public void setSfid(SourceFilesIdentification[] sfid) {\r
this.sfid = sfid;\r
}\r
}\r