package org.eclipse.emf.emfstore.client.ui.controller;
import org.eclipse.emf.emfstore.client.model.controller.ForceRevertController;
import org.eclipse.emf.emfstore.client.ui.handlers.AbstractEMFStoreUIController;
import org.eclipse.emf.emfstore.client.ui.views.historybrowserview.HistoryBrowserView;
import org.eclipse.emf.emfstore.common.model.util.ModelUtil;
import org.eclipse.emf.emfstore.server.exceptions.EmfStoreException;
import org.eclipse.emf.emfstore.server.model.versioning.HistoryInfo;
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;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
public class UIForceRevertCommitController extends AbstractEMFStoreUIController {
private final HistoryInfo historyInfo;
public UIForceRevertCommitController(Shell shell, HistoryInfo historyInfo) {
super(shell);
this.historyInfo = historyInfo;
}
public void revert() {
// TODO: remove HistoryBrowserView
IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage();
if (activePage == null) {
return;
}
if (!(activePage.getActivePart() instanceof HistoryBrowserView)) {
return;
}
HistoryBrowserView view = (HistoryBrowserView) activePage.getActivePart();
MessageDialog dialog = new MessageDialog(null, "Confirmation", null,
"Do you really want to force to revert changes of this version on project "
+ view.getProjectSpace().getProjectName(), MessageDialog.QUESTION, new String[] { "Yes", "No" }, 0);
int result = dialog.open();
if (result == Window.OK) {
PrimaryVersionSpec versionSpec = ModelUtil.clone(historyInfo.getPrimerySpec());
try {
new ForceRevertController(view.getProjectSpace(), versionSpec).execute();
} catch (EmfStoreException e) {
}
}
}
}