diff options
author | Michael Valenta | 2004-08-24 13:58:47 +0000 |
---|---|---|
committer | Michael Valenta | 2004-08-24 13:58:47 +0000 |
commit | 5756d260b9cc93da4ac4bbcebb4c34138a545880 (patch) | |
tree | e107bebdc93d7abc0fc9d89de4ba3c38bd1cb132 /bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java | |
parent | 42da08ebb65a175053c1f2b88d28ed6dcbcec33a (diff) | |
download | eclipse.platform.team-5756d260b9cc93da4ac4bbcebb4c34138a545880.tar.gz eclipse.platform.team-5756d260b9cc93da4ac4bbcebb4c34138a545880.tar.xz eclipse.platform.team-5756d260b9cc93da4ac4bbcebb4c34138a545880.zip |
Bug 28218 Default provider should prompt in validateEdit if UI context given
Diffstat (limited to 'bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java')
-rw-r--r-- | bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java index 7ad8a72c9..b211a8305 100644 --- a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java +++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java @@ -18,13 +18,13 @@ import java.util.Map; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFileModificationValidator; +import org.eclipse.core.runtime.*; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.MultiStatus; import org.eclipse.team.core.RepositoryProvider; public class FileModificationValidatorManager implements IFileModificationValidator { - private static final IFileModificationValidator DEFAULT_VALIDATOR = - new DefaultFileModificationValidator(); + private IFileModificationValidator defaultValidator; /* * @see IFileModificationValidator#validateEdit(IFile[], Object) @@ -59,7 +59,7 @@ public class FileModificationValidatorManager implements IFileModificationValida RepositoryProvider provider = (RepositoryProvider)providersIterator.next(); ArrayList filesList = (ArrayList)providersToFiles.get(provider); IFile[] filesArray = (IFile[])filesList.toArray(new IFile[filesList.size()]); - IFileModificationValidator validator = DEFAULT_VALIDATOR; + IFileModificationValidator validator = getDefaultValidator(); //if no provider or no validator use the default validator if (provider != null) { @@ -93,7 +93,7 @@ public class FileModificationValidatorManager implements IFileModificationValida */ public IStatus validateSave(IFile file) { RepositoryProvider provider = RepositoryProvider.getProvider(file.getProject()); - IFileModificationValidator validator = DEFAULT_VALIDATOR; + IFileModificationValidator validator = getDefaultValidator(); //if no provider or no validator use the default validator if (provider != null) { @@ -103,4 +103,32 @@ public class FileModificationValidatorManager implements IFileModificationValida return validator.validateSave(file); } + + private synchronized IFileModificationValidator getDefaultValidator() { + if (defaultValidator == null) { + loadDefaultValidator(); + } + return defaultValidator; + } + + private void loadDefaultValidator() { + defaultValidator = new DefaultFileModificationValidator(); + IExtensionPoint extension = Platform.getExtensionRegistry().getExtensionPoint(TeamPlugin.ID, TeamPlugin.DEFAULT_FILE_MODIFICATION_VALIDATOR_EXTENSION); + if (extension != null) { + IExtension[] extensions = extension.getExtensions(); + if (extensions.length > 0) { + IConfigurationElement[] configElements = extensions[0].getConfigurationElements(); + if (configElements.length > 0) { + try { + Object o = configElements[0].createExecutableExtension("class"); //$NON-NLS-1$ + if (o instanceof IFileModificationValidator) { + defaultValidator = (IFileModificationValidator)o; + } + } catch (CoreException e) { + TeamPlugin.log(e); + } + } + } + } + } } |