package org.eclipse.emf.emfstore.client.ui.controller;
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
import org.eclipse.emf.emfstore.client.model.controller.RevertCommitController;
import org.eclipse.emf.emfstore.client.ui.handlers.AbstractEMFStoreUIController;
import org.eclipse.emf.emfstore.server.exceptions.EmfStoreException;
import org.eclipse.emf.emfstore.server.model.versioning.PrimaryVersionSpec;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Shell;
public class UIRevertCommitController extends AbstractEMFStoreUIController {
private final ProjectSpace projectSpace;
private final PrimaryVersionSpec versionSpec;
public UIRevertCommitController(Shell shell, final ProjectSpace projectSpace, final PrimaryVersionSpec versionSpec) {
super(shell);
this.projectSpace = projectSpace;
this.versionSpec = versionSpec;
}
/**
* Reverts the commit from a certain revision in a local workspace that can be commited later.
*
* @param versionSpec the version of the commit to revert
*/
public void revertCommit() {
MessageDialog dialog = new MessageDialog(null, "Confirmation", null,
"Do you really want to revert changes of this version on project " + projectSpace.getProjectName(),
MessageDialog.QUESTION, new String[] { "Yes", "No" }, 0);
int result = dialog.open();
if (result == Window.OK) {
try {
new RevertCommitController(projectSpace, versionSpec).execute();
} catch (EmfStoreException e) {
MessageDialog.openError(getShell(), "Error",
"An error occurred while revert the commit: " + e.getMessage());
}
}
}
}