Author: hibou Date: Tue Oct 27 21:55:44 2009 New Revision: 830356 URL: http://svn.apache.org/viewvc?rev=830356&view=rev Log: IVYDE-152 : Support for Eclipse variables - make the ivy settings path editor and the property file editor support eclipse varibles - move the settigns editor so it's own tab as it is bigger now - add some test projects to test the feature This will also resolve IVYDE-183 and IVYDE-138
Added: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/PathEditor.java (with props) ant/ivy/ivyde/trunk/test/variables/ (with props) ant/ivy/ivyde/trunk/test/variables-props/ (with props) ant/ivy/ivyde/trunk/test/variables-props/.classpath ant/ivy/ivyde/trunk/test/variables-props/.project ant/ivy/ivyde/trunk/test/variables-props/ivy.xml (with props) ant/ivy/ivyde/trunk/test/variables-props/src/ ant/ivy/ivyde/trunk/test/variables/.classpath ant/ivy/ivyde/trunk/test/variables/.project ant/ivy/ivyde/trunk/test/variables/ivy.xml (with props) ant/ivy/ivyde/trunk/test/variables/src/ Modified: ant/ivy/ivyde/trunk/CHANGES.txt ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/META-INF/MANIFEST.MF ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfAdapter.java ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerState.java ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathUtil.java ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvySettingsSetup.java ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvydeContainerPage.java ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/IvyFilePathText.java ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/SettingsEditor.java ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java Modified: ant/ivy/ivyde/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/CHANGES.txt?rev=830356&r1=830355&r2=830356&view=diff ============================================================================== --- ant/ivy/ivyde/trunk/CHANGES.txt (original) +++ ant/ivy/ivyde/trunk/CHANGES.txt Tue Oct 27 21:55:44 2009 @@ -10,6 +10,7 @@ - NEW: Add an option in the container to automatically laucnh a resolve before each launch (IVYDE-204) - NEW: "Reverse Dependency Explorer" View for synchronizing revisions across multiple projects in a workspace (IVYDE-195) (thanks to Jon Schneider) - NEW: Make the Ivy console filter on the logging level (IVYDE-205) +- NEW: Support for Eclipse variables (IVYDE-152) - IMPROVE: Wrap cache cleaning in a job so that it does not block the workspace (IVYDE-207) (thanks to Jon Schneider) - IMPROVE: Allow workspace resolver to skip version matcher (IVYDE-187) (thanks to Phillip Webb) Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/META-INF/MANIFEST.MF URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/META-INF/MANIFEST.MF?rev=830356&r1=830355&r2=830356&view=diff ============================================================================== --- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/META-INF/MANIFEST.MF (original) +++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/META-INF/MANIFEST.MF Tue Oct 27 21:55:44 2009 @@ -35,6 +35,8 @@ org.eclipse.help, org.eclipse.wst.xml.core, org.eclipse.debug.core, - org.eclipse.jdt.launching + org.eclipse.jdt.launching, + org.eclipse.debug.ui, + org.eclipse.core.variables Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: J2SE-1.4 Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfAdapter.java URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfAdapter.java?rev=830356&r1=830355&r2=830356&view=diff ============================================================================== --- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfAdapter.java (original) +++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfAdapter.java Tue Oct 27 21:55:44 2009 @@ -44,6 +44,8 @@ private static final String PROJECT_SCHEME_PREFIX = "project://"; + private static final int PROJECT_SCHEME_PREFIX_LENGTH = PROJECT_SCHEME_PREFIX.length(); + private IvyClasspathContainerConfAdapter() { // utility class } @@ -181,7 +183,9 @@ /** * Read old configuration that were based on relative urls, like: "file://./ivysettings.xml" or - * "file:./ivysettings.xml". This kind of URL "project:///ivysettings.xml" should be used now. + * "file:./ivysettings.xml", and also URL like "project:///ivysettings.xml". + * <p> + * It will be replaced by the Eclipse variable ${workspace_loc: ... } * * @param value * the value to read @@ -191,6 +195,13 @@ if (FakeProjectManager.isFake(conf.getJavaProject())) { return value; } + if (value.startsWith(PROJECT_SCHEME_PREFIX)) { + String path = value.substring(PROJECT_SCHEME_PREFIX_LENGTH); + if (path.startsWith("/")) { + path = conf.getJavaProject().getProject().getName() + path; + } + return "${workspace_loc:" + path + "}"; + } URL url; try { url = new URL(value); @@ -206,7 +217,8 @@ if (urlpath != null && urlpath.startsWith("./")) { urlpath = urlpath.substring(1); } - return PROJECT_SCHEME_PREFIX + urlpath; + conf.getJavaProject().getProject().getName(); + return "${workspace_loc:" + conf.getJavaProject().getProject().getName() + urlpath + "}"; } private static void checkNonNullConf(IvyClasspathContainerConfiguration conf) { @@ -214,9 +226,9 @@ IvySettingsSetup settingsSetup = conf.getIvySettingsSetup(); ContainerMappingSetup prefStoreMappingSetup = IvyPlugin.getPreferenceStoreHelper() .getContainerMappingSetup(); - if (settingsSetup.getPropertyFiles() == null) { + if (settingsSetup.getRawPropertyFiles() == null) { settingsSetup.setPropertyFiles(IvyPlugin.getPreferenceStoreHelper() - .getIvySettingsSetup().getPropertyFiles()); + .getIvySettingsSetup().getRawPropertyFiles()); } if (mappingSetup.getAcceptedTypes() == null) { mappingSetup.setAcceptedTypes(prefStoreMappingSetup.getAcceptedTypes()); @@ -244,9 +256,9 @@ append(path, "confs", conf.getConfs()); if (conf.isSettingsProjectSpecific()) { IvySettingsSetup setup = conf.getIvySettingsSetup(); - append(path, "ivySettingsPath", setup.getIvySettingsPath()); + append(path, "ivySettingsPath", setup.getRawIvySettingsPath()); append(path, "loadSettingsOnDemand", setup.isLoadSettingsOnDemand()); - append(path, "propertyFiles", setup.getPropertyFiles()); + append(path, "propertyFiles", setup.getRawPropertyFiles()); } if (conf.isRetrieveProjectSpecific()) { RetrieveSetup setup = conf.getRetrieveSetup(); Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java?rev=830356&r1=830355&r2=830356&view=diff ============================================================================== --- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java (original) +++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java Tue Oct 27 21:55:44 2009 @@ -21,8 +21,12 @@ import java.util.Collection; import java.util.List; +import org.apache.ivyde.eclipse.IvyDEException; import org.apache.ivyde.eclipse.IvyPlugin; +import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; +import org.eclipse.core.variables.IStringVariableManager; +import org.eclipse.core.variables.VariablesPlugin; import org.eclipse.jdt.core.IClasspathAttribute; import org.eclipse.jdt.core.IJavaProject; @@ -204,11 +208,11 @@ // Getters that take into account the global preferences // /////////////////////////// - public String getInheritedIvySettingsPath() { + public String getInheritedIvySettingsPath() throws IvyDEException { if (!isSettingsProjectSpecific) { - return IvyPlugin.getPreferenceStoreHelper().getIvySettingsSetup().getIvySettingsPath(); + return IvyPlugin.getPreferenceStoreHelper().getIvySettingsSetup().getResolvedIvySettingsPath(); } - return ivySettingsSetup.getIvySettingsPath(); + return ivySettingsSetup.getResolvedIvySettingsPath(); } public boolean getInheritedLoadSettingsOnDemandPath() { @@ -219,11 +223,11 @@ return ivySettingsSetup.isLoadSettingsOnDemand(); } - public Collection getInheritedPropertyFiles() { + public Collection getInheritedPropertyFiles() throws IvyDEException { if (!isSettingsProjectSpecific) { - return IvyPlugin.getPreferenceStoreHelper().getIvySettingsSetup().getPropertyFiles(); + return IvyPlugin.getPreferenceStoreHelper().getIvySettingsSetup().getResolvedPropertyFiles(); } else { - return ivySettingsSetup.getPropertyFiles(); + return ivySettingsSetup.getResolvedPropertyFiles(); } } Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerState.java URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerState.java?rev=830356&r1=830355&r2=830356&view=diff ============================================================================== --- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerState.java (original) +++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerState.java Tue Oct 27 21:55:44 2009 @@ -43,7 +43,6 @@ import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IStatus; @@ -57,10 +56,6 @@ */ public class IvyClasspathContainerState { - private static final String PROJECT_SCHEME_PREFIX = "project://"; - - private static final int PROJECT_SCHEME_PREFIX_LENGTH = PROJECT_SCHEME_PREFIX.length(); - private Ivy ivy; private long ivySettingsLastModified = -1; @@ -172,47 +167,6 @@ return ivy; } - if (settingsPath.startsWith(PROJECT_SCHEME_PREFIX)) { - int pathIndex = settingsPath.indexOf("/", PROJECT_SCHEME_PREFIX_LENGTH); - String projectName = settingsPath.substring(PROJECT_SCHEME_PREFIX_LENGTH, pathIndex); - String path = settingsPath.substring(pathIndex + 1); - if (projectName.equals("")) { - if (FakeProjectManager.isFake(conf.getJavaProject())) { - // this is a fake project, we are in the launch config, project:// is forbidden - IvyDEException ex = new IvyDEException("Invalid Ivy settings path", - "the project:/// scheme is not allowed in the launch configurations '" - + settingsPath + "'", null); - setConfStatus(ex); - throw ex; - } - File file = conf.getJavaProject().getProject().getLocation().append(path).toFile(); - if (!file.exists()) { - IvyDEException ex = new IvyDEException("Ivy settings file not found", - "The Ivy settings file '" + settingsPath + "' cannot be found", null); - setConfStatus(ex); - throw ex; - } - return getIvy(file); - } else { - IResource p = ResourcesPlugin.getWorkspace().getRoot().findMember(projectName); - if (p == null) { - IvyDEException ex = new IvyDEException("Project '" + projectName - + "' not found", "The project name '" + projectName + "' from '" - + settingsPath + "' was not found", null); - setConfStatus(ex); - throw ex; - } - File file = p.getProject().getFile(path).getLocation().toFile(); - if (!file.exists()) { - IvyDEException ex = new IvyDEException("Ivy settings file not found", - "The Ivy settings file '" + path + "' cannot be found in project '" - + projectName + "'", null); - setConfStatus(ex); - throw ex; - } - return getIvy(file); - } - } // before returning the found ivy, try to refresh it if the settings changed URL url; try { @@ -255,7 +209,7 @@ } private Ivy getIvy(File file) throws IvyDEException { - String ivySettingsPath = conf.getIvySettingsSetup().getIvySettingsPath(); + String ivySettingsPath = conf.getIvySettingsSetup().getResolvedIvySettingsPath(); if (!file.exists()) { IvyDEException ex = new IvyDEException("Ivy settings file not found", "The Ivy settings file '" + ivySettingsPath + "' cannot be found", null); Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathUtil.java URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathUtil.java?rev=830356&r1=830355&r2=830356&view=diff ============================================================================== --- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathUtil.java (original) +++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathUtil.java Tue Oct 27 21:55:44 2009 @@ -29,6 +29,7 @@ import org.apache.ivy.core.module.descriptor.ModuleDescriptor; import org.apache.ivyde.eclipse.FakeProjectManager; +import org.apache.ivyde.eclipse.IvyDEException; import org.apache.ivyde.eclipse.IvyPlugin; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; @@ -180,7 +181,14 @@ IClasspathContainer cp = JavaCore.getClasspathContainer(path, javaProject); if (cp instanceof IvyClasspathContainer) { IvyClasspathContainer ivycp = (IvyClasspathContainer) cp; - if (ivycp.getConf().getInheritedIvySettingsPath().equals( + String settingsPath; + try { + settingsPath = ivycp.getConf().getInheritedIvySettingsPath(); + } catch (IvyDEException e) { + // cannot resolve the ivy settings so just ignore + continue; + } + if (settingsPath.equals( ivySettings.getProjectRelativePath().toString())) { containers.add(ivycp); } Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvySettingsSetup.java URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvySettingsSetup.java?rev=830356&r1=830355&r2=830356&view=diff ============================================================================== --- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvySettingsSetup.java (original) +++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvySettingsSetup.java Tue Oct 27 21:55:44 2009 @@ -17,8 +17,19 @@ */ package org.apache.ivyde.eclipse.cpcontainer; +import java.io.File; +import java.net.MalformedURLException; +import java.util.ArrayList; +import java.util.Iterator; import java.util.List; +import org.apache.ivyde.eclipse.IvyDEException; +import org.apache.ivyde.eclipse.IvyPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.variables.IStringVariableManager; +import org.eclipse.core.variables.VariablesPlugin; + /** * This class is just a simple bean defining the properties which configure an IvyDE classpath * container. @@ -44,7 +55,28 @@ this.loadSettingsOnDemand = setup.loadSettingsOnDemand; } - public String getIvySettingsPath() { + public String getResolvedIvySettingsPath() throws IvyDEException { + String url; + IStringVariableManager manager = VariablesPlugin.getDefault().getStringVariableManager(); + try { + url = manager.performStringSubstitution(ivySettingsPath, false); + } catch (CoreException e) { + throw new IvyDEException("Unrecognized variables", + "Unrecognized variables in the Ivy settings file " + ivySettingsPath, e); + } + if (ivySettingsPath.trim().startsWith("$")) { + // it starts with a variable, let's add the file protocol. + try { + url = new File(url).toURI().toURL().toExternalForm(); + } catch (MalformedURLException e) { + IvyPlugin.log(IStatus.ERROR, + "The file got from the workspace browser has not a valid URL", e); + } + } + return url; + } + + public String getRawIvySettingsPath() { return ivySettingsPath; } @@ -52,10 +84,27 @@ this.ivySettingsPath = ivySettingsPath; } - public List getPropertyFiles() { + public List getRawPropertyFiles() { return propertyFiles; } + public List getResolvedPropertyFiles() throws IvyDEException { + List resolvedProps = new ArrayList(); + IStringVariableManager manager = VariablesPlugin.getDefault().getStringVariableManager(); + try { + Iterator it = propertyFiles.iterator(); + while (it.hasNext()) { + String propFile = (String) it.next(); + String resolvedProp = manager.performStringSubstitution(propFile, false); + resolvedProps.add(resolvedProp); + } + } catch (CoreException e) { + throw new IvyDEException("Unrecognized variables", + "Unrecognized variables in the Ivy settings file " + ivySettingsPath, e); + } + return resolvedProps; + } + public void setPropertyFiles(List propertyFiles) { this.propertyFiles = propertyFiles; } Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvydeContainerPage.java URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvydeContainerPage.java?rev=830356&r1=830355&r2=830356&view=diff ============================================================================== --- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvydeContainerPage.java (original) +++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvydeContainerPage.java Tue Oct 27 21:55:44 2009 @@ -292,6 +292,10 @@ mainTab.setText("Main"); mainTab.setControl(createMainTab(tabs)); + TabItem settingsTab = new TabItem(tabs, SWT.NONE); + settingsTab.setText("Settings"); + settingsTab.setControl(createSettingsTab(tabs)); + TabItem retrieveTab = new TabItem(tabs, SWT.NONE); retrieveTab.setText("Retrieve"); retrieveTab.setControl(createRetrieveTab(tabs)); @@ -319,53 +323,11 @@ composite.setLayout(new GridLayout()); composite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true)); - Composite headerComposite = new Composite(composite, SWT.NONE); - headerComposite.setLayout(new GridLayout(2, false)); - headerComposite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false)); - - settingsProjectSpecificButton = new Button(headerComposite, SWT.CHECK); - settingsProjectSpecificButton.setText("Enable project specific settings"); - settingsProjectSpecificButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - updateFieldsStatusSettings(); - conf.setIvySettingsSetup(settingsEditor.getIvySettingsSetup()); - settingsUpdated(); - } - }); - - mainGeneralSettingsLink = new Link(headerComposite, SWT.NONE); - mainGeneralSettingsLink.setFont(headerComposite.getFont()); - mainGeneralSettingsLink.setText("<A>Configure Workspace Settings...</A>"); - mainGeneralSettingsLink.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(getShell(), - SettingsPreferencePage.PEREFERENCE_PAGE_ID, null, null); - dialog.open(); - } - }); - mainGeneralSettingsLink.setLayoutData(new GridData(SWT.END, SWT.CENTER, false, false)); - - Label horizontalLine = new Label(headerComposite, SWT.SEPARATOR | SWT.HORIZONTAL); - horizontalLine.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 2, 1)); - // CheckStyle:MagicNumber| OFF Composite configComposite = new Composite(composite, SWT.NONE); configComposite.setLayout(new GridLayout(3, false)); configComposite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true)); - settingsEditor = new SettingsEditor(configComposite, SWT.NONE); - settingsEditor.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 3, 1)); - settingsEditor.addListener(new SettingsEditorListener() { - public void settingsEditorUpdated(IvySettingsSetup setup) { - conf.setIvySettingsSetup(setup); - settingsUpdated(); - } - }); - - horizontalLine = new Label(configComposite, SWT.SEPARATOR | SWT.HORIZONTAL); - horizontalLine.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 3, 1)); - // CheckStyle:MagicNumber| OFN - // Label for ivy file field Label pathLabel = new Label(configComposite, SWT.NONE); pathLabel.setText("Ivy File"); @@ -378,7 +340,7 @@ } }); ivyFilePathText - .setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 2, 1)); + .setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); // Label for ivy configurations field Label confLabel = new Label(configComposite, SWT.NONE); @@ -414,6 +376,57 @@ return composite; } + private Control createSettingsTab(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); + composite.setLayout(new GridLayout()); + composite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true)); + + Composite headerComposite = new Composite(composite, SWT.NONE); + headerComposite.setLayout(new GridLayout(2, false)); + headerComposite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false)); + + settingsProjectSpecificButton = new Button(headerComposite, SWT.CHECK); + settingsProjectSpecificButton.setText("Enable project specific settings"); + settingsProjectSpecificButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + updateFieldsStatusSettings(); + conf.setIvySettingsSetup(settingsEditor.getIvySettingsSetup()); + settingsUpdated(); + } + }); + + mainGeneralSettingsLink = new Link(headerComposite, SWT.NONE); + mainGeneralSettingsLink.setFont(headerComposite.getFont()); + mainGeneralSettingsLink.setText("<A>Configure Workspace Settings...</A>"); + mainGeneralSettingsLink.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(getShell(), + SettingsPreferencePage.PEREFERENCE_PAGE_ID, null, null); + dialog.open(); + } + }); + mainGeneralSettingsLink.setLayoutData(new GridData(SWT.END, SWT.CENTER, false, false)); + + Label horizontalLine = new Label(headerComposite, SWT.SEPARATOR | SWT.HORIZONTAL); + horizontalLine.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 2, 1)); + + // CheckStyle:MagicNumber| OFF + Composite configComposite = new Composite(composite, SWT.NONE); + configComposite.setLayout(new GridLayout(3, false)); + configComposite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true)); + + settingsEditor = new SettingsEditor(configComposite, SWT.NONE); + settingsEditor.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 3, 1)); + settingsEditor.addListener(new SettingsEditorListener() { + public void settingsEditorUpdated(IvySettingsSetup setup) { + conf.setIvySettingsSetup(setup); + settingsUpdated(); + } + }); + + return composite; + } + private Control createRetrieveTab(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); composite.setLayout(new GridLayout()); Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/IvyFilePathText.java URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/IvyFilePathText.java?rev=830356&r1=830355&r2=830356&view=diff ============================================================================== --- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/IvyFilePathText.java (original) +++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/IvyFilePathText.java Tue Oct 27 21:55:44 2009 @@ -98,7 +98,7 @@ ivyFilePathText = (Text) ivyFilePathTextDeco.getControl(); ivyFilePathTextDeco.getLayoutControl().setLayoutData( - new GridData(GridData.FILL, GridData.FILL, true, false)); + new GridData(GridData.FILL, GridData.CENTER, true, false)); ivyFilePathText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent ev) { ivyXmlPathUpdated(); Added: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/PathEditor.java URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/PathEditor.java?rev=830356&view=auto ============================================================================== --- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/PathEditor.java (added) +++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/PathEditor.java Tue Oct 27 21:55:44 2009 @@ -0,0 +1,183 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.ivyde.eclipse.ui; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IPath; +import org.eclipse.debug.ui.StringVariableSelectionDialog; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.FileDialog; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.dialogs.ElementTreeSelectionDialog; +import org.eclipse.ui.model.BaseWorkbenchContentProvider; +import org.eclipse.ui.model.WorkbenchLabelProvider; + +public abstract class PathEditor extends Composite { + + protected Text text; + + private Button variableButton; + + private Button browseFileSystem; + + private Button browseWorkspace; + + private final IJavaProject project; + + public PathEditor(Composite parent, int style, String label, IJavaProject project) { + super(parent, style); + this.project = project; + + GridLayout layout = new GridLayout(2, false); + setLayout(layout); + + Label l = new Label(this, SWT.NONE); + l.setText(label); + + text = createText(this); + + Composite buttons = new Composite(this, SWT.NONE); + buttons.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, true, 2, 1)); + layout = new GridLayout(4, false); + layout.marginHeight = 0; + layout.marginWidth = 0; + buttons.setLayout(layout); + + boolean added = addButtons(buttons); + + browseWorkspace = new Button(buttons, SWT.NONE); + browseWorkspace.setLayoutData(new GridData(GridData.END, GridData.CENTER, !added, false)); + browseWorkspace.setText("Workspace..."); + browseWorkspace.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + selectInWorkspace(); + } + }); + + browseFileSystem = new Button(buttons, SWT.NONE); + browseFileSystem + .setLayoutData(new GridData(GridData.CENTER, GridData.CENTER, false, false)); + browseFileSystem.setText("File System..."); + browseFileSystem.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + selectInFileSystem(); + } + }); + + variableButton = new Button(buttons, SWT.NONE); + variableButton.setLayoutData(new GridData(GridData.CENTER, GridData.CENTER, false, false)); + variableButton.setText("Variables..."); + variableButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + selectVariable(); + } + }); + } + + private void selectInWorkspace() { + ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), + new WorkbenchLabelProvider(), new BaseWorkbenchContentProvider()); + dialog.setTitle("Select a workspace relative file:"); + dialog.setMessage("Select a workspace relative file:"); + dialog.setInput(ResourcesPlugin.getWorkspace().getRoot()); + // TODO try to preselect the current file + dialog.open(); + Object[] results = dialog.getResult(); + if ((results != null) && (results.length > 0) && (results[0] instanceof IFile)) { + IPath path = ((IFile) results[0]).getFullPath(); + if (project != null && path.segment(0).equals(project.getProject().getName())) { + setWorkspaceLoc(path.removeFirstSegments(1).makeRelative().toString()); + } else { + String containerName = path.makeRelative().toString(); + setWorkspaceLoc("${workspace_loc:" + containerName + "}"); + } + } + } + + private void selectInFileSystem() { + FileDialog dialog = new FileDialog(getShell(), SWT.OPEN); + if (text != null) { + dialog.setFileName(text.getText()); + } + dialog.setFilterExtensions(new String[] {"*.xml", "*"}); + String file = dialog.open(); + if (file != null) { + setFile(file); + } + } + + private void selectVariable() { + StringVariableSelectionDialog dialog = new StringVariableSelectionDialog(getShell()); + dialog.open(); + String variable = dialog.getVariableExpression(); + if (variable != null) { + addVariable(variable); + } + } + + protected void addVariable(String variable) { + text.insert(variable); + textUpdated(); + } + + protected void setFile(String file) { + text.setText(file); + textUpdated(); + } + + protected void setWorkspaceLoc(String workspaceLoc) { + text.setText(workspaceLoc); + textUpdated(); + } + + protected void textUpdated() { + // nothing to do + } + + protected Text createText(Composite parent) { + Text t = new Text(parent, SWT.BORDER); + t.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); + return t; + } + + protected boolean addButtons(Composite buttons) { + return false; + } + + public Text getText() { + return text; + } + + public void setEnabled(boolean enabled) { + super.setEnabled(enabled); + text.setEnabled(enabled); + browseFileSystem.setEnabled(enabled); + browseWorkspace.setEnabled(enabled); + variableButton.setEnabled(enabled); + + } +} Propchange: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/PathEditor.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/PathEditor.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Author HeadURL Id Propchange: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/PathEditor.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/SettingsEditor.java URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/SettingsEditor.java?rev=830356&r1=830355&r2=830356&view=diff ============================================================================== --- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/SettingsEditor.java (original) +++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/SettingsEditor.java Tue Oct 27 21:55:44 2009 @@ -43,122 +43,137 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.FileDialog; -import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; public class SettingsEditor extends Composite { public static final String TOOLTIP_SETTINGS_PATH = "The url where your ivysettings file can be" + " found. \nLeave it empty to reference the default ivy settings. \n" - + "Relative paths are handled relative to the project.\n" - + " Example: 'project:///ivysettings.xml' or 'project://myproject/ivysettings.xml'."; + + "Relative paths are handled relative to the project."; public static final String TOOLTIP_PROPERTY_FILES = "Comma separated list of build property" + " files.\nExample: build.properties, override.properties"; - private Text settingsText; - - private DecoratedField settingsTextDeco; - private final List listeners = new ArrayList(); private IvyDEException settingsError; private FieldDecoration errorDecoration; - private Text propFilesText; + private PathEditor propFilesEditor; + + private DecoratedField settingsTextDeco; private Button loadOnDemandButton; + private PathEditor settingsEditor; + + private Button defaultButton; + public SettingsEditor(Composite parent, int style) { super(parent, style); - // CheckStyle:MagicNumber| OFF - GridLayout layout = new GridLayout(3, false); - // CheckStyle:MagicNumber| ON - layout.marginHeight = 0; - layout.marginWidth = 0; + + GridLayout layout = new GridLayout(); setLayout(layout); - Label label = new Label(this, SWT.NONE); - label.setText("Ivy settings path:"); + loadOnDemandButton = new Button(this, SWT.CHECK); + loadOnDemandButton.setText("reload the settings only on demand"); + loadOnDemandButton.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false)); - errorDecoration = FieldDecorationRegistry.getDefault().getFieldDecoration( - FieldDecorationRegistry.DEC_ERROR); + settingsEditor = new PathEditor(this, SWT.NONE, "Ivy settings path:", null) { - settingsTextDeco = new DecoratedField(this, SWT.LEFT | SWT.TOP, new IControlCreator() { - public Control createControl(Composite p, int s) { - return new Text(p, SWT.SINGLE | SWT.BORDER); - } - }); - settingsTextDeco.addFieldDecoration(errorDecoration, SWT.TOP | SWT.LEFT, false); - // settingsTextDeco.setMarginWidth(2); - settingsTextDeco.hideDecoration(errorDecoration); - // this doesn't work well: we want the decoration image to be clickable, but it actually - // hides the clickable area - // settingsTextDeco.getLayoutControl().addMouseListener(new MouseAdapter() { - // public void mouseDoubleClick(MouseEvent e) { - // super.mouseDoubleClick(e); - // } - // public void mouseDown(MouseEvent e) { - // if (settingsError != null) { - // settingsError.show(IStatus.ERROR, "IvyDE configuration problem", null); - // } - // } - // }); - - settingsText = (Text) settingsTextDeco.getControl(); - settingsText.setToolTipText(TOOLTIP_SETTINGS_PATH); - settingsTextDeco.getLayoutControl().setLayoutData( - new GridData(GridData.FILL, GridData.FILL, true, false)); - settingsText.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e) { - settingsPathUpdated(); + protected Text createText(Composite parent) { + errorDecoration = FieldDecorationRegistry.getDefault().getFieldDecoration( + FieldDecorationRegistry.DEC_ERROR); + + settingsTextDeco = new DecoratedField(parent, SWT.LEFT | SWT.TOP, + new IControlCreator() { + public Control createControl(Composite p, int s) { + return new Text(p, SWT.SINGLE | SWT.BORDER); + } + }); + settingsTextDeco.addFieldDecoration(errorDecoration, SWT.TOP | SWT.LEFT, false); + // settingsTextDeco.setMarginWidth(2); + settingsTextDeco.hideDecoration(errorDecoration); + // this doesn't work well: we want the decoration image to be clickable, but it + // actually + // hides the clickable area + // settingsTextDeco.getLayoutControl().addMouseListener(new MouseAdapter() { + // public void mouseDoubleClick(MouseEvent e) { + // super.mouseDoubleClick(e); + // } + // public void mouseDown(MouseEvent e) { + // if (settingsError != null) { + // settingsError.show(IStatus.ERROR, "IvyDE configuration problem", null); + // } + // } + // }); + + Text settingsText = (Text) settingsTextDeco.getControl(); + settingsText.setToolTipText(TOOLTIP_SETTINGS_PATH); + settingsTextDeco.getLayoutControl().setLayoutData( + new GridData(GridData.FILL, GridData.CENTER, true, false)); + settingsText.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + settingsPathUpdated(); + } + }); + + return settingsText; } - }); - Button browse = new Button(this, SWT.NONE); - browse.setText("Browse"); - browse.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - File f = getFile(new File("/")); - if (f != null) { - try { - settingsText.setText(f.toURI().toURL().toExternalForm()); - settingsPathUpdated(); - } catch (MalformedURLException ex) { - // this cannot happen - IvyPlugin.log(IStatus.ERROR, - "The file got from the file browser has not a valid URL", ex); + protected boolean addButtons(Composite buttons) { + defaultButton = new Button(buttons, SWT.NONE); + defaultButton + .setLayoutData(new GridData(GridData.END, GridData.CENTER, true, false)); + defaultButton.setText("Default"); + defaultButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + getText().setText(""); } + }); + return true; + } + + protected void setFile(String f) { + try { + getText().setText(new File(f).toURI().toURL().toExternalForm()); + } catch (MalformedURLException ex) { + // this cannot happen + IvyPlugin.log(IStatus.ERROR, + "The file got from the file browser has not a valid URL", ex); } } - }); - loadOnDemandButton = new Button(this, SWT.CHECK); - loadOnDemandButton.setText("reload the settings only on demand"); - // CheckStyle:MagicNumber| OFF - loadOnDemandButton.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 3, - 1)); - // CheckStyle:MagicNumber| ON - - label = new Label(this, SWT.NONE); - label.setText("Property files:"); - - propFilesText = new Text(this, SWT.BORDER); - propFilesText.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false)); - propFilesText.setToolTipText(TOOLTIP_PROPERTY_FILES); - propFilesText.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e) { + protected void textUpdated() { settingsPathUpdated(); } - }); + }; + settingsEditor.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false)); + + propFilesEditor = new PathEditor(this, SWT.NONE, "Property files:", null) { + protected void textUpdated() { + settingsPathUpdated(); + } + + protected void setFile(String file) { + text.insert(file); + textUpdated(); + } + + protected void setWorkspaceLoc(String workspaceLoc) { + text.insert(workspaceLoc); + textUpdated(); + } + }; + propFilesEditor.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false)); } public IvySettingsSetup getIvySettingsSetup() { IvySettingsSetup setup = new IvySettingsSetup(); - setup.setIvySettingsPath(settingsText.getText()); + setup.setIvySettingsPath(settingsEditor.getText().getText()); setup.setLoadSettingsOnDemand(loadOnDemandButton.getSelection()); - setup.setPropertyFiles(IvyClasspathUtil.split(propFilesText.getText())); + setup.setPropertyFiles(IvyClasspathUtil.split(propFilesEditor.getText().getText())); return setup; } @@ -196,7 +211,7 @@ } else if (!error.equals(settingsError)) { settingsError = error; settingsTextDeco.showDecoration(errorDecoration); - if (settingsText.isVisible()) { + if (settingsEditor.getText().isVisible()) { errorDecoration.setDescription(error.getShortMsg()); settingsTextDeco.showHoverText(error.getShortMsg()); } @@ -229,15 +244,16 @@ } public void init(IvySettingsSetup setup) { - settingsText.setText(setup.getIvySettingsPath()); - propFilesText.setText(IvyClasspathUtil.concat(setup.getPropertyFiles())); + settingsEditor.getText().setText(setup.getRawIvySettingsPath()); + propFilesEditor.getText().setText(IvyClasspathUtil.concat(setup.getRawPropertyFiles())); loadOnDemandButton.setSelection(setup.isLoadSettingsOnDemand()); } public void setEnabled(boolean enabled) { super.setEnabled(enabled); - settingsText.setEnabled(enabled); - propFilesText.setEnabled(enabled); + settingsEditor.setEnabled(enabled); + defaultButton.setEnabled(enabled); + propFilesEditor.setEnabled(enabled); loadOnDemandButton.setEnabled(enabled); } Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java?rev=830356&r1=830355&r2=830356&view=diff ============================================================================== --- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java (original) +++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java Tue Oct 27 21:55:44 2009 @@ -58,9 +58,9 @@ } public void setIvySettingsSetup(IvySettingsSetup setup) { - prefStore.setValue(PreferenceConstants.IVYSETTINGS_PATH, setup.getIvySettingsPath()); + prefStore.setValue(PreferenceConstants.IVYSETTINGS_PATH, setup.getRawIvySettingsPath()); prefStore.setValue(PreferenceConstants.PROPERTY_FILES, IvyClasspathUtil.concat(setup - .getPropertyFiles())); + .getRawPropertyFiles())); prefStore.setValue(PreferenceConstants.LOAD_SETTINGS_ON_DEMAND, setup .isLoadSettingsOnDemand()); } Propchange: ant/ivy/ivyde/trunk/test/variables/ ------------------------------------------------------------------------------ --- svn:ignore (added) +++ svn:ignore Tue Oct 27 21:55:44 2009 @@ -0,0 +1 @@ +bin Propchange: ant/ivy/ivyde/trunk/test/variables-props/ ------------------------------------------------------------------------------ --- svn:ignore (added) +++ svn:ignore Tue Oct 27 21:55:44 2009 @@ -0,0 +1 @@ +bin Added: ant/ivy/ivyde/trunk/test/variables-props/.classpath URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/test/variables-props/.classpath?rev=830356&view=auto ============================================================================== --- ant/ivy/ivyde/trunk/test/variables-props/.classpath (added) +++ ant/ivy/ivyde/trunk/test/variables-props/.classpath Tue Oct 27 21:55:44 2009 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?ivyXmlPath=ivy.xml&confs=*&ivySettingsPath=%24%7Bworkspace_loc%3Aivydetest-property-files%2Fivysettings.xml%7D&loadSettingsOnDemand=false&propertyFiles=%24%7Bworkspace_loc%3Aivydetest-property-files%2Fbuild.properties%7D&doRetrieve=false&retrievePattern=lib%2F%5Bconf%5D%2F%5Bartifact%5D.%5Bext%5D&retrieveSync=false&retrieveConfs=*&retrieveTypes=*&acceptedTypes=jar&sourceTypes=source&javadocTypes=javadoc&sourceSuffixes=-source%2C-sources%2C-src&javadocSuffixes=-javadoc%2C-javadocs%2C-doc%2C-docs&alphaOrder=false&resolveInWorkspace=false&resolveBeforeLaunch=false"/> + <classpathentry kind="output" path="bin"/> +</classpath> Added: ant/ivy/ivyde/trunk/test/variables-props/.project URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/test/variables-props/.project?rev=830356&view=auto ============================================================================== --- ant/ivy/ivyde/trunk/test/variables-props/.project (added) +++ ant/ivy/ivyde/trunk/test/variables-props/.project Tue Oct 27 21:55:44 2009 @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ivydetest-variables-props</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> Added: ant/ivy/ivyde/trunk/test/variables-props/ivy.xml URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/test/variables-props/ivy.xml?rev=830356&view=auto ============================================================================== --- ant/ivy/ivyde/trunk/test/variables-props/ivy.xml (added) +++ ant/ivy/ivyde/trunk/test/variables-props/ivy.xml Tue Oct 27 21:55:44 2009 @@ -0,0 +1,31 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<ivy-module version="1.0"> + <info organisation="org.apache.ivyde" module="ivytest-variables-props"> + <description> + Project with settings properties composed of variables + </description> + </info> + <configurations> + <conf name="default" /> + </configurations> + <dependencies> + <dependency org="myorg" name="mymodule" rev="1.1" conf="default" /> + </dependencies> +</ivy-module> Propchange: ant/ivy/ivyde/trunk/test/variables-props/ivy.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ant/ivy/ivyde/trunk/test/variables-props/ivy.xml ------------------------------------------------------------------------------ svn:keywords = Date Revision Author HeadURL Id Propchange: ant/ivy/ivyde/trunk/test/variables-props/ivy.xml ------------------------------------------------------------------------------ svn:mime-type = text/xml Added: ant/ivy/ivyde/trunk/test/variables/.classpath URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/test/variables/.classpath?rev=830356&view=auto ============================================================================== --- ant/ivy/ivyde/trunk/test/variables/.classpath (added) +++ ant/ivy/ivyde/trunk/test/variables/.classpath Tue Oct 27 21:55:44 2009 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?ivyXmlPath=ivy.xml&confs=*&ivySettingsPath=%24%7Bworkspace_loc%3Aivydetest-local-settings%2Fivysettings.xml%7D&loadSettingsOnDemand=false&propertyFiles=&doRetrieve=false&retrievePattern=lib%2F%5Bconf%5D%2F%5Bartifact%5D.%5Bext%5D&retrieveSync=false&retrieveConfs=*&retrieveTypes=*&acceptedTypes=jar&sourceTypes=source&javadocTypes=javadoc&sourceSuffixes=-source%2C-sources%2C-src&javadocSuffixes=-javadoc%2C-javadocs%2C-doc%2C-docs&alphaOrder=false&resolveInWorkspace=false&resolveBeforeLaunch=false"/> + <classpathentry kind="output" path="bin"/> +</classpath> Added: ant/ivy/ivyde/trunk/test/variables/.project URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/test/variables/.project?rev=830356&view=auto ============================================================================== --- ant/ivy/ivyde/trunk/test/variables/.project (added) +++ ant/ivy/ivyde/trunk/test/variables/.project Tue Oct 27 21:55:44 2009 @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ivydetest-variables</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> Added: ant/ivy/ivyde/trunk/test/variables/ivy.xml URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/test/variables/ivy.xml?rev=830356&view=auto ============================================================================== --- ant/ivy/ivyde/trunk/test/variables/ivy.xml (added) +++ ant/ivy/ivyde/trunk/test/variables/ivy.xml Tue Oct 27 21:55:44 2009 @@ -0,0 +1,31 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<ivy-module version="1.0"> + <info organisation="org.apache.ivyde" module="ivytest-variables"> + <description> + Project with settings path composed of variables + </description> + </info> + <configurations> + <conf name="default" /> + </configurations> + <dependencies> + <dependency org="myorg" name="mymodule" rev="1.1" conf="default" /> + </dependencies> +</ivy-module> Propchange: ant/ivy/ivyde/trunk/test/variables/ivy.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ant/ivy/ivyde/trunk/test/variables/ivy.xml ------------------------------------------------------------------------------ svn:keywords = Date Revision Author HeadURL Id Propchange: ant/ivy/ivyde/trunk/test/variables/ivy.xml ------------------------------------------------------------------------------ svn:mime-type = text/xml