package is.idega.idegaweb.marathon.presentation.crew; import java.io.IOException; import is.idega.idegaweb.marathon.IWBundleStarter; import javax.faces.application.Application; import javax.faces.component.UIColumn; import javax.faces.component.UIComponent; import javax.faces.component.html.HtmlCommandButton; import javax.faces.component.html.HtmlCommandLink; import javax.faces.component.html.HtmlInputHidden; import javax.faces.component.html.HtmlInputText; import javax.faces.component.html.HtmlMessages; import javax.faces.component.html.HtmlOutputText; import javax.faces.context.FacesContext; import org.apache.myfaces.component.html.ext.HtmlDataTable; 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; import com.idega.presentation.wizard.Wizard; import com.idega.presentation.wizard.WizardStep; /** * * @author <a href="civilis@idega.com">Vytautas Čivilis</a> * @version $Revision: 1.6 $ * * Last modified: $Date: 2008/01/15 09:20:50 $ by $Author: civilis $ * */ public class UICrewMembersInivitationStep extends IWBaseComponent implements WizardStep { private static final long serialVersionUID = 7070707428550344301L; public static final String COMPONENT_TYPE = "idega_CrewMembersInivitationStep"; static final String stepIdentifier = "CrewMembersInivitationStep"; private static final String containerFacet = "container"; private static final String membersListStyleClass = "membersList"; private static final String searchAreaStyleClass = "searchArea"; public static final String member_var = "member"; public static final String member_name = "name"; public static final String member_nameExp = "#{member.name}"; public static final String member_role = "role"; public static final String member_roleExp = "#{member.role}"; public static final String member_modifyOnclick = "modifyOnclick"; public static final String member_modifyOnclickExp = "#{member.modifyOnclick}"; public static final String searchResult_var = "searchResult"; public static final String sr_participantName = "participantName"; public static final String sr_participantNameExp = "#{searchResult.participantName}"; public static final String sr_participantNumber = "participantNumber"; public static final String sr_participantNumberExp = "#{searchResult.participantNumber}"; public static final String sr_modifyOnclick = "modifyOnclick"; public static final String sr_modifyOnclickExp = "#{searchResult.modifyOnclick}"; public static final String crewMembersInvitationBean_memberDeleteParticipantIdParam = "cmib_mdpi"; public static final String crewMembersInvitationBean_memberAddParticipantIdParam = "cmib_mapi"; private static final String crewMembersInivitationStyleClass = "marathonCrewMembersInivitation"; private static final String errorsStyleClass = "errors"; private static final String headerStyleClass = "header"; private static final String buttonsStyleClass = "buttons"; private static final String onclickAtt = "onclick"; private static final String renderedAtt = "rendered"; private static final String forceIdAtt = "forceId"; private Wizard wizard; public void setWizard(Wizard wizard) { this.wizard = wizard; } public String getIdentifier() { return stepIdentifier; } public UIComponent getStepComponent(FacesContext context, Wizard wizard) { UICrewMembersInivitationStep step = (UICrewMembersInivitationStep)context.getApplication().createComponent(COMPONENT_TYPE); step.setId(context.getViewRoot().createUniqueId()); step.setRendered(true); step.setWizard(wizard); return step; } 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); HtmlTag containerDiv = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE); containerDiv.setStyleClass(crewMembersInivitationStyleClass); containerDiv.setId(context.getViewRoot().createUniqueId()); containerDiv.setValue(divTag); HtmlInputHidden hidden = (HtmlInputHidden)application.createComponent(HtmlInputHidden.COMPONENT_TYPE); hidden.setId(context.getViewRoot().createUniqueId()); hidden.setConverter(application.createConverter(Integer.class)); hidden.setValueBinding(valueAtt, application.createValueBinding(UICrewsOverview.crewEditWizardBean_modeExp)); containerDiv.getChildren().add(hidden); org.apache.myfaces.component.html.ext.HtmlInputHidden extHidden = (org.apache.myfaces.component.html.ext.HtmlInputHidden)application.createComponent(org.apache.myfaces.component.html.ext.HtmlInputHidden.COMPONENT_TYPE); extHidden.setId(crewMembersInvitationBean_memberDeleteParticipantIdParam); extHidden.setValueBinding(valueAtt, application.createValueBinding(UICrewsOverview.crewMembersInvitationBean_deleteMemberParticipantIdExp)); extHidden.setValueBinding(forceIdAtt, application.createValueBinding(UICrewsOverview.crewMembersInvitationBean_forceIdHackExp)); containerDiv.getChildren().add(extHidden); extHidden = (org.apache.myfaces.component.html.ext.HtmlInputHidden)application.createComponent(org.apache.myfaces.component.html.ext.HtmlInputHidden.COMPONENT_TYPE); extHidden.setId(crewMembersInvitationBean_memberAddParticipantIdParam); extHidden.setValueBinding(valueAtt, application.createValueBinding(UICrewsOverview.crewMembersInvitationBean_addMemberParticipantIdExp)); extHidden.setValueBinding(forceIdAtt, application.createValueBinding(UICrewsOverview.crewMembersInvitationBean_forceIdHackExp)); containerDiv.getChildren().add(extHidden); HtmlTag div = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE); div.setId(context.getViewRoot().createUniqueId()); div.setValue(divTag); div.setStyleClass(headerStyleClass); containerDiv.getChildren().add(div); HtmlOutputText text = (HtmlOutputText)application.createComponent(HtmlOutputText.COMPONENT_TYPE); text.setId(context.getViewRoot().createUniqueId()); text.setValueBinding(valueAtt, application.createValueBinding(UICrewsOverview.crewMembersInvitationBean_headerExp)); div.getChildren().add(text); div = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE); div.setId(context.getViewRoot().createUniqueId()); div.setValue(divTag); div.setStyleClass(errorsStyleClass); containerDiv.getChildren().add(div); HtmlMessages messages = (HtmlMessages)application.createComponent(HtmlMessages.COMPONENT_TYPE); messages.setId(context.getViewRoot().createUniqueId()); div.getChildren().add(messages); containerDiv.getChildren().add(createMembersListArea(context)); HtmlInputText searchParticipantsInput = (HtmlInputText)application.createComponent(HtmlInputText.COMPONENT_TYPE); searchParticipantsInput.setId(context.getViewRoot().createUniqueId()); searchParticipantsInput.setValueBinding(valueAtt, application.createValueBinding(UICrewsOverview.crewMembersInvitationBean_searchStringExp)); containerDiv.getChildren().add(searchParticipantsInput); HtmlCommandButton searchButton = (HtmlCommandButton)application.createComponent(HtmlCommandButton.COMPONENT_TYPE); searchButton.setId(context.getViewRoot().createUniqueId()); searchButton.setValue(iwrb.getLocalizedString("crew.invitation.search", "Search")); searchButton.setAction(application.createMethodBinding(UICrewsOverview.crewMembersInvitationBean_searchExp, null)); containerDiv.getChildren().add(searchButton); containerDiv.getChildren().add(createSearchArea(context)); HtmlCommandButton prev = wizard.getPreviousButton(context, this); prev.setValue(iwrb.getLocalizedString("crew.invitation.manageCrew", "Manage crew")); containerDiv.getChildren().add(prev); getFacets().put(containerFacet, containerDiv); } protected UIComponent createMembersListArea(FacesContext context) { Application application = context.getApplication(); IWContext iwc = IWContext.getIWContext(context); IWResourceBundle iwrb = iwc.getIWMainApplication().getBundle(IWBundleStarter.IW_BUNDLE_IDENTIFIER).getResourceBundle(iwc); HtmlTag containerDiv = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE); containerDiv.setId(context.getViewRoot().createUniqueId()); containerDiv.setValue(divTag); containerDiv.setStyleClass(membersListStyleClass); HtmlDataTable membersTable = (HtmlDataTable)application.createComponent(HtmlDataTable.COMPONENT_TYPE); membersTable.setId(context.getViewRoot().createUniqueId()); membersTable.setVar(member_var); membersTable.setValueBinding(valueAtt, context.getApplication().createValueBinding(UICrewsOverview.crewMembersInvitationBean_membersListExp)); membersTable.getChildren().add(createColumn(context, member_nameExp, iwrb.getLocalizedString("crew.invitation.memberName", "Member name"))); membersTable.getChildren().add(createColumn(context, member_roleExp, iwrb.getLocalizedString("crew.invitation.memberRole", "Member role"))); HtmlCommandLink deleteMemberLink = (HtmlCommandLink)application.createComponent(HtmlCommandLink.COMPONENT_TYPE); deleteMemberLink.setId(context.getViewRoot().createUniqueId()); deleteMemberLink.setValue(iwrb.getLocalizedString("crew.invitation.remove", "Remove")); deleteMemberLink.setValueBinding(onclickAtt, application.createValueBinding(member_modifyOnclickExp)); deleteMemberLink.setAction(application.createMethodBinding(UICrewsOverview.crewMembersInvitationBean_deleteMemberExp, null)); membersTable.getChildren().add(createColumn(context, deleteMemberLink, " ")); containerDiv.getChildren().add(membersTable); HtmlTag div = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE); div.setId(context.getViewRoot().createUniqueId()); div.setValue(divTag); div.setStyleClass(buttonsStyleClass); containerDiv.getChildren().add(div); HtmlCommandButton viewCrewsListButton = (HtmlCommandButton)application.createComponent(HtmlCommandButton.COMPONENT_TYPE); viewCrewsListButton.setId(context.getViewRoot().createUniqueId()); viewCrewsListButton.setValue(iwrb.getLocalizedString("crew.invitation.viewCrewsList", "View crews list")); viewCrewsListButton.setAction(application.createMethodBinding(UICrewsOverview.crewManageBean_viewCrewsListExp, null)); viewCrewsListButton.setImmediate(true); div.getChildren().add(viewCrewsListButton); return containerDiv; } protected UIComponent createSearchArea(FacesContext context) { Application application = context.getApplication(); IWContext iwc = IWContext.getIWContext(context); IWResourceBundle iwrb = iwc.getIWMainApplication().getBundle(IWBundleStarter.IW_BUNDLE_IDENTIFIER).getResourceBundle(iwc); HtmlTag containerDiv = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE); containerDiv.setId(context.getViewRoot().createUniqueId()); containerDiv.setValue(divTag); containerDiv.setStyleClass(searchAreaStyleClass); HtmlDataTable searchResultsTable = (HtmlDataTable)application.createComponent(HtmlDataTable.COMPONENT_TYPE); searchResultsTable.setId(context.getViewRoot().createUniqueId()); searchResultsTable.setVar(searchResult_var); searchResultsTable.setValueBinding(renderedAtt, context.getApplication().createValueBinding(UICrewsOverview.crewMembersInvitationBean_searchResultListRenderedExp)); searchResultsTable.setValueBinding(valueAtt, context.getApplication().createValueBinding(UICrewsOverview.crewMembersInvitationBean_searchResultsExp)); searchResultsTable.getChildren().add(createColumn(context, sr_participantNameExp, iwrb.getLocalizedString("crew.invitation.memberName", "Member name"))); searchResultsTable.getChildren().add(createColumn(context, sr_participantNumberExp, iwrb.getLocalizedString("crew.invitation.memberPNr", "Member participant number"))); HtmlCommandLink addMemberLink = (HtmlCommandLink)application.createComponent(HtmlCommandLink.COMPONENT_TYPE); addMemberLink.setId(context.getViewRoot().createUniqueId()); addMemberLink.setValue(iwrb.getLocalizedString("crew.invitation.inviteMember", "Invite crew member")); addMemberLink.setValueBinding(onclickAtt, application.createValueBinding(sr_modifyOnclickExp)); addMemberLink.setAction(application.createMethodBinding(UICrewsOverview.crewMembersInvitationBean_inviteMemberExp, null)); searchResultsTable.getChildren().add(createColumn(context, addMemberLink, " ")); containerDiv.getChildren().add(searchResultsTable); return containerDiv; } /** * @Override */ public void encodeChildren(FacesContext context) throws IOException { super.encodeChildren(context); UIComponent container = getFacet(containerFacet); if(container != null) { container.setRendered(true); renderChild(context, container); } } /** * @Override */ public boolean getRendersChildren() { return true; } /** * @Override */ public boolean isRendered() { return IWContext.getIWContext(FacesContext.getCurrentInstance()).isLoggedOn(); } 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); } }