column.setLabelProvider(new ColumnLabelProvider()
{
@Override
public String getText(Object element)
{
Transaction t = ((TransactionPair<?>) element).getTransaction();
if (t instanceof PortfolioTransaction)
return ((PortfolioTransaction) t).getType().toString();
else if (t instanceof AccountTransaction)
return ((AccountTransaction) t).getType().toString();
else
return null;
}
});
support.addColumn(column);
column = new Column(Messages.ColumnShares, SWT.RIGHT, 80);
column.setLabelProvider(new SharesLabelProvider()
{
@Override
public Long getValue(Object element)
{
Transaction t = ((TransactionPair<?>) element).getTransaction();
if (t instanceof PortfolioTransaction)
{
return ((PortfolioTransaction) t).getShares();
}
else if (t instanceof AccountTransaction)
{
long shares = ((AccountTransaction) t).getShares();
return shares != 0 ? shares : null;
}
return null;
}
@Override
public String getToolTipText(Object element)
{
Long v = getValue(element);
return v != null ? Values.Share.format(v) : null;
}
});
support.addColumn(column);
column = new Column(Messages.ColumnAmount, SWT.RIGHT, 80);
column.setLabelProvider(new ColumnLabelProvider()
{
@Override
public String getText(Object element)
{
Transaction t = ((TransactionPair<?>) element).getTransaction();
return Values.Amount.format(t.getAmount());
}
});
column.setSorter(ColumnViewerSorter.create(new Comparator<Object>()
{
@Override
public int compare(Object o1, Object o2)
{
long a1 = ((TransactionPair<?>) o1).getTransaction().getAmount();
long a2 = ((TransactionPair<?>) o2).getTransaction().getAmount();
return a1 > a2 ? 1 : a1 < a2 ? -1 : 0;
}
}));
support.addColumn(column);
column = new Column(Messages.ColumnQuote, SWT.RIGHT, 80);
column.setLabelProvider(new ColumnLabelProvider()
{
@Override
public String getText(Object element)
{
Transaction t = ((TransactionPair<?>) element).getTransaction();
if (t instanceof PortfolioTransaction)
{
return Values.Amount.format(((PortfolioTransaction) t).getActualPurchasePrice());
}
else if (t instanceof AccountTransaction)
{
long shares = ((AccountTransaction) t).getShares();
if (shares != 0)
return Values.Amount.format(Math.round(t.getAmount() * Values.Share.divider() / shares));
}
return null;
}
});
support.addColumn(column);
column = new Column(Messages.ColumnPortfolio, SWT.NONE, 120);
column.setLabelProvider(new ColumnLabelProvider()
{
@Override
public String getText(Object element)
{
TransactionOwner<?> owner = ((TransactionPair<?>) element).getOwner();
if (owner instanceof Portfolio)
return owner.toString();
return null;
}
});
support.addColumn(column);
column = new Column(Messages.ColumnOffsetAccount, SWT.NONE, 120);
column.setLabelProvider(new ColumnLabelProvider()
{
@Override
public String getText(Object element)
{
TransactionPair<?> pair = (TransactionPair<?>) element;
Transaction t = pair.getTransaction();
if (t instanceof PortfolioTransaction)
return t.getCrossEntry() != null ? t.getCrossEntry().getCrossEntity(t).toString() : null;
else
return pair.getOwner().toString();
}
});
support.addColumn(column);