Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 60025 Details for
Bug 160905
Need better validateEdit api
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Updated patch (javadoc, make deprecated method final)
patch.txt (text/plain), 16.46 KB, created by
John Arthorne
on 2007-02-28 17:12:19 EST
(
hide
)
Description:
Updated patch (javadoc, make deprecated method final)
Filename:
MIME Type:
Creator:
John Arthorne
Created:
2007-02-28 17:12:19 EST
Size:
16.46 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.core.resources >Index: src/org/eclipse/core/resources/team/ResourceRuleFactory.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/resources/team/ResourceRuleFactory.java,v >retrieving revision 1.10 >diff -u -r1.10 ResourceRuleFactory.java >--- src/org/eclipse/core/resources/team/ResourceRuleFactory.java 13 Feb 2006 22:42:41 -0000 1.10 >+++ src/org/eclipse/core/resources/team/ResourceRuleFactory.java 28 Feb 2007 22:07:32 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2004, 2006 IBM Corporation and others. >+ * Copyright (c) 2004, 2007 IBM Corporation and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -141,7 +141,7 @@ > * > * @see org.eclipse.core.runtime.jobs.ISchedulingRule#contains(org.eclipse.core.runtime.jobs.ISchedulingRule) > * @see org.eclipse.core.resources.IResourceRuleFactory#modifyRule(IResource) >- * @see IFileModificationValidator#validateSave(IFile) >+ * @see FileModificationValidator#validateSave(IFile) > * @see IProjectDescription#DESCRIPTION_FILE_NAME > */ > public ISchedulingRule modifyRule(IResource resource) { >Index: src/org/eclipse/core/resources/IWorkspace.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/resources/IWorkspace.java,v >retrieving revision 1.77 >diff -u -r1.77 IWorkspace.java >--- src/org/eclipse/core/resources/IWorkspace.java 13 Jul 2006 17:42:24 -0000 1.77 >+++ src/org/eclipse/core/resources/IWorkspace.java 28 Feb 2007 22:07:32 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2000, 2006 IBM Corporation and others. >+ * Copyright (c) 2000, 2007 IBM Corporation and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -14,6 +14,7 @@ > import java.io.InputStream; > import java.net.URI; > import java.util.Map; >+import org.eclipse.core.resources.team.FileModificationValidationContext; > import org.eclipse.core.runtime.*; > import org.eclipse.core.runtime.jobs.ISchedulingRule; > import org.eclipse.core.runtime.jobs.LockListener; >@@ -80,6 +81,15 @@ > public static final int AVOID_UPDATE = 1; > > /** >+ * Constant that can be passed to {@link #validateEdit(org.eclipse.core.resources.IFile[], Object)} >+ * to indicate that the caller does not have access to a UI context but would still >+ * like to have UI-based validation if possible. >+ * @since 3.3 >+ * @see #validateEdit(IFile[], Object) >+ */ >+ public static final Object VALIDATE_PROMPT = FileModificationValidationContext.VALIDATE_PROMPT; >+ >+ /** > * Adds the given listener for resource change events to this workspace. Has > * no effect if an identical listener is already registered. > * <p> >@@ -1272,7 +1282,10 @@ > * dialogs to query the user or report difficulties; the shell should be > * used to parent any such dialogs; the caller may safely assume that the > * reasons for failure will have been made clear to the user. If >- * <code>null</code> is passed, the user should not be contacted; any >+ * {@link IWorkspace#VALIDATE_PROMPT} is passed >+ * as the context, this indicates that the caller does not have access to >+ * a UI context but would still like the user to be prompted if required. >+ * If <code>null</code> is passed, the user should not be contacted; any > * failures should be reported via the result; the caller may chose to > * present these to the user however they see fit. The ideal implementation > * of this method is transactional; no files would be affected unless the >@@ -1280,7 +1293,7 @@ > * ensure such changes get done atomically.) > * </p> > * <p> >- * The method calls <code>IFileModificationValidator.validateEdit</code> >+ * The method calls <code>FileModificationValidator.validateEdit</code> > * for the file modification validator (if provided by the VCM plug-in). > * When there is no file modification validator, this method returns a > * status with an <code>IResourceStatus.READ_ONLY_LOCAL</code> code if one >@@ -1290,13 +1303,14 @@ > * <p> > * This method may be called from any thread. If the UI context is used, it > * is the responsibility of the implementor of >- * <code>IFileModificationValidator.validateEdit</code> to interact with >+ * <code>FileModificationValidator.validateEdit</code> to interact with > * the UI context in an appropriate thread. > * </p> > * > * @param files the files that are to be modified; these files must all > * exist in the workspace >- * @param context the <code>org.eclipse.swt.widgets.Shell</code> that is >+ * @param context either {@link IWorkspace#VALIDATE_PROMPT}, >+ * or the <code>org.eclipse.swt.widgets.Shell</code> that is > * to be used to parent any dialogs with the user, or <code>null</code> if > * there is no UI context (declared as an <code>Object</code> to avoid any > * direct references on the SWT component) >Index: src/org/eclipse/core/resources/IFileModificationValidator.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/resources/IFileModificationValidator.java,v >retrieving revision 1.14 >diff -u -r1.14 IFileModificationValidator.java >--- src/org/eclipse/core/resources/IFileModificationValidator.java 4 Apr 2006 20:53:47 -0000 1.14 >+++ src/org/eclipse/core/resources/IFileModificationValidator.java 28 Feb 2007 22:07:32 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2000, 2005 IBM Corporation and others. >+ * Copyright (c) 2000, 2007 IBM Corporation and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -10,6 +10,7 @@ > *******************************************************************************/ > package org.eclipse.core.resources; > >+import org.eclipse.core.resources.team.FileModificationValidator; > import org.eclipse.core.runtime.IStatus; > > /** >@@ -21,8 +22,9 @@ > * extension point. It is intended to be implemented only > * by the Eclipse Platform Team plug-in. > * </p> >- * >+ * > * @since 2.0 >+ * @deprecated clients should subclass {@link FileModificationValidator} > */ > public interface IFileModificationValidator { > /** >Index: src/org/eclipse/core/internal/resources/Workspace.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Workspace.java,v >retrieving revision 1.211 >diff -u -r1.211 Workspace.java >--- src/org/eclipse/core/internal/resources/Workspace.java 23 Jan 2007 22:45:37 -0000 1.211 >+++ src/org/eclipse/core/internal/resources/Workspace.java 28 Feb 2007 22:07:32 -0000 >@@ -22,8 +22,7 @@ > import org.eclipse.core.internal.utils.*; > import org.eclipse.core.internal.watson.*; > import org.eclipse.core.resources.*; >-import org.eclipse.core.resources.team.IMoveDeleteHook; >-import org.eclipse.core.resources.team.TeamHook; >+import org.eclipse.core.resources.team.*; > import org.eclipse.core.runtime.*; > import org.eclipse.core.runtime.jobs.ISchedulingRule; > import org.eclipse.core.runtime.jobs.Job; >@@ -2017,7 +2016,12 @@ > } > > public void run() throws Exception { >- status[0] = validator.validateEdit(files, context); >+ Object c = context; >+ //must null any reference to FileModificationValidationContext for backwards compatibility >+ if (!(validator instanceof FileModificationValidator)) >+ if (c instanceof FileModificationValidationContext) >+ c = null; >+ status[0] = validator.validateEdit(files, c); > } > }; > SafeRunner.run(body); >Index: src/org/eclipse/core/resources/team/FileModificationValidator.java >=================================================================== >RCS file: src/org/eclipse/core/resources/team/FileModificationValidator.java >diff -N src/org/eclipse/core/resources/team/FileModificationValidator.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/core/resources/team/FileModificationValidator.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,100 @@ >+/******************************************************************************* >+ * Copyright (c) 2007 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.core.resources.team; >+ >+import org.eclipse.core.resources.*; >+import org.eclipse.core.runtime.IStatus; >+ >+/** >+ * The file modification validator is a Team-related hook for pre-checking operations >+ * that modify the contents of files. >+ * <p> >+ * This class is used only in conjunction with the >+ * "org.eclipse.core.resources.fileModificationValidator" >+ * extension point. It is intended to be implemented only >+ * by the Eclipse Platform Team plug-in or by repository providers >+ * whose validator get invoked by Team. >+ * </p> >+ * @since 3.3 >+ */ >+public abstract class FileModificationValidator implements IFileModificationValidator { >+ >+ /** >+ * Validates that the given files can be modified. The files must all exist >+ * in the workspace. The optional context object may be supplied if >+ * UI-based validation is required. If the context is <code>null</code>, the >+ * validator must attempt to perform the validation in a headless manner. >+ * The returned status is <code>IStatus.OK</code> if this validator >+ * believes the given file can be modified. Other return statuses indicate >+ * the reason why the individual files cannot be modified. >+ * >+ * @param files the files that are to be modified; these files must all exist in the workspace >+ * @param context the <code>org.eclipse.swt.widgets.Shell</code> that is to be used to >+ * parent any dialogs with the user, or <code>null</code> if there is no UI context (declared >+ * as an <code>Object</code> to avoid any direct references on the SWT component) >+ * @return a status object that is OK if things are fine, otherwise a status describing >+ * reasons why modifying the given files is not reasonable >+ * @see IWorkspace#validateEdit(IFile[], Object) >+ * @deprecated this method is part of the deprecated {@link IFileModificationValidator} >+ * interface. Clients should call {@link #validateEdit(IFile[], FileModificationValidationContext)} >+ * instead. >+ */ >+ public final IStatus validateEdit(IFile[] files, Object context) { >+ FileModificationValidationContext validationContext; >+ if (context == null) >+ validationContext = null; >+ else if (context instanceof FileModificationValidationContext) >+ validationContext = (FileModificationValidationContext) context; >+ else >+ validationContext = new FileModificationValidationContext(context); >+ return validateEdit(files, validationContext); >+ } >+ >+ /** >+ * Validates that the given file can be saved. This method is called from >+ * <code>IFile#setContents</code> and <code>IFile#appendContents</code> >+ * before any attempt to write data to disk. The returned status is >+ * <code>IStatus.OK</code> if this validator believes the given file can be >+ * successfully saved. In all other cases the return value is a non-OK status. >+ * Note that a return value of <code>IStatus.OK</code> does not guarantee >+ * that the save will succeed. >+ * >+ * @param file the file that is to be modified; this file must exist in the workspace >+ * @return a status indicating whether or not it is reasonable to try writing to the given file; >+ * <code>IStatus.OK</code> indicates a save should be attempted. >+ * >+ * @see IFile#setContents(java.io.InputStream, int, org.eclipse.core.runtime.IProgressMonitor) >+ * @see IFile#appendContents(java.io.InputStream, int, org.eclipse.core.runtime.IProgressMonitor) >+ */ >+ public IStatus validateSave(IFile file) { >+ return validateEdit(new IFile[] {file}, (FileModificationValidationContext) null); >+ } >+ >+ /** >+ * Validates that the given files can be modified. The files must all exist >+ * in the workspace. The optional context may be supplied if >+ * UI-based validation is required. If the context is <code>null</code>, the >+ * validator must attempt to perform the validation in a headless manner. >+ * The returned status is <code>IStatus.OK</code> if this validator >+ * believes the given file can be modified. Other return statuses indicate >+ * the reason why the individual files cannot be modified. >+ * >+ * @param files the files that are to be modified; these files must all exist in the workspace >+ * @param context the context to aid in UI-based validation or <code>null</code> if the validation >+ * must be headless >+ * @return a status object that is OK if things are fine, otherwise a status describing >+ * reasons why modifying the given files is not reasonable >+ * @see IWorkspace#validateEdit(IFile[], Object) >+ * >+ */ >+ public abstract IStatus validateEdit(IFile[] files, FileModificationValidationContext context); >+ >+} >Index: src/org/eclipse/core/resources/team/FileModificationValidationContext.java >=================================================================== >RCS file: src/org/eclipse/core/resources/team/FileModificationValidationContext.java >diff -N src/org/eclipse/core/resources/team/FileModificationValidationContext.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/core/resources/team/FileModificationValidationContext.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,56 @@ >+/******************************************************************************* >+ * Copyright (c) 2007 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.core.resources.team; >+ >+import org.eclipse.core.resources.IWorkspace; >+ >+/** >+ * A context that is used in conjunction with the {@link FileModificationValidator} >+ * to indicate that UI-based validation is desired. >+ * <p> >+ * This class is not intended to be instantiated or subclassed by clients. >+ * >+ * @see FileModificationValidator >+ * @since 3.3 >+ */ >+public class FileModificationValidationContext { >+ >+ /** >+ * Constant that can be passed to {@link IWorkspace#validateEdit(org.eclipse.core.resources.IFile[], Object)} >+ * to indicate that the caller does not have access to a UI context but would still >+ * like to have UI-based validation if possible. >+ */ >+ public static final FileModificationValidationContext VALIDATE_PROMPT = new FileModificationValidationContext(null); >+ >+ private final Object shell; >+ >+ /** >+ * Create a context with the given shell. >+ * >+ * @param shell the shell >+ */ >+ FileModificationValidationContext(Object shell) { >+ this.shell = shell; >+ } >+ >+ /** >+ * Return the <code>org.eclipse.swt.widgets.Shell</code> that is to be used to >+ * parent any dialogs with the user, or <code>null</code> if there is no UI context >+ * available (declared as an <code>Object</code> to avoid any direct references on the SWT component). >+ * If there is no shell, the {@link FileModificationValidator} may still perform >+ * UI-based validation if they can obtain a Shell from another source. >+ * @return the <code>org.eclipse.swt.widgets.Shell</code> that is to be used to >+ * parent any dialogs with the user, or <code>null</code> >+ */ >+ public Object getShell() { >+ return shell; >+ } >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 160905
:
53562
|
60001
|
60006
| 60025 |
60068
|
60101