diff options
Diffstat (limited to 'bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/FileModificationValidator.java')
-rw-r--r-- | bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/FileModificationValidator.java | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/FileModificationValidator.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/FileModificationValidator.java index 61fee8f09..ebd30963c 100644 --- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/FileModificationValidator.java +++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/internal/FileModificationValidator.java @@ -10,13 +10,13 @@ import org.eclipse.core.resources.IFileModificationValidator; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.Status; -import org.eclipse.team.core.ITeamManager; -import org.eclipse.team.core.ITeamProvider; +import org.eclipse.team.core.RepositoryProvider; +import org.eclipse.team.core.RepositoryProviderType; import org.eclipse.team.core.TeamPlugin; public class FileModificationValidator implements IFileModificationValidator { - private static final Status OK = new Status(Status.OK, TeamPlugin.ID, Status.OK, Policy.bind("FileModificationValidator.ok"), null); - private static final Status READ_ONLY = new Status(Status.ERROR, TeamPlugin.ID, Status.ERROR, Policy.bind("FileModificationValidator.isReadOnly"), null); + private static final Status OK = new Status(Status.OK, TeamPlugin.ID, Status.OK, Policy.bind("FileModificationValidator.ok"), null); //$NON-NLS-1$ + private static final Status READ_ONLY = new Status(Status.ERROR, TeamPlugin.ID, Status.ERROR, Policy.bind("FileModificationValidator.isReadOnly"), null); //$NON-NLS-1$ /* * @see IFileModificationValidator#validateEdit(IFile[], Object) @@ -26,34 +26,39 @@ public class FileModificationValidator implements IFileModificationValidator { IStatus[] result = new IStatus[files.length]; // Optimization so we don't create a new IFile[] each time IFile[] fileArray = new IFile[1]; - ITeamManager manager = TeamPlugin.getManager(); for (int i = 0; i < files.length; i++) { IFile file = files[i]; - ITeamProvider provider = manager.getProvider(file.getProject()); - if (provider == null) { - result[i] = - (file.isReadOnly()) - ? READ_ONLY - : OK; - } else { - fileArray[0] = file; - result[i] = provider.validateEdit(fileArray, context); + RepositoryProvider provider = RepositoryProviderType.getProvider(file.getProject()); + IFileModificationValidator validator = null; + if (provider != null) { + validator = provider.getFileModificationValidator(); + if(validator!=null) { + fileArray[0] = file; + result[i] = validator.validateEdit(fileArray, context); + } + } + + if(validator==null) { + result[i] = (file.isReadOnly()) ? READ_ONLY : OK; } } if (result.length == 1) { return result[0]; } - return new MultiStatus(TeamPlugin.ID, 0, result, Policy.bind("FileModificationValidator.validateEdit"), null); + return new MultiStatus(TeamPlugin.ID, 0, result, Policy.bind("FileModificationValidator.validateEdit"), null); //$NON-NLS-1$ } /* * @see IFileModificationValidator#validateSave(IFile) */ public IStatus validateSave(IFile file) { - ITeamProvider provider = TeamPlugin.getManager().getProvider(file.getProject()); - if (provider == null) { - return OK; + RepositoryProvider provider = RepositoryProviderType.getProvider(file.getProject()); + if (provider != null) { + IFileModificationValidator validator = provider.getFileModificationValidator(); + if(validator!=null) { + return validator.validateSave(file); + } } - return provider.validateSave(file); + return OK; } } |