Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'update/org.eclipse.update.scheduler/src/org/eclipse/update/internal/scheduler/UpdateJobChangeAdapter.java')
-rw-r--r--update/org.eclipse.update.scheduler/src/org/eclipse/update/internal/scheduler/UpdateJobChangeAdapter.java112
1 files changed, 112 insertions, 0 deletions
diff --git a/update/org.eclipse.update.scheduler/src/org/eclipse/update/internal/scheduler/UpdateJobChangeAdapter.java b/update/org.eclipse.update.scheduler/src/org/eclipse/update/internal/scheduler/UpdateJobChangeAdapter.java
new file mode 100644
index 000000000..94473c491
--- /dev/null
+++ b/update/org.eclipse.update.scheduler/src/org/eclipse/update/internal/scheduler/UpdateJobChangeAdapter.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2005 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.update.internal.scheduler;
+
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.update.internal.ui.UpdateUI;
+import org.eclipse.update.internal.ui.UpdateUIMessages;
+import org.eclipse.update.internal.ui.wizards.InstallWizard;
+import org.eclipse.update.internal.ui.wizards.InstallWizard2;
+import org.eclipse.update.internal.ui.wizards.ResizableInstallWizardDialog;
+
+class UpdateJobChangeAdapter extends JobChangeAdapter {
+ private SchedulerStartup startup;
+
+ public UpdateJobChangeAdapter(SchedulerStartup startup) {
+ this.startup = startup;
+ }
+
+ public void done(IJobChangeEvent event) {
+ if (event.getJob() == startup.getJob()) {
+
+ // prompt the user
+ if (((AutomaticUpdateJob) startup.getJob()).getUpdates().length > 0
+ && !InstallWizard.isRunning()) {
+ if (UpdateSchedulerPlugin.getDefault().getPluginPreferences()
+ .getBoolean(UpdateSchedulerPlugin.P_DOWNLOAD)) {
+ UpdateUI.getStandardDisplay().asyncExec(new Runnable() {
+ public void run() {
+ asyncNotifyDownloadUser();
+ startup.scheduleUpdateJob();
+ }
+ });
+ } else {
+ UpdateUI.getStandardDisplay().asyncExec(new Runnable() {
+ public void run() {
+ asyncNotifyUser();
+ startup.scheduleUpdateJob();
+ }
+ });
+ }
+ }
+ }
+ }
+
+ private void asyncNotifyUser() {
+ // ask the user to install updates
+ UpdateUI.getStandardDisplay().beep();
+ if (MessageDialog.openQuestion(UpdateUI.getActiveWorkbenchShell(),
+ UpdateUIMessages.AutomaticUpdatesJob_EclipseUpdates1,
+ UpdateUIMessages.AutomaticUpdatesJob_UpdatesAvailable)) {
+ BusyIndicator.showWhile(UpdateUI.getStandardDisplay(),
+ new Runnable() {
+ public void run() {
+ openInstallWizard2();
+ }
+ });
+ }
+ // notify the manager that the job is done
+ // job.done(Status.OK_STATUS);
+ }
+
+ private void asyncNotifyDownloadUser() {
+ // ask the user to install updates
+ UpdateUI.getStandardDisplay().beep();
+ if (MessageDialog.openQuestion(UpdateUI.getActiveWorkbenchShell(),
+ UpdateUIMessages.AutomaticUpdatesJob_EclipseUpdates2,
+ UpdateUIMessages.AutomaticUpdatesJob_UpdatesDownloaded)) {
+ BusyIndicator.showWhile(UpdateUI.getStandardDisplay(),
+ new Runnable() {
+ public void run() {
+ openInstallWizard2();
+ }
+ });
+ } else {
+ // Don't discard downloaded data, as next time we compare
+ // timestamps.
+
+ // discard all the downloaded data from cache (may include old
+ // data as well)
+ // Utilities.flushLocalFile();
+ }
+ // notify the manager that the job is done
+ // job.done(Status.OK_STATUS);
+ }
+
+ private void openInstallWizard2() {
+ if (InstallWizard.isRunning())
+ // job ends and a new one is rescheduled
+ return;
+ AutomaticUpdateJob ujob = (AutomaticUpdateJob) startup.getJob();
+ InstallWizard2 wizard = new InstallWizard2(ujob.getSearchRequest(),
+ ujob.getUpdates(), true);
+ WizardDialog dialog = new ResizableInstallWizardDialog(UpdateUI
+ .getActiveWorkbenchShell(), wizard,
+ UpdateUIMessages.AutomaticUpdatesJob_Updates);
+ dialog.create();
+ dialog.open();
+ }
+
+}

Back to the top