Bug 304199 [Path Variables] Second review pass for Dynamic Path Variables API
Not too much time left for API freeze, thus I have a second look at this new API. Changes under review are: - IProject#getPathVariableManager - changes in IPathVariableManager - IPathVariable - PathVariableResolver (SPI) If I missed something, please let me know. 1. IPathVariable#isPreferred. I am not sure how this is computed? Is it set once per whole Eclipse session? Is it possible that we end up having two 'the same' IPathVariables, where one is preferred and another one is not? 2. We had a discussion once, that dynamic path variables API may be more flexible. Right now we can get the manager only for the workspace or a project. I think that more flexible API would be: IWorkspace#getPathVariableManager(IResource) which would return the manager for the given resource and only IWorkspace and IProject scopes would be supported now. Maybe we could add support for IFolder in M7? 3. I don't understand this IPathVariableManager#convertToRelative. Why do we pass IResource there? The same for IPathvariableManager#getVariableRelativePathLocation. I assume that URI is enough...
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/wizards/datatransfer/ImportOperation.java
* The <code>filesToImport</code> parameter specifies what contents of the root
     * file system object are to be imported.
     * </p>
     * <p>
     * The default import behavior is to recreate the complete container structure
     * for the file system objects in their destination. If <code>setCreateContainerStructure</code>
     * is set to <code>false</code>, then the container structure created for each of 
     * the file system objects is relative to the supplied root file system object.
     * </p>
     *
     * @param containerPath the full path of the destination container within the
     *   workspace
     * @param source the root file system object to import from
     * @param provider the file system structure provider to use
     * @param overwriteImplementor the overwrite strategy to use
     * @param filesToImport the list of file system objects to be imported
     *  (element type: <code>Object</code>)
     */
    public ImportOperation(IPath containerPath, Object source,
            IImportStructureProvider provider,
            IOverwriteQuery overwriteImplementor, List filesToImport) {
        this(containerPath, source, provider, overwriteImplementor);
        setFilesToImport(filesToImport);
    }
    /**
     * Creates a new operation that imports specific file system objects.
     * <p>
     * The <code>provider</code> parameter allows this operation to deal with the
     * source object in an abstract way. This operation calls methods on the provider
     * and the provider in turn calls specific methods on the source object.