package is.idega.idegaweb.marathon.presentation.crew; import is.idega.idegaweb.marathon.IWBundleStarter; import java.io.IOException; import javax.faces.application.Application; import javax.faces.component.UIColumn; import javax.faces.component.UIComponent; import javax.faces.component.html.HtmlCommandLink; import javax.faces.component.html.HtmlForm; import javax.faces.component.html.HtmlOutputText; import javax.faces.context.FacesContext; import org.apache.myfaces.component.html.ext.HtmlDataTable; import org.apache.myfaces.component.html.ext.HtmlInputHidden; import org.apache.myfaces.custom.column.HtmlSimpleColumn; import org.apache.myfaces.custom.htmlTag.HtmlTag; import com.idega.idegaweb.IWResourceBundle; import com.idega.presentation.IWBaseComponent; import com.idega.presentation.IWContext; /** * * @author <a href="civilis@idega.com">Vytautas Čivilis</a> * @version $Revision: 1.9 $ * * Last modified: $Date: 2008/01/21 13:50:29 $ by $Author: civilis $ * */ public class UICrewsOverviewList extends IWBaseComponent { public static final String COMPONENT_TYPE = "idega_CrewsOverviewList"; public static final String EDIT_CREW_ID = "ecid"; public static final String crewsOverviewListBean_participantIdParam = "colb_pid"; public static final String crew_var = "crew"; public static final String crew_label = "label"; public static final String crew_labelExp = "#{crew.label}"; public static final String crew_runLabel = "runLabel"; public static final String crew_runLabelExp = "#{crew.runLabel}"; public static final String crew_distance = "distance"; public static final String crew_distanceExp = "#{crew.distance}"; public static final String crew_pidOnclick = "pidOnclick"; public static final String crew_pidOnclickExp = "#{crew.pidOnclick}"; public static final String crew_renderedEdit = "renderedEdit"; public static final String crew_renderedEditExp = "#{crew.renderedEdit}"; public static final String crew_renderedAcceptInvitation = "renderedAcceptInvitation"; public static final String crew_renderedAcceptInvitationExp = "#{crew.renderedAcceptInvitation}"; public static final String crew_renderedRejectInvitation = "renderedRejectInvitation"; public static final String crew_renderedRejectInvitationExp = "#{crew.renderedRejectInvitation}"; private static final String onclickAtt = "onclick"; private static final String renderedAtt = "rendered"; private static final String forceIdAtt = "forceId"; private static final String containerFacet = "container"; private static final String marathonCrewsOverviewListStyleClass = "marathonCrewsOverviewList"; private static final String headerContainerStyleClass = "headerContainer"; private static final String headerStyleClass = "header"; private static final String infoTextStyleClass = "infoText"; private static final String createNewLinkStyleClass = "createNewLink"; private static final String contentsContainerStyleClass = "contentsContainer"; private static final String linksStyleClass = "links"; /** * @Override */ protected void initializeComponent(FacesContext context) { Application application = context.getApplication(); IWContext iwc = IWContext.getIWContext(context); IWResourceBundle iwrb = iwc.getIWMainApplication().getBundle(IWBundleStarter.IW_BUNDLE_IDENTIFIER).getResourceBundle(iwc); HtmlForm form = (HtmlForm)context.getApplication().createComponent(HtmlForm.COMPONENT_TYPE); form.setId(context.getViewRoot().createUniqueId()); getFacets().put(containerFacet, form); HtmlInputHidden hidden = (HtmlInputHidden)application.createComponent(HtmlInputHidden.COMPONENT_TYPE); hidden.setId(crewsOverviewListBean_participantIdParam); hidden.setValueBinding(valueAtt, application.createValueBinding(UICrewsOverview.crewEditWizardBean_participantIdExp)); hidden.setValueBinding(forceIdAtt, application.createValueBinding(UICrewsOverview.crewsOverviewListBean_forceIdHackExp)); form.getChildren().add(hidden); HtmlTag containerDiv = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE); containerDiv.setId(context.getViewRoot().createUniqueId()); containerDiv.setValue(divTag); containerDiv.setStyleClass(marathonCrewsOverviewListStyleClass); form.getChildren().add(containerDiv); HtmlTag div = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE); div.setId(context.getViewRoot().createUniqueId()); div.setValue(divTag); div.setStyleClass(headerContainerStyleClass); containerDiv.getChildren().add(div); HtmlTag header = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE); header.setId(context.getViewRoot().createUniqueId()); header.setValue(divTag); header.setStyleClass(headerStyleClass); div.getChildren().add(header); HtmlOutputText headerText = (HtmlOutputText)context.getApplication().createComponent(HtmlOutputText.COMPONENT_TYPE); headerText.setValue(iwrb.getLocalizedString("crew.overviewList.header", "Crews view")); header.getChildren().add(headerText); HtmlTag info = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE); info.setId(context.getViewRoot().createUniqueId()); info.setValue(divTag); info.setStyleClass(infoTextStyleClass); div.getChildren().add(info); HtmlOutputText infoText = (HtmlOutputText)context.getApplication().createComponent(HtmlOutputText.COMPONENT_TYPE); infoText.setEscape(false); infoText.setValue(iwrb.getLocalizedString("run_reg.group_information_text_step_1", "Information text 1...")); info.getChildren().add(infoText); HtmlCommandLink startNewCrewRegLink = (HtmlCommandLink)application.createComponent(HtmlCommandLink.COMPONENT_TYPE); startNewCrewRegLink.setId(context.getViewRoot().createUniqueId()); startNewCrewRegLink.setValue(iwrb.getLocalizedString("crew.overviewList.createNewCrew", "Create new crew")); startNewCrewRegLink.setAction(application.createMethodBinding(UICrewsOverview.crewManageBean_startNewCrewRegistrationExp, null)); startNewCrewRegLink.setStyleClass(createNewLinkStyleClass); div.getChildren().add(startNewCrewRegLink); div = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE); div.setId(context.getViewRoot().createUniqueId()); div.setValue(divTag); div.setStyleClass(contentsContainerStyleClass); containerDiv.getChildren().add(div); HtmlDataTable crewsTable = (HtmlDataTable)application.createComponent(HtmlDataTable.COMPONENT_TYPE); crewsTable.setSortable(true); crewsTable.setId(context.getViewRoot().createUniqueId()); crewsTable.setVar(crew_var); crewsTable.setValueBinding(valueAtt, context.getApplication().createValueBinding(UICrewsOverview.crewsOverviewListBean_crewsOverviewListExp)); crewsTable.getChildren().add(createColumn(context, crew_labelExp, iwrb.getLocalizedString("crew.overviewList.crewLabel", "Crew label"))); crewsTable.getChildren().add(createColumn(context, crew_runLabelExp, iwrb.getLocalizedString("crew.overviewList.runLabel", "Run label"))); crewsTable.getChildren().add(createColumn(context, crew_distanceExp, iwrb.getLocalizedString("crew.overviewList.distanceLabel", "Distance label"))); HtmlTag buttonsContainer = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE); buttonsContainer.setId(context.getViewRoot().createUniqueId()); buttonsContainer.setValue(divTag); buttonsContainer.setStyleClass(linksStyleClass); addLinks(context, buttonsContainer); crewsTable.getChildren().add(createColumn(context, buttonsContainer, " ")); div.getChildren().add(crewsTable); } protected void addLinks(FacesContext context, UIComponent parent) { Application application = context.getApplication(); IWContext iwc = IWContext.getIWContext(context); IWResourceBundle iwrb = iwc.getIWMainApplication().getBundle(IWBundleStarter.IW_BUNDLE_IDENTIFIER).getResourceBundle(iwc); HtmlCommandLink link = (HtmlCommandLink)application.createComponent(HtmlCommandLink.COMPONENT_TYPE); link.setId(context.getViewRoot().createUniqueId()); link.setValue(iwrb.getLocalizedString("crew.overviewList.edit", "Edit")); link.setValueBinding(onclickAtt, application.createValueBinding(crew_pidOnclickExp)); link.setValueBinding(renderedAtt, application.createValueBinding(crew_renderedEditExp)); link.setAction(application.createMethodBinding(UICrewsOverview.crewManageBean_editCrewExp, null)); parent.getChildren().add(link); link = (HtmlCommandLink)application.createComponent(HtmlCommandLink.COMPONENT_TYPE); link.setId(context.getViewRoot().createUniqueId()); link.setValue(iwrb.getLocalizedString("crew.overviewList.acceptInvitation", "Accept invitation")); link.setValueBinding(onclickAtt, application.createValueBinding(crew_pidOnclickExp)); link.setValueBinding(renderedAtt, application.createValueBinding(crew_renderedAcceptInvitationExp)); link.setAction(application.createMethodBinding(UICrewsOverview.crewManageBean_acceptInvitationExp, null)); parent.getChildren().add(link); link = (HtmlCommandLink)application.createComponent(HtmlCommandLink.COMPONENT_TYPE); link.setId(context.getViewRoot().createUniqueId()); link.setValue(iwrb.getLocalizedString("crew.overviewList.rejectInvitation", "Reject invitation")); link.setValueBinding(onclickAtt, application.createValueBinding(crew_pidOnclickExp)); link.setValueBinding(renderedAtt, application.createValueBinding(crew_renderedRejectInvitationExp)); link.setAction(application.createMethodBinding(UICrewsOverview.crewManageBean_rejectInvitationExp, null)); parent.getChildren().add(link); link = (HtmlCommandLink)application.createComponent(HtmlCommandLink.COMPONENT_TYPE); link.setId(context.getViewRoot().createUniqueId()); link.setValue(iwrb.getLocalizedString("crew.overviewList.viewCrew", "View crew")); link.setValueBinding(onclickAtt, application.createValueBinding(crew_pidOnclickExp)); link.setAction(application.createMethodBinding(UICrewsOverview.crewManageBean_viewCrewViewExp, null)); parent.getChildren().add(link); } protected UIColumn createColumn(FacesContext context, UIComponent child, String headerText) { HtmlSimpleColumn column = (HtmlSimpleColumn)context.getApplication().createComponent(HtmlSimpleColumn.COMPONENT_TYPE); column.getChildren().add(child); if(headerText != null) { HtmlOutputText text = (HtmlOutputText)context.getApplication().createComponent(HtmlOutputText.COMPONENT_TYPE); text.setValue(headerText); column.setHeader(text); } return column; } protected UIColumn createColumn(FacesContext context, String textExpression, String headerText) { HtmlOutputText text = (HtmlOutputText)context.getApplication().createComponent(HtmlOutputText.COMPONENT_TYPE); text.setValueBinding(valueAtt, context.getApplication().createValueBinding(textExpression)); return createColumn(context, text, headerText); } /** * @Override */ public void encodeChildren(FacesContext context) throws IOException { renderChild(context, getFacet(containerFacet)); } /** * @Override */ public boolean getRendersChildren() { return true; } }