setMulti(true);
setFormatter(new TableFormatter()
{
public void format(TableItem item)
{
Umsatz u = (Umsatz) item.getData();
if (u == null) return;
try {
item.setFont(NeueUmsaetze.isNew(u) ? Font.BOLD.getSWTFont() : Font.DEFAULT.getSWTFont());
if (u.hasFlag(Umsatz.FLAG_NOTBOOKED))
{
item.setForeground(Color.COMMENT.getSWTColor());
}
else
{
item.setForeground(ColorUtil.getForeground(u.getBetrag()));
// Saldo nicht mit einfaerben, dass irritiert sonst,
// wenn die Buchung zwar einen negativen Betrag hat,
// der Saldo aber einen positiven (und umgekehrt)
item.setForeground(7,Color.FOREGROUND.getSWTColor());
}
item.setText(1,""); // Kein Text in den Flags - wir wollen nur das Bild
if (u.hasFlag(Umsatz.FLAG_CHECKED))
item.setImage(1,SWTUtil.getImage("emblem-default.png"));
else
item.setImage(1,null); // Image wieder entfernen. Noetig, weil wir auch bei Updates aufgerufen werden
}
catch (RemoteException e)
{
Logger.error("unable to format line",e);
}
}
});
// BUGZILLA 23 http://www.willuhn.de/bugzilla/show_bug.cgi?id=23
// BUGZILLA 86 http://www.willuhn.de/bugzilla/show_bug.cgi?id=86
addColumn("#","id-int");
addColumn(i18n.tr("Flags"), "flags");
addColumn(i18n.tr("Gegenkonto"), "empfaenger");
addColumn(i18n.tr("Verwendungszweck"), "mergedzweck");
addColumn(i18n.tr("Datum"), "datum_pseudo", new DateFormatter(HBCI.DATEFORMAT));
addColumn(i18n.tr("Betrag"), "betrag",new CurrencyFormatter(HBCIProperties.CURRENCY_DEFAULT_DE,HBCI.DECIMALFORMAT));
addColumn(i18n.tr("Kategorie"), "umsatztyp",null,false);
// BUGZILLA 66 http://www.willuhn.de/bugzilla/show_bug.cgi?id=66
addColumn(i18n.tr("Zwischensumme"), "saldo",new CurrencyFormatter(HBCIProperties.CURRENCY_DEFAULT_DE,HBCI.DECIMALFORMAT));
addColumn(i18n.tr("Notiz"), "kommentar",null,true);
// BUGZILLA 84 http://www.willuhn.de/bugzilla/show_bug.cgi?id=84
setRememberOrder(true);
// BUGZILLA 233 http://www.willuhn.de/bugzilla/show_bug.cgi?id=233
setRememberColWidths(true);
// BUGZILLA 468 http://www.willuhn.de/bugzilla/show_bug.cgi?id=468
setRememberState(true);
// Wir erstellen noch Message-Consumer, damit wir ueber neu eintreffende
// und geaenderte Umsaetze informiert werden.
this.mcChanged = new UmsatzChangedMessageConsumer();
this.mcNew = new UmsatzNewMessageConsumer();
Application.getMessagingFactory().registerMessageConsumer(this.mcChanged);
Application.getMessagingFactory().registerMessageConsumer(this.mcNew);
this.addSelectionListener(new Listener()
{
public void handleEvent(Event event)
{
refreshSummary();
}
});
this.addChangeListener(new TableChangeListener() {
public void itemChanged(Object object, String attribute, String newValue) throws ApplicationException
{
try
{
Umsatz u = (Umsatz) object;
BeanUtil.set(u,attribute,newValue);
u.store();
}
catch (ApplicationException ae)
{
throw ae;
}