blob: 2e27424ed70a2fac4c1886f70bb9196eaba1d875 [file] [log] [blame]
package org.eclipse.emf.ecp.emfstore.handler;
import org.eclipse.emf.ecp.emfstore.core.internal.EMFStoreProvider;
import org.eclipse.emf.ecp.spi.core.InternalProject;
import org.eclipse.emf.ecp.spi.core.InternalRepository;
import org.eclipse.emf.ecp.wizards.RepositoryWizard;
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
import org.eclipse.emf.emfstore.client.model.ServerInfo;
import org.eclipse.emf.emfstore.client.ui.controller.UIShareProjectController;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.ui.handlers.HandlerUtil;
/**
* @author Eugen Neufeld
*/
public class ShareProjectHandler extends AbstractHandler
{
public Object execute(ExecutionEvent event) throws ExecutionException
{
InternalProject project = (InternalProject)((IStructuredSelection)HandlerUtil.getCurrentSelection(event))
.getFirstElement();
RepositoryWizard rw = new RepositoryWizard();
rw.init(project.getProvider());
WizardDialog wd = new WizardDialog(HandlerUtil.getActiveShell(event), rw);
int result = wd.open();
if (result == WizardDialog.OK)
{
// TODO internal cast again
InternalRepository repository = (InternalRepository)rw.getSelectedRepository();
project.undispose(repository);
ProjectSpace projectSpace = EMFStoreProvider.INSTANCE.getProjectSpace(project);
// TODO Ugly
if (projectSpace.getUsersession() == null)
{
ServerInfo serverInfo = EMFStoreProvider.INSTANCE.getServerInfo(project.getRepository());
projectSpace.setUsersession(serverInfo.getLastUsersession());
}
new UIShareProjectController(HandlerUtil.getActiveShell(event)).share(projectSpace);
}
return null;
}
}