package com.stpl.poc.itext;

import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.SQLException;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.Utilities;
import com.itextpdf.text.pdf.GrayColor;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.PushbuttonField;
import com.lowagie.database.DatabaseConnection;
import com.lowagie.database.HsqldbConnection;

public class TicketDetailContainerTemplate {

	/** Path to the resulting PDF */
	public static final String RESULT = "results/stpl/ticket_detail_container_template.pdf";
	/** Path to the resources. */
	public static final String RESOURCE = "resources/posters/%s.jpg";

	/**
	 * Main method.
	 * 
	 * @param args
	 *            no arguments needed
	 * @throws DocumentException
	 * @throws IOException
	 * @throws SQLException
	 */
	public static void main(String[] args) throws IOException,
			DocumentException, SQLException {
		new TicketDetailContainerTemplate().createPdf(RESULT);
	}

	/**
	 * Creates a PDF with information about the movies
	 * 
	 * @param filename
	 *            the name of the PDF file that will be created.
	 * @throws DocumentException
	 * @throws IOException
	 * @throws SQLException
	 */
	public void createPdf(String filename) throws IOException,
			DocumentException, SQLException {
		DatabaseConnection connection = new HsqldbConnection("filmfestival");

		// step 1
		Document document = new Document(new Rectangle(Utilities
				.millimetersToPoints(0), Utilities.millimetersToPoints(0),
				Utilities.millimetersToPoints(290), Utilities
						.millimetersToPoints(210)));
		document.setMarginMirroring(true);

		// step 2
		PdfWriter writer = PdfWriter.getInstance(document,
				new FileOutputStream(filename));

		// step 3
		document.open();

		// main container
		Rectangle container = new Rectangle(Utilities.millimetersToPoints(5),
				Utilities.millimetersToPoints(5), Utilities
						.millimetersToPoints(285), Utilities
						.millimetersToPoints(205));
		PushbuttonField containerField = new PushbuttonField(writer, container,
				"container");
		containerField.setBackgroundColor(new GrayColor(0.75f));

		// left container
		Rectangle leftContainer = new Rectangle(Utilities
				.millimetersToPoints(10), Utilities.millimetersToPoints(10),
				Utilities.millimetersToPoints(185), Utilities
						.millimetersToPoints(200));
		PushbuttonField leftContainerField = new PushbuttonField(writer,
				leftContainer, "left_container");
		leftContainerField.setBackgroundColor(BaseColor.WHITE);

		// right container
		Rectangle rightContainer = new Rectangle(Utilities
				.millimetersToPoints(190), Utilities.millimetersToPoints(10),
				Utilities.millimetersToPoints(280), Utilities
						.millimetersToPoints(200));
		PushbuttonField rightContainerField = new PushbuttonField(writer,
				rightContainer, "right_container");
		rightContainerField.setBackgroundColor(BaseColor.WHITE);

		writer.addAnnotation(containerField.getField());
		writer.addAnnotation(leftContainerField.getField());
		writer.addAnnotation(rightContainerField.getField());

		document.close();

		connection.close();
	}
}