/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/help/trunk/help-tool/src/java/org/sakaiproject/jsf/help/HelpSetDefaultActionComponent.java $ * $Id: HelpSetDefaultActionComponent.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $ *********************************************************************************** * * Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008 The Sakai Foundation * * Licensed under the Educational Community License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **********************************************************************************/ package org.sakaiproject.jsf.help; import java.io.IOException; import javax.faces.component.UIComponent; import javax.faces.component.UIForm; import javax.faces.component.UIOutput; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; /** * help set default action component * @version $Id: HelpSetDefaultActionComponent.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $ */ public class HelpSetDefaultActionComponent extends UIOutput { /** * @see javax.faces.component.UIComponent#encodeBegin(javax.faces.context.FacesContext) */ public void encodeBegin(FacesContext context) throws IOException { return; } public void decode(FacesContext context) { return; } /** * @see javax.faces.component.UIComponent#encodeEnd(javax.faces.context.FacesContext) */ public void encodeEnd(FacesContext context) throws IOException { ResponseWriter writer = context.getResponseWriter(); UIComponent actionComponent = super.getParent(); String acionElement = actionComponent.getClientId(context); UIForm form = getForm(actionComponent); if (form != null) { writer.startElement("script", null); writer.writeAttribute("type", "text/javascript", null); String functionCode = "if (document.layers) \n" + "document.captureEvents(Event.KEYDOWN); \n" + "document.onkeydown =" + "function (evt) \n {" + " var keyCode = evt ? (evt.which ? evt.which : evt.keyCode) : " + "event.keyCode; \n" + "var eventTarget = evt ? evt.target : event.srcElement; \n" + "var textField = eventTarget.type == 'text'; \n" + "if (keyCode == 13 && textField) { \n " + "document.getElementById('" + acionElement + "').click();return false; } \n" + "else return true; }"; writer.write(functionCode); writer.endElement("script"); } } /** * get form * @param component * @return ui form */ private UIForm getForm(UIComponent component) { while (component != null) { if (component instanceof UIForm) { break; } component = component.getParent(); } return (UIForm) component; } }