/******************************************************************************* * Copyright (c) 2000, 2006 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.ui; import org.eclipse.core.runtime.IProgressMonitor; /** * Workbench parts implement or adapt to this interface to participate * in the enablement and execution of the <code>Save</code> and * <code>Save As</code> actions. * * @since 2.1 * @see org.eclipse.ui.IEditorPart */ public interface ISaveablePart { /** * The property id for <code>isDirty</code>. */ public static final int PROP_DIRTY = IWorkbenchPartConstants.PROP_DIRTY; /** * Saves the contents of this part. * <p> * If the save is successful, the part should fire a property changed event * reflecting the new dirty state (<code>PROP_DIRTY</code> property). * </p> * <p> * If the save is cancelled through user action, or for any other reason, the * part should invoke <code>setCancelled</code> on the <code>IProgressMonitor</code> * to inform the caller. * </p> * <p> * This method is long-running; progress and cancellation are provided * by the given progress monitor. * </p> * * @param monitor the progress monitor */ public void doSave(IProgressMonitor monitor); /** * Saves the contents of this part to another object. * <p> * Implementors are expected to open a "Save As" dialog where the user will * be able to select a new name for the contents. After the selection is made, * the contents should be saved to that new name. During this operation a * <code>IProgressMonitor</code> should be used to indicate progress. * </p> * <p> * If the save is successful, the part fires a property changed event * reflecting the new dirty state (<code>PROP_DIRTY</code> property). * </p> */ public void doSaveAs(); /** * Returns whether the contents of this part have changed since the last save * operation. If this value changes the part must fire a property listener * event with <code>PROP_DIRTY</code>. * <p> * <b>Note:</b> this method is called often on a part open or part * activation switch, for example by actions to determine their * enabled status. * </p> * * @return <code>true</code> if the contents have been modified and need * saving, and <code>false</code> if they have not changed since the last * save */ public boolean isDirty(); /** * Returns whether the "Save As" operation is supported by this part. * * @return <code>true</code> if "Save As" is supported, and <code>false</code> * if not supported */ public boolean isSaveAsAllowed(); /** * Returns whether the contents of this part should be saved when the part * is closed. * * @return <code>true</code> if the contents of the part should be saved on * close, and <code>false</code> if the contents are expendable */ public boolean isSaveOnCloseNeeded(); }