### Eclipse Workspace Patch 1.0 #P org.eclipse.equinox.p2.ui.sdk Index: src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/ProvisioningPreferencePage.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/ProvisioningPreferencePage.java,v retrieving revision 1.10 diff -u -r1.10 ProvisioningPreferencePage.java --- src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/ProvisioningPreferencePage.java 30 May 2008 16:16:30 -0000 1.10 +++ src/org/eclipse/equinox/internal/p2/ui/sdk/prefs/ProvisioningPreferencePage.java 24 Mar 2009 19:52:30 -0000 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 IBM Corporation and others. + * Copyright (c) 2007, 2008, 2009 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 @@ -10,7 +10,6 @@ *******************************************************************************/ package org.eclipse.equinox.internal.p2.ui.sdk.prefs; -import org.eclipse.core.runtime.Preferences; import org.eclipse.equinox.internal.p2.ui.sdk.*; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.MessageDialogWithToggle; @@ -20,6 +19,7 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.eclipse.ui.*; +import org.osgi.service.prefs.Preferences; /** * Preference page for general provisioning preferences. @@ -97,10 +97,10 @@ } private void initialize() { - Preferences pref = ProvSDKUIActivator.getDefault().getPluginPreferences(); - showLatestRadio.setSelection(pref.getBoolean(PreferenceConstants.PREF_SHOW_LATEST_VERSION)); - showAllRadio.setSelection(!pref.getBoolean(PreferenceConstants.PREF_SHOW_LATEST_VERSION)); - String openWizard = pref.getString(PreferenceConstants.PREF_OPEN_WIZARD_ON_ERROR_PLAN); + Preferences pref = ProvSDKUIActivator.getPreferences(); + showLatestRadio.setSelection(pref.getBoolean(PreferenceConstants.PREF_SHOW_LATEST_VERSION, false)); + showAllRadio.setSelection(!pref.getBoolean(PreferenceConstants.PREF_SHOW_LATEST_VERSION, false)); + String openWizard = pref.get(PreferenceConstants.PREF_OPEN_WIZARD_ON_ERROR_PLAN, ""); //$NON-NLS-1$ alwaysShowFailedPlan.setSelection(openWizard.equals(MessageDialogWithToggle.ALWAYS)); neverShowFailedPlan.setSelection(openWizard.equals(MessageDialogWithToggle.NEVER)); promptOnFailedPlan.setSelection(openWizard.equals(MessageDialogWithToggle.PROMPT)); @@ -108,26 +108,26 @@ protected void performDefaults() { super.performDefaults(); - Preferences pref = ProvSDKUIActivator.getDefault().getPluginPreferences(); - showLatestRadio.setSelection(pref.getDefaultBoolean(PreferenceConstants.PREF_SHOW_LATEST_VERSION)); - showAllRadio.setSelection(!pref.getDefaultBoolean(PreferenceConstants.PREF_SHOW_LATEST_VERSION)); - String openWizard = pref.getDefaultString(PreferenceConstants.PREF_OPEN_WIZARD_ON_ERROR_PLAN); + Preferences pref = ProvSDKUIActivator.getDefaultPreferences(); + showLatestRadio.setSelection(pref.getBoolean(PreferenceConstants.PREF_SHOW_LATEST_VERSION, false)); + showAllRadio.setSelection(!pref.getBoolean(PreferenceConstants.PREF_SHOW_LATEST_VERSION, false)); + String openWizard = pref.get(PreferenceConstants.PREF_OPEN_WIZARD_ON_ERROR_PLAN, ""); //$NON-NLS-1$ alwaysShowFailedPlan.setSelection(openWizard.equals(MessageDialogWithToggle.ALWAYS)); neverShowFailedPlan.setSelection(openWizard.equals(MessageDialogWithToggle.NEVER)); promptOnFailedPlan.setSelection(openWizard.equals(MessageDialogWithToggle.PROMPT)); } public boolean performOk() { - Preferences pref = ProvSDKUIActivator.getDefault().getPluginPreferences(); - pref.setValue(PreferenceConstants.PREF_SHOW_LATEST_VERSION, showLatestRadio.getSelection()); + Preferences pref = ProvSDKUIActivator.getPreferences(); + pref.putBoolean(PreferenceConstants.PREF_SHOW_LATEST_VERSION, showLatestRadio.getSelection()); if (alwaysShowFailedPlan.getSelection()) - pref.setValue(PreferenceConstants.PREF_OPEN_WIZARD_ON_ERROR_PLAN, MessageDialogWithToggle.ALWAYS); + pref.put(PreferenceConstants.PREF_OPEN_WIZARD_ON_ERROR_PLAN, MessageDialogWithToggle.ALWAYS); else if (neverShowFailedPlan.getSelection()) - pref.setValue(PreferenceConstants.PREF_OPEN_WIZARD_ON_ERROR_PLAN, MessageDialogWithToggle.NEVER); + pref.put(PreferenceConstants.PREF_OPEN_WIZARD_ON_ERROR_PLAN, MessageDialogWithToggle.NEVER); else - pref.setValue(PreferenceConstants.PREF_OPEN_WIZARD_ON_ERROR_PLAN, MessageDialogWithToggle.PROMPT); + pref.put(PreferenceConstants.PREF_OPEN_WIZARD_ON_ERROR_PLAN, MessageDialogWithToggle.PROMPT); - ProvSDKUIActivator.getDefault().savePluginPreferences(); + ProvSDKUIActivator.savePreferences(); return true; } Index: src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKMessages.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKMessages.java,v retrieving revision 1.41 diff -u -r1.41 ProvSDKMessages.java --- src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKMessages.java 3 Mar 2009 22:32:29 -0000 1.41 +++ src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKMessages.java 24 Mar 2009 19:52:30 -0000 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 IBM Corporation and others. + * Copyright (c) 2007, 2008, 2009 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 @@ -19,11 +19,12 @@ * @since 3.4 */ public class ProvSDKMessages extends NLS { - private static final String BUNDLE_NAME = "org.eclipse.equinox.internal.p2.ui.sdk.messages"; //$NON-NLS-1$ + private static final String BUNDLE_NAME = "org.eclipse.equinox.internal.p2.ui.sdk.messages"; //$NON-NLS-1$; static { // load message values from bundle file NLS.initializeMessages(BUNDLE_NAME, ProvSDKMessages.class); } + public static String Error_Saving_Preferences; public static String Handler_CannotLaunchUI; public static String Handler_SDKUpdateUIMessageTitle; public static String InstallNewSoftwareHandler_LoadRepositoryJobLabel; Index: src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties,v retrieving revision 1.48 diff -u -r1.48 messages.properties --- src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties 3 Mar 2009 22:32:29 -0000 1.48 +++ src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties 24 Mar 2009 19:52:30 -0000 @@ -1,5 +1,5 @@ ############################################################################### -# Copyright (c) 2007, 2008 IBM Corporation and others. +# Copyright (c) 2007, 2008, 2009 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 @@ -10,6 +10,7 @@ ############################################################################### +Error_Saving_Preferences=Error saving update preferences Handler_CannotLaunchUI=Cannot launch the Update UI. This installation has not been configured properly for Software Updates. Handler_SDKUpdateUIMessageTitle=Software Updates InstallNewSoftwareHandler_LoadRepositoryJobLabel=Contacting Software Sites @@ -27,4 +28,4 @@ ProvisioningPreferencePage_OpenWizardIfInvalid=When software selected for an install wizard may not be compatible ProvisioningPreferencePage_PromptToOpenWizard=&Ask me what to do when it happens UpdateHandler_NoSitesMessage=There are no update sites to search. Do you wish to open the "Available Software Sites" preferences? -UpdateHandler_NoSitesTitle=No Updates Found +UpdateHandler_NoSitesTitle=No Updates Found \ No newline at end of file Index: src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java,v retrieving revision 1.33 diff -u -r1.33 ProvSDKUIActivator.java --- src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java 19 Mar 2009 22:50:40 -0000 1.33 +++ src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java 24 Mar 2009 19:52:30 -0000 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 IBM Corporation and others. + * Copyright (c) 2007, 2008, 2009 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 @@ -12,6 +12,7 @@ import java.io.*; import org.eclipse.core.runtime.*; +import org.eclipse.core.runtime.preferences.DefaultScope; import org.eclipse.equinox.internal.p2.ui.sdk.prefs.PreferenceConstants; import org.eclipse.equinox.internal.provisional.p2.core.IServiceUI; import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException; @@ -30,6 +31,8 @@ import org.eclipse.ui.plugin.AbstractUIPlugin; import org.eclipse.ui.statushandlers.StatusManager; import org.osgi.framework.*; +import org.osgi.service.prefs.BackingStoreException; +import org.osgi.service.prefs.Preferences; /** * Activator class for the p2 UI. @@ -46,6 +49,7 @@ private IPropertyChangeListener preferenceListener; public static final String PLUGIN_ID = "org.eclipse.equinox.p2.ui.sdk"; //$NON-NLS-1$ + public static final String PREFERENCE_ROOT = "/profile/_SELF_/"; //$NON-NLS-1$ public static BundleContext getContext() { return context; @@ -72,6 +76,22 @@ return imageDescriptorFromPlugin(PLUGIN_ID, path); } + public static Preferences getPreferences() { + return Platform.getPreferencesService().getRootNode().node(PREFERENCE_ROOT + PLUGIN_ID); + } + + public static Preferences getDefaultPreferences() { + return new DefaultScope().getNode(PLUGIN_ID); + } + + public static void savePreferences() { + try { + getPreferences().flush(); + } catch (BackingStoreException e) { + ProvUI.handleException(e, ProvSDKMessages.Error_Saving_Preferences, StatusManager.LOG); + } + } + public ProvSDKUIActivator() { // constructor } #P org.eclipse.equinox.p2.ui.sdk.scheduler Index: src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatesPreferencePage.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatesPreferencePage.java,v retrieving revision 1.1 diff -u -r1.1 AutomaticUpdatesPreferencePage.java --- src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatesPreferencePage.java 13 Nov 2008 17:33:39 -0000 1.1 +++ src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatesPreferencePage.java 24 Mar 2009 19:52:34 -0000 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 IBM Corporation and others. + * Copyright (c) 2007, 2008, 2009 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 @@ -10,7 +10,7 @@ *******************************************************************************/ package org.eclipse.equinox.internal.p2.ui.sdk.scheduler; -import org.eclipse.core.runtime.Preferences; +import org.osgi.service.prefs.Preferences; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.SWT; @@ -18,8 +18,15 @@ import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.*; -import org.eclipse.ui.*; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.PlatformUI; /** * Preference page for automated updates. @@ -193,19 +200,19 @@ } private void initialize() { - Preferences pref = AutomaticUpdatePlugin.getDefault().getPluginPreferences(); - enabledCheck.setSelection(pref.getBoolean(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED)); - setSchedule(pref.getString(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE)); - - dayCombo.setText(AutomaticUpdateScheduler.DAYS[getDay(pref, false)]); - hourCombo.setText(AutomaticUpdateScheduler.HOURS[getHour(pref, false)]); - - remindScheduleRadio.setSelection(pref.getBoolean(PreferenceConstants.PREF_REMIND_SCHEDULE)); - remindOnceRadio.setSelection(!pref.getBoolean(PreferenceConstants.PREF_REMIND_SCHEDULE)); - remindElapseCombo.setText(pref.getString(PreferenceConstants.PREF_REMIND_ELAPSED)); - searchOnlyRadio.setSelection(!pref.getBoolean(PreferenceConstants.PREF_DOWNLOAD_ONLY)); - searchAndDownloadRadio.setSelection(pref.getBoolean(PreferenceConstants.PREF_DOWNLOAD_ONLY)); - + Preferences pref = AutomaticUpdatePlugin.getPreferences(); + enabledCheck.setSelection(pref.getBoolean(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED, false)); + setSchedule(pref.get(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE, "")); + + dayCombo.setText(AutomaticUpdateScheduler.DAYS[getDay(pref)]); + hourCombo.setText(AutomaticUpdateScheduler.HOURS[getHour(pref)]); + + remindScheduleRadio.setSelection(pref.getBoolean(PreferenceConstants.PREF_REMIND_SCHEDULE, false)); + remindOnceRadio.setSelection(!pref.getBoolean(PreferenceConstants.PREF_REMIND_SCHEDULE, false)); + remindElapseCombo.setText(pref.get(PreferenceConstants.PREF_REMIND_ELAPSED, "")); + searchOnlyRadio.setSelection(!pref.getBoolean(PreferenceConstants.PREF_DOWNLOAD_ONLY, false)); + searchAndDownloadRadio.setSelection(pref.getBoolean(PreferenceConstants.PREF_DOWNLOAD_ONLY, false)); + pageChanged(); } @@ -235,21 +242,22 @@ protected void performDefaults() { super.performDefaults(); - Preferences pref = AutomaticUpdatePlugin.getDefault().getPluginPreferences(); - enabledCheck.setSelection(pref.getDefaultBoolean(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED)); + Preferences defaultPref = AutomaticUpdatePlugin.getDefaultPreferences(); + enabledCheck.setSelection(defaultPref.getBoolean(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED, false)); + + setSchedule(defaultPref.get(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE, "")); + onScheduleRadio.setSelection(defaultPref.getBoolean(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE, false)); - setSchedule(pref.getDefaultString(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE)); - onScheduleRadio.setSelection(pref.getDefaultBoolean(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE)); + dayCombo.setText(AutomaticUpdateScheduler.DAYS[getDay(defaultPref)]); + hourCombo.setText(AutomaticUpdateScheduler.HOURS[getHour(defaultPref)]); - dayCombo.setText(AutomaticUpdateScheduler.DAYS[getDay(pref, true)]); - hourCombo.setText(AutomaticUpdateScheduler.HOURS[getHour(pref, true)]); + remindOnceRadio.setSelection(!defaultPref.getBoolean(PreferenceConstants.PREF_REMIND_SCHEDULE, false)); + remindScheduleRadio.setSelection(defaultPref.getBoolean(PreferenceConstants.PREF_REMIND_SCHEDULE, false)); + remindElapseCombo.setText(defaultPref.get(PreferenceConstants.PREF_REMIND_ELAPSED, "")); - remindOnceRadio.setSelection(!pref.getDefaultBoolean(PreferenceConstants.PREF_REMIND_SCHEDULE)); - remindScheduleRadio.setSelection(pref.getDefaultBoolean(PreferenceConstants.PREF_REMIND_SCHEDULE)); - remindElapseCombo.setText(pref.getDefaultString(PreferenceConstants.PREF_REMIND_ELAPSED)); + searchOnlyRadio.setSelection(!defaultPref.getBoolean(PreferenceConstants.PREF_DOWNLOAD_ONLY, false)); + searchAndDownloadRadio.setSelection(defaultPref.getBoolean(PreferenceConstants.PREF_DOWNLOAD_ONLY, false)); - searchOnlyRadio.setSelection(!pref.getDefaultBoolean(PreferenceConstants.PREF_DOWNLOAD_ONLY)); - searchAndDownloadRadio.setSelection(pref.getDefaultBoolean(PreferenceConstants.PREF_DOWNLOAD_ONLY)); pageChanged(); } @@ -258,41 +266,41 @@ * Subclasses should override */ public boolean performOk() { - Preferences pref = AutomaticUpdatePlugin.getDefault().getPluginPreferences(); - pref.setValue(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED, enabledCheck.getSelection()); + Preferences pref = AutomaticUpdatePlugin.getPreferences(); + pref.putBoolean(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED, enabledCheck.getSelection()); if (onStartupRadio.getSelection()) - pref.setValue(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE, PreferenceConstants.PREF_UPDATE_ON_STARTUP); + pref.put(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE, PreferenceConstants.PREF_UPDATE_ON_STARTUP); else - pref.setValue(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE, PreferenceConstants.PREF_UPDATE_ON_SCHEDULE); - + pref.put(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE, PreferenceConstants.PREF_UPDATE_ON_SCHEDULE); + if (remindScheduleRadio.getSelection()) { - pref.setValue(PreferenceConstants.PREF_REMIND_SCHEDULE, true); - pref.setValue(PreferenceConstants.PREF_REMIND_ELAPSED, remindElapseCombo.getText()); + pref.putBoolean(PreferenceConstants.PREF_REMIND_SCHEDULE, true); + pref.put(PreferenceConstants.PREF_REMIND_ELAPSED, remindElapseCombo.getText()); } else { - pref.setValue(PreferenceConstants.PREF_REMIND_SCHEDULE, false); + pref.putBoolean(PreferenceConstants.PREF_REMIND_SCHEDULE, false); } + + pref.put(AutomaticUpdateScheduler.P_DAY, dayCombo.getText()); + pref.put(AutomaticUpdateScheduler.P_HOUR, hourCombo.getText()); + + pref.putBoolean(PreferenceConstants.PREF_DOWNLOAD_ONLY, searchAndDownloadRadio.getSelection()); - pref.setValue(AutomaticUpdateScheduler.P_DAY, dayCombo.getText()); - pref.setValue(AutomaticUpdateScheduler.P_HOUR, hourCombo.getText()); - - pref.setValue(PreferenceConstants.PREF_DOWNLOAD_ONLY, searchAndDownloadRadio.getSelection()); - - AutomaticUpdatePlugin.getDefault().savePluginPreferences(); + AutomaticUpdatePlugin.savePreferences(); AutomaticUpdatePlugin.getDefault().getScheduler().rescheduleUpdate(); return true; } - private int getDay(Preferences pref, boolean useDefault) { - String day = useDefault ? pref.getDefaultString(AutomaticUpdateScheduler.P_DAY) : pref.getString(AutomaticUpdateScheduler.P_DAY); + private int getDay(Preferences pref) { + String day = pref.get(AutomaticUpdateScheduler.P_DAY, ""); for (int i = 0; i < AutomaticUpdateScheduler.DAYS.length; i++) if (AutomaticUpdateScheduler.DAYS[i].equals(day)) return i; return 0; } - private int getHour(Preferences pref, boolean useDefault) { - String hour = useDefault ? pref.getDefaultString(AutomaticUpdateScheduler.P_HOUR) : pref.getString(AutomaticUpdateScheduler.P_HOUR); + private int getHour(Preferences pref) { + String hour = pref.get(AutomaticUpdateScheduler.P_HOUR, ""); for (int i = 0; i < AutomaticUpdateScheduler.HOURS.length; i++) if (AutomaticUpdateScheduler.HOURS[i].equals(hour)) return i; Index: src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatePlugin.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatePlugin.java,v retrieving revision 1.5 diff -u -r1.5 AutomaticUpdatePlugin.java --- src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatePlugin.java 18 Nov 2008 22:07:17 -0000 1.5 +++ src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdatePlugin.java 24 Mar 2009 19:52:34 -0000 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 IBM Corporation and others. + * Copyright (c) 2008, 2009 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 @@ -10,12 +10,18 @@ *******************************************************************************/ package org.eclipse.equinox.internal.p2.ui.sdk.scheduler; +import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.preferences.DefaultScope; import org.eclipse.equinox.internal.provisional.p2.core.eventbus.IProvisioningEventBus; +import org.eclipse.equinox.internal.provisional.p2.ui.ProvUI; import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.eclipse.ui.statushandlers.StatusManager; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; import org.osgi.service.packageadmin.PackageAdmin; +import org.osgi.service.prefs.BackingStoreException; +import org.osgi.service.prefs.Preferences; /** * Activator class for the automatic updates plugin @@ -31,6 +37,7 @@ private AutomaticUpdater updater; public static final String PLUGIN_ID = "org.eclipse.equinox.p2.ui.sdk.scheduler"; //$NON-NLS-1$ + public static final String PREFERENCE_ROOT = "/profile/_SELF_/"; //$NON-NLS-1$ public static BundleContext getContext() { return context; @@ -50,6 +57,22 @@ } return null; } + + static Preferences getPreferences() { + return Platform.getPreferencesService().getRootNode().node(PREFERENCE_ROOT + PLUGIN_ID); + } + + static Preferences getDefaultPreferences() { + return new DefaultScope().getNode(PLUGIN_ID); + } + + static void savePreferences() { + try { + getPreferences().flush(); + } catch (BackingStoreException e) { + ProvUI.handleException(e, AutomaticUpdateMessages.ErrorSavingPreferences, StatusManager.LOG); + } + } /** * Returns the singleton plugin instance Index: src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdateScheduler.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdateScheduler.java,v retrieving revision 1.6 diff -u -r1.6 AutomaticUpdateScheduler.java --- src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdateScheduler.java 24 Jan 2009 20:35:16 -0000 1.6 +++ src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdateScheduler.java 24 Mar 2009 19:52:34 -0000 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 IBM Corporation and others. + * Copyright (c) 2008, 2009 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 @@ -11,7 +11,10 @@ package org.eclipse.equinox.internal.p2.ui.sdk.scheduler; import java.util.Calendar; -import org.eclipse.core.runtime.*; + +import org.eclipse.core.runtime.IStatus; +import org.osgi.service.prefs.Preferences; +import org.eclipse.core.runtime.Status; import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper; import org.eclipse.equinox.internal.provisional.p2.engine.IProfile; import org.eclipse.equinox.internal.provisional.p2.engine.IProfileRegistry; @@ -110,8 +113,8 @@ public void rescheduleUpdate() { removeUpdateListener(); - Preferences pref = AutomaticUpdatePlugin.getDefault().getPluginPreferences(); - String schedule = pref.getString(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE); + Preferences pref = AutomaticUpdatePlugin.getPreferences(); + String schedule = pref.get(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE, ""); // See if we have a scheduled check or startup only. If it is // startup only, there is nothing more to do now, a listener will // be created on the next startup. @@ -125,11 +128,11 @@ // Nothing to do if we don't know what profile we are checking if (profileId == null) return; - Preferences pref = AutomaticUpdatePlugin.getDefault().getPluginPreferences(); + Preferences pref = AutomaticUpdatePlugin.getPreferences(); // See if automatic search is enabled at all - if (pref.getBoolean(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED) == false) + if (pref.getBoolean(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED, false) == false) return; - String schedule = pref.getString(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE); + String schedule = pref.get(PreferenceConstants.PREF_AUTO_UPDATE_SCHEDULE, ""); long delay = IUpdateChecker.ONE_TIME_CHECK; long poll = IUpdateChecker.ONE_TIME_CHECK; if (!schedule.equals(PreferenceConstants.PREF_UPDATE_ON_STARTUP)) { @@ -157,7 +160,7 @@ } private int getDay(Preferences pref) { - String day = pref.getString(P_DAY); + String day = pref.get(P_DAY, ""); for (int d = 0; d < DAYS.length; d++) if (DAYS[d].equals(day)) switch (d) { @@ -182,7 +185,7 @@ } private int getHour(Preferences pref) { - String hour = pref.getString(P_HOUR); + String hour = pref.get(P_HOUR, ""); for (int h = 0; h < HOURS.length; h++) if (HOURS[h].equals(hour)) return h + 1; Index: src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/ClassicUpdateInitializer.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/ClassicUpdateInitializer.java,v retrieving revision 1.1 diff -u -r1.1 ClassicUpdateInitializer.java --- src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/ClassicUpdateInitializer.java 13 Nov 2008 17:33:39 -0000 1.1 +++ src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/ClassicUpdateInitializer.java 24 Mar 2009 19:52:34 -0000 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 IBM Corporation and others. + * Copyright (c) 2008, 2009 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 @@ -11,11 +11,12 @@ package org.eclipse.equinox.internal.p2.ui.sdk.scheduler; import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Preferences; -import org.eclipse.core.runtime.preferences.*; +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.InstanceScope; import org.eclipse.equinox.internal.provisional.p2.ui.ProvUI; import org.eclipse.ui.statushandlers.StatusManager; import org.osgi.service.prefs.BackingStoreException; +import org.osgi.service.prefs.Preferences; public class ClassicUpdateInitializer extends AbstractPreferenceInitializer { @@ -23,28 +24,27 @@ private static final String UPDATE_PLUGIN_ID = "org.eclipse.update.scheduler"; //$NON-NLS-1$ public void initializeDefaultPreferences() { - Preferences prefP2 = AutomaticUpdatePlugin.getDefault().getPluginPreferences(); - //only migrate auto-update preference from UM once - boolean autoUpdateInit = prefP2.getBoolean(PreferenceConstants.PREF_AUTO_UPDATE_INIT); + Preferences prefP2 = AutomaticUpdatePlugin.getPreferences(); + boolean autoUpdateInit = prefP2.getBoolean(PreferenceConstants.PREF_AUTO_UPDATE_INIT, false); if (!autoUpdateInit) { // get UM automatic update preference - IPreferencesService preferencesService = Platform.getPreferencesService(); - org.osgi.service.prefs.Preferences instanceScope = preferencesService.getRootNode().node(InstanceScope.SCOPE); + Preferences instanceScope = Platform.getPreferencesService().getRootNode().node(InstanceScope.SCOPE); try { boolean updateNodeExists = instanceScope.nodeExists(UPDATE_PLUGIN_ID); org.osgi.service.prefs.Preferences prefUM = instanceScope.node(UPDATE_PLUGIN_ID); boolean enableUpdate = prefUM.getBoolean(P_ENABLED, false); // set p2 automatic update preference to match UM preference - prefP2.setValue(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED, enableUpdate); - prefP2.setValue(PreferenceConstants.PREF_AUTO_UPDATE_INIT, true); - AutomaticUpdatePlugin.getDefault().savePluginPreferences(); + prefP2.putBoolean(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED, enableUpdate); + prefP2.putBoolean(PreferenceConstants.PREF_AUTO_UPDATE_INIT, true); + AutomaticUpdatePlugin.savePreferences(); + // turn off UM automatic update preference if it exists if (updateNodeExists) { prefUM.putBoolean(P_ENABLED, false); prefUM.flush(); } } catch (BackingStoreException e) { - ProvUI.handleException(e, "Error saving classic update preferences", StatusManager.LOG); //$NON-NLS-1$ + ProvUI.handleException(e, AutomaticUpdateMessages.ErrorSavingClassicPreferences, StatusManager.LOG); //$NON-NLS-1$ } } } Index: src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/messages.properties =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/messages.properties,v retrieving revision 1.2 diff -u -r1.2 messages.properties --- src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/messages.properties 21 Jan 2009 23:38:43 -0000 1.2 +++ src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/messages.properties 24 Mar 2009 19:52:34 -0000 @@ -68,3 +68,5 @@ AutomaticUpdatesPreferencePage_RemindGroup=&When updates are found AutomaticUpdatesPreferencePage_RemindSchedule=&Remind me about updates every: AutomaticUpdatesPreferencePage_RemindOnce=Notify me &once about updates +ErrorSavingPreferences=Error saving update preferences +ErrorSavingClassicPreferences=Error saving classic update preferences \ No newline at end of file Index: src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdateMessages.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdateMessages.java,v retrieving revision 1.2 diff -u -r1.2 AutomaticUpdateMessages.java --- src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdateMessages.java 21 Jan 2009 23:38:43 -0000 1.2 +++ src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdateMessages.java 24 Mar 2009 19:52:34 -0000 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 IBM Corporation and others. + * Copyright (c) 2008, 2009 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 @@ -82,4 +82,6 @@ public static String AutomaticUpdatesPreferencePage_RemindOnce; public static String AutomaticUpdatesPopup_ClickToReviewDownloaded; public static String AutomaticUpdatesPopup_ClickToReviewNotDownloaded; + public static String ErrorSavingPreferences; + public static String ErrorSavingClassicPreferences; }