/**
*
*/
package org.sakaiproject.tool.resetpass;
import java.util.ArrayList;
import java.util.List;
import org.sakaiproject.component.api.ServerConfigurationService;
import org.sakaiproject.tool.api.Placement;
import org.sakaiproject.tool.api.ToolManager;
import uk.org.ponder.messageutil.MessageLocator;
import uk.org.ponder.messageutil.TargettedMessageList;
import uk.org.ponder.rsf.components.UIBranchContainer;
import uk.org.ponder.rsf.components.UICommand;
import uk.org.ponder.rsf.components.UIContainer;
import uk.org.ponder.rsf.components.UIForm;
import uk.org.ponder.rsf.components.UIInput;
import uk.org.ponder.rsf.components.UIMessage;
import uk.org.ponder.rsf.components.UIVerbatim;
import uk.org.ponder.rsf.flow.jsfnav.NavigationCase;
import uk.org.ponder.rsf.flow.jsfnav.NavigationCaseReporter;
import uk.org.ponder.rsf.view.ComponentChecker;
import uk.org.ponder.rsf.view.DefaultView;
import uk.org.ponder.rsf.view.ViewComponentProducer;
import uk.org.ponder.rsf.viewstate.SimpleViewParameters;
import uk.org.ponder.rsf.viewstate.ViewParameters;
/**
* @author dhorwitz
*
*/
public class FormProducer implements ViewComponentProducer, DefaultView,NavigationCaseReporter {
public static final String VIEW_ID = "form";
/* (non-Javadoc)
* @see uk.org.ponder.rsf.view.ViewComponentProducer#getViewID()
*/
public String getViewID() {
return VIEW_ID;
}
MessageLocator messageLocator;
public void setMessageLocator(MessageLocator ml) {
messageLocator = ml;
}
private ServerConfigurationService serverConfigurationService;
public void setServerConfigurationService(ServerConfigurationService s) {
this.serverConfigurationService = s;
}
private TargettedMessageList tml;
public void setTargettedMessageList(TargettedMessageList tml) {
this.tml = tml;
}
private ToolManager toolManager;
public void setToolManager(ToolManager toolManager) {
this.toolManager = toolManager;
}
/* (non-Javadoc)
* @see uk.org.ponder.rsf.view.ComponentProducer#fillComponents(uk.org.ponder.rsf.components.UIContainer, uk.org.ponder.rsf.viewstate.ViewParameters, uk.org.ponder.rsf.view.ComponentChecker)
*/
public void fillComponents(UIContainer tofill, ViewParameters viewParms,
ComponentChecker comp) {
// TODO Auto-generated method stub
if (tml!=null) {
if (tml.size() > 0) {
for (int i = 0; i < tml.size(); i ++ ) {
UIBranchContainer errorRow = UIBranchContainer.make(tofill,"error-row:");
if (tml.messageAt(i).args != null ) {
UIVerbatim.make(errorRow, "error", messageLocator.getMessage(tml.messageAt(i).acquireMessageCode(), (String[])tml.messageAt(i).args[0]));
} else {
UIVerbatim.make(errorRow, "error", messageLocator.getMessage(tml.messageAt(i).acquireMessageCode()));
}
}
}
}
// Get the instructions from the tool placement.
Placement placement = toolManager.getCurrentPlacement();
if (placement != null) {
String instuctions = placement.getConfig().getProperty("instructions");
if (instuctions != null && instuctions.length() > 0) {
UIVerbatim.make(tofill, "instructions", instuctions);
}
} else {
String[] args = new String[1];
args[0]=serverConfigurationService.getString("ui.service", "Sakai Based Service");
UIVerbatim.make(tofill,"main",messageLocator.getMessage("mainText", args));
}
UIForm form = UIForm.make(tofill,"form");
UIInput.make(form,"input","#{userBean.email}");
UICommand.make(form,"submit",UIMessage.make("postForm"),"#{formHandler.processAction}");
}
public List<NavigationCase> reportNavigationCases() {
List<NavigationCase> togo = new ArrayList<NavigationCase>(); // Always navigate back to this view.
togo.add(new NavigationCase(null, new SimpleViewParameters(VIEW_ID)));
togo.add(new NavigationCase("Success", new SimpleViewParameters(ConfirmProducer.VIEW_ID)));
return togo;
}
}