diff options
5 files changed, 41 insertions, 2 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java index ab933300a..92b1e030e 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java @@ -44,6 +44,7 @@ import org.eclipse.ui.texteditor.WorkbenchChainedTextFontFieldEditor; * UI Plugin for CVS provider-specific workbench functionality. */ public class CVSUIPlugin extends AbstractUIPlugin { + /** * The id of the CVS plug-in */ @@ -53,6 +54,7 @@ public class CVSUIPlugin extends AbstractUIPlugin { private Hashtable imageDescriptors = new Hashtable(20); public final static String ICON_PATH; + static { if (Display.getCurrent().getIconDepth() > 4) { ICON_PATH = ICVSUIConstants.ICON_PATH_FULL; @@ -203,6 +205,7 @@ public class CVSUIPlugin extends AbstractUIPlugin { store.setDefault(ICVSUIConstants.PREF_DIRTY_FLAG, CVSDecoratorConfiguration.DEFAULT_DIRTY_FLAG); store.setDefault(ICVSUIConstants.PREF_CALCULATE_DIRTY, true); store.setDefault(ICVSUIConstants.PREF_PROMPT_ON_MIXED_TAGS, true); + store.setDefault(ICVSUIConstants.PREF_SAVE_DIRTY_EDITORS, ICVSUIConstants.OPTION_PROMPT); // Forward the values to the CVS plugin CVSProviderPlugin.getPlugin().setPruneEmptyDirectories(store.getBoolean(ICVSUIConstants.PREF_PRUNE_EMPTY_DIRECTORIES)); diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ICVSUIConstants.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ICVSUIConstants.java index ba4a674bc..fa55cac37 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ICVSUIConstants.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ICVSUIConstants.java @@ -55,6 +55,7 @@ public interface ICVSUIConstants { public final String PREF_COMPRESSION_LEVEL = "pref_compression_level"; //$NON-NLS-1$ public final String PREF_TEXT_KSUBST = "pref_text_ksubst"; //$NON-NLS-1$ public final String PREF_PROMPT_ON_MIXED_TAGS = "pref_prompt_on_mixed_tags"; //$NON-NLS-1$ + public final String PREF_SAVE_DIRTY_EDITORS = "pref_save_dirty_editors"; //$NON-NLS-1$ // console preferences public final String PREF_CONSOLE_COMMAND_COLOR = "pref_console_command_color"; //$NON-NLS-1$ @@ -98,5 +99,10 @@ public interface ICVSUIConstants { public final String PROP_METHOD = "cvs.method"; //$NON-NLS-1$ public final String PROP_PORT = "cvs.port"; //$NON-NLS-1$ public final String PROP_ROOT = "cvs.root"; //$NON-NLS-1$ + + // preference options + public final int OPTION_NEVER = 1; //$NON-NLS-1$ + public final int OPTION_PROMPT = 2; //$NON-NLS-1$ + public final int OPTION_AUTOMATIC = 3; //$NON-NLS-1$ } diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddAction.java index a3a6c4268..6e9eb431b 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddAction.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddAction.java @@ -77,5 +77,4 @@ public class AddAction extends TeamAction { } return true; } - } diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CVSAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CVSAction.java index a5daff07e..2f4169018 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CVSAction.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CVSAction.java @@ -16,6 +16,7 @@ import java.util.List; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IPath; +import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.preference.IPreferenceStore; @@ -33,6 +34,10 @@ import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin; import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants; import org.eclipse.team.internal.ccvs.ui.Policy; import org.eclipse.team.ui.actions.TeamAction; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; /** * Contains helper methods for CVS actions. @@ -43,6 +48,29 @@ import org.eclipse.team.ui.actions.TeamAction; * if they have failed.] */ abstract public class CVSAction extends TeamAction { + + public static boolean saveAllDirtyEditors() { + IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore(); + int saveOption = store.getInt(ICVSUIConstants.PREF_SAVE_DIRTY_EDITORS); + boolean confirmWithUser = true; + boolean continueWithOperation = false; + + switch(saveOption) { + case ICVSUIConstants.OPTION_AUTOMATIC: + confirmWithUser = false; + case ICVSUIConstants.OPTION_PROMPT: + IWorkbench workbench = PlatformUI.getWorkbench(); + IWorkbenchWindow activeWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage activePage = activeWindow.getActivePage(); + continueWithOperation = activePage.saveAllEditors(confirmWithUser); + break; + case ICVSUIConstants.OPTION_NEVER: + continueWithOperation = true; + break; + } + return continueWithOperation; + } + /** * Answers <code>true</code> if the current selection contains resource that don't * have overlapping paths and <code>false</code> otherwise. diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java index f1fea585f..b20f7302c 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java @@ -19,11 +19,14 @@ import org.eclipse.ui.PartInitException; /** * Action for catchup/release in popup menus. */ -public class SyncAction extends TeamAction { +public class SyncAction extends CVSAction { /* * Method declared on IActionDelegate. */ public void run(IAction action) { + if(!saveAllDirtyEditors()) { + return; + } IResource[] resources = getSelectedResources(); SyncView view = (SyncView)CVSUIPlugin.getActivePage().findView(SyncView.VIEW_ID); if (view == null) { |