/** * */ package com.joe.jsf.component; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Iterator; import java.util.List; import javax.faces.component.UICommand; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * This is the component class for the collapsePanel tag. * * @author John J. Jones III * @version 1.0 * * Creation date: May 25, 2007 * Copyright (c) 2007 MEDecision, Inc. All rights reserved. */ public class UICollapsePanel_oldVersion extends UICommand { private static Log log = LogFactory.getLog(UICollapsePanel_oldVersion.class); /* (non-Javadoc) * @see javax.faces.component.UIComponent#encodeBegin(javax.faces.context.FacesContext) */ @Override public void encodeBegin(FacesContext context) throws IOException { ResponseWriter writer = context.getResponseWriter(); String panelSectionDescription = (String)getAttributes().get("panelSectionDescription"); // check for appropriateness of check here... might be better to have required check in tag instead if (panelSectionDescription==null) throw new RuntimeException("panelSectionDescription is a required attribute of collapsePanel"); String panelFilterButtonText = (String)getAttributes().get("panelFilterButtonText"); List theList = (List)getAttributes().get("dataList"); //////////////////////////// // write surrounding div // writer.startElement("div", this); writer.writeAttribute("id", "activities", null); writer.writeAttribute("class", "binders", null); ////////////////////////////////////// // table containing content of header // writer.startElement("table", null); writer.writeAttribute("class", "binders_content", null); ////////////////////////// // write top edge of panel ///////////////////////// encodePanelTopEdge(writer); ////////////////////////// // start content of header // writer.startElement("td", null); writer.writeAttribute("class", "left", null); writer.endElement("td"); writer.startElement("td", null); writer.endElement("td"); writer.startElement("td", null); writer.writeAttribute("class", "content", null); encodePanelHeaderContent(writer,panelFilterButtonText,panelSectionDescription); ///////////////////////////// // write data grid ///////////////////////////// encodeDataGrid(writer,theList); writer.endElement("td"); writer.startElement("td", null); writer.endElement("td"); writer.startElement("td", null); writer.writeAttribute("class", "right", null); writer.endElement("td"); // // end content of header ///////////////////////// ////////////////////////////// // write bottom edge of panel ///////////////////////////// encodePanelBottomEdge(writer); // // end table //////////////////// writer.endElement("table"); } /* (non-Javadoc) * @see javax.faces.component.UIComponent#encodeEnd(javax.faces.context.FacesContext) */ @Override public void encodeEnd(FacesContext context) throws IOException { ResponseWriter writer = context.getResponseWriter(); writer.endElement("div"); } private void encodePanelTopEdge(ResponseWriter writer) throws IOException { writer.startElement("tr",null); writer.startElement("td", null); writer.writeAttribute("colspan", "2", null); writer.startElement("div", null); writer.writeAttribute("class", "top_left", null); writer.endElement("div"); writer.endElement("td"); writer.startElement("td", null); writer.startElement("div", null); writer.writeAttribute("class","top", null); writer.endElement("div"); writer.endElement("td"); writer.startElement("td", null); writer.writeAttribute("colspan", "2", null); writer.startElement("div", null); writer.writeAttribute("class", "top_right", null); writer.endElement("div"); writer.endElement("td"); writer.endElement("tr"); // start of next row writer.startElement("tr", null); } private void encodePanelBottomEdge(ResponseWriter writer) throws IOException { writer.endElement("tr"); // leftover from top edge writer.startElement("tr",null); writer.startElement("td", null); writer.writeAttribute("colspan", "2", null); writer.startElement("div", null); writer.writeAttribute("class", "bot_left_odd", null); writer.endElement("div"); writer.endElement("td"); writer.startElement("td", null); writer.startElement("div", null); writer.writeAttribute("class","bottom_odd", null); writer.endElement("div"); writer.endElement("td"); writer.startElement("td", null); writer.writeAttribute("colspan", "2", null); writer.startElement("div", null); writer.writeAttribute("class", "bot_right_odd", null); writer.endElement("div"); writer.endElement("td"); writer.endElement("tr"); } private void encodeDataGrid(ResponseWriter writer,List dataList) throws IOException { writer.startElement("div", null); writer.writeAttribute("class", "data", null); writer.startElement("table", null); Iterator listIter = dataList.iterator(); while (listIter.hasNext()) { Object nextObj = listIter.next(); writer.startElement("tr", null); writer.writeAttribute("class", "odd", null); writer.startElement("td", null); writer.writeAttribute("class", "table_item", null); writer.writeText("DID NOT RECOGNIZE OBJECT IN ENCODEDATA METHOD", null); writer.endElement("td"); writer.startElement("td", null); writer.writeAttribute("class", "table_date", null); writer.writeText("", null); writer.endElement("td"); writer.endElement("tr"); } writer.endElement("table"); writer.endElement("div"); } private void encodePanelHeaderContent(ResponseWriter writer, String panelFilterButtonText, String panelSectionDescription) throws IOException { writer.startElement("div", null); writer.writeAttribute("class", "binder", "null"); writer.writeAttribute("id", "title_bar_active", null); // <!-- input type="hidden" value="form:activities=add" --> writer.startElement("button", null); writer.writeAttribute("class", "active_binder", null); writer.writeText("Open/Close", null); writer.endElement("button"); writer.startElement("h3", null); writer.writeText(panelSectionDescription+" (3)", null); writer.endElement("h3"); writer.startElement("div", null); writer.writeAttribute("class", "activity_filters", null); // <!-- input type="hidden" value="filter:activities=my" --> if (panelFilterButtonText!=null) { writer.startElement("button", null); writer.writeAttribute("class", "active", null); writer.writeAttribute("id", "activity_filter", null); writer.writeText(panelFilterButtonText, null); writer.endElement("button"); } writer.endElement("div"); // <!-- input type="hidden" value="form:activities=add" --> writer.startElement("button", null); writer.writeAttribute("class", "add", null); writer.writeText("Add New", null); writer.endElement("button"); writer.endElement("div"); } public boolean isCollapsed() { //return isCollapsed(getValue()); return true; } public static boolean isCollapsed(Object collapsedValue) { Object value = collapsedValue; if(value instanceof Boolean) { return ((Boolean) value).booleanValue(); } else if (value instanceof String) { return Boolean.valueOf((String) value).booleanValue(); } return true; } }