diff options
author | Jean Michel-Lemieux | 2003-06-26 11:09:33 +0000 |
---|---|---|
committer | Jean Michel-Lemieux | 2003-06-26 11:09:33 +0000 |
commit | e68410b0b69db36a3b8ef78898eb66fcfa3fb41b (patch) | |
tree | e934c613719f97e01a63188ef30ff8047ec170c4 | |
parent | afa0c0f92697f55b8d9b179f0bb0edc8aa997d9c (diff) | |
download | eclipse.platform.team-Bug_36957.tar.gz eclipse.platform.team-Bug_36957.tar.xz eclipse.platform.team-Bug_36957.zip |
handle storing the preferences on ok pressedBug_36957
-rw-r--r-- | bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/PreferencePageContainerDialog.java | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/PreferencePageContainerDialog.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/PreferencePageContainerDialog.java index 097aab847..24f7cb433 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/PreferencePageContainerDialog.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/PreferencePageContainerDialog.java @@ -10,11 +10,14 @@ *******************************************************************************/ package org.eclipse.team.internal.ui.dialogs; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.preference.IPersistentPreferenceStore; import org.eclipse.jface.preference.IPreferencePageContainer; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceDialog; @@ -43,6 +46,7 @@ import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Layout; import org.eclipse.swt.widgets.Shell; +import org.eclipse.team.internal.ui.Policy; import org.eclipse.team.internal.ui.TeamUIPlugin; public class PreferencePageContainerDialog extends Dialog implements IPreferencePageContainer { @@ -120,14 +124,15 @@ public class PreferencePageContainerDialog extends Dialog implements IPreference protected void okPressed() { final List changedProperties = new ArrayList(5); getPreferenceStore().addPropertyChangeListener( new IPropertyChangeListener() { - /** - * @see IPropertyChangeListener#propertyChange(PropertyChangeEvent) - */ public void propertyChange(PropertyChangeEvent event) { changedProperties.add(event.getProperty()); } }); + page.performOk(); + + handleSave(); + super.okPressed(); } @@ -383,4 +388,34 @@ public class PreferencePageContainerDialog extends Dialog implements IPreference fOkButton= createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); } + + /** + * Save the values specified in the pages. + * <p> + * The default implementation of this framework method saves all + * pages of type <code>PreferencePage</code> (if their store needs saving + * and is a <code>PreferenceStore</code>). + * </p> + * <p> + * Subclasses may override. + * </p> + */ + protected void handleSave() { + if (page instanceof PreferencePage) { + // Save now in case tbe workbench does not shutdown cleanly + IPreferenceStore store = + ((PreferencePage) page).getPreferenceStore(); + if (store != null + && store.needsSaving() + && store instanceof IPersistentPreferenceStore) { + try { + ((IPersistentPreferenceStore) store).save(); + } catch (IOException e) { + MessageDialog.openError( + getShell(), Policy.bind("saving"), + Policy.bind("saving", page.getTitle(), e.getMessage())); + } + } + } + } } |