package org.eclipse.emf.emfstore.client.ui.controller;
import java.io.IOException;
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
import org.eclipse.emf.emfstore.client.model.ServerInfo;
import org.eclipse.emf.emfstore.client.model.Usersession;
import org.eclipse.emf.emfstore.client.model.Workspace;
import org.eclipse.emf.emfstore.client.model.WorkspaceManager;
import org.eclipse.emf.emfstore.client.ui.handlers.AbstractEMFStoreUIController;
import org.eclipse.emf.emfstore.client.ui.views.emfstorebrowser.views.CreateProjectDialog;
import org.eclipse.emf.emfstore.server.exceptions.EmfStoreException;
import org.eclipse.emf.emfstore.server.model.ProjectId;
import org.eclipse.emf.emfstore.server.model.ProjectInfo;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.widgets.Shell;
public class UIProjectController extends AbstractEMFStoreUIController {
public UIProjectController(Shell shell) {
super(shell);
}
public ProjectSpace createLocalProject() {
CreateProjectDialog dialog = new CreateProjectDialog(getShell());
if (dialog.open() == Dialog.OK) {
return createLocalProject(dialog.getName(), dialog.getDescription());
}
return null;
}
protected ProjectSpace createLocalProject(String name, String description) {
return WorkspaceManager.getInstance().getCurrentWorkspace().createLocalProject(name, description);
}
public ProjectInfo createRemoteProject() throws EmfStoreException {
return createRemoteProject(null);
}
public ProjectInfo createRemoteProject(Usersession usersession) throws EmfStoreException {
CreateProjectDialog dialog = new CreateProjectDialog(getShell());
if (dialog.open() == Dialog.OK) {
return createRemoteProject(usersession, dialog.getName(), dialog.getDescription());
}
return null;
}
protected ProjectInfo createRemoteProject(Usersession usersession, String name, String description)
throws EmfStoreException {
return WorkspaceManager.getInstance().getCurrentWorkspace().createRemoteProject(usersession, name, description);
}
public void deleteProject(ProjectSpace projectSpace) {
try {
if (!confirmation(projectSpace)) {
return;
}
Workspace currentWorkspace = WorkspaceManager.getInstance().getCurrentWorkspace();
currentWorkspace.deleteProjectSpace(projectSpace);
} catch (IOException e) {
handleException(e);
}
}
public void deleteRemoteProject(ServerInfo serverInfo, ProjectId projectId, boolean deleteFiles)
throws EmfStoreException {
if (confirmationDialog("Do you really want to delete the remote project?")) {
WorkspaceManager.getInstance().getCurrentWorkspace()
.deleteRemoteProject(serverInfo, projectId, deleteFiles);
}
}
public void deleteRemoteProject(Usersession usersession, ProjectId projectId, boolean deleteFiles)
throws EmfStoreException {
if (confirmationDialog("Do you really want to delete the remote project?")) {
WorkspaceManager.getInstance().getCurrentWorkspace()
.deleteRemoteProject(usersession, projectId, deleteFiles);
}
}
protected boolean confirmation(ProjectSpace projectSpace) {
String message = "Do you really want to delete your local copy of project \"" + projectSpace.getProjectName()
+ "\n";
if (projectSpace.getBaseVersion() != null) {
message += " in version " + projectSpace.getBaseVersion().getIdentifier();
}
message += " ?";
return confirmationDialog(message);
}
}