package com.idega.block.building.presentation;
import java.util.Collection;
import java.util.Iterator;
import com.idega.block.building.business.BuildingService;
import com.idega.block.building.data.ApartmentCategory;
import com.idega.block.building.data.ApartmentType;
import com.idega.block.building.data.Complex;
import com.idega.block.text.business.ContentHelper;
import com.idega.block.text.business.TextFinder;
import com.idega.business.IBOLookup;
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.ImageSlideShow;
import com.idega.presentation.PresentationObject;
import com.idega.presentation.Table;
import com.idega.presentation.text.Link;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.BackButton;
import com.idega.util.text.TextSoap;
/**
* Title: BuildingViewer Description: Views buildings in a campus Copyright:
* Copyright (c) 2001 Company: idega
*
* @author Laddi?
* @version 1.0
*/
public class BuildingViewer extends Block {
private static final String IW_RESOURCE_BUNDLE = "com.idega.block.building";
public static final String PARAMETER_STRING = "complex_id";
private int building_id = 0;
private String nameStyle = "font-family:verdana; font-size: 11pt; font-weight: bold; color: #27324B;";
private String addressStyle = "font-family:verdana; font-size: 10pt; font-weight: bold; color: #9FA9B3;";
private String infoStyle = "font-family:verdana,arial,sans-serif; font-size:10px; color:#000000; text-align: justify;";
protected IWResourceBundle iwrb;
private Class apartmentTypeWindowClass = ApartmentTypeWindow.class;
private BuildingService buildingService = null;
private int imageMaxSize = 165;
public BuildingViewer() {
}
public BuildingViewer(int building_id) {
this.building_id = building_id;
}
public void setApartmentTypeWindowClass(Class windowClass) {
this.apartmentTypeWindowClass = windowClass;
}
public void main(IWContext iwc) throws Exception {
if (this.iwrb == null) {
this.iwrb = getResourceBundle(iwc);
}
this.buildingService = (BuildingService) IBOLookup.getServiceInstance(iwc, BuildingService.class);
if (iwc.getParameter(PARAMETER_STRING) != null) {
try {
this.building_id = Integer.parseInt(iwc.getParameter(PARAMETER_STRING));
}
catch (NumberFormatException e) {
this.building_id = 0;
}
}
if (this.building_id == 0) {
getAllBuildings(iwc);
}
else {
getSingleBuilding(iwc);
}
}
public void setDefaultValues() {
this.nameStyle = "font-family:verdana; font-size: 11pt; font-weight: bold; color: #27324B;";
this.addressStyle = "font-family:verdana; font-size: 10pt; font-weight: bold; color: #9FA9B3;";
this.infoStyle = "font-family:arial; font-size:8pt; color:#000000; line-height: 1.8; text-align: justify;";
}
private void getAllBuildings(IWContext iwc) throws Exception {
IWBundle bundle = this.getBundle(iwc);
this.getParentPage().addJavascriptURL(bundle.getResourcesPath() + "/fancy/jquery-1.3.2.js");
this.getParentPage().addJavascriptURL(bundle.getResourcesPath() + "/fancy/jquery.fancybox-1.2.5.js");
this.getParentPage().addJavascriptURL(bundle.getResourcesPath() + "/fancy/palli.js");
this.getParentPage().addStyleSheetURL(bundle.getResourcesPath() + "/fancy/jquery.fancybox-1.2.5.css");
int row = 1;
Collection complexes = this.buildingService.getComplexHome().findAll();
Table campusTable = new Table(1, complexes.size());
for (Iterator iter = complexes.iterator(); iter.hasNext();) {
Complex complex = (Complex) iter.next();
Integer iComplexId = (Integer) complex.getPrimaryKey();
// Collection types =
// buildingService.getApartmentTypeHome().findByComplex(iComplexId);
// String[] types =
// BuildingFinder.findDistinctApartmentTypesInComplex(iComplexId);
Table complexTable = new Table(3, 4);
complexTable.mergeCells(2, 1, 2, 4);
complexTable.mergeCells(1, 2, 1, 3);
complexTable.mergeCells(3, 3, 3, 4);
complexTable.setAlignment(3, 3, "center");
complexTable.setVerticalAlignment(3, 2, "top");
complexTable.setVerticalAlignment(3, 3, "top");
complexTable.setVerticalAlignment(1, 2, "top");
complexTable.setVerticalAlignment(1, 4, "bottom");
complexTable.setWidth("100%");
complexTable.setWidth(2, 1, "20");
complexTable.setBorder(0);
// BuildingBusiness.getStaticInstance().changeNameAndInfo(complex[a],iwc.getCurrentLocale());
String infoText = null;
String nameText = null;
if (complex.getTextId() > 0) {
ContentHelper helper = TextFinder.getContentHelper(complex.getTextId(), iwc.getCurrentLocale());
infoText = helper.getLocalizedText() != null && helper.getLocalizedText().getBody() != null ? helper.getLocalizedText().getBody() : complex.getInfo();
nameText = helper.getLocalizedText() != null && helper.getLocalizedText().getHeadline() != null ? helper.getLocalizedText().getHeadline() : complex.getName();
} else {
infoText = complex.getInfo();
nameText = complex.getName();
}
if (infoText != null && !"".equals(infoText)) {
infoText = TextSoap.findAndReplace(infoText, "\n", "<br>");
}
// List L = BuildingFinder.listOfBuildingsInComplex(iComplexId);
// List L = BuildingFinder.listOfBuildingImageFiles(iComplexId);
Collection images = this.buildingService.getBuildingHome().getImageFilesByComplex(iComplexId);
if (images != null) {
// ICFile file =
// ((com.idega.core.data.ICFileHome)com.idega.data.IDOLookup.getHomeLegacy(ICFile.class)).findByPrimaryKeyLegacy(((Building)L.get(0)).getImageId());
ImageSlideShow slide = new ImageSlideShow();
// slide.setFileFolder(file);
slide.setWidth(this.imageMaxSize);
slide.setAlt(complex.getName());
slide.setFiles(new java.util.Vector(images));
complexTable.add(slide, 3, 2);
/*
* Image buildingImage = new
* Image(((Building)L.get(0)).getImageId());
* buildingImage.setMaxImageWidth(imageMaxSize);
* complexTable.add(buildingImage,3,2);
*/
}
// Find out and present apartment category icons
Collection categories = this.buildingService.getApartmentCategoryHome().findByComplex(iComplexId);
if (categories != null) {
for (Iterator iterator = categories.iterator(); iterator.hasNext();) {
ApartmentCategory cat = (ApartmentCategory) iterator.next();
Image image = new Image(cat.getImageId());
image.setName("");
image.setHorizontalSpacing(4);
image.setVerticalSpacing(2);
if (cat.getImageId() != -1) {
complexTable.add(image, 3, 3);
}
}
}
Image moreImage = this.iwrb.getImage("/building/more.gif");
Image mapImage = this.iwrb.getImage("/building/map.gif");
// What genius made this ??
// Link complexLink = new Link(moreImage,iwc.getRequestURI());
Link complexLink = new Link(moreImage);
complexLink.addParameter(PARAMETER_STRING, iComplexId.toString());
Link locationLink = new Link(mapImage);
locationLink.setWindowToOpen(BuildingLocation.class);
locationLink.addParameter(PARAMETER_STRING, iComplexId.toString());
complexTable.add(getNameText(nameText), 1, 1);
complexTable.add(getInfoText(infoText), 1, 2);
complexTable.add(complexLink, 1, 4);
complexTable.add(" ", 1, 4);
complexTable.add(locationLink, 1, 4);
if (complex.getFlashPageID() > 0) {
Image flashImage = this.iwrb.getImage("/building/flash.gif");
Link flashLink = new Link(flashImage);
flashLink.setPage(complex.getFlashPageID());
complexTable.add(" ", 1, 4);
complexTable.add(flashLink, 1, 4);
} else if (complex.getExternalFlashURL() != null && !"".equals(complex.getExternalFlashURL())) {
Image flashImage = this.iwrb.getImage("/building/flash.gif");
Link flashLink = new Link(flashImage);
flashLink.setURL(complex.getExternalFlashURL());
flashLink.setStyleClass("fancybox");
flashLink.setStyleClass("iframe");
complexTable.add(" ", 1, 4);
complexTable.add(flashLink, 1, 4);
}
String divideText = "<br>.........<br><br>";
campusTable.add(complexTable, 1, row);
if (row < complexes.size()) {
campusTable.add(getInfoText(divideText), 1, row++);
}
}
if (complexes.size() == 0) {
add(this.iwrb.getLocalizedString("no_buildings", "No buildings in database"));
}
else {
add(campusTable);
}
}
private Text getInfoText(String text) {
text = formatText(text);
Text T = new Text(text);
T.setFontStyle(this.infoStyle);
return T;
}
private Text getAddressText(String text) {
Text T = new Text(text);
T.setFontStyle(this.addressStyle);
return T;
}
private Text getNameText(String text) {
Text T = new Text(text);
T.setFontStyle(this.nameStyle);
return T;
}
private void getSingleBuilding(IWContext iwc) throws Exception {
// Complex complex =
// ((com.idega.block.building.data.ComplexHome)com.idega.data.IDOLookup.getHomeLegacy(Complex.class)).findByPrimaryKeyLegacy(building_id);
// ApartmentType[] types =
// BuildingFinder.findApartmentTypesInComplex(building_id);
Complex complex = this.buildingService.getComplexHome().findByPrimaryKey(String.valueOf(this.building_id));
Collection types = this.buildingService.getApartmentTypeHome().findByComplex(new Integer(this.building_id));
Table complexTable = new Table(1, types.size() + 1);
complexTable.setWidth("100%");
// BuildingBusiness.getStaticInstance().changeNameAndInfo(complex,iwc.getCurrentLocale());
complexTable.add(getNameText(complex.getName()), 1, 1);
int row = 2;
for (Iterator iter = types.iterator(); iter.hasNext();) {
ApartmentType type = (ApartmentType) iter.next();
// BuildingBusiness.getStaticInstance().changeNameAndInfo(types[a],iwc.getCurrentLocale());
Table typesTable = new Table(2, 3);
typesTable.setVerticalAlignment(2, 2, "top");
typesTable.setVerticalAlignment(1, 2, "top");
typesTable.setVerticalAlignment(1, 1, "top");
typesTable.mergeCells(2, 1, 2, 2);
typesTable.setAlignment(2, 2, "right");
typesTable.setWidth("100%");
typesTable.setHeight(2, "100%");
typesTable.setWidth(1, "100%");
String typeName = formatText(type.getName() + " " + type.getArea() + "m2");
String typeText = type.getInfo();
if (typeText == null) {
typeText = "";
}
// String typeText = types[a].getExtraInfo();
typeText = TextSoap.findAndReplace(typeText, "\n", "<br>");
String divideText = ("<br>.........<br><br>");
PresentationObject typeImage;
if (type.getImageId() == -1) {
typeImage = this.iwrb.getImage("/building/default.jpg");
}
else {
ImageSlideShow slide = new ImageSlideShow();
slide.setDelay(1);
slide.setShowButtons(false);
slide.setWidth(this.imageMaxSize);
slide.setAlt(type.getName());
slide.setFileId(type.getImageId());
typeImage = slide;
}
// Image typeImage = new Image(types[a].getImageId());
// typeImage.setHorizontalSpacing(6);
// typeImage.setMaxImageWidth(imageMaxSize);
/*
* Window typeWindow = new
* Window("Herbergi",ApartmentTypeViewer.class,Page.class);
* typeWindow.setWidth(400); typeWindow.setHeight(550);
* typeWindow.setScrollbar(false);
*/
Image moreImage = this.iwrb.getImage("/building/more.gif");
Image backImage = this.iwrb.getImage("/building/back.gif");
Link typeLink = new Link(moreImage);
typeLink.setWindowToOpen(this.apartmentTypeWindowClass);
typeLink.addParameter(ApartmentTypeViewer.PARAMETER_STRING, type.getPrimaryKey().toString());
BackButton BB = new BackButton(backImage);
typesTable.add(getAddressText(typeName), 1, 1);
typesTable.add(getInfoText(typeText), 1, 2);
typesTable.add(BB, 1, 3);
typesTable.add(" ", 1, 3);
typesTable.add(typeLink, 1, 3);
typesTable.add(typeImage, 2, 1);
complexTable.add(typesTable, 1, row);
if (row < types.size() + 1) {
complexTable.add(getInfoText(divideText), 1, row);
}
}
add(complexTable);
}
public void setNameStyle(String nameStyle) {
this.nameStyle = nameStyle;
}
public void setAddressStyle(String addressStyle) {
this.addressStyle = addressStyle;
}
public void setInfoStyle(String infoStyle) {
this.infoStyle = infoStyle;
}
public String formatText(String text) {
if (text != null && !"".equals(text)) {
text = TextSoap.findAndReplace(text, "m2", "m<sup>2</sup>");
return text;
}
else {
return "";
}
}
public String getBundleIdentifier() {
return (IW_RESOURCE_BUNDLE);
}
}