Package de.willuhn.jameica.hbci.gui.input

Source Code of de.willuhn.jameica.hbci.gui.input.UmsatzTypInput

/**********************************************************************
* $Source: /cvsroot/hibiscus/hibiscus/src/de/willuhn/jameica/hbci/gui/input/UmsatzTypInput.java,v $
* $Revision: 1.15 $
* $Date: 2010/06/03 13:54:02 $
* $Author: willuhn $
* $Locker:  $
* $State: Exp $
*
* Copyright (c) by willuhn.webdesign
* All rights reserved
*
**********************************************************************/

package de.willuhn.jameica.hbci.gui.input;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;

import de.willuhn.datasource.GenericIterator;
import de.willuhn.datasource.rmi.DBIterator;
import de.willuhn.jameica.gui.input.SelectInput;
import de.willuhn.jameica.hbci.HBCI;
import de.willuhn.jameica.hbci.HBCIProperties;
import de.willuhn.jameica.hbci.rmi.UmsatzTyp;
import de.willuhn.jameica.hbci.server.UmsatzTypUtil;
import de.willuhn.jameica.messaging.StatusBarMessage;
import de.willuhn.jameica.system.Application;
import de.willuhn.logging.Logger;
import de.willuhn.util.I18N;

/**
* Fertig konfigurierte Auswahlbox fuer die Umsatz-Kategorie.
*/
public class UmsatzTypInput extends SelectInput
{

  private final static I18N i18n = Application.getPluginLoader().getPlugin(HBCI.class).getResources().getI18N();

  /**
   * ct.
   * @param preselected der vorselectierte Umsatz-Typ.
   * @param typ Filter auf Kategorie-Typen.
   * Kategorien vom Typ "egal" werden grundsaetzlich angezeigt.
   * @see UmsatzTyp#TYP_AUSGABE
   * @see UmsatzTyp#TYP_EINNAHME
   * @throws RemoteException
   */
  public UmsatzTypInput(UmsatzTyp preselected, int typ) throws RemoteException
  {
    this(preselected,null,typ);
  }

  /**
   * ct.
   * @param preselected der vorselectierte Umsatz-Typ.
   * @param skip einzelner Umsatz-Typ, der nicht angeboten werden soll.
   * Damit ist es zum Beispiel moeglich, eine Endlos-Rekursion zu erzeugen,
   * wenn ein Parent ausgewaehlt werden soll, der User aber die Kategorie
   * sich selbst als Parent zuordnet.
   * @param typ Filter auf Kategorie-Typen.
   * Kategorien vom Typ "egal" werden grundsaetzlich angezeigt.
   * @see UmsatzTyp#TYP_AUSGABE
   * @see UmsatzTyp#TYP_EINNAHME
   * @throws RemoteException
   */
  public UmsatzTypInput(UmsatzTyp preselected, UmsatzTyp skip, int typ) throws RemoteException
  {
    super(init(skip,typ), preselected);
    this.setAttribute("name");
    this.setName(i18n.tr("Umsatz-Kategorie"));
    this.setPleaseChoose(i18n.tr("<Keine Kategorie>"));
    refreshComment();
   
    // Betrag aktualisieren
    this.addListener(new Listener() {
   
      public void handleEvent(Event event)
      {
        refreshComment();
      }
   
    });
  }
 
  /**
   * Initialisiert die Liste der anzuzeigenden Kategorien.
   * @param skip zu ueberspringende Kategorie.
   * @param typ der Kategorie-Typ.
   * @return korrigierte Liste.
   * @throws RemoteException
   */
  private static List init(UmsatzTyp skip, int typ) throws RemoteException
  {
    List l = new ArrayList();
    DBIterator list = UmsatzTypUtil.getRootElements();
    while (list.hasNext())
    {
      add((UmsatzTyp)list.next(),skip,l,typ);
    }
    return l;
  }
 
  /**
   * @param t
   * @param skip
   * @param l
   * @param typ
   * @throws RemoteException
   */
  private static void add(UmsatzTyp t, UmsatzTyp skip, List l, int typ) throws RemoteException
  {
    if (skip != null && skip.equals(t))
      return;
   
    // Wir filtern hier zwei Faelle:
   
    // a) typ == TYP_EGAL -> es wird nichts gefiltert
    // b) typ != TYP_EGAL -> es werden nur die angezeigt, bei denen TYP_EGAL oder Typ passt
   
    int ti = t.getTyp();
    if (typ == UmsatzTyp.TYP_EGAL || (ti == UmsatzTyp.TYP_EGAL || ti == typ))
    {
      l.add(t);
     
      GenericIterator children = t.getChildren();
      while (children.hasNext())
      {
        add((UmsatzTyp) children.next(),skip,l,typ);
      }
    }
  }

  /**
   * @see de.willuhn.jameica.gui.input.SelectInput#format(java.lang.Object)
   */
  protected String format(Object bean)
  {
    String name = super.format(bean);
    try
    {
      UmsatzTyp t = (UmsatzTyp) bean;
      int depth = t.getPath().size();
      for (int i=0;i<depth;++i)
      {
        name = "    " + name;
      }
    }
    catch (Exception e)
    {
      Logger.error("unable to indent category name",e);
    }
    return name;
  }
 
  /**
   * Aktualisiert den Kommentar.
   */
  private void refreshComment()
  {
    try
    {
      UmsatzTyp ut = (UmsatzTyp) getValue();
      if (ut == null)
      {
        setComment("");
        return;
      }
     
      Calendar cal = Calendar.getInstance();
      setComment(i18n.tr("Umsatz im laufenden Monat: {0} {1}", new String[]{HBCI.DECIMALFORMAT.format(ut.getUmsatz(cal.get(Calendar.DAY_OF_MONTH))), HBCIProperties.CURRENCY_DEFAULT_DE}));
    }
    catch (Exception e)
    {
      Logger.error("unable to refresh umsatz",e);
      Application.getMessagingFactory().sendMessage(new StatusBarMessage(i18n.tr("Fehler beim Aktualisieren des Umsatzes"), StatusBarMessage.TYPE_ERROR));
    }
  }
}


/*********************************************************************
* $Log: UmsatzTypInput.java,v $
* Revision 1.15  2010/06/03 13:54:02  willuhn
* @N UmsatzTypInput setzt jetzt auch gleich Name und Attribut
*
* Revision 1.14  2010/06/02 15:32:03  willuhn
* @N Unique-Constraint auf Spalte "name" in Tabelle "umsatztyp" entfernt. Eine Kategorie kann jetzt mit gleichem Namen beliebig oft auftreten
* @N Auswahlbox der Oberkategorie in Einstellungen->Umsatz-Kategorien zeigt auch die gleiche Baumstruktur wie bei der Zuordnung der Kategorie in der Umsatzliste
*
* Revision 1.13  2010/03/09 12:34:03  willuhn
* @N Jetzt mit korrekten Einrueckungen
*
* Revision 1.12  2010/03/06 00:03:23  willuhn
* *** empty log message ***
*
* Revision 1.11  2010/03/05 23:59:31  willuhn
* @C Code-Cleanup
*
* Revision 1.10  2010/03/05 23:52:27  willuhn
* @C Code-Cleanup
* @C Liste der Kategorien kann jetzt nicht mehr von aussen an UmsatzTypInput uebergeben werden
*
* Revision 1.9  2010/03/05 23:29:18  willuhn
* @N Statische Basis-Funktion zum Laden der Kategorien in der richtigen Reihenfolge
*
* Revision 1.8  2010/03/05 18:29:26  willuhn
* @B Einrueckung nochmal entfernt - das kann dazu fuehren, dass Kinder falsch einsortiert werden (ein einfaches order by parent_id reicht nicht)
*
* Revision 1.7  2010/03/05 18:07:26  willuhn
* @N Unterkategorien in Selectbox einruecken
**********************************************************************/
TOP

Related Classes of de.willuhn.jameica.hbci.gui.input.UmsatzTypInput

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.