Package de.achim.turnier.spielplan

Source Code of de.achim.turnier.spielplan.DruckSpielPanel

package de.achim.turnier.spielplan;

import java.awt.BasicStroke;
import java.awt.Component;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Stroke;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Vector;

import javax.print.PrintService;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import de.achim.turnier.utility.Begegnung;

public class DruckSpielPanel implements Printable {

  private PrintService[] services;

  private SpielPlanPanel spp;

  private StringBuffer sb = new StringBuffer();
  private Vector<StringBuffer> vSB = new Vector<StringBuffer>();
  private Vector<HashMap<String, String>> vHM = new Vector<HashMap<String,String>>();
 
  private boolean getPrintInfo = true;
  private int lineHeight;
  private int linesPerPage;
  private int pages;
  private String title;
 
  public DruckSpielPanel (){
    this.services = PrinterJob.lookupPrintServices();
  }
 
  @Override
  public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
  throws PrinterException {
    //  Font font = new Font( Font.SANS_SERIF, Font.PLAIN, 20 );

    Graphics2D g2d = (Graphics2D) graphics;
    g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
    g2d.setFont(new Font( Font.SANS_SERIF, Font.PLAIN, 20 ));

    FontMetrics fm = g2d.getFontMetrics();
    //fm.stringWidth(str)

    int lineLength = (int) pageFormat.getImageableWidth() -5;
    int pageHeight  = (int) pageFormat.getImageableHeight();
    int lineXStart =  (intpageFormat.getImageableX();
    int lineX1Start = new Double( lineLength  * 0.25).intValue();   //wo mannschaft1 anfaengt
    int lineX2Start = new Double( lineLength  * 0.5).intValue();   //wo mannschaft2 anfaengt
    int lineX3Start = new Double( lineLength  * 0.75).intValue();   //wo tore anfangen anfaengt
    int lineX4Start = new Double( lineLength  * 0.9).intValue();   //zeilenlaenge

    int numberOfLines   = vSB.size();



    if (getPrintInfo) {
      //die muessen ueber beide aufrufe vorhanden sind
      lineHeight    = fm.getHeight();       
      linesPerPage = Math.max(pageHeight/lineHeight, 1)
      pages = (int) Math.ceil((double)numberOfLines/(double)linesPerPage);

      return NO_SUCH_PAGE;
     
    } else {

      if (pageIndex >=1)
        return NO_SUCH_PAGE;

      int lineYStart =  (intpageFormat.getImageableY() + lineHeight;

      System.out.println("-----------------------------------");
      System.out.println("l�nge:  " +lineLength);
      System.out.println("x-start:  " + lineXStart );
      System.out.println("x1-start:  " + lineX2Start );
      System.out.println("x2-start:  " + lineX3Start );
      System.out.println("y-sart:   " + lineYStart);
      System.out.println("lineheigt:   " + lineHeight);
      System.out.println(vHM.size());
      System.out.println("-----------------------------------");

      if(!vHM.isEmpty()){

        //print title zentriert
        HashMap<String, String> hm1 = vHM.firstElement();
        int titlelaenge = fm.stringWidth(title);
        int xpostitle = calcTitlePos(titlelaenge, lineLength);
        g2d.drawString(title, xpostitle, lineYStart);

        int tabYStart = lineYStart + 2*lineHeight;
        int ygridstart = lineYStart + lineHeight;

        lineYStart = lineYStart + 2;
        g2d.setStroke(new BasicStroke(2));
        g2d.drawLine(lineXStart, ygridstart, lineX4Start, ygridstart);

        Iterator<HashMap<String, String>> iter = vHM.iterator();
        while(iter.hasNext()){
          System.out.println("y-sart:   " + tabYStart);
          HashMap<String, String> hm = iter.next();
          g2d.drawString(hm.get("uhrzeit"), lineXStart + 2, tabYStart);
          g2d.drawString(hm.get("mannschaft1"), lineX1Start + 2, tabYStart);
          g2d.drawString(hm.get("mannschaft2"), lineX2Start, tabYStart);
          String s = hm.get("tfTore1") + " : " + hm.get("tfTore2");
          g2d.drawString(s, lineX3Start, tabYStart);

          g2d.setStroke(new BasicStroke(2));
          g2d.drawLine(lineXStart, tabYStart + 5 , lineX4Start, tabYStart + 5 ); //pagesetup

          tabYStart = tabYStart + lineHeight;
        }

        //draw bounderies at the beginning and at the end of the line
        //vorne
        g2d.setStroke(new BasicStroke(2));
        g2d.drawLine(lineXStart, ygridstart , lineXStart, tabYStart -20 );
        g2d.setStroke(new BasicStroke(2));
        g2d.drawLine(lineX1Start -2,ygridstart , lineX1Start - 2, tabYStart -20 );
        g2d.setStroke(new BasicStroke(2));
        g2d.drawLine(lineX2Start -2,ygridstart , lineX2Start - 2, tabYStart -20 );
        g2d.setStroke(new BasicStroke(2));
        g2d.drawLine(lineX3Start - 2, ygridstart , lineX3Start -2, tabYStart -20 );
        //hinten
        g2d.setStroke(new BasicStroke(2));
        g2d.drawLine(lineX4Start,ygridstart , lineX4Start, tabYStart -20 );

        return PAGE_EXISTS;
      } else {
        System.out.println("Kein SpielPlan erstellt");
        return NO_SUCH_PAGE;
      }
    }

  } //end of print()

  public SpielPlanPanel getSps() {
    return spp;
  }

  public void setSps(SpielPlanPanel spp) {
   
    this.spp = spp;
    Vector<SpielPanel> vSP =  spp.getSpieleListe();
    Vector<Begegnung> vBG = spp.getBegegnungsListe();
   
    //Iterator<SpielPanel> iter = vSP.iterator();
    Iterator<Begegnung> iter = vBG.iterator();
    while(iter.hasNext()){
     
      Begegnung bg = iter.next();
      HashMap<String, String> hm = new HashMap<String, String>();
      String date = bg.getDate();
      int index = date.indexOf(" ");
      String datum = date.substring(0, index).trim();
      String uhrzeit = date.substring(index, date.length()).trim();
      hm.put("datum", datum);
      hm.put("uhrzeit",uhrzeit);
      hm.put("mannschaft1", bg.getMannschaft1());
      hm.put("mannschaft2", bg.getMannschaft2());
      hm.put("tfTore1", String.valueOf(bg.getToreMannschaft1()));
      hm.put("tfTore2", String.valueOf(bg.getToreMannschaft2()));
         
      vHM.add(hm);
    }
   
  } //ende setSps
 
  public void setGetPrintInfo(boolean getPrintInfo) {
    this.getPrintInfo = getPrintInfo;
  }

  public void setTitle(String s){
    this.title = s;
  }
 
  private int calcTitlePos(int titlelength, int linelength){
    int titlelengthhalbe = new Double(titlelength/2).intValue();
    int zeilenlangehalbe = new Double(linelength/2).intValue();
    return zeilenlangehalbe - titlelengthhalbe;
  }
}
TOP

Related Classes of de.achim.turnier.spielplan.DruckSpielPanel

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.