blob: dd1f9b3307f65d3a21a58e601f36f33a6dcdbb60 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2005 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.ccvs.ui.wizards;
import java.lang.reflect.InvocationTargetException;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.mapping.ResourceMapping;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.team.internal.ccvs.core.CVSTag;
import org.eclipse.team.internal.ccvs.core.ICVSFolder;
import org.eclipse.team.internal.ccvs.core.client.Command;
import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
import org.eclipse.team.internal.ccvs.ui.*;
import org.eclipse.team.internal.ccvs.ui.operations.UpdateOperation;
import org.eclipse.team.internal.ccvs.ui.tags.*;
import org.eclipse.ui.IWorkbenchPart;
public class UpdateWizard extends ResizableWizard {
private ResourceMapping[] mappers;
private final IWorkbenchPart part;
private TagSelectionWizardPage tagSelectionPage;
public UpdateWizard(IWorkbenchPart part, ResourceMapping[] mappers) {
super("UpdateWizard", CVSUIPlugin.getPlugin().getDialogSettings()); //$NON-NLS-1$
this.part = part;
this.mappers = mappers;
setWindowTitle(CVSUIMessages.UpdateWizard_title);
}
public static void run(IWorkbenchPart part, ResourceMapping[] mappers) {
final UpdateWizard wizard = new UpdateWizard(part, mappers);
open(part.getSite().getShell(), wizard);
}
@Override
public void addPages() {
ImageDescriptor substImage = CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_WIZBAN_CHECKOUT);
tagSelectionPage = new TagSelectionWizardPage("tagPage", CVSUIMessages.UpdateWizard_0, substImage, CVSUIMessages.UpdateWizard_1, TagSource.create(mappers), TagSourceWorkbenchAdapter.INCLUDE_ALL_TAGS); //$NON-NLS-1$
tagSelectionPage.setAllowNoTag(true);
tagSelectionPage.setHelpContxtId(IHelpContextIds.UPDATE_TAG_SELETION_PAGE);
CVSTag tag = getInitialSelection();
if (tag != null) {
tagSelectionPage.setSelection(tag);
}
addPage(tagSelectionPage);
}
/**
* @return
*/
private CVSTag getInitialSelection() {
try {
for (int i = 0; i < mappers.length; i++) {
ResourceMapping mapper = mappers[i];
IProject[] projects = mapper.getProjects();
for (int k = 0; k < projects.length; k++) {
IProject project = projects[k];
ICVSFolder folder = CVSWorkspaceRoot.getCVSFolderFor(project);
FolderSyncInfo info = folder.getFolderSyncInfo();
if (info != null) {
return info.getTag();
}
}
}
} catch (CoreException e) {
CVSUIPlugin.log(e);
}
return null;
}
@Override
public boolean performFinish() {
try {
new UpdateOperation(part, mappers, Command.NO_LOCAL_OPTIONS, tagSelectionPage.getSelectedTag()).run();
} catch (InvocationTargetException e) {
CVSUIPlugin.openError(getShell(), null, null, e);
return false;
} catch (InterruptedException e) {
return false;
}
return super.performFinish();
}
}