package is.idega.idegaweb.marathon.presentation.user.runoverview;
import is.idega.idegaweb.marathon.IWBundleStarter;
import java.io.IOException;
import javax.faces.application.Application;
import javax.faces.component.UIComponent;
import javax.faces.component.UISelectItems;
import javax.faces.component.html.HtmlCommandButton;
import javax.faces.component.html.HtmlInputHidden;
import javax.faces.component.html.HtmlMessage;
import javax.faces.component.html.HtmlOutputLabel;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
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.11 $
*
* Last modified: $Date: 2009/01/06 09:41:37 $ by $Author: palli $
*
*/
public class UIDistanceChangeStep extends IWBaseComponent implements WizardStep {
public static final String COMPONENT_TYPE = "idega_DistanceChangeStep";
private static final long serialVersionUID = 983517329599024600L;
static final String stepIdentifier = "DistanceChangeStep";
private static final String valueAtt = "value";
private static final String divTag = "div";
private static final String spanTag = "span";
private static final String wizardModeFacet = "wizardMode";
private static final String containerFacet = "container";
private static final String distChangeAreaStyleClass = UIDistanceChangeWizard.distanceChangeWizard_cssPrefix+"distChangeArea";
private static final String headerStyleClass = "header";
private static final String warningStyleClass = "warning";
private static final String contentsStyleClass = "contents";
private static final String entryStyleClass = "entry";
private static final String subentryStyleClass = "subentry";
private static final String errorStyleClass = "error";
private Wizard wizard;
public String getIdentifier() {
return stepIdentifier;
}
public UIComponent getStepComponent(FacesContext context, Wizard wizard) {
UIDistanceChangeStep step = (UIDistanceChangeStep)context.getApplication().createComponent(COMPONENT_TYPE);
step.setId(context.getViewRoot().createUniqueId());
step.setRendered(true);
step.setWizard(wizard);
return step;
}
public void setWizard(Wizard wizard) {
this.wizard = wizard;
}
/**
* @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);
HtmlInputHidden hidden = (HtmlInputHidden)application.createComponent(HtmlInputHidden.COMPONENT_TYPE);
hidden.setId(context.getViewRoot().createUniqueId());
hidden.setValueBinding(valueAtt, application.createValueBinding(UIDistanceChangeWizard.distanceChangeStepBean_wizardModeExp));
getFacets().put(wizardModeFacet, hidden);
HtmlTag dcsDiv = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE);
dcsDiv.setId(context.getViewRoot().createUniqueId());
dcsDiv.setStyleClass(distChangeAreaStyleClass);
dcsDiv.setValue(divTag);
HtmlOutputText text = (HtmlOutputText)application.createComponent(HtmlOutputText.COMPONENT_TYPE);
text.setId(context.getViewRoot().createUniqueId());
text.setValueBinding(valueAtt, application.createValueBinding(UIDistanceChangeWizard.distanceChangeStepBean_runLabelExp));
HtmlTag div = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE);
div.setId(context.getViewRoot().createUniqueId());
div.setValue(divTag);
div.getChildren().add(text);
div.setStyleClass(headerStyleClass);
dcsDiv.getChildren().add(div);
text = (HtmlOutputText)application.createComponent(HtmlOutputText.COMPONENT_TYPE);
text.setId(context.getViewRoot().createUniqueId());
text.setValue(iwrb.getLocalizedString("dist_ch.payToChange", "You will need to pay to change your chosen distance."));
div = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE);
div.setId(context.getViewRoot().createUniqueId());
div.setValue(divTag);
div.getChildren().add(text);
div.setStyleClass(warningStyleClass);
dcsDiv.getChildren().add(div);
HtmlTag distanceChangeArea = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE);
distanceChangeArea.setId(context.getViewRoot().createUniqueId());
distanceChangeArea.setValue(divTag);
distanceChangeArea.setStyleClass(contentsStyleClass);
dcsDiv.getChildren().add(distanceChangeArea);
// currently chosen distance
HtmlTag entryDiv = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE);
entryDiv.setId(context.getViewRoot().createUniqueId());
entryDiv.setStyleClass(entryStyleClass);
entryDiv.setValue(divTag);
distanceChangeArea.getChildren().add(entryDiv);
// currently chosen distance label
text = (HtmlOutputText)application.createComponent(HtmlOutputText.COMPONENT_TYPE);
text.setId(context.getViewRoot().createUniqueId());
text.setValue(iwrb.getLocalizedString("dist_ch.chosenDistance", "Currently chosen distance: "));
entryDiv.getChildren().add(text);
// currently chosen distance value
div = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE);
div.setId(context.getViewRoot().createUniqueId());
div.setValue(divTag);
entryDiv.getChildren().add(div);
text = (HtmlOutputText)application.createComponent(HtmlOutputText.COMPONENT_TYPE);
text.setId(context.getViewRoot().createUniqueId());
text.setValueBinding(valueAtt, application.createValueBinding(UIDistanceChangeWizard.distanceChangeStepBean_chosenDistanceNameExp));
div.getChildren().add(text);
// choose new distance
entryDiv = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE);
entryDiv.setId(context.getViewRoot().createUniqueId());
entryDiv.setStyleClass(entryStyleClass);
entryDiv.setValue(divTag);
distanceChangeArea.getChildren().add(entryDiv);
// choose new distance label
HtmlOutputLabel label = (HtmlOutputLabel)application.createComponent(HtmlOutputLabel.COMPONENT_TYPE);
label.setId(context.getViewRoot().createUniqueId());
label.setValue(iwrb.getLocalizedString("dist_ch.chooseNewDistance", "Choose new distance: "));
entryDiv.getChildren().add(label);
// choose new distance value
HtmlTag span = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE);
span.setId(context.getViewRoot().createUniqueId());
span.setValue(spanTag);
span.setStyleClass(subentryStyleClass);
entryDiv.getChildren().add(span);
HtmlSelectOneMenu distanceChooser = (HtmlSelectOneMenu)application.createComponent(HtmlSelectOneMenu.COMPONENT_TYPE);
distanceChooser.setValidator(application.createMethodBinding(UIDistanceChangeWizard.distanceChangeStepBean_validateDistanceChangeExp, new Class[] {FacesContext.class, UIComponent.class, Object.class}));
distanceChooser.setId(context.getViewRoot().createUniqueId());
distanceChooser.setValueBinding(valueAtt, application.createValueBinding(UIDistanceChangeWizard.distanceChangeWizardBean_newDistanceExp));
UISelectItems selectItems = (UISelectItems)application.createComponent(UISelectItems.COMPONENT_TYPE);
selectItems.setId(context.getViewRoot().createUniqueId());
selectItems.setValueBinding(valueAtt, application.createValueBinding(UIDistanceChangeWizard.distanceChangeStepBean_runDistancesExp));
label.setFor(distanceChooser.getId());
distanceChooser.getChildren().add(selectItems);
//distanceChooser.seton
span.getChildren().add(distanceChooser);
/*
// currently chosen shirt size
entryDiv = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE);
entryDiv.setId(context.getViewRoot().createUniqueId());
entryDiv.setStyleClass(entryStyleClass);
entryDiv.setValue(divTag);
distanceChangeArea.getChildren().add(entryDiv);
// currently chosen shirt size label
text = (HtmlOutputText)application.createComponent(HtmlOutputText.COMPONENT_TYPE);
text.setId(context.getViewRoot().createUniqueId());
text.setValue(iwrb.getLocalizedString("dist_ch.chosenShirtSize", "Currently chosen shirt size: "));
entryDiv.getChildren().add(text);
// currently chosen shirt size value
div = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE);
div.setId(context.getViewRoot().createUniqueId());
div.setValue(divTag);
entryDiv.getChildren().add(div);
text = (HtmlOutputText)application.createComponent(HtmlOutputText.COMPONENT_TYPE);
text.setId(context.getViewRoot().createUniqueId());
text.setValueBinding(valueAtt, application.createValueBinding(UIDistanceChangeWizard.distanceChangeStepBean_chosenShirtSizeNameExp));
div.getChildren().add(text);
// choose new shirt size
entryDiv = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE);
entryDiv.setId(context.getViewRoot().createUniqueId());
entryDiv.setStyleClass(entryStyleClass);
entryDiv.setValue(divTag);
distanceChangeArea.getChildren().add(entryDiv);
// choose new shirt size label
label = (HtmlOutputLabel)application.createComponent(HtmlOutputLabel.COMPONENT_TYPE);
label.setId(context.getViewRoot().createUniqueId());
label.setValue(iwrb.getLocalizedString("dist_ch.chooseNewShirtSize", "Choose new shirt size: "));
entryDiv.getChildren().add(label);
// choose new shirt size value
span = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE);
span.setId(context.getViewRoot().createUniqueId());
span.setValue(spanTag);
span.setStyleClass(subentryStyleClass);
entryDiv.getChildren().add(span);
HtmlSelectOneMenu shirtSizeChooser = (HtmlSelectOneMenu)application.createComponent(HtmlSelectOneMenu.COMPONENT_TYPE);
shirtSizeChooser.setValidator(application.createMethodBinding(UIDistanceChangeWizard.distanceChangeStepBean_validateShirtSizeChangeExp, new Class[] {FacesContext.class, UIComponent.class, Object.class}));
shirtSizeChooser.setId(context.getViewRoot().createUniqueId());
shirtSizeChooser.setValueBinding(valueAtt, application.createValueBinding(UIDistanceChangeWizard.distanceChangeWizardBean_newShirtSizeExp));
UISelectItems selectShirtItems = (UISelectItems)application.createComponent(UISelectItems.COMPONENT_TYPE);
selectShirtItems.setId(context.getViewRoot().createUniqueId());
selectShirtItems.setValueBinding(valueAtt, application.createValueBinding(UIDistanceChangeWizard.distanceChangeStepBean_runShirtSizesExp));
label.setFor(shirtSizeChooser.getId());
shirtSizeChooser.getChildren().add(selectShirtItems);
span.getChildren().add(shirtSizeChooser);*/
HtmlTag errSpan = (HtmlTag)application.createComponent(HtmlTag.COMPONENT_TYPE);
errSpan.setId(context.getViewRoot().createUniqueId());
errSpan.setStyleClass(errorStyleClass);
errSpan.setValue(spanTag);
span.getChildren().add(errSpan);
HtmlMessage errMsg = (HtmlMessage)application.createComponent(HtmlMessage.COMPONENT_TYPE);
errMsg.setId(context.getViewRoot().createUniqueId());
errMsg.setFor(distanceChooser.getId());
errSpan.getChildren().add(errMsg);
HtmlCommandButton nextButton = wizard.getNextButton(context, this);
dcsDiv.getChildren().add(nextButton);
getFacets().put(containerFacet, dcsDiv);
}
/**
* @Override
*/
public void encodeChildren(FacesContext context) throws IOException {
super.encodeChildren(context);
renderChild(context, getFacet(wizardModeFacet));
UIComponent container = getFacet(containerFacet);
if(container != null) {
container.setRendered(true);
renderChild(context, container);
}
}
/**
* @Override
*/
public boolean getRendersChildren() {
return true;
}
/**
* @Override
*/
public void decode(FacesContext context) {
super.decode(context);
ValueBinding vb = context.getApplication().createValueBinding(UIDistanceChangeWizard.distanceChangeStepBean_wizardModeExp);
vb.setValue(context, Boolean.valueOf((String)context.getExternalContext().getRequestParameterMap().get(getFacet(wizardModeFacet).getClientId(context))));
}
/**
* @Override
*/
public boolean isRendered() {
return IWContext.getIWContext(FacesContext.getCurrentInstance()).isLoggedOn();
}
}