/******************************************************************************* * Copyright (c) 2000, 2010 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.team.internal.ui.wizards; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; import org.eclipse.osgi.util.NLS; import org.eclipse.team.core.TeamException; import org.eclipse.team.internal.ui.ITeamUIImages; import org.eclipse.team.internal.ui.TeamUIMessages; import org.eclipse.team.internal.ui.TeamUIPlugin; import org.eclipse.ui.IImportWizard; import org.eclipse.ui.IWorkbench; import org.xml.sax.SAXException; public class ProjectSetImportWizard extends Wizard implements IImportWizard { ImportProjectSetMainPage mainPage; public ProjectSetImportWizard() { setNeedsProgressMonitor(true); setWindowTitle(TeamUIMessages.ProjectSetImportWizard_Project_Set_1); } @Override public void addPages() { mainPage = new ImportProjectSetMainPage("projectSetMainPage", TeamUIMessages.ProjectSetImportWizard_Import_a_Project_Set_3, TeamUIPlugin.getImageDescriptor(ITeamUIImages.IMG_PROJECTSET_IMPORT_BANNER)); //$NON-NLS-1$ addPage(mainPage); } @Override public boolean performFinish() { final boolean[] result = new boolean[] {false}; try { ImportProjectSetOperation op; if (mainPage.getInputType() == ImportProjectSetMainPage.InputType_URL) { String psfContent = mainPage.getURLContents(); if(psfContent==null){ return false; } op = new ImportProjectSetOperation( mainPage.isRunInBackgroundOn() ? null : getContainer(), psfContent, mainPage.getUrl(), mainPage.getWorkingSets()); } else { op = new ImportProjectSetOperation( mainPage.isRunInBackgroundOn() ? null : getContainer(), mainPage.getFileName(), mainPage.getWorkingSets()); } op.run(); result[0] = true; } catch (InterruptedException e) { return true; } catch (InvocationTargetException e) { Throwable target = e.getTargetException(); if (target instanceof TeamException) { ErrorDialog.openError(getShell(), null, null, ((TeamException)target).getStatus()); return false; } if (target instanceof RuntimeException) { throw (RuntimeException)target; } if (target instanceof Error) { throw (Error)target; } if (target instanceof SAXException) { ErrorDialog.openError(getShell(), null, null, new Status(IStatus.ERROR, TeamUIPlugin.ID, 0, NLS.bind(TeamUIMessages.ProjectSetImportWizard_2, new String[] { target.getMessage() }), target)); return false; } ErrorDialog.openError(getShell(), null, null, new Status(IStatus.ERROR, TeamUIPlugin.ID, 0, NLS.bind(TeamUIMessages.ProjectSetImportWizard_3, new String[] { target.getMessage() }), target)); } return result[0]; } @Override public void init(IWorkbench workbench, IStructuredSelection selection) { // The code that finds "selection" is broken (it is always empty), so we // must dig for the selection in the workbench. PsfFilenameStore.getInstance().setDefaultFromSelection(workbench); } }