package org.marketcetera.photon.commands; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.WorkbenchException; import org.eclipse.ui.handlers.HandlerUtil; import org.marketcetera.photon.PhotonPlugin; import org.marketcetera.photon.model.marketdata.MDDepthOfBook; import org.marketcetera.photon.model.marketdata.MDPackage; import org.marketcetera.photon.model.marketdata.MDQuote; import org.marketcetera.trade.*; import org.marketcetera.util.log.SLF4JLoggerProxy; import org.marketcetera.util.misc.ClassVersion; /* $License$ */ /** * Initializes order ticket from the selection quote. Currently this * assumes the quote is an {@link MDQuote} child of a {@link MDDepthOfBook} * object. * * @author <a href="mailto:will@marketcetera.com">Will Horn</a> * @version $Id: CreateOrderFromQuote.java 10808 2009-10-12 21:33:18Z * anshul $ * @since 2.0.0 */ @ClassVersion("$Id: CreateOrderFromQuote.java 16901 2014-05-11 16:14:11Z colin $") public class CreateOrderFromQuote extends AbstractHandler { @Override public Object execute(ExecutionEvent event) throws ExecutionException { Object selection = ((StructuredSelection)HandlerUtil.getActiveMenuSelection(event)).getFirstElement(); if(selection instanceof MDQuote) { MDQuote quote = (MDQuote)selection; Side side = Side.Sell; if(quote.eContainingFeature() == MDPackage.Literals.MD_DEPTH_OF_BOOK__ASKS) { side = Side.Buy; } Instrument instrument = quote.getInstrument(); OrderSingle newOrder = Factory.getInstance().createOrderSingle(); newOrder.setInstrument(instrument); newOrder.setOrderType(OrderType.Limit); newOrder.setSide(side); newOrder.setQuantity(quote.getSize()); newOrder.setPrice(quote.getPrice()); newOrder.setTimeInForce(TimeInForce.Day); try { PhotonPlugin.getDefault().showOrderInTicket(newOrder); } catch (WorkbenchException e) { SLF4JLoggerProxy.error(this, e); Shell shell = HandlerUtil.getActiveShellChecked(event); ErrorDialog.openError(shell, null, null, new Status(IStatus.ERROR, PhotonPlugin.ID, e .getLocalizedMessage())); } } return null; } }