01: /*******************************************************************************
02: * Copyright (c) 2000, 2006 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.ui;
11:
12: import org.eclipse.core.runtime.IProgressMonitor;
13:
14: /**
15: * Workbench parts implement or adapt to this interface to participate
16: * in the enablement and execution of the <code>Save</code> and
17: * <code>Save As</code> actions.
18: *
19: * @since 2.1
20: * @see org.eclipse.ui.IEditorPart
21: */
22: public interface ISaveablePart {
23:
24: /**
25: * The property id for <code>isDirty</code>.
26: */
27: public static final int PROP_DIRTY = IWorkbenchPartConstants.PROP_DIRTY;
28:
29: /**
30: * Saves the contents of this part.
31: * <p>
32: * If the save is successful, the part should fire a property changed event
33: * reflecting the new dirty state (<code>PROP_DIRTY</code> property).
34: * </p>
35: * <p>
36: * If the save is cancelled through user action, or for any other reason, the
37: * part should invoke <code>setCancelled</code> on the <code>IProgressMonitor</code>
38: * to inform the caller.
39: * </p>
40: * <p>
41: * This method is long-running; progress and cancellation are provided
42: * by the given progress monitor.
43: * </p>
44: *
45: * @param monitor the progress monitor
46: */
47: public void doSave(IProgressMonitor monitor);
48:
49: /**
50: * Saves the contents of this part to another object.
51: * <p>
52: * Implementors are expected to open a "Save As" dialog where the user will
53: * be able to select a new name for the contents. After the selection is made,
54: * the contents should be saved to that new name. During this operation a
55: * <code>IProgressMonitor</code> should be used to indicate progress.
56: * </p>
57: * <p>
58: * If the save is successful, the part fires a property changed event
59: * reflecting the new dirty state (<code>PROP_DIRTY</code> property).
60: * </p>
61: */
62: public void doSaveAs();
63:
64: /**
65: * Returns whether the contents of this part have changed since the last save
66: * operation. If this value changes the part must fire a property listener
67: * event with <code>PROP_DIRTY</code>.
68: * <p>
69: * <b>Note:</b> this method is called often on a part open or part
70: * activation switch, for example by actions to determine their
71: * enabled status.
72: * </p>
73: *
74: * @return <code>true</code> if the contents have been modified and need
75: * saving, and <code>false</code> if they have not changed since the last
76: * save
77: */
78: public boolean isDirty();
79:
80: /**
81: * Returns whether the "Save As" operation is supported by this part.
82: *
83: * @return <code>true</code> if "Save As" is supported, and <code>false</code>
84: * if not supported
85: */
86: public boolean isSaveAsAllowed();
87:
88: /**
89: * Returns whether the contents of this part should be saved when the part
90: * is closed.
91: *
92: * @return <code>true</code> if the contents of the part should be saved on
93: * close, and <code>false</code> if the contents are expendable
94: */
95: public boolean isSaveOnCloseNeeded();
96: }
|