Package de.willuhn.jameica.hbci.io.print

Source Code of de.willuhn.jameica.hbci.io.print.AbstractPrintSupport

/**********************************************************************
*
* Copyright (c) by Olaf Willuhn
* All rights reserved
*
**********************************************************************/

package de.willuhn.jameica.hbci.io.print;

import java.rmi.RemoteException;
import java.util.Date;

import net.sf.paperclips.AlignPrint;
import net.sf.paperclips.DefaultGridLook;
import net.sf.paperclips.GridPrint;
import net.sf.paperclips.ImagePrint;
import net.sf.paperclips.LineBreakPrint;
import net.sf.paperclips.LinePrint;
import net.sf.paperclips.Margins;
import net.sf.paperclips.PageNumberPageDecoration;
import net.sf.paperclips.PagePrint;
import net.sf.paperclips.Print;
import net.sf.paperclips.PrintJob;
import net.sf.paperclips.SimplePageDecoration;
import net.sf.paperclips.TextPrint;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.Point;

import de.willuhn.jameica.gui.util.Font;
import de.willuhn.jameica.gui.util.SWTUtil;
import de.willuhn.jameica.hbci.HBCI;
import de.willuhn.jameica.print.PrintSupport;
import de.willuhn.jameica.system.Application;
import de.willuhn.jameica.system.Settings;
import de.willuhn.util.ApplicationException;
import de.willuhn.util.I18N;

/**
* Abstrakte Basis-Implementierung fuer den Druck-Support.
*/
public abstract class AbstractPrintSupport implements PrintSupport
{
  private final static Settings settings = new Settings(PrintSupport.class);
 
  final static I18N i18n = Application.getPluginLoader().getPlugin(HBCI.class).getResources().getI18N();
 
  FontData fontTitle  = Font.BOLD.getSWTFont().getFontData()[0];
  FontData fontNormal = Font.SMALL.getSWTFont().getFontData()[0];
  FontData fontBold   = new FontData(fontNormal.getName(),fontNormal.getHeight(),SWT.BOLD);

  FontData fontTiny     = new FontData(fontNormal.getName(),fontNormal.getHeight() - 2,SWT.NORMAL);
  FontData fontTinyBold = new FontData(fontTiny.getName(),fontTiny.getHeight(),SWT.BOLD);
 
  /**
   * @see de.willuhn.jameica.print.PrintSupport#print()
   */
  public PrintJob print() throws ApplicationException
  {
    Print content = printContent();

    // Das Haupt-Layout
    GridPrint grid = new GridPrint("l:d:g");
    grid.add(new TextPrint(getTitle(),fontTitle));
    grid.add(new LinePrint());
    grid.add(new LineBreakPrint(fontTitle));
    grid.add(content);

    final PagePrint page = new PagePrint(grid);

    ////////////////////////////////////////////////////////////////////////////
    // Tabellen-Header
    DefaultGridLook look = new DefaultGridLook(5,5);
    GridPrint table = new GridPrint("l:p:g, r:p:g",look);

    {
      table.add(new TextPrint(i18n.tr("Druck: {0}",HBCI.LONGDATEFORMAT.format(new Date())),fontTiny));
      ImagePrint ip = new ImagePrint(SWTUtil.getImage("hibiscus-donate.png").getImageData(),new Point(300,300));
      table.add(new AlignPrint(ip,SWT.RIGHT,SWT.TOP));
    }
    ////////////////////////////////////////////////////////////////////////////

    page.setHeader(new SimplePageDecoration(table));
   
    PageNumberPageDecoration footer = new PageNumberPageDecoration(SWT.RIGHT);
    footer.setFontData(fontTiny);
    page.setFooter(footer);
   
    this.customize(page);
 
    PrintJob job = new PrintJob(i18n.tr("Hibiscus {0}",HBCI.LONGDATEFORMAT.format(new Date())),page);
   
    // Wenn man den Default-Rand laesst, ist er rechts groesser als links - das ist nicht abheft-freundlich ;)
    // Ich denke, die meisten User brauchen das nicht aendern. Falls doch, kann es der
    // User ja ueber die Properties-Datei anpassen
    Margins margins = job.getMargins();
    margins.left  = settings.getInt("margin.left",100);
    margins.right = settings.getInt("margin.right",50);
   
    return job;
  }
 
  /**
   * Druckt den eigentlichen Inhalt.
   * @return der eigentliche Inhalt.
   * @throws ApplicationException
   */
  abstract Print printContent() throws ApplicationException;

  /**
   * Liefert die Ueberschrift.
   * @return die Ueberschrift.
   */
  abstract String getTitle() throws ApplicationException;
 
  /**
   * Kann ueberschrieben werden, um noch Anpassungen vorzunehmen, direkt bevor der Druck-Job erstellt wird.
   * @param page die zu druckende Seite.
   * @throws ApplicationException
   */
  void customize(PagePrint page) throws ApplicationException
  {
  }

  /**
   * Liefert den Wert oder "-" wenn er NULL/leer ist.
   * @param value der Wert.
   * @return der Wert des Attributes.
   * @throws RemoteException
   */
  String notNull(Object value) throws RemoteException
  {
    String empty = "-";
   
    if (value == null)
      return empty;
  
    String s = value.toString();
    return (s != null && s.trim().length() > 0) ? s : empty;
  }
}
TOP

Related Classes of de.willuhn.jameica.hbci.io.print.AbstractPrintSupport

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.