blob: f016aec469dff293afe0ad342ffa94d608b105da [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2008 Versant 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:
* Remy Chi Jian Suen (Versant Corporation) - initial API and implementation
******************************************************************************/
package org.eclipse.team.internal.ecf.ui.wizards;
import org.eclipse.core.resources.IResource;
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.core.user.IUser;
import org.eclipse.ecf.presence.roster.IRosterEntry;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.osgi.util.NLS;
import org.eclipse.team.internal.ecf.core.RemoteShare;
import org.eclipse.team.internal.ecf.core.TeamSynchronization;
import org.eclipse.team.internal.ecf.ui.Messages;
import org.eclipse.team.internal.ecf.ui.subscriber.RemoteSubscriberParticipant;
import org.eclipse.team.ui.TeamUI;
import org.eclipse.team.ui.synchronize.ISynchronizeParticipant;
public class RemotePeerSynchronizeWizard extends Wizard {
private RemotePeerSynchronizeWizardPage page;
public RemotePeerSynchronizeWizard() {
setWindowTitle(Messages.RemotePeerSynchronizeWizard_WindowTitle);
}
public void addPages() {
page = new RemotePeerSynchronizeWizardPage();
addPage(page);
}
public boolean performFinish() {
ID containerId = page.getContainerId();
RemoteShare share = TeamSynchronization.getShare(containerId);
IRosterEntry entry = page.getRosterEntry();
IUser remoteUser = entry.getUser();
ID ownId = entry.getRoster().getUser().getID();
IResource[] resources = page.getSelectedResources();
RemoteSubscriberParticipant participant = getSubscriberParticipant(share, ownId, remoteUser.getID());
participant.setResources(resources);
TeamUI.getSynchronizeManager().addSynchronizeParticipants(new ISynchronizeParticipant[] {participant});
if (resources.length == 1) {
participant.refresh(resources, NLS.bind(Messages.SynchronizeWithHandler_RemoteSynchronizationTaskName, remoteUser.getNickname()), NLS.bind(Messages.SynchronizeWithHandler_RemoteSynchronizationResourceDescription, resources[0].getName(), remoteUser.getNickname()), null);
} else {
participant.refresh(resources, NLS.bind(Messages.SynchronizeWithHandler_RemoteSynchronizationTaskName, remoteUser.getNickname()), NLS.bind(Messages.SynchronizeWithHandler_RemoteSynchronizationResourcesDescription, remoteUser.getNickname()), null);
}
return true;
}
public static RemoteSubscriberParticipant getSubscriberParticipant(RemoteShare share, ID ownId, ID remoteId) {
return new RemoteSubscriberParticipant(share, ownId, remoteId);
// FIXME: we should try to reuse participants, but reusing causes the
// 'Synchronize' view to currently not update for some reasons, thus,
// you can effectively only synchronize once per Eclipse session
}
}