package org.marketcetera.photon.ui; import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.marketcetera.client.ClientManager; import org.marketcetera.messagehistory.ReportHolder; import org.marketcetera.photon.Messages; import org.marketcetera.trade.BrokerID; import org.marketcetera.trade.UserID; import org.marketcetera.util.misc.ClassVersion; /* $License$ */ /** * Label provider that adds additional non-fix message columns. * * @author <a href="mailto:will@marketcetera.com">Will Horn</a> * @version $Id: BrokerSupportTableFormat.java 16154 2012-07-14 16:34:05Z colin $ * @since 1.0.0 */ @ClassVersion("$Id: BrokerSupportTableFormat.java 16154 2012-07-14 16:34:05Z colin $") public class BrokerSupportTableFormat extends FIXMessageTableFormat<ReportHolder> { private int mBrokerIndex; private int mTraderIndex; /** * Constructor. * * @param table the table * @param assignedViewID the view id */ public BrokerSupportTableFormat(Table table, String assignedViewID) { super(table, assignedViewID, ReportHolder.class); } @Override protected void recreateAllColumns(List<Integer> fieldsToShow) { super.recreateAllColumns(fieldsToShow); TableColumn broker = new TableColumn(getTable(), SWT.LEFT); broker.setText(Messages.BROKER_SUPPORT_TABLE_FORMAT_BROKER_COLUMN.getText()); broker.setMoveable(false); broker.setWidth(70); mBrokerIndex = getTable().getColumnCount() - 1; TableColumn trader = new TableColumn(getTable(), SWT.LEFT); trader.setText(Messages.BROKER_SUPPORT_TABLE_FORMAT_TRADER_COLUMN.getText()); trader.setMoveable(false); trader.setWidth(70); mTraderIndex = getTable().getColumnCount() - 1; } @Override protected String convertColumnValueToText(ReportHolder baseObject, int columnIndex) { if (columnIndex == mBrokerIndex) { BrokerID brokerID = baseObject.getReport().getBrokerID(); return brokerID == null ? null : brokerID.getValue(); } else if (columnIndex == mTraderIndex) { UserID traderID = baseObject.getReport().getActorID(); return traderID == null ? null : getTrader(traderID); } return super.convertColumnValueToText(baseObject, columnIndex); } private String getTrader(UserID id) { try { return ClientManager.getInstance().getUserInfo(id, true).getName(); } catch (Exception e) { Messages.BROKER_SUPPORT_TABLE_FORMAT_TRADER_NAME_ERROR.error(this, e, id); return id.toString(); } } }