blob: 916e4f6f0486046d301fd0cb76e5ea2ed4a9f7ae [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2009 Tasktop Technologies and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* https://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.internal.tasks.ui.wizards;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.mylyn.internal.tasks.ui.TaskListBackupManager;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.internal.tasks.ui.util.TaskDataExportOperation;
import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
import org.eclipse.ui.IExportWizard;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.progress.IProgressService;
/**
* Wizard for exporting tasklist data files to the file system. This wizard uses a single page: TaskDataExportWizardPage
*
* @author Wesley Coelho
* @author Mik Kersten
*/
public class TaskDataExportWizard extends Wizard implements IExportWizard {
/**
* The name of the dialog store's section associated with the task data export wizard
*/
private final static String SETTINGS_SECTION = "org.eclipse.mylyn.tasklist.ui.exportWizard"; //$NON-NLS-1$
private TaskDataExportWizardPage exportPage = null;
public TaskDataExportWizard() {
IDialogSettings masterSettings = TasksUiPlugin.getDefault().getDialogSettings();
setDialogSettings(getSettingsSection(masterSettings));
setNeedsProgressMonitor(true);
setWindowTitle(Messages.TaskDataExportWizard_Export);
}
/**
* Finds or creates a dialog settings section that is used to make the dialog control settings persistent
*/
private IDialogSettings getSettingsSection(IDialogSettings master) {
IDialogSettings settings = master.getSection(SETTINGS_SECTION);
if (settings == null) {
settings = master.addNewSection(SETTINGS_SECTION);
}
return settings;
}
@Override
public void addPages() {
exportPage = new TaskDataExportWizardPage();
addPage(exportPage);
}
public void init(IWorkbench workbench, IStructuredSelection selection) {
// no initialization needed
}
/**
* Called when the user clicks finish. Saves the task data. Waits until all overwrite decisions have been made
* before starting to save files. If any overwrite is canceled, no files are saved and the user must adjust the
* dialog.
*/
@Override
public boolean performFinish() {
String destDir = exportPage.getDestinationDirectory();
final File destZipFile = new File(destDir + File.separator + TaskListBackupManager.getBackupFileName());
TaskDataExportOperation job = new TaskDataExportOperation(exportPage.getDestinationDirectory(),
destZipFile.getName());
try {
if (getContainer() != null) {
getContainer().run(true, true, job);
} else {
IProgressService service = PlatformUI.getWorkbench().getProgressService();
service.run(true, true, job);
}
} catch (InvocationTargetException e) {
Status status = new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, e.getMessage(), e);
TasksUiInternal.logAndDisplayStatus(Messages.TaskDataExportWizard_export_failed, status);
} catch (InterruptedException e) {
// user canceled
}
exportPage.saveSettings();
return true;
}
}