/****************************************************************************** * 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 } }