package org.marketcetera.photon.internal.strategy.ui;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Table;
import org.eclipse.ui.part.ViewPart;
import org.marketcetera.photon.commons.ui.table.ColumnConfiguration;
import org.marketcetera.photon.commons.ui.table.TableConfiguration;
import org.marketcetera.photon.commons.ui.table.TableSupport;
import org.marketcetera.photon.commons.ui.workbench.ChooseColumnsMenu.IColumnProvider;
import org.marketcetera.photon.internal.strategy.TradeSuggestion;
import org.marketcetera.photon.internal.strategy.TradeSuggestionManager;
import org.marketcetera.util.misc.ClassVersion;
/* $License$ */
/**
* View for incoming trade suggestions.
*
* @author <a href="mailto:will@marketcetera.com">Will Horn</a>
* @version $Id: TradeSuggestionsView.java 16154 2012-07-14 16:34:05Z colin $
* @since 1.0.0
*/
@ClassVersion("$Id: TradeSuggestionsView.java 16154 2012-07-14 16:34:05Z colin $")
public class TradeSuggestionsView extends ViewPart implements IColumnProvider {
private TableSupport mTableSupport = TableSupport
.create(getTableConfiguration());
@Override
public void createPartControl(Composite parent) {
mTableSupport.createTable(parent);
mTableSupport.setInput(TradeSuggestionManager.getCurrent()
.getTradeSuggestions());
getViewSite().setSelectionProvider(mTableSupport.getTableViewer());
hookContextMenu();
}
private void hookContextMenu() {
MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$
menuMgr.setRemoveAllWhenShown(true);
Menu menu = menuMgr.createContextMenu(mTableSupport.getTableViewer()
.getControl());
mTableSupport.getTableViewer().getControl().setMenu(menu);
getSite().registerContextMenu(menuMgr, mTableSupport.getTableViewer());
}
@Override
public void setFocus() {
mTableSupport.setFocus();
}
@Override
public Table getColumnWidget() {
return mTableSupport.getTableViewer().getTable();
}
private TableConfiguration getTableConfiguration() {
ColumnConfiguration[] columns = new ColumnConfiguration[] {
ColumnConfiguration.hidden().beanProperty("identifier") //$NON-NLS-1$
.heading(
Messages.TRADE_SUGGESTION_IDENTIFIER_LABEL
.getText()),
ColumnConfiguration.defaults().beanProperty("source").heading( //$NON-NLS-1$
Messages.TRADE_SUGGESTION_SOURCE_LABEL.getText()),
ColumnConfiguration.defaults().beanProperty("side").heading( //$NON-NLS-1$
Messages.TRADE_SUGGESTION_SIDE_LABEL.getText()),
ColumnConfiguration.hidden().beanProperty("securityType") //$NON-NLS-1$
.heading(
Messages.TRADE_SUGGESTION_SECURITY_TYPE_LABEL
.getText()),
ColumnConfiguration.defaults().beanProperty("quantity") //$NON-NLS-1$
.heading(
Messages.TRADE_SUGGESTION_QUANTITY_LABEL
.getText()),
ColumnConfiguration.defaults()
.beanProperty("instrument").heading( //$NON-NLS-1$
Messages.TRADE_SUGGESTION_INSTRUMENT_LABEL
.getText()),
ColumnConfiguration.defaults().beanProperty("price").heading( //$NON-NLS-1$
Messages.TRADE_SUGGESTION_PRICE_LABEL.getText()),
ColumnConfiguration.defaults().beanProperty("orderType") //$NON-NLS-1$
.heading(
Messages.TRADE_SUGGESTION_ORDER_TYPE_LABEL
.getText()),
ColumnConfiguration.hidden().beanProperty("timeInForce") //$NON-NLS-1$
.heading(
Messages.TRADE_SUGGESTION_TIME_IN_FORCE_LABEL
.getText()),
ColumnConfiguration.hidden().beanProperty("orderCapacity") //$NON-NLS-1$
.heading(
Messages.TRADE_SUGGESTION_ORDER_CAPACITY_LABEL
.getText()),
ColumnConfiguration.hidden().beanProperty("positionEffect") //$NON-NLS-1$
.heading(
Messages.TRADE_SUGGESTION_POSITION_EFFECT_LABEL
.getText()),
ColumnConfiguration.defaults().beanProperty("score").heading( //$NON-NLS-1$
Messages.TRADE_SUGGESTION_SCORE_LABEL.getText()),
ColumnConfiguration.hidden().beanProperty("account").heading( //$NON-NLS-1$
Messages.TRADE_SUGGESTION_ACCOUNT_LABEL.getText()),
ColumnConfiguration.hidden().beanProperty("brokerID") //$NON-NLS-1$
.heading(
Messages.TRADE_SUGGESTION_BROKER_ID_LABEL
.getText()),
ColumnConfiguration.defaults().beanProperty("timestamp") //$NON-NLS-1$
.heading(
Messages.TRADE_SUGGESTION_TIMESTAMP_LABEL
.getText()).layoutData(
new ColumnWeightData(25)) };
return TableConfiguration.defaults().tableStyle(
SWT.MULTI | SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.BORDER)
.headerVisible(true).itemClass(TradeSuggestion.class).columns(
columns);
}
}