blob: 94473c491a0835fc5f0849597d1822618edc6909 [file] [log] [blame]
/*******************************************************************************
* 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();
}
}