blob: 0ab548469f17c1f8d4d72c12af899c83c6c68249 [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2000,2002 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.core.resources;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IStatus;
/**
* The file modification validator is a VCM-related hook for pre-checking operations
* that modify the contents of files.
* <p>
* This interface 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 VCM plug-in.
* </p>
*
* @since 2.0
*/
public interface 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 a reasonable
* @see IWorkspace#validateEdit
*/
public IStatus validateEdit(IFile[] files, Object context);
/**
* 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
* @see IFile#appendContents
*/
public IStatus validateSave(IFile file);
}