Added mount/unmount API
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IFolder.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IFolder.java index 2999ec3..7dc62a2 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IFolder.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IFolder.java
@@ -200,6 +200,54 @@ * @see #getFile */ public IFolder getFolder(String name); +/** + * Creates a new folder resource as a member of this handle's parent resource. + * The folder's contents will be located in the directory specified by the given + * file system path. This resource must not already exist; the directory + * specified by the given local location must already exist. This handle's parent + * resource must be a project. + * <p> + * There are currently no update flags applicable for this operation. + * </p> + * <p> + * This method synchronizes this resource with the local file system at the given + * location. + * </p> + * <p> + * This method changes resources; these changes will be reported + * in a subsequent resource change event, including an indication + * that the folder has been added to its parent. + * </p> + * <p> + * This method is long-running; progress and cancellation are provided + * by the given progress monitor. + * </p> + * + * @param updateFlags bit-wise or of update flag constants + * (none are currently applicable) + * @param localLocation a file system path where the folder should be mounted + * @param monitor a progress monitor, or <code>null</code> if progress + * reporting and cancellation are not desired + * @exception CoreException if this method fails. Reasons include: + * <ul> + * <li> This resource already exists in the workspace.</li> + * <li> The workspace contains a resource of a different type + * at the same path as this resource.</li> + * <li> The parent of this resource does not exist.</li> + * <li> The parent of this resource is not an open project.</li> + * <li> The name of this resource is not valid (according to + * <code>IWorkspace.validateName</code>).</li> + * <li> The corresponding location in the local file system is occupied + * by a file (as opposed to a directory).</li> + * <li> The corresponding location in the local file system is already + * associated with a resource in this workspace.</li> + * <li> Resource changes are disallowed during certain types of resource change + * event notification. See IResourceChangeEvent for more details.</li> + * </ul> + * @see #unmount + * @since 2.1 + */ +public void mount(IPath localLocation, int updateFlags, IProgressMonitor monitor) throws CoreException; /** * Moves this resource so that it is located at the given path. @@ -247,4 +295,40 @@ * @see IResource#move(IPath,int,IProgressMonitor) */ public void move(IPath destination, boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException; +/** + * Removes this mounted folder from the workspace, but leaves the + * contents in the file system intact. This operation is only allowed + * on folders that have been mounted with the <code>mount</code> + * method. + * <p> + * Unmounting a resource also deletes its session and persistent + * properties and markers. + * </p> + * <p> + * Unmounting a resource which has sync information converts the resource + * to a phantom and retains the sync information for future use. + * </p> + * <p> + * This method changes resources; these changes will be reported + * in a subsequent resource change event. + * </p> + * <p> + * This method is long-running; progress and cancellation are provided + * by the given progress monitor. + * </p> + * + * @param updateFlags bit-wise or of update flag constants + * (none are currently applicable) + * @param monitor a progress monitor, or <code>null</code> if progress + * reporting and cancellation are not desired + * @exception CoreException if this method fails. Reasons include: + * <ul> + * <li> This resource does not exist.</li> + * <li> Resource changes are disallowed during certain types of resource change + * event notification. See IResourceChangeEvent for more details.</li> + * </ul> + * @see #mount + * @since 2.1 + */ +public void unmount(int updateFlags, IProgressMonitor monitor) throws CoreException; }