Package de.willuhn.jameica.hbci.gui.menus

Source Code of de.willuhn.jameica.hbci.gui.menus.UmsatzList

/**********************************************************************
* $Source: /cvsroot/hibiscus/hibiscus/src/de/willuhn/jameica/hbci/gui/menus/UmsatzList.java,v $
* $Revision: 1.38 $
* $Date: 2011/05/06 09:03:54 $
* $Author: willuhn $
* $Locker:  $
* $State: Exp $
*
* Copyright (c) by willuhn.webdesign
* All rights reserved
*
**********************************************************************/
package de.willuhn.jameica.hbci.gui.menus;

import java.rmi.RemoteException;

import de.willuhn.jameica.gui.Action;
import de.willuhn.jameica.gui.extension.Extendable;
import de.willuhn.jameica.gui.extension.ExtensionRegistry;
import de.willuhn.jameica.gui.internal.action.Print;
import de.willuhn.jameica.gui.parts.CheckedContextMenuItem;
import de.willuhn.jameica.gui.parts.CheckedSingleContextMenuItem;
import de.willuhn.jameica.gui.parts.ContextMenu;
import de.willuhn.jameica.gui.parts.ContextMenuItem;
import de.willuhn.jameica.hbci.HBCI;
import de.willuhn.jameica.hbci.Settings;
import de.willuhn.jameica.hbci.gui.action.AuslandsUeberweisungNew;
import de.willuhn.jameica.hbci.gui.action.DBObjectDelete;
import de.willuhn.jameica.hbci.gui.action.EmpfaengerAdd;
import de.willuhn.jameica.hbci.gui.action.FlaggableChange;
import de.willuhn.jameica.hbci.gui.action.UmsatzAssign;
import de.willuhn.jameica.hbci.gui.action.UmsatzDetail;
import de.willuhn.jameica.hbci.gui.action.UmsatzExport;
import de.willuhn.jameica.hbci.gui.action.UmsatzImport;
import de.willuhn.jameica.hbci.gui.action.UmsatzMarkChecked;
import de.willuhn.jameica.hbci.gui.action.UmsatzTypNew;
import de.willuhn.jameica.hbci.io.print.PrintSupportUmsatzList;
import de.willuhn.jameica.hbci.rmi.Konto;
import de.willuhn.jameica.hbci.rmi.Umsatz;
import de.willuhn.jameica.hbci.rmi.UmsatzTyp;
import de.willuhn.jameica.system.Application;
import de.willuhn.logging.Logger;
import de.willuhn.util.ApplicationException;
import de.willuhn.util.I18N;

/**
* Liefert ein vorgefertigtes Kontext-Menu, welches an Listen von Umsaetzen
* angehaengt werden kann.
*/
public class UmsatzList extends ContextMenu implements Extendable
{

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

  /**
   * Erzeugt ein Kontext-Menu fuer eine Liste von Umsaetzen.
   */
  public UmsatzList()
  {
    this(null);
  }

  /**
   * Erzeugt ein Kontext-Menu fuer eine Liste von Umsaetzen.
   * @param konto optionale Angabe des Kontos.
   */
  public UmsatzList(final Konto konto)
  {
    addItem(new OpenItem());
    addItem(new UmsatzItem(i18n.tr("L�schen..."), new DBObjectDelete(),"user-trash-full.png"));
    addItem(ContextMenuItem.SEPARATOR);
    addItem(new UmsatzItem(i18n.tr("In Adressbuch �bernehmen"),new EmpfaengerAdd(),"contact-new.png"));
    addItem(new UmsatzItem(i18n.tr("Als neue �berweisung anlegen..."),new AuslandsUeberweisungNew(),"stock_next.png"));
    addItem(ContextMenuItem.SEPARATOR);
    addItem(new UmsatzBookedItem(i18n.tr("als \"gepr�ft\" markieren..."),new UmsatzMarkChecked(Umsatz.FLAG_CHECKED,true),"emblem-default.png","ALT+G"));
    addItem(new UmsatzBookedItem(i18n.tr("als \"ungepr�ft\" markieren..."),new FlaggableChange(Umsatz.FLAG_CHECKED,false),"edit-undo.png","CTRL+ALT+G"));
    addItem(ContextMenuItem.SEPARATOR);
    addItem(new UmsatzItem(i18n.tr("Drucken..."),new Action() {
      public void handleAction(Object context) throws ApplicationException
      {
        new Print().handleAction(new PrintSupportUmsatzList(context));
      }
    },"document-print.png"));
    addItem(new UmsatzItem(i18n.tr("Exportieren..."),new UmsatzExport(),"document-save.png"));
    addItem(new ContextMenuItem(i18n.tr("Importieren..."),new UmsatzImport()
    {

      public void handleAction(Object context) throws ApplicationException
      {
        super.handleAction(konto != null ? konto : context);
      }
     
    }
    ,"document-open.png"));
   
    // BUGZILLA 512 / 1115
    addItem(ContextMenuItem.SEPARATOR);
    addItem(new UmsatzBookedItem(i18n.tr("Kategorie zuordnen..."),new UmsatzAssign(),"x-office-spreadsheet.png","ALT+K"));
    addItem(new CheckedSingleContextMenuItem(i18n.tr("Kategorie bearbeiten..."),new UmsatzTypNew(),"document-open.png")
    {
      public boolean isEnabledFor(Object o)
      {
        // Wen es ein Umsatz ist, dann nur aktivieren, wenn der Umsatz eine Kategorie hat
        if (o instanceof Umsatz)
        {
          try
          {
            return ((Umsatz)o).getUmsatzTyp() != null;
          }
          catch (RemoteException re)
          {
            Logger.error("unable to check umsatztyp",re);
          }
        }
       
        // Ansonsten wie gehabt
        return super.isEnabledFor(o);
      }
     
    });
    addItem(new ContextMenuItem(i18n.tr("Neue Kategorie anlegen..."),new Action()
    {
      public void handleAction(Object context) throws ApplicationException
      {
        // BUGZILLA 926
        UmsatzTyp ut = null;
        if (context != null && (context instanceof Umsatz))
        {
          try
          {
            Umsatz u = (Umsatz) context;
            ut = (UmsatzTyp) Settings.getDBService().createObject(UmsatzTyp.class,null);
            ut.setName(u.getGegenkontoName());
            ut.setPattern(u.getZweck());
          }
          catch (Exception e)
          {
            Logger.error("error while preparing category",e);
          }
        }
        new UmsatzTypNew().handleAction(ut);
      }
    },"text-x-generic.png"));

    // Wir geben das Context-Menu jetzt noch zur Erweiterung frei.
    ExtensionRegistry.extend(this);

  }
 
  /**
   * Pruefen, ob es sich wirklich um einen Umsatz handelt.
   */
  private class UmsatzItem extends CheckedContextMenuItem
  {
    /**
     * ct.
     * @param text Label.
     * @param action Action.
     * @param icon optionales Icon.
     */
    public UmsatzItem(String text, Action action, String icon)
    {
      super(text,action,icon);
    }

    /**
     * @see de.willuhn.jameica.gui.parts.CheckedContextMenuItem#isEnabledFor(java.lang.Object)
     */
    public boolean isEnabledFor(Object o)
    {
      if ((o instanceof Umsatz) || (o instanceof Umsatz[]))
        return super.isEnabledFor(o);
      return false;
    }
   
  }

  /**
   * Ueberschrieben, um zu pruefen, ob ein Array oder ein einzelnes Element markiert ist.
   */
  private class OpenItem extends UmsatzItem
  {
    private OpenItem()
    {
      super(i18n.tr("�ffnen"),new UmsatzDetail(),"document-open.png");
    }
    /**
     * @see de.willuhn.jameica.gui.parts.ContextMenuItem#isEnabledFor(java.lang.Object)
     */
    public boolean isEnabledFor(Object o)
    {
      if (o instanceof Umsatz)
        return super.isEnabledFor(o);
      return false;
    }
  }

  /**
   * @see de.willuhn.jameica.gui.extension.Extendable#getExtendableID()
   */
  public String getExtendableID()
  {
    return this.getClass().getName();
  }

  /**
   * Ueberschrieben, um nur fuer gebuchte Umsaetze zu aktivieren
   */
  private class UmsatzBookedItem extends UmsatzItem
  {
    /**
     * ct.
     * @param text Label.
     * @param action Action.
     * @param icon optionales Icon.
     * @param shortcut Shortcut.
     */
    public UmsatzBookedItem(String text, Action action, String icon, String shortcut)
    {
      super(text,action,icon);
      this.setShortcut(shortcut);
    }
   
    /**
     * @see de.willuhn.jameica.gui.parts.ContextMenuItem#isEnabledFor(java.lang.Object)
     */
    public boolean isEnabledFor(Object o)
    {
      if ((o instanceof Umsatz) || (o instanceof Umsatz[]))
      {
        Umsatz[] umsaetze = null;
       
        if (o instanceof Umsatz)
          umsaetze = new Umsatz[]{(Umsatz) o};
        else
          umsaetze = (Umsatz[]) o;

        try
        {
          for (int i=0;i<umsaetze.length;++i)
          {
            if ((umsaetze[i].getFlags() & Umsatz.FLAG_NOTBOOKED) != 0)
              return false;
          }
        }
        catch (RemoteException re)
        {
          Logger.error("unable to check for not-booked entries",re);
        }
        return super.isEnabledFor(o);
      }
      return false;
    }
  }
 

}


/**********************************************************************
* $Log: UmsatzList.java,v $
* Revision 1.38  2011/05/06 09:03:54  willuhn
* @C Labels geaendert
*
* Revision 1.37  2011-04-13 17:35:46  willuhn
* @N Druck-Support fuer Kontoauszuege fehlte noch
*
* Revision 1.36  2011-04-13 08:48:01  willuhn
* @N Loeschen von Vormerkbuchungen zulassen
*
* Revision 1.35  2010/03/16 00:44:18  willuhn
* @N Komplettes Redesign des CSV-Imports.
*   - Kann nun erheblich einfacher auch fuer andere Datentypen (z.Bsp.Ueberweisungen) verwendet werden
*   - Fehlertoleranter
*   - Mehrfachzuordnung von Spalten (z.Bsp. bei erweitertem Verwendungszweck) moeglich
*   - modulare Deserialisierung der Werte
*   - CSV-Exports von Hibiscus koennen nun 1:1 auch wieder importiert werden (Import-Preset identisch mit Export-Format)
*   - Import-Preset wird nun im XML-Format nach ~/.jameica/hibiscus/csv serialisiert. Damit wird es kuenftig moeglich sein,
*     CSV-Import-Profile vorzukonfigurieren und anschliessend zu exportieren, um sie mit anderen Usern teilen zu koennen
*
* Revision 1.34  2009/09/15 00:23:35  willuhn
* @N BUGZILLA 745
*
* Revision 1.33  2009/02/24 22:42:33  willuhn
* @N Da vorgemerkte Umsaetze jetzt komplett geloescht werden, wenn sie neu abgerufen werden, duerfen sie auch nicht mehr geaendert werden (also auch keine Kategorie und kein Kommentar)
*
* Revision 1.32  2009/02/12 18:37:18  willuhn
* @N Erster Code fuer vorgemerkte Umsaetze
*
* Revision 1.31  2009/02/04 23:06:24  willuhn
* @N BUGZILLA 308 - Umsaetze als "geprueft" markieren
*
* Revision 1.30  2008/12/19 12:16:05  willuhn
* @N Mehr Icons
* @C Reihenfolge der Contextmenu-Eintraege vereinheitlicht
*
* Revision 1.29  2007/12/04 23:59:00  willuhn
* @N Bug 512
*
* Revision 1.28  2007/03/22 22:36:42  willuhn
* @N Contextmenu in Trees
* @C Kategorie-Baum in separates TreePart ausgelagert
*
* Revision 1.27  2007/03/16 14:40:02  willuhn
* @C Redesign ImportMessage
* @N Aktualisierung der Umsatztabelle nach Kategorie-Zuordnung
*
* Revision 1.24  2007/02/21 11:58:52  willuhn
* @N Bug 315
*
* Revision 1.23  2006/11/30 23:48:40  willuhn
* @N Erste Version der Umsatz-Kategorien drin
*
* Revision 1.22  2006/10/09 23:49:39  willuhn
* @N extendable
*
* Revision 1.21  2006/10/05 16:42:28  willuhn
* @N CSV-Import/Export fuer Adressen
*
* Revision 1.20  2006/08/02 17:49:44  willuhn
* @B Bug 255
* @N Erkennung des Kontos beim Import von Umsaetzen aus dem Kontextmenu heraus
*
* Revision 1.19  2006/06/08 17:40:59  willuhn
* @N Vorbereitungen fuer DTAUS-Import von Sammellastschriften und Umsaetzen
*
* Revision 1.18  2006/06/06 22:41:26  willuhn
* @N Generische Loesch-Action fuer DBObjects (DBObjectDelete)
* @N Live-Aktualisierung der Tabelle mit den importierten Ueberweisungen
* @B Korrekte Berechnung des Fortschrittsbalken bei Import
*
* Revision 1.17  2006/04/20 08:44:21  willuhn
* @C s/Childs/Children/
*
* Revision 1.16  2006/04/04 21:57:57  willuhn
* *** empty log message ***
*
* Revision 1.15  2006/04/04 06:47:44  willuhn
* *** empty log message ***
*
* Revision 1.14  2006/01/23 12:16:57  willuhn
* @N Update auf HBCI4Java 2.5.0-rc5
*
* Revision 1.13  2006/01/18 00:51:01  willuhn
* @B bug 65
*
* Revision 1.12  2005/08/01 23:27:42  web0
* *** empty log message ***
*
* Revision 1.11  2005/06/07 22:41:09  web0
* @B bug 70
*
* Revision 1.10  2005/06/02 22:57:34  web0
* @N Export von Konto-Umsaetzen
*
* Revision 1.9  2005/05/30 22:55:27  web0
* *** empty log message ***
*
* Revision 1.8  2005/05/09 12:24:20  web0
* @N Changelog
* @N Support fuer Mehrfachmarkierungen
* @N Mehere Adressen en bloc aus Umsatzliste uebernehmen
*
* Revision 1.7  2005/04/16 13:34:01  web0
* *** empty log message ***
*
* Revision 1.6  2005/03/01 22:05:13  web0
* @B fixed help pages
*
* Revision 1.5  2004/10/18 23:38:17  willuhn
* @C Refactoring
* @C Aufloesung der Listener und Ersatz gegen Actions
*
* Revision 1.4  2004/08/18 23:13:51  willuhn
* @D Javadoc
*
* Revision 1.3  2004/07/25 17:15:06  willuhn
* @C PluginLoader is no longer static
*
* Revision 1.2  2004/07/21 23:54:31  willuhn
* *** empty log message ***
*
* Revision 1.1  2004/07/20 21:48:00  willuhn
* @N ContextMenus
*
**********************************************************************/
TOP

Related Classes of de.willuhn.jameica.hbci.gui.menus.UmsatzList

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.