Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorAndrew Gvozdev2010-03-26 17:45:42 +0000
committerAndrew Gvozdev2010-03-26 17:45:42 +0000
commit55d9c949682dec727b84773fdf315a66ab6c1195 (patch)
tree66f504d4e3b6912147b69104ec5846098a15d023 /build
parent9f723276c73c5227d4c4290fd68c17028bb845b1 (diff)
downloadorg.eclipse.cdt-55d9c949682dec727b84773fdf315a66ab6c1195.tar.gz
org.eclipse.cdt-55d9c949682dec727b84773fdf315a66ab6c1195.tar.xz
org.eclipse.cdt-55d9c949682dec727b84773fdf315a66ab6c1195.zip
bug 300539: Add ability to specify filter-path to build-options that support browsing
Patch from Baltasar Belyavsky
Diffstat (limited to 'build')
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/schema/buildDefinitions.exsd7
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java25
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java53
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java21
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionSettingsUI.java32
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/FileListControlFieldEditor.java10
6 files changed, 147 insertions, 1 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.core/schema/buildDefinitions.exsd b/build/org.eclipse.cdt.managedbuilder.core/schema/buildDefinitions.exsd
index a761e12a1fd..fecae0db712 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/schema/buildDefinitions.exsd
+++ b/build/org.eclipse.cdt.managedbuilder.core/schema/buildDefinitions.exsd
@@ -1306,6 +1306,13 @@ Additional special types exist to flag options of special relevance to the build
</restriction>
</simpleType>
</attribute>
+ <attribute name="browseFilterPath" type="string">
+ <annotation>
+ <documentation>
+ An optional value that specifies the default filter-path for the underlying file or directory browse-dialog. Macros in the value will be expanded. This attribute only applies when user chooses to browse the file-system.
+ </documentation>
+ </annotation>
+ </attribute>
<attribute name="browseFilterExtensions" type="string">
<annotation>
<documentation>
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java
index b608c6e25a7..e8eeb8ade19 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java
@@ -12,6 +12,8 @@
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.core;
+import org.eclipse.cdt.managedbuilder.macros.IOptionContextData;
+
/**
* Basic Tool / Toolchain Option type.
*
@@ -76,6 +78,8 @@ public interface IOption extends IBuildObject {
// Schema attribute names for option elements
public static final String BROWSE_TYPE = "browseType"; //$NON-NLS-1$
/** @since 7.0 */
+ public static final String BROWSE_FILTER_PATH = "browseFilterPath"; //$NON-NLS-1$
+ /** @since 7.0 */
public static final String BROWSE_FILTER_EXTENSIONS = "browseFilterExtensions"; //$NON-NLS-1$
public static final String CATEGORY = "category"; //$NON-NLS-1$
public static final String COMMAND = "command"; //$NON-NLS-1$
@@ -140,6 +144,14 @@ public interface IOption extends IBuildObject {
public IOption getSuperClass();
/**
+ * @param holder - the actual option-holder for the context-data. This holder
+ * is usually a subclass of this option's {@link #getOptionHolder() holder}.
+ * @return the option context-data to be used for macro resolution.
+ * @since 7.0
+ */
+ public IOptionContextData getOptionContextData(IHoldsOptions holder);
+
+ /**
* @return If this option is defined as an enumeration, this function returns
* the list of possible values for that enum.
*
@@ -166,6 +178,19 @@ public interface IOption extends IBuildObject {
public void setBrowseType(int type);
/**
+ * @return the setting of the browseFilterPath attribute. For options of {@link #BROWSE_FILE} and {@link #BROWSE_DIR} types.
+ * @since 7.0
+ */
+ public String getBrowseFilterPath();
+
+ /**
+ * Sets the browseFilterPath attribute. For options of {@link #BROWSE_FILE} and {@link #BROWSE_DIR} types.
+ * @param path - default filter-path for the underlying browse dialog
+ * @since 7.0
+ */
+ public void setBrowseFilterPath(String path);
+
+ /**
* @return the setting of the browseFilterExtensions attribute. For options of {@link #BROWSE_FILE} type.
* @since 7.0
*/
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java
index 821f8a4f015..5b5a35a6409 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java
@@ -36,6 +36,8 @@ import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
import org.eclipse.cdt.managedbuilder.core.ManagedOptionValueHandler;
import org.eclipse.cdt.managedbuilder.core.OptionStringValue;
import org.eclipse.cdt.managedbuilder.internal.enablement.OptionEnablementExpression;
+import org.eclipse.cdt.managedbuilder.internal.macros.OptionContextData;
+import org.eclipse.cdt.managedbuilder.macros.IOptionContextData;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.PluginVersionIdentifier;
@@ -54,6 +56,7 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
// Managed Build model attributes
private String unusedChildren;
private Integer browseType;
+ private String browseFilterPath;
private String[] browseFilterExtensions;
private List<OptionStringValue> builtIns;
private IOptionCategory category;
@@ -201,6 +204,9 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
if (option.browseType != null) {
browseType = new Integer(option.browseType.intValue());
}
+ if (option.browseFilterPath != null) {
+ browseFilterPath = option.browseFilterPath;
+ }
if (option.browseFilterExtensions != null) {
browseFilterExtensions = option.browseFilterExtensions.clone();
}
@@ -360,6 +366,9 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
browseType = new Integer(BROWSE_DIR);
}
+ // Get the browseFilterPath attribute
+ this.browseFilterPath = element.getAttribute(BROWSE_FILTER_PATH);
+
// Get the browseFilterExtensions attribute
String browseFilterExtensionsStr = element.getAttribute(BROWSE_FILTER_EXTENSIONS);
if (browseFilterExtensionsStr != null) {
@@ -599,6 +608,11 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
}
}
+ // Get the browseFilterPath attribute
+ if (element.getAttribute(BROWSE_FILTER_PATH) != null) {
+ this.browseFilterPath = element.getAttribute(BROWSE_FILTER_PATH);
+ }
+
// Get the browseFilterExtensions attribute
if (element.getAttribute(BROWSE_FILTER_EXTENSIONS) != null) {
String browseFilterExtensionsStr = element.getAttribute(BROWSE_FILTER_EXTENSIONS);
@@ -877,6 +891,11 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
element.setAttribute(BROWSE_TYPE, str);
}
+ // browse filter path
+ if (browseFilterPath != null) {
+ element.setAttribute(BROWSE_FILTER_PATH, browseFilterPath);
+ }
+
// browse filter extensions
if (browseFilterExtensions != null) {
StringBuilder sb = new StringBuilder();
@@ -930,6 +949,13 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
isDirty = false;
}
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IOption#getOptionContextData(org.eclipse.cdt.managedbuilder.core.IHoldsOptions)
+ */
+ public IOptionContextData getOptionContextData(IHoldsOptions holder) {
+ return new OptionContextData(this, holder);
+ }
+
/*
* P A R E N T A N D C H I L D H A N D L I N G
*/
@@ -1012,6 +1038,20 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
}
/* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IOption#getBrowseFilterPath()
+ */
+ public String getBrowseFilterPath() {
+ if (browseFilterPath == null) {
+ if (superClass != null) {
+ return superClass.getBrowseFilterPath();
+ } else {
+ return null;
+ }
+ }
+ return browseFilterPath;
+ }
+
+ /* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IOption#getBrowseFilterExtensions()
*/
public String[] getBrowseFilterExtensions() {
@@ -1744,6 +1784,19 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
}
/* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IOption#setBrowseFilterPath(java.lang.String)
+ */
+ public void setBrowseFilterPath(String path) {
+ if (browseFilterPath == null || !(browseFilterPath.equals(path))) {
+ browseFilterPath = path;
+ if(!isExtensionElement()) {
+ isDirty = true;
+ rebuildState = true;
+ }
+ }
+ }
+
+ /* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IOption#setBrowseFilterExtensions(java.lang.String[])
*/
public void setBrowseFilterExtensions(String[] extensions) {
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java
index 82c507c1d5a..21e9f58d2f0 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java
@@ -24,6 +24,7 @@ import org.eclipse.cdt.managedbuilder.core.IOptionApplicability;
import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.core.OptionStringValue;
+import org.eclipse.cdt.managedbuilder.macros.IOptionContextData;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.PluginVersionIdentifier;
import org.w3c.dom.Document;
@@ -294,6 +295,13 @@ public class OptionReference implements IOption {
}
/* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IOption#getOptionContextData(org.eclipse.cdt.managedbuilder.core.IHoldsOptions)
+ */
+ public IOptionContextData getOptionContextData(IHoldsOptions holder) {
+ return option.getOptionContextData(holder);
+ }
+
+ /* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IOption#getApplicableValues()
*/
public String[] getApplicableValues() {
@@ -490,6 +498,13 @@ public class OptionReference implements IOption {
}
/* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IOption#getBrowseFilterPath()
+ */
+ public String getBrowseFilterPath() {
+ return option.getBrowseFilterPath();
+ }
+
+ /* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IOption#getBrowseFilterExtensions()
*/
public String[] getBrowseFilterExtensions() {
@@ -804,6 +819,12 @@ public class OptionReference implements IOption {
}
/* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IOption#setBrowseFilterPath(java.lang.String)
+ */
+ public void setBrowseFilterPath(String path) {
+ }
+
+ /* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IOption#setBrowseFilterExtensions(java.lang.String[])
*/
public void setBrowseFilterExtensions(String[] extensions) {
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionSettingsUI.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionSettingsUI.java
index 84554a879e4..73e2d994547 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionSettingsUI.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionSettingsUI.java
@@ -12,6 +12,7 @@
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.ui.properties;
+import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -33,6 +34,8 @@ import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.IToolChain;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.internal.core.MultiResourceInfo;
+import org.eclipse.cdt.managedbuilder.macros.BuildMacroException;
+import org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider;
import org.eclipse.cdt.ui.newui.AbstractPage;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.DirectoryFieldEditor;
@@ -222,6 +225,15 @@ public class BuildOptionSettingsUI extends AbstractToolSettingUI {
switch (opt.getBrowseType()) {
case IOption.BROWSE_DIR: {
stringField = new DirectoryFieldEditor(optId, nameStr, fieldEditorParent);
+ if(opt.getBrowseFilterPath() != null) {
+ try {
+ String filterPath = ManagedBuildManager.getBuildMacroProvider().resolveValue(opt.getBrowseFilterPath(),
+ null, null, IBuildMacroProvider.CONTEXT_OPTION, opt.getOptionContextData(holder));
+ ((DirectoryFieldEditor)stringField).setFilterPath(new File(filterPath));
+ } catch(BuildMacroException bmx) {
+ ManagedBuilderUIPlugin.log(bmx);
+ }
+ }
} break;
case IOption.BROWSE_FILE: {
@@ -236,6 +248,15 @@ public class BuildOptionSettingsUI extends AbstractToolSettingUI {
return true;
}
};
+ if(opt.getBrowseFilterPath() != null) {
+ try {
+ String filterPath = ManagedBuildManager.getBuildMacroProvider().resolveValue(opt.getBrowseFilterPath(),
+ null, null, IBuildMacroProvider.CONTEXT_OPTION, opt.getOptionContextData(holder));
+ ((FileFieldEditor)stringField).setFilterPath(new File(filterPath));
+ } catch(BuildMacroException bmx) {
+ ManagedBuilderUIPlugin.log(bmx);
+ }
+ }
((FileFieldEditor)stringField).setFileExtensions(opt.getBrowseFilterExtensions());
} break;
@@ -336,8 +357,17 @@ public class BuildOptionSettingsUI extends AbstractToolSettingUI {
String tooltipHoverStr = displayFixedTip ? null : tipStr;
fieldEditor = new FileListControlFieldEditor(optId, nameStr,
tooltipHoverStr, contextId, fieldEditorParent, opt.getBrowseType());
+ if(opt.getBrowseFilterPath() != null) {
+ try {
+ String filterPath = ManagedBuildManager.getBuildMacroProvider().resolveValue(opt.getBrowseFilterPath(),
+ null, null, IBuildMacroProvider.CONTEXT_OPTION, opt.getOptionContextData(holder));
+ ((FileListControlFieldEditor)fieldEditor).setFilterPath(filterPath);
+ } catch(BuildMacroException bmx) {
+ ManagedBuilderUIPlugin.log(bmx);
+ }
+ }
((FileListControlFieldEditor)fieldEditor).setFilterExtensions(opt.getBrowseFilterExtensions());
-
+
if (pageHasToolTipBox) {
Label label = fieldEditor.getLabelControl(fieldEditorParent);
label.setData(new TipInfo(nameStr,tipStr));
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/FileListControlFieldEditor.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/FileListControlFieldEditor.java
index 6e66029da09..a0042a1a784 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/FileListControlFieldEditor.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/FileListControlFieldEditor.java
@@ -143,6 +143,16 @@ public class FileListControlFieldEditor extends FieldEditor {
}
/**
+ * Sets the filter-path for the underlying Browse dialog. Only applies when browseType is 'file' or 'dir'.
+ * @param filterPath
+ *
+ * @since 7.0
+ */
+ public void setFilterPath(String filterPath) {
+ list.setFilterPath(filterPath);
+ }
+
+ /**
* Sets the filter-extensions for the underlying Browse dialog. Only applies when browseType is 'file'.
* @param filterExtensions
*

Back to the top