summaryrefslogtreecommitdiff
path: root/Tools
diff options
context:
space:
mode:
authorlhauch <lhauch@6f19259b-4bc3-4df7-8a09-765794883524>2006-08-22 00:43:38 +0000
committerlhauch <lhauch@6f19259b-4bc3-4df7-8a09-765794883524>2006-08-22 00:43:38 +0000
commitdbf5dd75da639461456ce96ea48c0f73a1d071cc (patch)
tree171830d16fa2ddf091f97947b3aeb75ea161d37a /Tools
parente7cc0547dd6a0a4aa2d9e2f31bc9b22643e8aa3a (diff)
downloadedk2-platforms-dbf5dd75da639461456ce96ea48c0f73a1d071cc.tar.xz
Adding a dialog for setting the Build Preferences in the target.txt file.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1342 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Tools')
-rw-r--r--Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java72
-rw-r--r--Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/toolchain/Preferences.java980
2 files changed, 1005 insertions, 47 deletions
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java
index d97c61a20c..ec826817da 100644
--- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java
+++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java
@@ -99,6 +99,7 @@ import org.tianocore.frameworkwizard.platform.ui.FpdPlatformDefs;
import org.tianocore.frameworkwizard.workspace.Workspace;
import org.tianocore.frameworkwizard.workspace.WorkspaceTools;
import org.tianocore.frameworkwizard.workspace.ui.SwitchWorkspace;
+import org.tianocore.frameworkwizard.toolchain.Preferences;
/**
The class is used to show main GUI of FrameworkWizard
@@ -238,11 +239,11 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
private JMenuItem jMenuItemProjectChangeWorkspace = null;
- private JMenu jMenuProjectBuildTargets = null;
+ private JMenuItem jMenuItemToolsBuildPreferences = null;
- private JCheckBoxMenuItem jCheckBoxMenuItemProjectBuildTargetsDebug = null;
+// private JCheckBoxMenuItem jCheckBoxMenuItemProjectBuildTargetsDebug = null;
- private JCheckBoxMenuItem jCheckBoxMenuItemProjectBuildTargetsRelease = null;
+// private JCheckBoxMenuItem jCheckBoxMenuItemProjectBuildTargetsRelease = null;
private JMenuItem jMenuItemToolsToolChainConfiguration = null;
@@ -746,11 +747,13 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
//
// Add sub menu items
//
- jMenuTools.add(getJMenuItemToolsToolChainConfiguration());
- jMenuTools.addSeparator();
jMenuTools.add(getJMenuItemToolsClone());
jMenuTools.add(getJMenuItemToolsCodeScan());
+ jMenuTools.addSeparator();
+
+ jMenuTools.add(getJMenuItemToolsToolChainConfiguration());
+ jMenuTools.add(getJMenuItemToolsBuildPreferences());
}
return jMenuTools;
}
@@ -1268,7 +1271,6 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
jMenuProject.add(getJMenuItemProjectUpdateFar());
jMenuProject.add(getJMenuItemProjectRemoveFar());
- jMenuProject.add(getJMenuProjectBuildTargets());
}
return jMenuProject;
}
@@ -1309,52 +1311,20 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
}
/**
- This method initializes jMenuProjectBuildTargets
+ This method initializes jMenuProjectBuildPreferences
@return javax.swing.JMenu
**/
- private JMenu getJMenuProjectBuildTargets() {
- if (jMenuProjectBuildTargets == null) {
- jMenuProjectBuildTargets = new JMenu();
- jMenuProjectBuildTargets.setText("Build Targets");
- jMenuProjectBuildTargets.setMnemonic('T');
- jMenuProjectBuildTargets.setVisible(false);
-
- jMenuProjectBuildTargets.add(getJCheckBoxMenuItemProjectBuildTargetsDebug());
- jMenuProjectBuildTargets.add(getJCheckBoxMenuItemProjectBuildTargetsRelease());
+ private JMenuItem getJMenuItemToolsBuildPreferences() {
+ if (jMenuItemToolsBuildPreferences == null) {
+ jMenuItemToolsBuildPreferences = new JMenuItem();
+ jMenuItemToolsBuildPreferences.setText("Build Preferences");
+ jMenuItemToolsBuildPreferences.setMnemonic('P');
+ jMenuItemToolsBuildPreferences.setEnabled(true);
+ jMenuItemToolsBuildPreferences.addActionListener(this);
}
- return jMenuProjectBuildTargets;
- }
-
- /**
- This method initializes jCheckBoxMenuItemProjectBuildTargetsDebug
-
- @return javax.swing.JCheckBoxMenuItem
-
- **/
- private JCheckBoxMenuItem getJCheckBoxMenuItemProjectBuildTargetsDebug() {
- if (jCheckBoxMenuItemProjectBuildTargetsDebug == null) {
- jCheckBoxMenuItemProjectBuildTargetsDebug = new JCheckBoxMenuItem();
- jCheckBoxMenuItemProjectBuildTargetsDebug.setText("Debug");
- jCheckBoxMenuItemProjectBuildTargetsDebug.setEnabled(false);
- }
- return jCheckBoxMenuItemProjectBuildTargetsDebug;
- }
-
- /**
- This method initializes jCheckBoxMenuItemProjectBuildTargetsRelease
-
- @return javax.swing.JCheckBoxMenuItem
-
- **/
- private JCheckBoxMenuItem getJCheckBoxMenuItemProjectBuildTargetsRelease() {
- if (jCheckBoxMenuItemProjectBuildTargetsRelease == null) {
- jCheckBoxMenuItemProjectBuildTargetsRelease = new JCheckBoxMenuItem();
- jCheckBoxMenuItemProjectBuildTargetsRelease.setText("Release");
- jCheckBoxMenuItemProjectBuildTargetsRelease.setEnabled(false);
- }
- return jCheckBoxMenuItemProjectBuildTargetsRelease;
+ return jMenuItemToolsBuildPreferences;
}
/**
@@ -1880,6 +1850,10 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
if (arg0.getSource() == this.jMenuItemEditFindPpi) {
// this.findPpi();
}
+
+ if (arg0.getSource() == jMenuItemToolsBuildPreferences) {
+ configBuildPreferences();
+ }
if (arg0.getSource() == this.jMenuItemProjectChangeWorkspace) {
this.changeWorkspace();
@@ -3200,6 +3174,10 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
tcc.showDialog();
}
+ private void configBuildPreferences() {
+ Preferences bt = Preferences.getInstance();
+ bt.showDialog();
+ }
/**
Clone selected item
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/toolchain/Preferences.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/toolchain/Preferences.java
new file mode 100644
index 0000000000..ded198d166
--- /dev/null
+++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/toolchain/Preferences.java
@@ -0,0 +1,980 @@
+/** @file
+ <<The file is used to update the Build Preferences file, target.txt>>
+
+ <<The program will use target.txt, the tools config file specified in that file,
+ or it will use the default tools_def.txt file, and it will also scan the
+ FrameworkDatabase.db file for certain parameters. >>
+
+ Copyright (c) 2006, Intel Corporation
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ Package Name: Tools
+ Module Name: FrameworkWizard
+
+ **/
+
+package org.tianocore.frameworkwizard.toolchain;
+
+import java.awt.event.ActionEvent;
+import java.io.*;
+import java.util.Vector;
+import java.util.Iterator;
+
+import javax.swing.*;
+// import javax.swing.JScrollPane;
+import javax.swing.JTextField;
+import javax.swing.JFrame;
+
+import org.tianocore.frameworkwizard.common.GlobalData;
+import org.tianocore.frameworkwizard.common.Tools;
+import org.tianocore.frameworkwizard.common.Log;
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;
+import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.*;
+import org.tianocore.frameworkwizard.common.ui.IFrame;
+import org.tianocore.frameworkwizard.workspace.Workspace;
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;
+import org.tianocore.frameworkwizard.platform.PlatformIdentification;
+import org.tianocore.PlatformSurfaceAreaDocument;
+
+/**
+ * The class is used to update the target.txt file.
+ *
+ * It extends IDialog
+ *
+ */
+public class Preferences extends IFrame {
+
+ // /
+ // / Define class Serial Version UID
+ // /
+ private static final long serialVersionUID = -4777906991966638888L;
+
+ private final boolean Debug = false;
+
+ //
+ // Define class members
+ //
+ private final int oneRowHeight = 20;
+
+ private final int twoRowHeight = 40;
+
+ private final int threeRowHeight = 60;
+
+ private final int sepHeight = 6;
+
+ private final int rowOne = 12;
+
+ private final int rowTwo = rowOne + oneRowHeight + sepHeight;
+
+ private final int rowThree = rowTwo + oneRowHeight + sepHeight;
+
+ private final int rowFour = rowThree + threeRowHeight + sepHeight;
+
+ private final int rowFive = rowFour + threeRowHeight + sepHeight;
+
+ private final int buttonRow = rowFive + oneRowHeight + sepHeight + sepHeight;
+
+ private final int dialogHeight = buttonRow + twoRowHeight + twoRowHeight;
+
+ private final int dialogWidth = 540;
+
+ private final int lastButtonXLoc = 430;
+
+ private final int next2LastButtonLoc = 329;
+
+ /*
+ * Define the contents for this dialog box
+ */
+ private static Preferences bTarget = null;
+
+ private WorkspaceTools wt = new WorkspaceTools();
+
+ private JFrame frame;
+
+ private JPanel jContentPane = null;
+
+ private JLabel jLabelToolsConfigFile = null;
+
+ private JTextField jTextFieldToolsConfigFile = null;
+
+ private final int toolConfigFileRow = rowOne;
+
+ private final int toolDefFileId = 3;
+
+ private JLabel jLabelActivePlatform = null;
+
+ private JComboBox jComboBoxActivePlatform = null;
+
+ private final int activePlatformId = 0;
+
+ private final int activePlatformRow = rowTwo;
+
+ private JLabel jLabelToolChainTagName = null;
+
+ private JScrollPane jScrollPaneTagName = null;
+
+ private ICheckBoxList iCheckBoxListTagName = null;
+
+ private final int toolChainTagNameRow = rowThree;
+
+ private final int tagNameId = 4;
+
+ private JLabel jLabelBuildTarget = null;
+
+ private JScrollPane jScrollPaneBuildTarget = null;
+
+ private ICheckBoxList iCheckBoxListBuildTarget = null;
+
+ private final int buildTargetRow = rowFour;
+
+ private final int buildTargetId = 1;
+
+ private JLabel jLabelTargetArch = null;
+
+ private ArchCheckBox jArchCheckBox = null;
+
+ private final int targetArchRow = rowFive;
+
+ private final int targetArchId = 2;
+
+ private JButton jButtonBrowse = null;
+
+ private JButton jButtonSave = null;
+
+ private JButton jButtonCancel = null;
+
+ private final int labelColumn = 12;
+
+ private final int labelWidth = 155;
+
+ private final int valueColumn = 168;
+
+ private final int valueWidth = 352;
+
+ private final int valueWidthShort = 260;
+
+ private final int buttonWidth = 90;
+
+ private String workspaceDir = Workspace.getCurrentWorkspace() + System.getProperty("file.separator");
+
+ private String toolsDir = Workspace.getCurrentWorkspace() + System.getProperty("file.separator") + "Tools"
+ + System.getProperty("file.separator") + "Conf";
+
+ private String defaultToolsConf = toolsDir + System.getProperty("file.separator") + "tools_def.txt";
+
+ private String targetFile = toolsDir + System.getProperty("file.separator") + "target.txt";
+
+ private String[] targetFileContents = new String[500];
+
+ // private String[] toolsConfContents;
+
+ private String[] targetLines = new String[5];
+
+ private int targetLineNumber[] = new int[5];
+
+ private String toolsConfFile;
+
+ private String toolsDefTargetNames = null;
+
+ private final int toolsDefTargetNameField = 0;
+
+ private String toolsDefTagNames = null;
+
+ private final int toolsDefTagNameField = 1;
+
+ private String toolsDefArchNames = null;
+
+ private final int toolsDefArchNameField = 2;
+
+ private String toolsDefIdentifier = null;
+
+ private int targetLineNumberMax;
+
+ private Vector<String> vArchList = null;
+
+ //
+ // Not used by UI
+ //
+ // private Preferences id = null;
+
+ // private EnumerationData ed = new EnumerationData();
+
+ /**
+ This method initializes jTextFieldToolsConfigFile
+
+ @return javax.swing.JTextField jTextFieldToolsConfigFile
+ **/
+ private JTextField getJTextFieldToolsConfigFile() {
+ if (jTextFieldToolsConfigFile == null) {
+ if (targetLines[toolDefFileId] != null) {
+ String sLine[] = targetLines[toolDefFileId].trim().split("=");
+ jTextFieldToolsConfigFile = new JTextField(sLine[1].trim());
+ } else
+ jTextFieldToolsConfigFile = new JTextField();
+
+ jTextFieldToolsConfigFile.setBounds(new java.awt.Rectangle(valueColumn, toolConfigFileRow, valueWidthShort,
+ oneRowHeight));
+ jTextFieldToolsConfigFile.setPreferredSize(new java.awt.Dimension(valueWidthShort, oneRowHeight));
+ jTextFieldToolsConfigFile
+ .setToolTipText("<html>"
+ + "Specify the name of the filename to use for specifying"
+ + "<br>the tools to use for the build. If not specified,"
+ + "<br>tools_def.txt will be used for the build. This file"
+ + "<br>MUST be located in the WORKSPACE/Tools/Conf directory.</html>");
+
+ }
+ return jTextFieldToolsConfigFile;
+ }
+
+ /**
+ * This method initializes jComboBoxActivePlatform
+ *
+ * @return javax.swing.JComboBox jComboBoxActivePlatform
+ *
+ */
+ private JComboBox getActivePlatform() {
+ Vector<PlatformIdentification> vPlatformId = wt.getAllPlatforms();
+
+ if (jComboBoxActivePlatform == null) {
+ jComboBoxActivePlatform = new JComboBox();
+ jComboBoxActivePlatform.setBounds(new java.awt.Rectangle(valueColumn, activePlatformRow, valueWidth,
+ oneRowHeight));
+ jComboBoxActivePlatform.setPreferredSize(new java.awt.Dimension(valueWidth, oneRowHeight));
+ jComboBoxActivePlatform.setToolTipText("<html>Select &quot;Do Not Set&quot; if you want to build a platform"
+ + "<br>from the directory where the FPD file exists,"
+ + "<br>otherwise scroll down to select the platform.</html>");
+
+ /*
+ * Generate the data, selecting what is in target.txt
+ */
+ jComboBoxActivePlatform.addItem("Do Not Set");
+ Iterator<PlatformIdentification> iter = vPlatformId.iterator();
+ while (iter.hasNext()) {
+ PlatformIdentification item = iter.next();
+ String path = item.getPath().trim();
+ String str = path.substring(workspaceDir.length(), path.length());
+ str.replace(System.getProperty("file.separator"), "/");
+ jComboBoxActivePlatform.addItem(str.trim());
+ }
+ if (targetLines[activePlatformId] == null)
+ jComboBoxActivePlatform.setSelectedItem("Do Not Set");
+ else
+ jComboBoxActivePlatform.setSelectedItem(targetLines[activePlatformId]);
+ }
+ return jComboBoxActivePlatform;
+ }
+
+ /**
+ * This method initializes jScrollPaneTagName
+ *
+ * @return javax.swing.JScrollPane jScrollPaneTagName
+ *
+ */
+ private JScrollPane getJScrollPaneTagName() {
+
+ if (jScrollPaneTagName == null) {
+ jScrollPaneTagName = new JScrollPane();
+ jScrollPaneTagName.setBounds(new java.awt.Rectangle(valueColumn, toolChainTagNameRow, valueWidth,
+ threeRowHeight));
+ jScrollPaneTagName.setPreferredSize(new java.awt.Dimension(valueWidth, threeRowHeight));
+ jScrollPaneTagName.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ jScrollPaneTagName.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+ jScrollPaneTagName.setViewportView(getICheckBoxListTagName());
+ jScrollPaneTagName.setToolTipText("<html>"
+ + "Specify the TagName(s) from the tool configuration file to use"
+ + "<br>for your builds. If not specified, all applicable TagName"
+ + " <br>tools will be used for the build.</html>");
+ jScrollPaneTagName.setVisible(true);
+
+ }
+ return jScrollPaneTagName;
+ }
+
+ private ICheckBoxList getICheckBoxListTagName() {
+ if (iCheckBoxListTagName == null) {
+ iCheckBoxListTagName = new ICheckBoxList();
+
+ if (toolsDefTagNames != null) {
+ toolsDefTagNames.trim();
+ String aTagNames[] = toolsDefTagNames.trim().split(" ");
+ Vector<String> vTags = new Vector<String>();
+ for (int i = 0; i < aTagNames.length; i++) {
+ vTags.add(aTagNames[i]);
+ }
+ iCheckBoxListTagName.setAllItems(vTags);
+ } else {
+ Vector<String> defaultTags = stringToVector("MYTOOLS");
+ iCheckBoxListTagName.setAllItems(defaultTags);
+ }
+
+ iCheckBoxListTagName.setAllItemsUnchecked();
+ iCheckBoxListTagName.setToolTipText("<html>"
+ + "Specify the TagName(s) from the tool configuration file to use"
+ + "<br>for your builds. If not specified, all applicable TagName"
+ + " <br>tools will be used for the build.</html>");
+ Vector<String> vSelectedTags = new Vector<String>();
+ if (targetLines[tagNameId] != null) {
+ targetLines[tagNameId].trim();
+ String targetTags[] = targetLines[tagNameId].trim().split(" ");
+ for (int j = 0; j < targetTags.length; j++)
+ vSelectedTags.add(targetTags[j]);
+ iCheckBoxListTagName.initCheckedItem(true, vSelectedTags);
+ }
+ }
+ return iCheckBoxListTagName;
+ }
+
+ /**
+ * This method initializes jScrollPaneBuildTarget
+ *
+ * @return javax.swing.JComboBox jScrollPaneBuildTarget
+ *
+ */
+ private JScrollPane getJScrollPaneBuildTarget() {
+ if (jScrollPaneBuildTarget == null) {
+ jScrollPaneBuildTarget = new JScrollPane();
+ jScrollPaneBuildTarget.setBounds(new java.awt.Rectangle(valueColumn, buildTargetRow, valueWidth,
+ threeRowHeight));
+ jScrollPaneBuildTarget.setPreferredSize(new java.awt.Dimension(valueWidth, threeRowHeight));
+ jScrollPaneBuildTarget.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ jScrollPaneBuildTarget.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+ jScrollPaneBuildTarget.setViewportView(getICheckBoxListBuildTarget());
+ jScrollPaneBuildTarget.setVisible(true);
+ jScrollPaneBuildTarget.setToolTipText("<html>"
+ + "Select the TARGET Names that you want to build, such as<BR>"
+ + "BUILD or BUILD and RELEASE"
+ + "<br>If you do not set any of these, all available targets"
+ + "<br>will be built.</html>");
+
+ }
+ return jScrollPaneBuildTarget;
+ }
+
+ private ICheckBoxList getICheckBoxListBuildTarget() {
+ if (iCheckBoxListBuildTarget == null) {
+
+ String aBuildTargets[] = toolsDefTargetNames.trim().split(" ");
+ Vector<String> vBuildTargets = new Vector<String>();
+ for (int i = 0; i < aBuildTargets.length; i++) {
+ vBuildTargets.add(aBuildTargets[i]);
+ }
+ iCheckBoxListBuildTarget = new ICheckBoxList();
+ iCheckBoxListBuildTarget.setAllItems(vBuildTargets);
+ iCheckBoxListBuildTarget.setAllItemsUnchecked();
+ iCheckBoxListBuildTarget.setToolTipText("<html>"
+ + "Select the TARGET Names that you want to build, such as<BR>"
+ + "BUILD or BUILD and RELEASE"
+ + "<br>If you do not set any of these, all available targets"
+ + "<br>will be built.</html>");
+
+ Vector<String> vSelectedTags = new Vector<String>();
+ if (targetLines[buildTargetId] != null) {
+ targetLines[buildTargetId].trim();
+ String targetTags[] = targetLines[buildTargetId].trim().split(" ");
+ for (int j = 0; j < targetTags.length; j++)
+ vSelectedTags.add(targetTags[j]);
+ iCheckBoxListBuildTarget.initCheckedItem(true, vSelectedTags);
+ }
+ }
+ return iCheckBoxListBuildTarget;
+ }
+
+ /**
+ This method initializes jButtonBrowse
+
+ @return javax.swing.JButton
+ **/
+ private JButton getJButtonBrowse() {
+ if (jButtonBrowse == null) {
+ jButtonBrowse = new JButton();
+ jButtonBrowse
+ .setBounds(new java.awt.Rectangle(lastButtonXLoc, toolConfigFileRow, buttonWidth, oneRowHeight));
+ jButtonBrowse.setText("Browse");
+ jButtonBrowse.setPreferredSize(new java.awt.Dimension(buttonWidth, oneRowHeight));
+ jButtonBrowse.addActionListener(new AbstractAction() {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public void actionPerformed(ActionEvent e) {
+ //
+ // Select files from current workspace
+ //
+ String dirPrefix = toolsDir + System.getProperty("file.separator");
+ JFileChooser chooser = new JFileChooser(dirPrefix);
+ File theFile = null;
+ // String headerDest = null;
+
+ chooser.setMultiSelectionEnabled(false);
+ chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
+ int retval = chooser.showOpenDialog(frame);
+ if (retval == JFileChooser.APPROVE_OPTION) {
+
+ theFile = chooser.getSelectedFile();
+ String file = theFile.getPath();
+ if (!file.startsWith(dirPrefix)) {
+ JOptionPane.showMessageDialog(frame, "You can only select files in the Tools"
+ + System.getProperty("file.separator")
+ + "Conf directory!");
+
+ return;
+ }
+
+ jTextFieldToolsConfigFile.setText("Tools/Conf/" + theFile.getName());
+ } else {
+ return;
+ }
+ }
+ });
+ }
+ return jButtonBrowse;
+ }
+
+ /**
+ * This method initializes jButtonOk
+ *
+ * @return javax.swing.JButton
+ *
+ */
+ private JButton getJButtonSave() {
+ if (jButtonSave == null) {
+ jButtonSave = new JButton();
+ jButtonSave.setBounds(new java.awt.Rectangle(next2LastButtonLoc, buttonRow, buttonWidth, oneRowHeight));
+ jButtonSave.setText("Save");
+ jButtonSave.addActionListener(this);
+ }
+ return jButtonSave;
+ }
+
+ /**
+ * This method initializes jButtonCancel
+ *
+ * @return javax.swing.JButton
+ *
+ */
+ private JButton getJButtonCancel() {
+ if (jButtonCancel == null) {
+ jButtonCancel = new JButton();
+ jButtonCancel.setBounds(new java.awt.Rectangle(lastButtonXLoc, buttonRow, buttonWidth, oneRowHeight));
+ jButtonCancel.setText("Cancel");
+ jButtonCancel.addActionListener(this);
+ }
+ return jButtonCancel;
+ }
+
+ public static void main(String[] args) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public static Preferences getInstance() {
+ if (bTarget == null) {
+ bTarget = new Preferences();
+ }
+ return bTarget;
+ }
+
+ /**
+ * This is the default constructor
+ */
+ public Preferences() {
+ super();
+ init();
+ }
+
+ /**
+ * This method initializes this
+ *
+ */
+ private void init() {
+
+ for (int i = 0; i < 5; i++) {
+ targetLines[i] = null;
+ targetLineNumber[i] = -1;
+ }
+ initReadFiles();
+ this.setSize(dialogWidth, dialogHeight);
+ this.setContentPane(getJContentPane());
+ this.setTitle("Build Preferences [" + toolsDefIdentifier + "]");
+ this.setDefaultCloseOperation(IFrame.EXIT_ON_CLOSE);
+ this.centerWindow();
+ this.setVisible(true);
+ }
+
+ /**
+ * This method initializes this Fill values to all fields if these values are
+ * not empty
+ *
+ * @param initReadFiles
+ *
+ */
+ private void initReadFiles() {
+ /*
+ * TODO
+ * Read Current target.txt file first
+ * Read TOOL_CHAIN_CONF file if specified, otherwise use tools_def.txt
+ */
+
+ readTargetTxtFile();
+ boolean haveBuildTargets = readToolDefinitionFile();
+ if (!haveBuildTargets) {
+ // Lookup Build Targets from the platforms
+ readPlatformFileBuildTargets();
+ }
+ }
+
+ private void readPlatformFileBuildTargets() {
+ Vector<PlatformIdentification> vPlatformId = wt.getAllPlatforms();
+ String sBuildTargets = "";
+
+ // foreach platform, build a list of BuildTargets
+ Iterator<PlatformIdentification> iter = vPlatformId.iterator();
+ while (iter.hasNext()) {
+ PlatformIdentification item = iter.next();
+ PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd = GlobalData.openingPlatformList
+ .getOpeningPlatformById(
+ item)
+ .getXmlFpd();
+ sBuildTargets += fpd.getPlatformDefinitions().getBuildTargets().toString() + " ";
+ }
+ String allTargets[] = sBuildTargets.trim().split(" ");
+ for (int i = 0; i < allTargets.length; i++) {
+ if (!toolsDefTargetNames.contains(allTargets[i])) {
+ toolsDefTargetNames += allTargets[i] + " ";
+ }
+ }
+ }
+
+ private boolean readToolDefinitionFile() {
+
+ // Parse the tool definition file looking for targets and architectures
+ toolsConfFile = null;
+ boolean buildTargetsExist = true;
+
+ if (targetLines[toolDefFileId] != null) {
+ String[] result = new String[2];
+ targetLines[toolDefFileId].trim();
+ result = (targetLines[toolDefFileId]).split("=");
+ String resString = (Tools.convertPathToCurrentOsType(result[1])).trim();
+ toolsConfFile = workspaceDir.trim() + resString.trim();
+ File toolsDefFile = new File(toolsConfFile);
+ if (!toolsDefFile.exists()) {
+ JOptionPane.showMessageDialog(this, "<html>" + "Tool Definition file, " + toolsConfFile
+ + "<br>specified in the target.txt file does not exist!"
+ + "<br>Using the default Tool Definition File:<br>"
+ + defaultToolsConf);
+ toolsConfFile = defaultToolsConf;
+ }
+ } else {
+ toolsConfFile = defaultToolsConf;
+ }
+ String[] toolsDefFields = new String[5];
+ for (int i = 0; i < 5; i++)
+ toolsDefFields[i] = null;
+ File toolDefFile = new File(toolsConfFile);
+ if (toolDefFile.exists()) {
+ try {
+ FileReader fileReader = new FileReader(toolDefFile);
+ BufferedReader reader = new BufferedReader(fileReader);
+ String rLine = null;
+ String result[];
+ int lineCounter = 0;
+ while ((rLine = reader.readLine()) != null) {
+
+ if (rLine.startsWith("IDENTIFIER")) {
+ result = rLine.split("=");
+ toolsDefIdentifier = (result[1]).trim();
+ } else if ((!rLine.startsWith("#")) && (rLine.contains("="))) {
+ result = rLine.split("=");
+ toolsDefFields = ((result[0]).trim()).split("_");
+ if (toolsDefTargetNames == null) {
+ toolsDefTargetNames = (toolsDefFields[toolsDefTargetNameField]).trim() + " ";
+ } else if (!toolsDefTargetNames.contains((toolsDefFields[toolsDefTargetNameField]).trim())) {
+ toolsDefTargetNames += (toolsDefFields[toolsDefTargetNameField]).trim() + " ";
+ }
+ if (toolsDefTagNames == null) {
+ toolsDefTagNames = (toolsDefFields[toolsDefTagNameField]).trim() + " ";
+ } else if (!toolsDefTagNames.contains((toolsDefFields[toolsDefTagNameField]).trim())) {
+ toolsDefTagNames += (toolsDefFields[toolsDefTagNameField]).trim() + " ";
+ }
+ if (toolsDefArchNames == null) {
+ toolsDefArchNames = (toolsDefFields[toolsDefArchNameField]).trim() + " ";
+ } else if (!toolsDefArchNames.contains((toolsDefFields[toolsDefArchNameField]).trim())) {
+ toolsDefArchNames += (toolsDefFields[toolsDefArchNameField]).trim() + " ";
+ }
+ }
+ lineCounter++;
+ }
+ reader.close();
+ if (!toolsDefTargetNames.matches("[A-Z]+")) {
+ toolsDefTargetNames = toolsDefTargetNames.replace("* ", "").trim();
+ if (Debug)
+ System.out.println("tools_def file does not define build targets: '" + toolsDefTargetNames
+ + "'");
+ buildTargetsExist = false;
+ }
+ } catch (IOException e) {
+ Log.log(toolsConfFile + " Read Error ", e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ return buildTargetsExist;
+ }
+
+ private void readTargetTxtFile() {
+ File tFile = new File(targetFile);
+
+ if (tFile.exists()) {
+ try {
+ FileReader fileReader = new FileReader(targetFile);
+ BufferedReader reader = new BufferedReader(fileReader);
+ targetLineNumberMax = 0;
+ String rLine = null;
+ while ((rLine = reader.readLine()) != null) {
+ targetFileContents[targetLineNumberMax] = rLine;
+ if (rLine.startsWith("ACTIVE_PLATFORM")) {
+ // Only one active platform is permitted!
+ targetLines[activePlatformId] = rLine;
+ targetLineNumber[activePlatformId] = targetLineNumberMax;
+ }
+ if ((rLine.startsWith("TARGET" + " ")) || (rLine.startsWith("TARGET" + "\t"))
+ || (rLine.startsWith("TARGET="))) {
+ // Handle multiple Target Names
+ if (rLine.contains(","))
+ targetLines[buildTargetId] = rLine.trim().replaceAll(",", " ");
+ else
+ targetLines[buildTargetId] = rLine.trim();
+ targetLineNumber[buildTargetId] = targetLineNumberMax;
+ }
+ if (rLine.startsWith("TARGET_ARCH")) {
+ // Handle multiple Target Architectures
+ if (rLine.contains(","))
+ targetLines[targetArchId] = rLine.trim().replaceAll(",", " ");
+ else
+ targetLines[targetArchId] = rLine.trim();
+ targetLineNumber[targetArchId] = targetLineNumberMax;
+ }
+ if (rLine.startsWith("TOOL_CHAIN_CONF")) {
+ // Only one file is permitted
+ targetLines[toolDefFileId] = rLine.trim();
+ targetLineNumber[toolDefFileId] = targetLineNumberMax;
+ }
+
+ if (rLine.startsWith("TOOL_CHAIN_TAG")) {
+ // Handle multiple Tool TagNames
+ if (rLine.contains(","))
+ targetLines[tagNameId] = rLine.trim().replaceAll(",", " ");
+ else
+ targetLines[tagNameId] = rLine.trim();
+ targetLineNumber[tagNameId] = targetLineNumberMax;
+ }
+ targetLineNumberMax++;
+ }
+ reader.close();
+ String archLine[] = new String[2];
+ if (targetLines[targetArchId] != null) {
+ if (targetLines[targetArchId].contains("=")) {
+ if (targetLines[targetArchId].contains(","))
+ targetLines[targetArchId] = targetLines[targetArchId].trim().replaceAll(",", " ");
+ if (targetLines[targetArchId].length() > 0)
+ archLine = targetLines[targetArchId].trim().split("=");
+ vArchList = stringToVector(archLine[1]);
+ }
+ }
+
+ if (Debug == true)
+ for (int i = 0; i <= tagNameId; i++)
+ System.out.println("targetLines[" + i + "] contains: " + targetLines[i] + " index is: "
+ + targetLineNumber[i]);
+
+ } catch (IOException e) {
+ Log.log(this.targetFile + " Read Error ", e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ /**
+ * This method initializes jContentPane
+ *
+ * @return javax.swing.JPanel jContentPane
+ *
+ */
+ private JPanel getJContentPane() {
+ if (jContentPane == null) {
+ jLabelToolsConfigFile = new JLabel();
+ jLabelToolsConfigFile.setBounds(new java.awt.Rectangle(labelColumn, toolConfigFileRow, labelWidth,
+ oneRowHeight));
+ jLabelToolsConfigFile.setText("Tool Chain Definition File");
+ jLabelActivePlatform = new JLabel();
+ jLabelActivePlatform.setText("Select Active Platform");
+ jLabelActivePlatform.setBounds(new java.awt.Rectangle(labelColumn, activePlatformRow, labelWidth,
+ oneRowHeight));
+ jLabelToolChainTagName = new JLabel();
+ jLabelToolChainTagName.setBounds(new java.awt.Rectangle(labelColumn, toolChainTagNameRow, labelWidth,
+ oneRowHeight));
+ jLabelToolChainTagName.setText("Select Tool Tag Name");
+ jLabelBuildTarget = new JLabel();
+ jLabelBuildTarget.setBounds(new java.awt.Rectangle(labelColumn, buildTargetRow, labelWidth, oneRowHeight));
+ jLabelBuildTarget.setText("Select Build Target");
+ jLabelTargetArch = new JLabel();
+ jLabelTargetArch.setBounds(new java.awt.Rectangle(labelColumn, targetArchRow, labelWidth, oneRowHeight));
+ jLabelTargetArch.setText("Build Architectures");
+ jArchCheckBox = new ArchCheckBox();
+ jArchCheckBox.setBounds(new java.awt.Rectangle(valueColumn, targetArchRow, valueWidth, oneRowHeight));
+ jArchCheckBox.setPreferredSize(new java.awt.Dimension(valueWidth, oneRowHeight));
+
+ jContentPane = new JPanel();
+ jContentPane.setLayout(null);
+ jContentPane.setPreferredSize(new java.awt.Dimension(dialogWidth - 10, dialogHeight - 10));
+
+ jContentPane.add(jLabelToolsConfigFile, null);
+ jContentPane.add(getJTextFieldToolsConfigFile(), null);
+ jContentPane.add(getJButtonBrowse(), null);
+
+ jContentPane.add(jLabelActivePlatform, null);
+ jContentPane.add(getActivePlatform(), null);
+
+ jContentPane.add(jLabelToolChainTagName, null);
+ jContentPane.add(getJScrollPaneTagName(), null);
+
+ jContentPane.add(jLabelBuildTarget, null);
+ jContentPane.add(getJScrollPaneBuildTarget(), null);
+
+ jContentPane.add(jLabelTargetArch, null);
+
+ jArchCheckBox.setSelectedItems(vArchList);
+ jContentPane.add(jArchCheckBox, null);
+
+ jContentPane.add(getJButtonSave(), null);
+ jContentPane.add(getJButtonCancel(), null);
+ }
+ return jContentPane;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+ *
+ * Override actionPerformed to listen all actions
+ *
+ */
+ public void actionPerformed(ActionEvent arg0) {
+
+ if (arg0.getSource() == jButtonBrowse) {
+ // TODO: Call file browser, starting in $WORKSPACE/Tools/Conf directory
+
+ }
+
+ if (arg0.getSource() == jButtonSave) {
+ saveTargetFile();
+ JOptionPane.showMessageDialog(this, "<html>The target.txt file has been saved!"
+ + "<br>A copy of the original file, target.txt.bak has"
+ + "<br>also been created.</html>");
+ this.exit();
+ }
+
+ if (arg0.getSource() == jButtonCancel) {
+ this.exit();
+ }
+ }
+
+ private void updateActivePlatform() {
+ int lineAP;
+ if (targetLines[activePlatformId] != null) {
+ lineAP = targetLineNumber[activePlatformId];
+ } else {
+ lineAP = targetLineNumberMax;
+ targetLineNumber[activePlatformId] = lineAP;
+ targetLineNumberMax++;
+ }
+ if (jComboBoxActivePlatform.getSelectedItem() == "Do Not Set") {
+ targetFileContents[lineAP] = "";
+ targetLines[activePlatformId] = "";
+ } else {
+ targetFileContents[lineAP] = "ACTIVE_PLATFORM = " + jComboBoxActivePlatform.getSelectedItem() + "\r\n";
+ targetLines[activePlatformId] = targetFileContents[lineAP];
+ }
+ if (Debug)
+ System.out.println("Active Platform: " + targetFileContents[lineAP]);
+ }
+
+ private void updateToolDefFile() {
+ int lineTDF;
+ if (targetLines[toolDefFileId] != null) {
+ lineTDF = targetLineNumber[toolDefFileId];
+ } else {
+ lineTDF = targetLineNumberMax;
+ targetLineNumber[toolDefFileId] = lineTDF;
+ targetLineNumberMax++;
+ }
+ if (Debug)
+ System.out.println("Tool Config File: " + jTextFieldToolsConfigFile.getText());
+ if (jTextFieldToolsConfigFile.getText() == null) {
+ targetFileContents[lineTDF] = "";
+ targetLines[toolDefFileId] = "";
+ } else {
+ targetFileContents[lineTDF] = "TOOL_CHAIN_CONF = " + jTextFieldToolsConfigFile.getText() + "\r\n";
+ targetLines[toolDefFileId] = targetFileContents[lineTDF];
+ }
+ }
+
+ private void updateToolTagNames() {
+ String sTagNames = vectorToString(iCheckBoxListTagName.getAllCheckedItemsString());
+ int lineTTN;
+
+ if (targetLines[tagNameId] != null) {
+ lineTTN = targetLineNumber[tagNameId];
+ } else {
+ lineTTN = targetLineNumberMax;
+ targetLineNumber[tagNameId] = lineTTN;
+ targetLineNumberMax++;
+ }
+
+ if (Debug)
+ System.out.println("Tag Name(s): " + sTagNames);
+
+ if (sTagNames.length() > 0) {
+ targetFileContents[lineTTN] = "TOOL_CHAIN_TAG = " + sTagNames + "\r\n";
+ targetLines[tagNameId] = targetFileContents[lineTTN];
+ } else {
+ targetFileContents[lineTTN] = "";
+ targetLines[tagNameId] = "";
+ }
+ }
+
+ private void updateBuildTargets() {
+ String sBuildTargets = vectorToString(iCheckBoxListBuildTarget.getAllCheckedItemsString());
+ int lineBT;
+
+ if (targetLines[buildTargetId] != null) {
+ lineBT = targetLineNumber[buildTargetId];
+ } else {
+ lineBT = targetLineNumberMax;
+ targetLineNumber[buildTargetId] = lineBT;
+ targetLineNumberMax++;
+ }
+ if (Debug)
+ System.out.println("Build Target(s): " + sBuildTargets);
+ if (sBuildTargets.length() > 0) {
+ targetFileContents[lineBT] = "TARGET = " + sBuildTargets + "\r\n";
+ targetLines[buildTargetId] = targetFileContents[lineBT];
+ } else {
+ targetFileContents[lineBT] = "";
+ targetLines[buildTargetId] = "";
+ }
+
+ }
+
+ private void updateArchitectures() {
+ String sArchList = jArchCheckBox.getSelectedItemsString().trim();
+
+ if (Debug)
+ System.out.println("Architectures: " + sArchList);
+
+ int lineSA;
+ if (targetLines[targetArchId] != null) {
+ lineSA = targetLineNumber[targetArchId];
+ } else {
+ lineSA = targetLineNumberMax;
+ targetLineNumber[targetArchId] = lineSA;
+ targetLineNumberMax++;
+ }
+ if (sArchList == "") {
+ targetFileContents[lineSA] = "";
+ targetLines[targetArchId] = "";
+ } else {
+ targetFileContents[lineSA] = "TARGET_ARCH = " + sArchList + "\r\n";
+ targetLines[targetArchId] = targetFileContents[lineSA];
+ }
+
+ }
+
+ private String vectorToString(Vector<String> v) {
+ String s = " ";
+ for (int i = 0; i < v.size(); ++i) {
+ s += v.get(i);
+ s += " ";
+ }
+ return s.trim();
+ }
+
+ protected Vector<String> stringToVector(String s) {
+ if (s == null) {
+ return null;
+ }
+ String[] sArray = s.split(" ");
+ Vector<String> v = new Vector<String>();
+ for (int i = 0; i < sArray.length; ++i) {
+ v.add(sArray[i]);
+ }
+ return v;
+ }
+
+ private void saveTargetFile() {
+ updateActivePlatform();
+ updateToolDefFile();
+ updateToolTagNames();
+ updateBuildTargets();
+ updateArchitectures();
+
+ try {
+ copy(targetFile, targetFile + ".bak");
+ FileWriter fileWriter = new FileWriter(targetFile);
+ BufferedWriter writer = new BufferedWriter(fileWriter);
+ for (int i = 0; i < targetLineNumberMax; i++) {
+ writer.write(targetFileContents[i] + "\r\n");
+ }
+ writer.close();
+ } catch (IOException e) {
+ Log.err(toolsConfFile + " Write Error ", e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ private void copy(String txtFile, String bakFile) throws IOException {
+ File fromFile = new File(txtFile);
+ File toFile = new File(bakFile);
+ FileInputStream fromTxt = null;
+ FileOutputStream toBak = null;
+ try {
+ fromTxt = new FileInputStream(fromFile);
+ toBak = new FileOutputStream(toFile);
+ byte[] buffer = new byte[4096];
+ int bytes_read;
+ while ((bytes_read = fromTxt.read(buffer)) != -1) {
+ toBak.write(buffer, 0, bytes_read);
+ }
+ } finally {
+ if (fromTxt != null)
+ try {
+ fromTxt.close();
+ } catch (IOException e) {
+ Log.err(toolsConfFile + " Read Error ", e.getMessage());
+
+ }
+ if (toBak != null)
+ try {
+ toBak.close();
+ } catch (IOException e) {
+ Log.err(toolsConfFile + ".bak Write Error ", e.getMessage());
+ }
+ }
+ }
+
+ private void exit() {
+ this.setVisible(false);
+ if (bTarget != null) {
+ bTarget.dispose();
+ }
+ }
+}