package org.marketcetera.photon.actions;
import java.lang.reflect.InvocationTargetException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.marketcetera.photon.IImageKeys;
import org.marketcetera.photon.Messages;
import org.marketcetera.photon.PhotonPlugin;
import org.marketcetera.util.misc.ClassVersion;
/* $License$ */
/**
* UI for canceling all open orders.
*
* @author <a href="mailto:will@marketcetera.com">Will Horn</a>
* @version $Id: CancelAllOpenOrdersAction.java 16154 2012-07-14 16:34:05Z colin $
* @since 1.0.0
*/
@ClassVersion("$Id: CancelAllOpenOrdersAction.java 16154 2012-07-14 16:34:05Z colin $")
public class CancelAllOpenOrdersAction extends Action implements Messages {
private static final String ID = "org.marketcetera.photon.actions.CancelAllOpenOrdersAction"; //$NON-NLS-1$
/**
* Constructor.
*/
public CancelAllOpenOrdersAction() {
setId(ID);
setText(CANCEL_ALL_OPEN_ORDERS_ACTION.getText());
setToolTipText(CANCEL_ALL_OPEN_ORDERS_ACTION_DESCRIPTION.getText());
setImageDescriptor(PhotonPlugin
.getImageDescriptor(IImageKeys.CANCEL_ALL_OPEN_ORDERS));
}
@Override
public void run() {
if (MessageDialog.openConfirm(null,
CANCEL_ALL_OPEN_ORDERS_ACTION_DESCRIPTION.getText(),
CANCEL_ALL_OPEN_ORDERS_ACTION_CONFIRMATION.getText())) {
try {
new ProgressMonitorDialog(null).run(true, false,
new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor)
throws InvocationTargetException,
InterruptedException {
PhotonPlugin.getDefault().getPhotonController()
.cancelAllOpenOrders(monitor);
}
});
} catch (InterruptedException e) {
// Intentionally not restoring the interrupt status since this
// is the main UI thread where it will be ignored
reportException(e);
} catch (InvocationTargetException e) {
reportException(e);
}
}
}
private void reportException(Exception e) {
CANCEL_ALL_OPEN_ORDERS_FAILED.error(this, e);
ErrorDialog.openError(null, null, null, new Status(IStatus.ERROR,
PhotonPlugin.ID, CANCEL_ALL_OPEN_ORDERS_FAILED.getText(), e));
}
}