package com.idega.block.reports.presentation;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import com.idega.block.reports.business.ReportBusiness;
import com.idega.block.reports.business.ReportFinder;
import com.idega.block.reports.data.Report;
import com.idega.block.reports.data.ReportInfo;
import com.idega.idegaweb.IWApplicationContext;
import com.idega.idegaweb.IWBundle;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.presentation.Block;
import com.idega.presentation.IWContext;
import com.idega.presentation.Image;
import com.idega.presentation.PresentationObject;
import com.idega.presentation.Table;
import com.idega.presentation.text.Link;
import com.idega.presentation.ui.CheckBox;
import com.idega.presentation.ui.DataTable;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.util.Edit;
import com.lowagie.text.Font;
/**
* Title: idegaclasses
* Description:
* Copyright: Copyright (c) 2001
* Company: idega
* @author <a href="aron@idega.is">Aron Birkir</a>
* @version 1.0
*/
public class ReportPrinter extends Block implements Reports{
protected IWResourceBundle iwrb;
protected IWBundle iwb;
private Image pdfImage ;
public String getBundleIdentifier(){
return REPORTS_BUNDLE_IDENTIFIER;
}
public String getLocalizedNameKey(){
return "report_printer";
}
public String getLocalizedNameValue(){
return "Report printer";
}
public void main(IWContext iwc){
this.iwrb = getResourceBundle(iwc);
this.iwb = getBundle(iwc);
this.pdfImage = this.iwb.getImage("/shared/pdf.gif");
if(iwc.isParameterSet(PRM_REPORTID)){
Report eReport = ReportFinder.getReport(Integer.parseInt(iwc.getParameter(PRM_REPORTID)));
if(iwc.isParameterSet("savereps")||iwc.isParameterSet("savereps.x")){
String[] sids= iwc.getParameterValues("rep_save");
int[] savedids = new int[0];
if(sids!=null) {
savedids = new int[sids.length];
}
for (int i = 0; i < savedids.length; i++) {
savedids[i] = Integer.parseInt(sids[i]);
}
saveReportInfo(new Integer(eReport.getPrimaryKey().toString()).intValue(),savedids);
}
else if(iwc.isParameterSet("print")||iwc.isParameterSet("print.x")){
}
Table T = new Table();
T.add(getForm(iwc,eReport));
add(T);
}
}
private PresentationObject getForm(IWApplicationContext iwac,Report report){
DataTable T = new DataTable();
T.addTitle(this.iwrb.getLocalizedString("report_printouts","Report Printouts"));
T.setTitlesHorizontal(true);
T.addButton(new SubmitButton(this.iwrb.getLocalizedImageButton("save","Save"),"savereps"));
int row = 1;
int col = 1;
T.add(Edit.formatText(this.iwrb.getLocalizedString("name","Name")),col++,row);
T.add(Edit.formatText(this.iwrb.getLocalizedString("type","type")),col++,row);
T.add(Edit.formatText(this.iwrb.getLocalizedString("description","Description")),col++,row);
T.add(Edit.formatText(this.iwrb.getLocalizedString("pagesize","Pagesize")),col++,row);
T.add(Edit.formatText(this.iwrb.getLocalizedString("orientation","Orientation")),col++,row);
T.add(Edit.formatText(this.iwrb.getLocalizedString("saved","Saved")),col++,row);
T.add(Edit.formatText(this.iwrb.getLocalizedString("print","Print")),col++,row);
row++;
List infos = ReportFinder.listOfReportInfo(null);
List repinfos = ReportFinder.listOfRelatedReportInfo(report);
List unsaved = null;
if(infos!=null){
unsaved = new Vector(infos);
if(repinfos!=null) {
unsaved.removeAll(repinfos);
}
}
ReportInfo info;
String type;
CheckBox box;
if(repinfos !=null){
Iterator iter = repinfos.iterator();
while (iter.hasNext()) {
col = 1;
info = (ReportInfo) iter.next();
T.add(Edit.formatText(info.getName()),col++,row);
type = info.getType();
T.add(Edit.formatText(type),col++,row);
if(type.equals(ReportPDFSetupEditor.typeSticker)){
T.add(Edit.formatText((int)info.getWidth()+" x "+(int)info.getHeight()),col++,row);
}
else if(type.equals(ReportPDFSetupEditor.typeColumns)){
T.add(Edit.formatText("Cols: "+info.getColumns()),col++,row);
}
T.add(Edit.formatText(info.getPagesize()),col++,row);
T.add(Edit.formatText(info.getLandscape()?"Landscape":"Portrait"),col++,row);
box = new CheckBox("rep_save",info.getPrimaryKey().toString());
box.setChecked(true);
T.add(box,col++,row);
T.add(getPrintLink(iwac,this.pdfImage,new Integer(report.getPrimaryKey().toString()).intValue(),new Integer(info.getPrimaryKey().toString()).intValue()),col++,row);
row++;
}
}
if(unsaved!=null){
Iterator iter = unsaved.iterator();
while (iter.hasNext()) {
col = 1;
info = (ReportInfo) iter.next();
T.add(Edit.formatText(info.getName()),col++,row);
type = info.getType();
T.add(Edit.formatText(type),col++,row);
if(type.equals(ReportPDFSetupEditor.typeSticker)){
T.add(Edit.formatText((int)info.getWidth()+" x "+(int)info.getHeight()),col++,row);
}
else if(type.equals(ReportPDFSetupEditor.typeColumns)){
T.add(Edit.formatText("cols: "+info.getColumns()),col++,row);
}
T.add(Edit.formatText(info.getPagesize()),col++,row);
T.add(Edit.formatText(info.getLandscape()?"Landscape":"Portrait"),col++,row);
box = new CheckBox("rep_save",info.getPrimaryKey().toString());
T.add(box,col++,row);
T.add(getPrintLink(iwac,this.pdfImage,new Integer(report.getPrimaryKey().toString() ).intValue(),new Integer(info.getPrimaryKey().toString()).intValue()),col++,row);
row++;
}
}
T.add(new HiddenInput(PRM_REPORTID,report.getPrimaryKey().toString()));
Form F = new Form();
F.add(T);
return F;
}
public void deleteColumnInfo(IWContext iwc,int id){
ReportBusiness.deleteReportColumnInfo(id);
}
private void saveReportInfo(int iReportId ,int[] ids){
ReportBusiness.saveRelatedReportInfo(iReportId,ids);
}
private Link getFontLink(String name,int columnInfoId,int iReportId){
Link l = new Link(Edit.formatText(name));
l.addParameter(PRM_REPORTID,iReportId);
l.addParameter("col_nr",columnInfoId);
return l;
}
private DropdownMenu getFamilyDrop(String name){
DropdownMenu drp = new DropdownMenu(name);
drp.addMenuElement(String.valueOf(Font.HELVETICA),"HELVETICA");
drp.addMenuElement(String.valueOf(Font.COURIER),"COURIER");
drp.addMenuElement(String.valueOf(Font.TIMES_ROMAN),"TIMES_NEW_ROMAN");
return drp;
}
private String getFontFamily(int family){
switch (family) {
case Font.HELVETICA: return "HELVETICA";
case Font.COURIER: return "COURIER";
case Font.TIMES_ROMAN: return "TIMES_NEW_ROMAN";
}
return "";
}
private DropdownMenu getColumnDrop(String name){
DropdownMenu drp = new DropdownMenu(name);
for (int i = 1; i < 4; i++) {
drp.addMenuElement(String.valueOf(i));
}
return drp;
}
private DropdownMenu getSizeDrop(String name){
DropdownMenu drp = new DropdownMenu(name);
for (int i = 8; i < 21; i++) {
drp.addMenuElement(String.valueOf(i));
}
return drp;
}
private DropdownMenu getStyleDrop(String name){
DropdownMenu drp = new DropdownMenu(name);
drp.addMenuElement(String.valueOf(Font.NORMAL),"NORMAL");
drp.addMenuElement(String.valueOf(Font.BOLD),"BOLD");
drp.addMenuElement(String.valueOf(Font.BOLDITALIC),"BOLDITALIC");
drp.addMenuElement(String.valueOf(Font.ITALIC),"ITALIC");
drp.addMenuElement(String.valueOf(Font.STRIKETHRU),"STRIKETHRU");
drp.addMenuElement(String.valueOf(Font.UNDERLINE),"UNDERLINE");
return drp;
}
private String getStyle(int style){
switch (style) {
case Font.NORMAL: return "NORMAL";
case Font.BOLD: return "BOLD";
case Font.BOLDITALIC: return "BOLDITALIC";
case Font.ITALIC: return "ITALIC";
case Font.STRIKETHRU: return "STRIKETHRU";
case Font.UNDERLINE: return "UNDERLINE";
}
return "";
}
private DropdownMenu getEndCharDrop(String name){
DropdownMenu drp = new DropdownMenu(name);
drp.addMenuElement("space","Space");
drp.addMenuElement("newline","Newline");
drp.addMenuElement("tab","Tab");
drp.addMenuElement("tabtab","Two tabs");
return drp;
}
private String getEndStringName(String endstring){
if(endstring.equals("32")) {
return "space";
}
else if(endstring.equals("10")) {
return "newline";
}
else if(endstring.equals("\t")) {
return "tab";
}
else if(endstring.equals("\t\t")) {
return "tabtab";
}
return "";
}
private String getEndString(String stringName){
if(stringName.equals("space")) {
return "Space";
}
else if(stringName.equals("newline")) {
return "Newline";
}
else if(stringName.equals("tab")) {
return "Tab";
}
else if(stringName.equals("tabtab")) {
return "Double tab";
}
return "";
}
private Link getPrintLink(IWApplicationContext iwac,Image image,int iReportId,int iReportInfoId){
return Reporter.getPrintLink(iwac,image,iReportId,iReportInfoId);
}
private void print(Report eReport,ReportInfo reportInfo){
}
}