package com.idega.block.quote.presentation; import java.util.HashMap; import java.util.Map; import com.idega.block.quote.business.QuoteBusiness; import com.idega.block.quote.business.QuoteHolder; import com.idega.core.localisation.business.ICLocaleBusiness; import com.idega.idegaweb.IWBundle; import com.idega.idegaweb.IWResourceBundle; import com.idega.idegaweb.block.presentation.Builderaware; import com.idega.presentation.Block; import com.idega.presentation.IWContext; import com.idega.presentation.Table; import com.idega.presentation.text.Link; import com.idega.presentation.text.Text; import com.idega.util.text.TextSoap; /** * Title: Quote block * Description: A block that displays random quotes from the database * Copyright: Copyright (c) 2000-2002 idega.is All Rights Reserved * Company: idega *@author <a href="mailto:laddi@idega.is">Thorhallur "Laddi" Helgason</a> * @modified <a href="mailto:tryggvi@idega.is">Tryggvi Larusson</a> * @version 1.2 */ public class Quote extends Block implements Builderaware { private int _quoteID = -1; private int _objectID = -1; private boolean _hasEditPermission = false; private int _iLocaleID; private int _row = 1; private Table _myTable; private static final String QUOTE_STYLE_NAME = "quote"; private static final String ORIGIN_STYLE_NAME = "origin"; private static final String AUTHOR_STYLE_NAME = "author"; private static final String QUOTE_STYLE = "font-size:9px;font-family:Verdana,Arial,Helvetica,sans-serif;font-weight:bold;"; private static final String ORIGIN_STYLE = "font-size:10px;font-family:Arial,Helvetica,sans-serif;"; private static final String AUTHOR_STYLE = "font-size:9px;font-family:Verdana,Arial,Helvetica,sans-serif;font-weight:bold;"; private String width_; private String height_; private String quoteStyle_; private String authorStyle_; private String originStyle_; private String alignment_ = Table.HORIZONTAL_ALIGN_CENTER; private final static String IW_BUNDLE_IDENTIFIER = "com.idega.block.quote"; protected IWResourceBundle _iwrb; protected IWBundle _iwb; private boolean _alwaysFetchFromDatabase = false; private boolean _showAuthor = true; private boolean _showOrigin = true; private boolean _showQuotes = true; public Quote() { setDefaultValues(); } public Quote(int quoteID) { this(); this._quoteID = quoteID; } public void main(IWContext iwc) throws Exception { this._iwb = getBundle(iwc); this._iwrb = this._iwb.getResourceBundle(iwc.getCurrentLocale()); this._objectID = getICObjectInstanceID(); this._hasEditPermission = iwc.hasEditPermission(this); this._iLocaleID = ICLocaleBusiness.getLocaleId(iwc.getCurrentLocale()); drawTable(); QuoteHolder quote = getQuoteBusiness().getRandomQuote(iwc, this._iLocaleID, this._objectID, this._alwaysFetchFromDatabase); if (quote != null) { this._quoteID = quote.getQuoteID(); } if (this._hasEditPermission) { this._myTable.add(getAdminTable(iwc), 1, this._row++); } this._myTable.add(getQuoteTable(iwc, quote), 1, this._row); add(this._myTable); } private Table getQuoteTable(IWContext iwc, QuoteHolder quote) { Table table = new Table(); table.setBorder(0); table.setWidth("100%"); table.setHeight("100%"); if (quote != null) { table.setAlignment(1, 1, "left"); table.setAlignment(1, 3, "right"); String originString = quote.getOrigin(); String textString = quote.getText(); if (textString == null) { textString = ""; } String authorString = quote.getAuthor(); if (authorString == null || authorString.length() == 0) { authorString = this._iwrb.getLocalizedString("unknown", "Unknown"); } Text quoteOrigin = getStyleText(originString + ":",ORIGIN_STYLE_NAME); if ( this.originStyle_ != null ) { quoteOrigin.setStyleAttribute(this.originStyle_); } Text quoteText = null; if (this._showQuotes) { quoteText = getStyleText("\"" + TextSoap.formatText(textString) + "\"", QUOTE_STYLE_NAME); } else { quoteText = getStyleText(TextSoap.formatText(textString), QUOTE_STYLE_NAME); } quoteText.setHorizontalAlignment(this.alignment_); if ( this.quoteStyle_ != null ) { quoteText.setStyleAttribute(this.quoteStyle_); } Text quoteAuthor = getStyleText("-" + Text.getNonBrakingSpace().getText() + authorString, AUTHOR_STYLE_NAME); if ( this.authorStyle_ != null ) { quoteAuthor.setStyleAttribute(this.authorStyle_); } if (this._showOrigin && originString != null && originString.length() > 0) { table.add(quoteOrigin, 1, 1); table.add(quoteText, 1, 2); table.add(quoteAuthor, 1, 3); table.setHeight(1, 2, "100%"); } else { table.mergeCells(1, 1, 1, 2); table.setHeight(1, 1, "100%"); table.setVerticalAlignment(1, 1, "middle"); table.add(quoteText, 1, 1); if (this._showAuthor) { table.add(quoteAuthor, 1, 3); } } } else { table.setAlignment(1, 1, "center"); table.addText(this._iwrb.getLocalizedString("no_quotes", "No quotes in database...")); } return table; } private Table getAdminTable(IWContext iwc) { Table table = new Table(3, 1); table.setCellpadding(0); table.setCellspacing(0); table.add(getCreateLink(iwc), 1, 1); if (this._quoteID != -1) { table.add(getEditLink(iwc), 2, 1); table.add(getDeleteLink(iwc), 3, 1); } return table; } private void drawTable() { this._myTable = new Table(); this._myTable.setCellpadding(0); this._myTable.setCellspacing(0); this._myTable.setWidth(this.width_); if (this.height_ != null) { this._myTable.setHeight(this.height_); } } private Link getCreateLink(IWContext iwc) { Link link = new Link(iwc.getIWMainApplication().getBundle(Builderaware.IW_CORE_BUNDLE_IDENTIFIER).getImage("shared/create.gif", this._iwrb.getLocalizedString("new_quote", "New Quote"))); link.setWindowToOpen(QuoteEditor.class); link.addParameter(QuoteBusiness.PARAMETER_MODE, QuoteBusiness.PARAMETER_NEW); link.addParameter(QuoteBusiness.PARAMETER_OBJECT_INSTANCE_ID, this._objectID); return link; } private Link getEditLink(IWContext iwc) { Link link = new Link(iwc.getIWMainApplication().getBundle(Builderaware.IW_CORE_BUNDLE_IDENTIFIER).getImage("shared/edit.gif", this._iwrb.getLocalizedString("edit_quote", "Edit Quote"))); link.setWindowToOpen(QuoteEditor.class); link.addParameter(QuoteBusiness.PARAMETER_MODE, QuoteBusiness.PARAMETER_EDIT); link.addParameter(QuoteBusiness.PARAMETER_QUOTE_ID, this._quoteID); link.addParameter(QuoteBusiness.PARAMETER_OBJECT_INSTANCE_ID, this._objectID); return link; } private Link getDeleteLink(IWContext iwc) { Link link = new Link(iwc.getIWMainApplication().getBundle(Builderaware.IW_CORE_BUNDLE_IDENTIFIER).getImage("shared/delete.gif", this._iwrb.getLocalizedString("delete_quote", "Delete Quote"))); link.setWindowToOpen(QuoteEditor.class); link.addParameter(QuoteBusiness.PARAMETER_MODE, QuoteBusiness.PARAMETER_DELETE); link.addParameter(QuoteBusiness.PARAMETER_QUOTE_ID, this._quoteID); link.addParameter(QuoteBusiness.PARAMETER_OBJECT_INSTANCE_ID, this._objectID); return link; } private void setDefaultValues() { this.width_ = "150"; } public String getBundleIdentifier() { return IW_BUNDLE_IDENTIFIER; } public void setWidth(String width) { this.width_ = width; } public String getWidth() { return this.width_; } public void setHeight(String height) { this.height_ = height; } public String getHeight() { return this.height_; } public void setOriginStyle(String style) { this.originStyle_ = style; } public void setTextStyle(String style) { this.quoteStyle_ = style; } public void setAuthorStyle(String style) { this.authorStyle_ = style; } public void setHorizontalAlignment(String alignment) { this.alignment_ = alignment; } public String getHorizontalAlignment() { return this.alignment_; } public boolean deleteBlock(int ICObjectInstanceID) { return false; } public Object clone() { Quote obj = null; try { obj = (Quote) super.clone(); if (this._myTable != null) { obj._myTable = (Table) this._myTable.clone(); } } catch (Exception ex) { ex.printStackTrace(System.err); } return obj; } private QuoteBusiness getQuoteBusiness() { return QuoteBusiness.getQuoteBusinessInstace(); } /** * @see com.idega.presentation.Block#getStyleNames() */ public Map getStyleNames() { HashMap map = new HashMap(); String[] styleNames = { QUOTE_STYLE_NAME, ORIGIN_STYLE_NAME, AUTHOR_STYLE_NAME }; String[] styleValues = { QUOTE_STYLE, ORIGIN_STYLE, AUTHOR_STYLE }; for (int a = 0; a < styleNames.length; a++) { map.put(styleNames[a], styleValues[a]); } return map; } /** @deprecated */ public void setQuoteWidth(String width) { setWidth(width); } /** @deprecated */ public void setQuoteWidth(int width) { setWidth(Integer.toString(width)); } /** @deprecated */ public void setQuoteHeight(String height) { setHeight(height); } /** @deprecated */ public void setQuoteHeight(int height) { setHeight(Integer.toString(height)); } /** @deprecated */ public void setQuoteOriginStyle(String style) { setOriginStyle(style); } /** @deprecated */ public void setQuoteTextStyle(String style) { setTextStyle(style); } /** @deprecated */ public void setQuoteAuthorStyle(String style) { setAuthorStyle(style); } /** @deprecated */ public void setQuoteOriginSize(String size) { } /** @deprecated */ public void setQuoteOriginSize(int size) { } /** @deprecated */ public void setQuoteOriginColor(String color) { } /** @deprecated */ public void setQuoteOriginFace(String face) { } /** @deprecated */ public void setQuoteTextSize(String size) { } /** @deprecated */ public void setQuoteTextSize(int size) { } /** @deprecated */ public void setQuoteTextColor(String color) { } /** @deprecated */ public void setQuoteTextFace(String face) { } /** @deprecated */ public void setQuoteAuthorSize(String size) { } /** @deprecated */ public void setQuoteAuthorSize(int size) { } /** @deprecated */ public void setQuoteAuthorColor(String color) { } /** @deprecated */ public void setQuoteAuthorFace(String face) { } public void setToGetNewQuoteOnEveryReload(boolean fetchFromDatabase) { this._alwaysFetchFromDatabase = fetchFromDatabase; } /** * @param author The _showAuthor to set. */ public void setShowAuthor(boolean author) { this._showAuthor = author; } /** * @param origin The _showOrigin to set. */ public void setShowOrigin(boolean origin) { this._showOrigin = origin; } /** * @param quotes The _showQuotes to set. */ public void setShowQuotes(boolean quotes) { this._showQuotes = quotes; } }