package org.eclipselabs.e4.tapiji.translator.ui.window;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.workbench.IWorkbench;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Shell;
import org.eclipselabs.e4.tapiji.logger.Log;
public class ExitHandler {
private static final String TAG = ExitHandler.class.getSimpleName();
@Execute
public void execute(final IWorkbench workbench, final EPartService partService, final IEclipseContext context) {
final IEclipseContext activeWindowContext = context.getActiveChild();
final Shell shell = new Shell(SWT.SHELL_TRIM);
if ((null != activeWindowContext) && !partService.getDirtyParts().isEmpty()) {// TODO Does this work?
final boolean result = showDialog(shell, "Unsaved", "Unsaved data, do you want to save?");
if (result) {
partService.saveAll(false);
workbench.close();
Log.i(TAG, "Data saved. Close workbench!");
return;
}
}
if (showDialog(shell, "Confirmation", "Do you want to exit?")) {
Log.i(TAG, "Close workbench!");
workbench.close();
}
}
public boolean showDialog(final Shell shell, final String title, final String message) {
return MessageDialog.openConfirm(shell, title, message);
}
}