/******************************************************************************* * 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); }