package com.idega.block.reports.presentation;
import java.util.Iterator;
import java.util.List;
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.IWBundle;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.presentation.Block;
import com.idega.presentation.IWContext;
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.IntegerInput;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
import com.idega.presentation.util.Edit;
import com.lowagie.text.Font;
import com.lowagie.text.Rectangle;
/**
* Title: idegaclasses
* Description:
* Copyright: Copyright (c) 2001
* Company: idega
* @author <a href="aron@idega.is">Aron Birkir</a>
* @version 1.0
*/
public class ReportPDFSetupEditor extends Block implements Reports{
private final static String prmReportInfoId = "rcie_repinfoid";
protected IWResourceBundle iwrb;
protected IWBundle iwb;
public final static String typeSticker = "sticker";
public final static String typeColumns = "columns";
public ReportPDFSetupEditor() {
}
public String getBundleIdentifier(){
return REPORTS_BUNDLE_IDENTIFIER;
}
public String getLocalizedNameKey(){
return "pdf_setup";
}
public String getLocalizedNameValue(){
return "PDF Setup";
}
public void main(IWContext iwc){
this.iwrb = getResourceBundle(iwc);
this.iwb = getBundle(iwc);
if(iwc.isParameterSet(PRM_REPORTID)){
int reportInfoId = -1;
if(iwc.isParameterSet(prmReportInfoId)) {
reportInfoId = Integer.parseInt(iwc.getParameter(prmReportInfoId));
}
Report eReport = ReportFinder.getReport(Integer.parseInt(iwc.getParameter(PRM_REPORTID)));
if(iwc.isParameterSet("saveinfo")||iwc.isParameterSet("saveinfo.x")){
saveReportInfo(iwc,eReport,reportInfoId);
reportInfoId = -1;
}
else if(iwc.isParameterSet("dinfo")){
deleteInfo(iwc,reportInfoId);
}
Table T = new Table();
T.add(getReportInfoForm(typeSticker,reportInfoId,eReport.getID()),1,1);
T.add(getReportInfoForm(typeColumns,reportInfoId,eReport.getID()),1,2);
add(T);
}
}
private PresentationObject getReportInfoForm(String type,int id, int iReportId){
DataTable T = new DataTable();
T.setWidth("100%");
T.setTitlesHorizontal(true);
T.addTitle(this.iwrb.getLocalizedString(type,type));
T.addButton(new SubmitButton(this.iwrb.getLocalizedImageButton("save","Save"),"saveinfo"));
int row = 1;
int col = 1;
T.add(Edit.formatText(this.iwrb.getLocalizedString("name","Name")),col++,row);
T.add(Edit.formatText(this.iwrb.getLocalizedString("landscape","Landscape")),col++,row);
if(type.equalsIgnoreCase(typeSticker)){
T.add(Edit.formatText(this.iwrb.getLocalizedString("width","Width")),col++,row);
T.add(Edit.formatText(this.iwrb.getLocalizedString("height","Heigth")),col++,row);
T.add(Edit.formatText(this.iwrb.getLocalizedString("border","border")),col++,row);
}
else if(type.equalsIgnoreCase(typeColumns)){
T.add(Edit.formatText(this.iwrb.getLocalizedString("columns","Columns")),col++,row);
}
T.add(Edit.formatText(this.iwrb.getLocalizedString("papersize","Papersize")),col++,row);
row++;
List L = ReportFinder.listOfReportInfo(type);
ReportInfo rinfo;
TextInput name = new TextInput("iname");
CheckBox landscape = new CheckBox("landscape","true");
IntegerInput width = new IntegerInput("width");
width.setLength(5);
IntegerInput height = new IntegerInput("height");
height.setLength(5);
DropdownMenu size = getPaperSizeDrop("pagesize");
DropdownMenu columns = getColumnDrop("columns");
DropdownMenu border = getBorderDrop("border");
boolean formAdded = false;
if(L!=null){
Iterator iter = L.iterator();
while(iter.hasNext()){
col = 1;
rinfo = (ReportInfo) iter.next();
if(id == rinfo.getID()){
name.setContent(rinfo.getName());
landscape.setChecked(rinfo.getLandscape());
if(rinfo.getWidth()>0) {
width.setContent(String.valueOf((int)rinfo.getWidth()));
}
if(rinfo.getHeight()>0) {
height.setContent(String.valueOf((int)rinfo.getHeight()));
}
if(rinfo.getPagesize()!=null) {
size.setSelectedElement(rinfo.getPagesize());
}
border.setSelectedElement(String.valueOf(rinfo.getBorder()));
T.add(name,col++,row);
T.add(landscape,col++,row);
if(type.equalsIgnoreCase(typeSticker)){
T.add(width,col++,row);
T.add(height,col++,row);
T.add(border,col++,row);
}
else if(type.equalsIgnoreCase(typeColumns)){
T.add(columns,col++,row);
}
T.add(size,col++,row);
T.add(new HiddenInput(prmReportInfoId,String.valueOf(rinfo.getID())));
formAdded = true;
}
else {
Link Li = new Link(Edit.formatText(rinfo.getName()));
Li.addParameter(prmReportInfoId,rinfo.getID());
Li.addParameter(PRM_REPORTID,iReportId);
T.add(Li,col++,row);
if(rinfo.getLandscape()) {
T.add(Edit.formatText(this.iwrb.getLocalizedString("landscape","Landscape")),col++,row);
}
else {
T.add(Edit.formatText(this.iwrb.getLocalizedString("portrait","Portrait")),col++,row);
}
if(type.equalsIgnoreCase(typeSticker)){
T.add(Edit.formatText(String.valueOf((int)rinfo.getWidth())),col++,row);
T.add(Edit.formatText(String.valueOf((int)rinfo.getHeight())),col++,row);
T.add(Edit.formatText(getBorder(rinfo.getBorder())),col++,row);
}
else if(type.equalsIgnoreCase(typeColumns)){
T.add(Edit.formatText(rinfo.getColumns()),col++,row);
}
T.add(Edit.formatText(rinfo.getPagesize()),col++,row);
Link delLi = new Link(this.iwb.getImage("/shared/deletex.gif"));
delLi.addParameter(prmReportInfoId,rinfo.getID());
delLi.addParameter(PRM_REPORTID,iReportId);
delLi.addParameter("dinfo","true");
T.add(delLi,col++,row);
}
row++;
}
}
if(!formAdded){
col = 1;
T.add(name,col++,row);
T.add(landscape,col++,row);
if(type.equalsIgnoreCase(typeSticker)){
T.add(width,col++,row);
T.add(height,col++,row);
T.add(border,col++,row);
}
else if(type.equalsIgnoreCase(typeColumns)){
T.add(columns,col++,row);
}
T.add(size,col++,row);
}
else{
Link li = new Link(this.iwrb.getLocalizedImageButton("new","New"));
li.addParameter(PRM_REPORTID,iReportId);
T.addButton(li);
}
T.add(new HiddenInput(PRM_REPORTID,Integer.toString(iReportId)));
T.add(new HiddenInput("info_type",type));
Form F = new Form();
F.add(T);
return F;
}
private void deleteInfo(IWContext iwc,int colid){
ReportBusiness.deleteReportInfo(colid);
}
private void saveReportInfo(IWContext iwc,Report report ,int id){
String name = iwc.getParameter("iname");
if(name !=null && name.length() > 0){
boolean landscape = iwc.isParameterSet("landscape");
int width = 0,height = 0,columns = 0,border = -1;
if(iwc.isParameterSet("width")) {
width = Integer.parseInt(iwc.getParameter("width"));
}
if(iwc.isParameterSet("height")) {
height = Integer.parseInt(iwc.getParameter("height"));
}
if(iwc.isParameterSet("columns")) {
columns = Integer.parseInt(iwc.getParameter("columns"));
}
if(iwc.isParameterSet("border")) {
border = Integer.parseInt(iwc.getParameter("border"));
}
String paperSize = iwc.getParameter("pagesize");
String infotype = iwc.getParameter("info_type");
ReportInfo info = ((com.idega.block.reports.data.ReportInfoHome)com.idega.data.IDOLookup.getHomeLegacy(ReportInfo.class)).createLegacy();
if(id > 0) {
info = ReportFinder.getReportInfo(id);
}
info.setName(name);
info.setWidth(width);
info.setHeight(height);
info.setColumns(columns);
info.setBorder(border);
info.setType(infotype);
info.setLandscape(landscape);
info.setPagesize(paperSize);
ReportBusiness.saveReportInfo(info);
}
}
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 getBorderDrop(String name){
DropdownMenu drp = new DropdownMenu(name);
drp.addMenuElement(String.valueOf(Rectangle.BOX),"BOX"); //15
drp.addMenuElement(String.valueOf(Rectangle.TOP),"TOP");// 1
drp.addMenuElement(String.valueOf(Rectangle.BOTTOM),"BOTTOM");// 2
drp.addMenuElement(String.valueOf(Rectangle.LEFT),"LEFT"); // 4
drp.addMenuElement(String.valueOf(Rectangle.RIGHT),"RIGHT");// 8
drp.addMenuElement(String.valueOf(Rectangle.TOP+Rectangle.BOTTOM),"TOP+BOTTOM");// 3
drp.addMenuElement(String.valueOf(Rectangle.TOP+Rectangle.LEFT),"TOP+LEFT"); // 5
drp.addMenuElement(String.valueOf(Rectangle.TOP+Rectangle.RIGHT),"TOP+RIGHT"); // 9
drp.addMenuElement(String.valueOf(Rectangle.BOTTOM+Rectangle.RIGHT),"BOTTOM+RIGHT"); // 10
drp.addMenuElement(String.valueOf(Rectangle.BOTTOM+Rectangle.LEFT),"BOTTOM+LEFT"); // 6
drp.addMenuElement(String.valueOf(Rectangle.TOP+Rectangle.RIGHT+Rectangle.LEFT),"TOP+RIGHT+LEFT");// 13
drp.addMenuElement(String.valueOf(Rectangle.TOP+Rectangle.RIGHT+Rectangle.BOTTOM),"TOP+RIGHT+BOTTOM");// 11
drp.addMenuElement(String.valueOf(Rectangle.TOP+Rectangle.LEFT+Rectangle.BOTTOM),"TOP+LEFT+BOTTOM");// 7
drp.addMenuElement(String.valueOf(Rectangle.BOTTOM+Rectangle.RIGHT+Rectangle.LEFT),"BOTTOM+RIGHT+LEFT");// 14
return drp;
}
private String getBorder(int border){
switch (border) {
case Rectangle.BOX: return "BOX";
case Rectangle.TOP: return "TOP";
case Rectangle.BOTTOM: return "BOTTOM";
case Rectangle.LEFT: return "LEFT";
case Rectangle.RIGHT: return "RIGHT";
case Rectangle.TOP+Rectangle.BOTTOM: return "TOP+BOTTOM";
case Rectangle.TOP+Rectangle.LEFT: return "TOP+LEFT";
case Rectangle.TOP+Rectangle.RIGHT: return "TOP+RIGHT";
case Rectangle.BOTTOM+Rectangle.RIGHT: return "BOTTOM+RIGHT";
case Rectangle.BOTTOM+Rectangle.LEFT: return "BOTTOM+LEFT";
case Rectangle.TOP+Rectangle.RIGHT+Rectangle.LEFT: return "TOP+RIGHT+LEFT";
case Rectangle.TOP+Rectangle.RIGHT+Rectangle.BOTTOM: return "TOP+RIGHT+BOTTOM";
case Rectangle.TOP+Rectangle.LEFT+Rectangle.BOTTOM: return "TOP+LEFT+BOTTOM";
case Rectangle.BOTTOM+Rectangle.RIGHT+Rectangle.LEFT: return "BOTTOM+RIGHT+LEFT";
}
return "";
}
private DropdownMenu getPaperSizeDrop(String name){
String[] pageSizes = ReportFinder.pageSizes;
DropdownMenu drp = new DropdownMenu(name);
for (int i = 0; i< pageSizes.length; i++) {
drp.addMenuElement(pageSizes[i]);
}
return drp;
}
}