Author: abelevich
Date: 2010-10-15 12:45:47 -0400 (Fri, 15 Oct 2010)
New Revision: 19582
Added:
trunk/ui/input/ui/src/main/java/org/richfaces/component/AbstractSelect.java
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/ClientSelectItem.java
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputRendererBase.java
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceSelectRendererBase.java
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/PopupConstants.java
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/SelectHelper.java
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/SelectRendererBase.java
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/select.ecss
trunk/ui/input/ui/src/main/templates/select.template.xml
Removed:
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputBaseRenderer.java
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceSelectBaseRenderer.java
Modified:
trunk/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceSelect.java
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceSelect.js
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/popupList.js
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/select.js
trunk/ui/input/ui/src/main/templates/inplaceInput.template.xml
trunk/ui/input/ui/src/main/templates/inplaceSelect.template.xml
Log:
rename inplaces base renderer, add select component ui, base renderer, template, js, ecss
Modified:
trunk/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceSelect.java
===================================================================
---
trunk/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceSelect.java 2010-10-15
16:14:23 UTC (rev 19581)
+++
trunk/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceSelect.java 2010-10-15
16:45:47 UTC (rev 19582)
@@ -22,10 +22,7 @@
package org.richfaces.component;
-import javax.faces.component.UISelectOne;
-
import org.richfaces.cdk.annotations.Attribute;
-import org.richfaces.cdk.annotations.EventName;
import org.richfaces.cdk.annotations.JsfComponent;
import org.richfaces.cdk.annotations.JsfRenderer;
import org.richfaces.cdk.annotations.Tag;
@@ -43,24 +40,15 @@
renderer = @JsfRenderer(type = "org.richfaces.InplaceSelectRenderer"),
tag = @Tag(name="inplaceSelect")
)
-public abstract class AbstractInplaceSelect extends UISelectOne implements
InplaceComponent {
+public abstract class AbstractInplaceSelect extends AbstractSelect implements
InplaceComponent {
public static final String COMPONENT_TYPE = "org.richfaces.InplaceSelect";
- public static final String COMPONENT_FAMILY =
"org.richfaces.InplaceSelect";
+ public static final String COMPONENT_FAMILY = "org.richfaces.Select";
- @Attribute(defaultValue="250px")
- public abstract String getListWidth();
-
- @Attribute(defaultValue="100px")
- public abstract String getListHeight();
-
@Attribute(defaultValue="InplaceState.ready")
public abstract InplaceState getState();
- @Attribute
- public abstract String getDefaultLabel();
-
@Attribute(defaultValue="false")
public abstract boolean isOpenOnEdit();
@@ -72,47 +60,17 @@
@Attribute(defaultValue="click")
public abstract String getEditEvent();
-
- @Attribute(events=@EventName("blur"))
- public abstract String getOnblur();
- @Attribute(events=@EventName("click"))
- public abstract String getOnclick();
+ @Override
+ @Attribute(defaultValue="rf-is-opt")
+ public abstract String getItemCss();
- @Attribute(events=@EventName("ondblclick"))
- public abstract String getOndblclick();
-
- @Attribute(events=@EventName("focus"))
- public abstract String getOnfocus();
+ @Override
+ @Attribute(defaultValue="rf-is-sel")
+ public abstract String getSelectItemCss();
- @Attribute(events=@EventName("keydown"))
- public abstract String getOnkeydown();
+ @Override
+ @Attribute(defaultValue="rf-is-lst-cord")
+ public abstract String getListCss();
- @Attribute(events=@EventName("keypress"))
- public abstract String getOnkeypress();
-
- @Attribute(events=@EventName("keyup"))
- public abstract String getOnkeypup();
-
- @Attribute(events=@EventName("mousedown"))
- public abstract String getOnmousedown();
-
- @Attribute(events=@EventName("mousemove"))
- public abstract String getOnmousemove();
-
- @Attribute(events=@EventName("mouseout"))
- public abstract String getOnmouseout();
-
- @Attribute(events=@EventName("mouseover"))
- public abstract String getOnmouseover();
-
- @Attribute(events=@EventName("mouseup"))
- public abstract String getOnmouseup();
-
- @Attribute(events=@EventName("select"))
- public abstract String getOnselect();
-
- @Attribute(events=@EventName("change"))
- public abstract String getOnchange();
-
}
Added: trunk/ui/input/ui/src/main/java/org/richfaces/component/AbstractSelect.java
===================================================================
--- trunk/ui/input/ui/src/main/java/org/richfaces/component/AbstractSelect.java
(rev 0)
+++ trunk/ui/input/ui/src/main/java/org/richfaces/component/AbstractSelect.java 2010-10-15
16:45:47 UTC (rev 19582)
@@ -0,0 +1,90 @@
+package org.richfaces.component;
+
+import javax.faces.component.UISelectOne;
+
+import org.richfaces.cdk.annotations.Attribute;
+import org.richfaces.cdk.annotations.EventName;
+import org.richfaces.cdk.annotations.JsfComponent;
+import org.richfaces.cdk.annotations.JsfRenderer;
+import org.richfaces.cdk.annotations.Tag;
+
+
+@JsfComponent(
+ type = AbstractSelect.COMPONENT_TYPE,
+ family = AbstractSelect.COMPONENT_FAMILY,
+ generate = "org.richfaces.component.UISelect",
+ renderer = @JsfRenderer(type = "org.richfaces.SelectRenderer"),
+ tag = @Tag(name="select")
+)
+public abstract class AbstractSelect extends UISelectOne {
+
+ public static final String COMPONENT_TYPE = "org.richfaces.Select";
+
+ public static final String COMPONENT_FAMILY = "org.richfaces.Select";
+
+ @Attribute(defaultValue="250px")
+ public abstract String getListWidth();
+
+ @Attribute(defaultValue="100px")
+ public abstract String getListHeight();
+
+ @Attribute(defaultValue="true")
+ public abstract boolean isShowButton();
+
+ @Attribute
+ public abstract String getDefaultLabel();
+
+ @Attribute(events=@EventName("blur"))
+ public abstract String getOnblur();
+
+ @Attribute(events=@EventName("click"))
+ public abstract String getOnclick();
+
+ @Attribute(events=@EventName("ondblclick"))
+ public abstract String getOndblclick();
+
+ @Attribute(events=@EventName("focus"))
+ public abstract String getOnfocus();
+
+ @Attribute(events=@EventName("keydown"))
+ public abstract String getOnkeydown();
+
+ @Attribute(events=@EventName("keypress"))
+ public abstract String getOnkeypress();
+
+ @Attribute(events=@EventName("keyup"))
+ public abstract String getOnkeypup();
+
+ @Attribute(events=@EventName("mousedown"))
+ public abstract String getOnmousedown();
+
+ @Attribute(events=@EventName("mousemove"))
+ public abstract String getOnmousemove();
+
+ @Attribute(events=@EventName("mouseout"))
+ public abstract String getOnmouseout();
+
+ @Attribute(events=@EventName("mouseover"))
+ public abstract String getOnmouseover();
+
+ @Attribute(events=@EventName("mouseup"))
+ public abstract String getOnmouseup();
+
+ @Attribute(events=@EventName("select"))
+ public abstract String getOnselect();
+
+ @Attribute(events=@EventName("change"))
+ public abstract String getOnchange();
+
+ @Attribute(defaultValue = "rf-au-opt")
+ public abstract String getItemCss();
+
+ @Attribute(defaultValue = "rf-au-sel")
+ public abstract String getSelectItemCss();
+
+ @Attribute(defaultValue = "rf-au-lst-cord")
+ public abstract String getListCss();
+
+
+
+}
Added: trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/ClientSelectItem.java
===================================================================
--- trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/ClientSelectItem.java
(rev 0)
+++
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/ClientSelectItem.java 2010-10-15
16:45:47 UTC (rev 19582)
@@ -0,0 +1,50 @@
+package org.richfaces.renderkit;
+
+import org.ajax4jsf.javascript.ScriptString;
+import org.ajax4jsf.javascript.ScriptUtils;
+
+public final class ClientSelectItem implements ScriptString {
+
+ private String clientId;
+ private String label;
+ private String convertedValue;
+
+ public ClientSelectItem(String convertedValue, String label) {
+ this(convertedValue, label, null);
+ }
+
+ public ClientSelectItem(String convertedValue, String label,
+ String clientId) {
+ super();
+ this.convertedValue = convertedValue;
+ this.label = label;
+ this.clientId = clientId;
+ }
+
+ public String getClientId() {
+ return clientId;
+ }
+
+ public void setClientId(String clientId) {
+ this.clientId = clientId;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public String getConvertedValue() {
+ return convertedValue;
+ }
+
+ public void appendScript(StringBuffer functionString) {
+ functionString.append(this.toScript());
+ }
+
+ public String toScript() {
+ return "{ 'id' : " + ScriptUtils.toScript(clientId)
+ + " , 'label' : " + ScriptUtils.toScript(label)
+ + ", 'value' : " +
ScriptUtils.toScript(convertedValue)
+ + "}";
+ }
+}
Deleted:
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputBaseRenderer.java
===================================================================
---
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputBaseRenderer.java 2010-10-15
16:14:23 UTC (rev 19581)
+++
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputBaseRenderer.java 2010-10-15
16:45:47 UTC (rev 19582)
@@ -1,287 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2010, Red Hat, Inc. and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package org.richfaces.renderkit;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.faces.application.Resource;
-import javax.faces.application.ResourceDependencies;
-import javax.faces.application.ResourceDependency;
-import javax.faces.application.ResourceHandler;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-
-import org.ajax4jsf.javascript.JSFunction;
-import org.richfaces.component.InplaceComponent;
-import org.richfaces.component.InplaceState;
-import org.richfaces.component.util.HtmlUtil;
-
-/**
- * @author Anton Belevich
- *
- */
-@ResourceDependencies({
- @ResourceDependency(library = "javax.faces", name =
"jsf.js"),
- @ResourceDependency(name = "jquery.js"),
- @ResourceDependency(name = "richfaces.js"),
- @ResourceDependency(name = "richfaces-event.js"),
- @ResourceDependency(name = "richfaces-base-component.js"),
- @ResourceDependency(library = "org.richfaces", name =
"inplaceBase.js"),
- @ResourceDependency(library = "org.richfaces", name =
"inplaceInput.js"),
- @ResourceDependency(library = "org.richfaces", name =
"inplaceInput.ecss") })
-public class InplaceInputBaseRenderer extends InputRendererBase {
-
- public static final String OPTIONS_EDIT_EVENT = "editEvent";
-
- public static final String OPTIONS_STATE = "state";
-
- public static final String OPTIONS_EDIT_CONTAINER = "editContainer";
-
- public static final String OPTIONS_INPUT = "input";
-
- public static final String OPTIONS_FOCUS = "focusElement";
-
- public static final String OPTIONS_BUTTON_OK = "okbtn";
-
- public static final String OPTIONS_LABEL = "label";
-
- public static final String OPTIONS_DEFAULT_LABEL = "defaultLabel";
-
- public static final String OPTIONS_BUTTON_CANCEL = "cancelbtn";
-
- public static final String OPTIONS_SHOWCONTROLS = "showControls";
-
- public static final String OPTIONS_NONE_CSS = "noneCss";
-
- public static final String OPTIONS_CHANGED_CSS = "changedCss";
-
- public static final String OPTIONS_EDIT_CSS = "editCss";
-
- public static final String OPTIONS_INITIAL_VALUE = "initialValue";
-
- public static final String OPTIONS_SAVE_ON_BLUR = "saveOnBlur";
-
- private static final Map<String, ComponentAttribute>
INPLACEINPUT_HANDLER_ATTRIBUTES = Collections
- .unmodifiableMap(ComponentAttribute.createMap(
- new ComponentAttribute(HtmlConstants.ONCLICK_ATTRIBUTE)
- .setEventNames("inputclick")
- .setComponentAttributeName("oninputclick"),
- new ComponentAttribute(HtmlConstants.ONDBLCLICK_ATTRIBUTE)
- .setEventNames("inputdblclick")
- .setComponentAttributeName("oninputdblclick"),
- new ComponentAttribute(HtmlConstants.ONMOUSEDOWN_ATTRIBUTE)
- .setEventNames("inputmousedown")
- .setComponentAttributeName("oninputmousedown"),
- new ComponentAttribute(HtmlConstants.ONMOUSEUP_ATTRIBUTE)
- .setEventNames("inputmouseup")
- .setComponentAttributeName("oninputmouseup"),
- new ComponentAttribute(HtmlConstants.ONMOUSEOVER_ATTRIBUTE)
- .setEventNames("inputmouseover")
- .setComponentAttributeName("oninputmouseover"),
- new ComponentAttribute(HtmlConstants.ONMOUSEMOVE_ATTRIBUTE)
- .setEventNames("inputmousemove")
- .setComponentAttributeName("oninputmousemove"),
- new ComponentAttribute(HtmlConstants.ONMOUSEOUT_ATTRIBUTE)
- .setEventNames("inputmouseout")
- .setComponentAttributeName("oninputmouseout"),
- new ComponentAttribute(HtmlConstants.ONKEYPRESS_ATTRIBUTE)
- .setEventNames("inputkeypress")
- .setComponentAttributeName("oninputkeypress"),
- new ComponentAttribute(HtmlConstants.ONKEYDOWN_ATTRIBUTE)
- .setEventNames("inputkeydown")
- .setComponentAttributeName("oninputkeydown"),
- new ComponentAttribute(HtmlConstants.ONKEYUP_ATTRIBUTE)
- .setEventNames("inputkeyup")
- .setComponentAttributeName("oninputkeyup"),
- new ComponentAttribute(HtmlConstants.ONBLUR_ATTRIBUTE)
- .setEventNames("inputblur")
- .setComponentAttributeName("oninputblur"),
- new ComponentAttribute(HtmlConstants.ONFOCUS_ATTRIBUTE)
- .setEventNames("inputfocus")
- .setComponentAttributeName("oninputfocus"),
- new ComponentAttribute(HtmlConstants.ONCHANGE_ATTRIBUTE)
-
.setEventNames("change").setComponentAttributeName(
- "onchange"),
- new ComponentAttribute(HtmlConstants.ONSELECT_ATTRIBUTE)
-
.setEventNames("select").setComponentAttributeName(
- "onselect")));
-
- protected void renderInputHandlers(FacesContext facesContext,
- UIComponent component) throws IOException {
- RenderKitUtils.renderPassThroughAttributesOptimized(facesContext,
- component, INPLACEINPUT_HANDLER_ATTRIBUTES);
- }
-
- public InplaceState getInplaceState(UIComponent component) {
- return ((InplaceComponent) component).getState();
- }
-
- public String getValue(FacesContext facesContext, UIComponent component) throws
IOException {
- String value = getInputValue(facesContext, component);
- if (!isDisable(getInplaceState(component)) && (value == null ||
"".equals(value)) ) {
- value = ((InplaceComponent) component).getDefaultLabel();
- }
- return value;
- }
-
- public String getResourcePath(FacesContext context, String resourceName) {
- if (resourceName != null) {
- ResourceHandler resourceHandler = context.getApplication()
- .getResourceHandler();
- Resource resource = resourceHandler.createResource(resourceName);
- return resource.getRequestPath();
- }
- return null;
- }
-
- public String getStateStyleClass(UIComponent component,
- InplaceState inplaceState) {
- String style = getReadyStateCss();
- switch (inplaceState) {
- case edit:
- style = HtmlUtil.concatClasses(style, getEditStateCss());
- break;
-
- case changed:
- style = HtmlUtil.concatClasses(style, getChangedStateCss());
- break;
-
- case disable:
- style = getDisableStateCss();
- break;
-
- default:
- break;
- }
-
- return style;
- }
-
- public boolean isDisable(InplaceState currentState) {
- return (InplaceState.disable == currentState);
- }
-
- public String getEditStyleClass(UIComponent component,
- InplaceState inplaceState) {
- return (InplaceState.edit != inplaceState) ? HtmlUtil.concatClasses(getEditCss(),
getNoneCss()) : getEditCss();
- }
-
- public String getReadyClientId(FacesContext facesContext,
- UIComponent component, InplaceState inplaceState) {
- String clientId = component.getClientId(facesContext);
- return getId(clientId, InplaceState.ready, inplaceState);
- }
-
- public String getChangedClientId(FacesContext facesContext,
- UIComponent component, InplaceState inplaceState) {
- String clientId = component.getClientId(facesContext);
- return getId(clientId, InplaceState.changed, inplaceState);
- }
-
- private String getId(String clientId, InplaceState expect,
- InplaceState current) {
- String result = clientId;
- if (expect != current) {
- result = clientId + ":" + expect;
- }
- return result;
- }
-
- public void buildScript(ResponseWriter writer, FacesContext facesContext,
- UIComponent component, Object additional) throws IOException {
- if (!(component instanceof InplaceComponent)) {
- return;
- }
-
- String scriptName = getScriptName();
- JSFunction function = new JSFunction(scriptName);
- String clientId = component.getClientId(facesContext);
- Map<String, Object> options = createInplaceComponentOptions(clientId,
- (InplaceComponent) component);
- addToOptions(facesContext, component, options, additional);
- function.addParameter(clientId);
- function.addParameter(options);
- writer.write(function.toString());
- }
-
- protected String getScriptName() {
- return "new RichFaces.ui.InplaceInput";
- }
-
- private Map<String, Object> createInplaceComponentOptions(String clientId,
- InplaceComponent inplaceComponent) {
- Map<String, Object> options = new HashMap<String, Object>();
- options.put(OPTIONS_EDIT_EVENT, inplaceComponent.getEditEvent());
- options.put(OPTIONS_STATE, inplaceComponent.getState());
- options.put(OPTIONS_NONE_CSS, getNoneCss());
- options.put(OPTIONS_CHANGED_CSS, getChangedStateCss());
- options.put(OPTIONS_EDIT_CSS, getEditStateCss());
- options.put(OPTIONS_EDIT_CONTAINER, clientId + ":edit");
- options.put(OPTIONS_INPUT, clientId + ":input");
- options.put(OPTIONS_LABEL, clientId + ":label");
- options.put(OPTIONS_FOCUS, clientId + ":focus");
- options.put(OPTIONS_DEFAULT_LABEL, inplaceComponent.getDefaultLabel());
- options.put(OPTIONS_SAVE_ON_BLUR, inplaceComponent.isSaveOnBlur());
-
- boolean showControls = inplaceComponent.isShowControls();
-
- options.put(OPTIONS_SHOWCONTROLS, showControls);
- if (showControls) {
- options.put(OPTIONS_BUTTON_OK, clientId + ":okbtn");
- options.put(OPTIONS_BUTTON_CANCEL, clientId + ":cancelbtn");
- }
- return options;
- }
-
- public void addToOptions(FacesContext facesContext, UIComponent component,
- Map<String, Object> options, Object additional) {
- // override this method if you need additional options
- }
-
- public String getReadyStateCss() {
- return "rf-ii-d-s";
- }
-
- public String getEditStateCss() {
- return "rf-ii-e-s";
- }
-
- public String getChangedStateCss() {
- return "rf-ii-c-s";
- }
-
- public String getDisableStateCss() {
- return "rf-ii-dis-s";
- }
-
- public String getEditCss() {
- return "rf-ii-edit";
- }
-
- public String getNoneCss() {
- return "rf-ii-none";
- }
-}
Added:
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputRendererBase.java
===================================================================
--- trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputRendererBase.java
(rev 0)
+++
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputRendererBase.java 2010-10-15
16:45:47 UTC (rev 19582)
@@ -0,0 +1,287 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.richfaces.renderkit;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.faces.application.Resource;
+import javax.faces.application.ResourceDependencies;
+import javax.faces.application.ResourceDependency;
+import javax.faces.application.ResourceHandler;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import org.ajax4jsf.javascript.JSFunction;
+import org.richfaces.component.InplaceComponent;
+import org.richfaces.component.InplaceState;
+import org.richfaces.component.util.HtmlUtil;
+
+/**
+ * @author Anton Belevich
+ *
+ */
+@ResourceDependencies({
+ @ResourceDependency(library = "javax.faces", name =
"jsf.js"),
+ @ResourceDependency(name = "jquery.js"),
+ @ResourceDependency(name = "richfaces.js"),
+ @ResourceDependency(name = "richfaces-event.js"),
+ @ResourceDependency(name = "richfaces-base-component.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"inplaceBase.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"inplaceInput.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"inplaceInput.ecss") })
+public class InplaceInputRendererBase extends InputRendererBase {
+
+ public static final String OPTIONS_EDIT_EVENT = "editEvent";
+
+ public static final String OPTIONS_STATE = "state";
+
+ public static final String OPTIONS_EDIT_CONTAINER = "editContainer";
+
+ public static final String OPTIONS_INPUT = "input";
+
+ public static final String OPTIONS_FOCUS = "focusElement";
+
+ public static final String OPTIONS_BUTTON_OK = "okbtn";
+
+ public static final String OPTIONS_LABEL = "label";
+
+ public static final String OPTIONS_DEFAULT_LABEL = "defaultLabel";
+
+ public static final String OPTIONS_BUTTON_CANCEL = "cancelbtn";
+
+ public static final String OPTIONS_SHOWCONTROLS = "showControls";
+
+ public static final String OPTIONS_NONE_CSS = "noneCss";
+
+ public static final String OPTIONS_CHANGED_CSS = "changedCss";
+
+ public static final String OPTIONS_EDIT_CSS = "editCss";
+
+ public static final String OPTIONS_INITIAL_VALUE = "initialValue";
+
+ public static final String OPTIONS_SAVE_ON_BLUR = "saveOnBlur";
+
+ private static final Map<String, ComponentAttribute>
INPLACEINPUT_HANDLER_ATTRIBUTES = Collections
+ .unmodifiableMap(ComponentAttribute.createMap(
+ new ComponentAttribute(HtmlConstants.ONCLICK_ATTRIBUTE)
+ .setEventNames("inputclick")
+ .setComponentAttributeName("oninputclick"),
+ new ComponentAttribute(HtmlConstants.ONDBLCLICK_ATTRIBUTE)
+ .setEventNames("inputdblclick")
+ .setComponentAttributeName("oninputdblclick"),
+ new ComponentAttribute(HtmlConstants.ONMOUSEDOWN_ATTRIBUTE)
+ .setEventNames("inputmousedown")
+ .setComponentAttributeName("oninputmousedown"),
+ new ComponentAttribute(HtmlConstants.ONMOUSEUP_ATTRIBUTE)
+ .setEventNames("inputmouseup")
+ .setComponentAttributeName("oninputmouseup"),
+ new ComponentAttribute(HtmlConstants.ONMOUSEOVER_ATTRIBUTE)
+ .setEventNames("inputmouseover")
+ .setComponentAttributeName("oninputmouseover"),
+ new ComponentAttribute(HtmlConstants.ONMOUSEMOVE_ATTRIBUTE)
+ .setEventNames("inputmousemove")
+ .setComponentAttributeName("oninputmousemove"),
+ new ComponentAttribute(HtmlConstants.ONMOUSEOUT_ATTRIBUTE)
+ .setEventNames("inputmouseout")
+ .setComponentAttributeName("oninputmouseout"),
+ new ComponentAttribute(HtmlConstants.ONKEYPRESS_ATTRIBUTE)
+ .setEventNames("inputkeypress")
+ .setComponentAttributeName("oninputkeypress"),
+ new ComponentAttribute(HtmlConstants.ONKEYDOWN_ATTRIBUTE)
+ .setEventNames("inputkeydown")
+ .setComponentAttributeName("oninputkeydown"),
+ new ComponentAttribute(HtmlConstants.ONKEYUP_ATTRIBUTE)
+ .setEventNames("inputkeyup")
+ .setComponentAttributeName("oninputkeyup"),
+ new ComponentAttribute(HtmlConstants.ONBLUR_ATTRIBUTE)
+ .setEventNames("inputblur")
+ .setComponentAttributeName("oninputblur"),
+ new ComponentAttribute(HtmlConstants.ONFOCUS_ATTRIBUTE)
+ .setEventNames("inputfocus")
+ .setComponentAttributeName("oninputfocus"),
+ new ComponentAttribute(HtmlConstants.ONCHANGE_ATTRIBUTE)
+
.setEventNames("change").setComponentAttributeName(
+ "onchange"),
+ new ComponentAttribute(HtmlConstants.ONSELECT_ATTRIBUTE)
+
.setEventNames("select").setComponentAttributeName(
+ "onselect")));
+
+ protected void renderInputHandlers(FacesContext facesContext,
+ UIComponent component) throws IOException {
+ RenderKitUtils.renderPassThroughAttributesOptimized(facesContext,
+ component, INPLACEINPUT_HANDLER_ATTRIBUTES);
+ }
+
+ public InplaceState getInplaceState(UIComponent component) {
+ return ((InplaceComponent) component).getState();
+ }
+
+ public String getValue(FacesContext facesContext, UIComponent component) throws
IOException {
+ String value = getInputValue(facesContext, component);
+ if (!isDisable(getInplaceState(component)) && (value == null ||
"".equals(value)) ) {
+ value = ((InplaceComponent) component).getDefaultLabel();
+ }
+ return value;
+ }
+
+ public String getResourcePath(FacesContext context, String resourceName) {
+ if (resourceName != null) {
+ ResourceHandler resourceHandler = context.getApplication()
+ .getResourceHandler();
+ Resource resource = resourceHandler.createResource(resourceName);
+ return resource.getRequestPath();
+ }
+ return null;
+ }
+
+ public String getStateStyleClass(UIComponent component,
+ InplaceState inplaceState) {
+ String style = getReadyStateCss();
+ switch (inplaceState) {
+ case edit:
+ style = HtmlUtil.concatClasses(style, getEditStateCss());
+ break;
+
+ case changed:
+ style = HtmlUtil.concatClasses(style, getChangedStateCss());
+ break;
+
+ case disable:
+ style = getDisableStateCss();
+ break;
+
+ default:
+ break;
+ }
+
+ return style;
+ }
+
+ public boolean isDisable(InplaceState currentState) {
+ return (InplaceState.disable == currentState);
+ }
+
+ public String getEditStyleClass(UIComponent component,
+ InplaceState inplaceState) {
+ return (InplaceState.edit != inplaceState) ? HtmlUtil.concatClasses(getEditCss(),
getNoneCss()) : getEditCss();
+ }
+
+ public String getReadyClientId(FacesContext facesContext,
+ UIComponent component, InplaceState inplaceState) {
+ String clientId = component.getClientId(facesContext);
+ return getId(clientId, InplaceState.ready, inplaceState);
+ }
+
+ public String getChangedClientId(FacesContext facesContext,
+ UIComponent component, InplaceState inplaceState) {
+ String clientId = component.getClientId(facesContext);
+ return getId(clientId, InplaceState.changed, inplaceState);
+ }
+
+ private String getId(String clientId, InplaceState expect,
+ InplaceState current) {
+ String result = clientId;
+ if (expect != current) {
+ result = clientId + ":" + expect;
+ }
+ return result;
+ }
+
+ public void buildScript(ResponseWriter writer, FacesContext facesContext,
+ UIComponent component, Object additional) throws IOException {
+ if (!(component instanceof InplaceComponent)) {
+ return;
+ }
+
+ String scriptName = getScriptName();
+ JSFunction function = new JSFunction(scriptName);
+ String clientId = component.getClientId(facesContext);
+ Map<String, Object> options = createInplaceComponentOptions(clientId,
+ (InplaceComponent) component);
+ addToOptions(facesContext, component, options, additional);
+ function.addParameter(clientId);
+ function.addParameter(options);
+ writer.write(function.toString());
+ }
+
+ protected String getScriptName() {
+ return "new RichFaces.ui.InplaceInput";
+ }
+
+ private Map<String, Object> createInplaceComponentOptions(String clientId,
+ InplaceComponent inplaceComponent) {
+ Map<String, Object> options = new HashMap<String, Object>();
+ options.put(OPTIONS_EDIT_EVENT, inplaceComponent.getEditEvent());
+ options.put(OPTIONS_STATE, inplaceComponent.getState());
+ options.put(OPTIONS_NONE_CSS, getNoneCss());
+ options.put(OPTIONS_CHANGED_CSS, getChangedStateCss());
+ options.put(OPTIONS_EDIT_CSS, getEditStateCss());
+ options.put(OPTIONS_EDIT_CONTAINER, clientId + ":edit");
+ options.put(OPTIONS_INPUT, clientId + ":input");
+ options.put(OPTIONS_LABEL, clientId + ":label");
+ options.put(OPTIONS_FOCUS, clientId + ":focus");
+ options.put(OPTIONS_DEFAULT_LABEL, inplaceComponent.getDefaultLabel());
+ options.put(OPTIONS_SAVE_ON_BLUR, inplaceComponent.isSaveOnBlur());
+
+ boolean showControls = inplaceComponent.isShowControls();
+
+ options.put(OPTIONS_SHOWCONTROLS, showControls);
+ if (showControls) {
+ options.put(OPTIONS_BUTTON_OK, clientId + ":okbtn");
+ options.put(OPTIONS_BUTTON_CANCEL, clientId + ":cancelbtn");
+ }
+ return options;
+ }
+
+ public void addToOptions(FacesContext facesContext, UIComponent component,
+ Map<String, Object> options, Object additional) {
+ // override this method if you need additional options
+ }
+
+ public String getReadyStateCss() {
+ return "rf-ii-d-s";
+ }
+
+ public String getEditStateCss() {
+ return "rf-ii-e-s";
+ }
+
+ public String getChangedStateCss() {
+ return "rf-ii-c-s";
+ }
+
+ public String getDisableStateCss() {
+ return "rf-ii-dis-s";
+ }
+
+ public String getEditCss() {
+ return "rf-ii-edit";
+ }
+
+ public String getNoneCss() {
+ return "rf-ii-none";
+ }
+}
Deleted:
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceSelectBaseRenderer.java
===================================================================
---
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceSelectBaseRenderer.java 2010-10-15
16:14:23 UTC (rev 19581)
+++
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceSelectBaseRenderer.java 2010-10-15
16:45:47 UTC (rev 19582)
@@ -1,266 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2010, Red Hat, Inc. and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-
-package org.richfaces.renderkit;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import javax.faces.application.ResourceDependencies;
-import javax.faces.application.ResourceDependency;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-import javax.faces.model.SelectItem;
-
-import org.ajax4jsf.javascript.ScriptString;
-import org.ajax4jsf.javascript.ScriptUtils;
-import org.richfaces.component.AbstractInplaceSelect;
-import org.richfaces.component.util.InputUtils;
-import org.richfaces.component.util.SelectUtils;
-
-/**
- * @author Anton Belevich
- *
- */
-
-@ResourceDependencies({
- @ResourceDependency(library = "javax.faces", name =
"jsf.js"),
- @ResourceDependency(name = "jquery.js"),
- @ResourceDependency(name = "jquery.position.js"),
- @ResourceDependency(name = "richfaces.js"),
- @ResourceDependency(name = "jquery.position.js"),
- @ResourceDependency(name = "richfaces-event.js"),
- @ResourceDependency(name = "richfaces-base-component.js"),
- @ResourceDependency(name = "richfaces-selection.js"),
- @ResourceDependency(library = "org.richfaces", name =
"inplaceBase.js"),
- @ResourceDependency(library = "org.richfaces", name =
"popup.js"),
- @ResourceDependency(library = "org.richfaces", name =
"popupList.js"),
- @ResourceDependency(library = "org.richfaces", name =
"selectList.js"),
- @ResourceDependency(library = "org.richfaces", name =
"inplaceInput.js"),
- @ResourceDependency(library = "org.richfaces", name =
"inplaceSelect.js"),
- @ResourceDependency(library = "org.richfaces", name =
"inplaceSelect.ecss") })
-public class InplaceSelectBaseRenderer extends InplaceInputBaseRenderer {
-
- public static final String OPTIONS_ITEM_CLASS = "itemCss";
-
- public static final String OPTIONS_SELECT_ITEM_CLASS = "selectItemCss";
-
- public static final String OPTIONS_LIST_CORD = "listCord";
-
- public static final String OPTIONS_ITEMS_CORD = "itemsCord";
-
- public static final String OPTIONS_SELECT_ITEMS = "selectItems";
-
- public static final String OPTIONS_SELECT_ITEM_VALUE_INPUT =
"selValueInput";
-
- public static final String OPTIONS_VISIBLE = "visible";
-
- protected static final class ClientSelectItem implements ScriptString {
-
- private String clientId;
- private String label;
- private String convertedValue;
-
- public ClientSelectItem(String convertedValue, String label) {
- this(convertedValue, label, null);
- }
-
- public ClientSelectItem(String convertedValue, String label,
- String clientId) {
- super();
- this.convertedValue = convertedValue;
- this.label = label;
- this.clientId = clientId;
- }
-
- public String getClientId() {
- return clientId;
- }
-
- public void setClientId(String clientId) {
- this.clientId = clientId;
- }
-
- public String getLabel() {
- return label;
- }
-
- public String getConvertedValue() {
- return convertedValue;
- }
-
- public void appendScript(StringBuffer functionString) {
- functionString.append(this.toScript());
- }
-
- public String toScript() {
- return "{ 'id' : " + ScriptUtils.toScript(clientId)
- + " , 'label' : " + ScriptUtils.toScript(label)
- + ", 'value' : " +
ScriptUtils.toScript(convertedValue)
- + "}";
- }
- }
-
-
- private static final Map<String, ComponentAttribute>
INPLACESELECT_HANDLER_ATTRIBUTES = Collections
- .unmodifiableMap(ComponentAttribute.createMap(
- new
ComponentAttribute(HtmlConstants.ONCHANGE_ATTRIBUTE).setEventNames("change").
- setComponentAttributeName("onchange"),
- new
ComponentAttribute(HtmlConstants.ONSELECT_ATTRIBUTE).setEventNames("select").
- setComponentAttributeName("onselect")
- ));
-
- @Override
- protected String getScriptName() {
- return "new RichFaces.ui.InplaceSelect";
- }
-
- public List<ClientSelectItem> getConvertedSelectItems(
- FacesContext facesContext, UIComponent component) {
- AbstractInplaceSelect inplaceSelect = (AbstractInplaceSelect) component;
- List<SelectItem> selectItems = SelectUtils.getSelectItems(facesContext,
- inplaceSelect);
- List<ClientSelectItem> clientSelectItems = new
ArrayList<InplaceSelectBaseRenderer.ClientSelectItem>();
- for (SelectItem selectItem : selectItems) {
- String convertedStringValue = InputUtils.getConvertedStringValue(
- facesContext, inplaceSelect, selectItem.getValue());
- String label = selectItem.getLabel();
- clientSelectItems.add(new ClientSelectItem(convertedStringValue,
- label));
- }
- return clientSelectItems;
- }
-
- @Override
- protected void renderInputHandlers(FacesContext facesContext, UIComponent component)
throws IOException {
- RenderKitUtils.renderPassThroughAttributesOptimized(facesContext, component,
INPLACESELECT_HANDLER_ATTRIBUTES);
- }
-
- @Override
- public void addToOptions(FacesContext facesContext, UIComponent component,
- Map<String, Object> options, Object additional) {
- options.put(OPTIONS_ITEM_CLASS, "rf-is-opt");
- options.put(OPTIONS_SELECT_ITEM_CLASS, "rf-is-sel");
- String clientId = component.getClientId(facesContext);
- options.put(OPTIONS_LIST_CORD, clientId + "List");
- options.put(OPTIONS_ITEMS_CORD, clientId + "Items");
- options.put(OPTIONS_SELECT_ITEMS, additional);
- options.put(OPTIONS_SELECT_ITEM_VALUE_INPUT, clientId + "selValue");
- options.put(OPTIONS_VISIBLE,
component.getAttributes().get("openOnEdit"));
- }
-
- public void encodeOptions(FacesContext facesContext, UIComponent component,
- List<ClientSelectItem> clientSelectItems) throws IOException {
- AbstractInplaceSelect inplaceSelect = (AbstractInplaceSelect) component;
- if (clientSelectItems != null && !clientSelectItems.isEmpty()) {
- ResponseWriter writer = facesContext.getResponseWriter();
- String clientId = component.getClientId(facesContext);
- int i = 0;
- for (ClientSelectItem clientSelectItem : clientSelectItems) {
- String itemClientId = clientId + "Item" + (i++);
- clientSelectItem.setClientId(itemClientId);
-
- writer.startElement(HtmlConstants.SPAN_ELEM, inplaceSelect);
- writer.writeAttribute(HtmlConstants.ID_ATTRIBUTE, itemClientId,
- null);
- writer.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE,
- getOptionCss(), null);
-
- String label = clientSelectItem.getLabel();
- if (label != null && label.trim().length() > 0) {
- writer.writeText(label, null);
- } else {
- writer.write("\u00a0");
- }
- writer.endElement(HtmlConstants.SPAN_ELEM);
- }
- }
- }
-
- public String getSelectLabel(FacesContext facesContext,
- UIComponent component) {
- AbstractInplaceSelect select = (AbstractInplaceSelect) component;
- String label = getSelectInputLabel(facesContext, select);
- if (!isDisable(getInplaceState(component)) && (label == null)) {
- label = select.getDefaultLabel();
- }
- return label;
- }
-
- public String getSelectInputLabel(FacesContext facesContext,
- UIComponent component) {
- AbstractInplaceSelect select = (AbstractInplaceSelect) component;
- Object value = select.getSubmittedValue();
- if (value == null) {
- value = select.getValue();
- if (value != null) {
- List<SelectItem> items = SelectUtils.getSelectItems(
- facesContext, component);
- for (SelectItem item : items) {
- if (value.equals(item.getValue())) {
- value = item.getLabel();
- }
- }
- }
- }
-
- return (String) value;
- }
-
- public String getListStyles(FacesContext facesContext, UIComponent component) {
- AbstractInplaceSelect inplaceSelect = (AbstractInplaceSelect) component;
- return inplaceSelect.isOpenOnEdit() ? "" : "display: none";
- }
-
- public String getReadyStateCss() {
- return "rf-is-d-s";
- }
-
- public String getEditStateCss() {
- return "rf-is-e-s";
- }
-
- public String getChangedStateCss() {
- return "rf-is-c-s";
- }
-
- public String getDisableStateCss() {
- return "rf-is-dis-s";
- }
-
- public String getEditCss() {
- return "rf-is-edit";
- }
-
- public String getNoneCss() {
- return "rf-is-none";
- }
-
- public String getOptionCss() {
- return "rf-is-opt rf-is-fnt";
- }
-
-}
Added:
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceSelectRendererBase.java
===================================================================
---
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceSelectRendererBase.java
(rev 0)
+++
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceSelectRendererBase.java 2010-10-15
16:45:47 UTC (rev 19582)
@@ -0,0 +1,147 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+
+package org.richfaces.renderkit;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import javax.faces.application.ResourceDependencies;
+import javax.faces.application.ResourceDependency;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+import org.richfaces.component.AbstractInplaceSelect;
+
+/**
+ * @author Anton Belevich
+ *
+ */
+
+@ResourceDependencies({
+ @ResourceDependency(library = "javax.faces", name =
"jsf.js"),
+ @ResourceDependency(name = "jquery.js"),
+ @ResourceDependency(name = "jquery.position.js"),
+ @ResourceDependency(name = "richfaces.js"),
+ @ResourceDependency(name = "jquery.position.js"),
+ @ResourceDependency(name = "richfaces-event.js"),
+ @ResourceDependency(name = "richfaces-base-component.js"),
+ @ResourceDependency(name = "richfaces-selection.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"inplaceBase.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"popup.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"popupList.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"selectList.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"inplaceInput.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"inplaceSelect.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"inplaceSelect.ecss") })
+public class InplaceSelectRendererBase extends InplaceInputRendererBase {
+
+
+ public static final String OPTION_LIST_ITEMS = "items";
+
+ public static final String OPTIONS_SELECT_ITEM_VALUE_INPUT =
"selValueInput";
+
+ public static final String OPTIONS_VISIBLE = "visible";
+
+ private static final Map<String, ComponentAttribute>
INPLACESELECT_HANDLER_ATTRIBUTES =
Collections.unmodifiableMap(ComponentAttribute.createMap(
+ new
ComponentAttribute(HtmlConstants.ONCHANGE_ATTRIBUTE).setEventNames("change").
+ setComponentAttributeName("onchange"),
+ new
ComponentAttribute(HtmlConstants.ONSELECT_ATTRIBUTE).setEventNames("select").
+ setComponentAttributeName("onselect")
+ ));
+
+ @Override
+ protected String getScriptName() {
+ return "new RichFaces.ui.InplaceSelect";
+ }
+
+ public List<ClientSelectItem> getConvertedSelectItems(FacesContext
facesContext, UIComponent component) {
+ return SelectHelper.getConvertedSelectItems(facesContext, component);
+ }
+
+ public void encodeItems(FacesContext facesContext, UIComponent component,
List<ClientSelectItem> clientSelectItems) throws IOException {
+ SelectHelper.encodeItems(facesContext, component, clientSelectItems,
HtmlConstants.SPAN_ELEM);
+ }
+
+ @Override
+ protected void renderInputHandlers(FacesContext facesContext, UIComponent component)
throws IOException {
+ RenderKitUtils.renderPassThroughAttributesOptimized(facesContext, component,
INPLACESELECT_HANDLER_ATTRIBUTES);
+ }
+
+ public String getSelectInputLabel(FacesContext facesContext, UIComponent component)
{
+ return SelectHelper.getSelectInputLabel(facesContext, component);
+ }
+
+ @Override
+ public void addToOptions(FacesContext facesContext, UIComponent component,
Map<String, Object> options, Object additional) {
+ options.put(PopupConstants.OPTIONS_ITEM_CLASS, "rf-is-opt");
+ options.put(PopupConstants.OPTIONS_SELECT_ITEM_CLASS, "rf-is-sel");
+ options.put(OPTION_LIST_ITEMS, additional);
+
+ String clientId = component.getClientId(facesContext);
+ options.put(PopupConstants.OPTIONS_LIST_CORD, clientId + "List");
+ options.put(PopupConstants.OPTIONS_LIST_CLASS,
component.getAttributes().get("listCss"));
+
+ options.put(OPTIONS_SELECT_ITEM_VALUE_INPUT, clientId + "selValue");
+ options.put(OPTIONS_VISIBLE,
component.getAttributes().get("openOnEdit"));
+ }
+
+ public String getSelectLabel(FacesContext facesContext, UIComponent component) {
+ AbstractInplaceSelect select = (AbstractInplaceSelect) component;
+ String label = getSelectInputLabel(facesContext, select);
+ if (!isDisable(getInplaceState(component)) && (label == null)) {
+ label = select.getDefaultLabel();
+ }
+ return label;
+ }
+
+ public String getListStyles(FacesContext facesContext, UIComponent component) {
+ AbstractInplaceSelect inplaceSelect = (AbstractInplaceSelect) component;
+ return inplaceSelect.isOpenOnEdit() ? "" : "display: none";
+ }
+
+ public String getReadyStateCss() {
+ return "rf-is-d-s";
+ }
+
+ public String getEditStateCss() {
+ return "rf-is-e-s";
+ }
+
+ public String getChangedStateCss() {
+ return "rf-is-c-s";
+ }
+
+ public String getDisableStateCss() {
+ return "rf-is-dis-s";
+ }
+
+ public String getEditCss() {
+ return "rf-is-edit";
+ }
+
+ public String getNoneCss() {
+ return "rf-is-none";
+ }
+}
Added: trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/PopupConstants.java
===================================================================
--- trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/PopupConstants.java
(rev 0)
+++ trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/PopupConstants.java 2010-10-15
16:45:47 UTC (rev 19582)
@@ -0,0 +1,16 @@
+package org.richfaces.renderkit;
+
+/**
+ * @author abelevich
+ *
+ */
+public interface PopupConstants {
+
+ public static final String OPTIONS_ITEM_CLASS = "itemCss";
+
+ public static final String OPTIONS_SELECT_ITEM_CLASS = "selectItemCss";
+
+ public static final String OPTIONS_LIST_CLASS = "listCss";
+
+ public static final String OPTIONS_LIST_CORD = "list";
+}
Added: trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/SelectHelper.java
===================================================================
--- trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/SelectHelper.java
(rev 0)
+++ trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/SelectHelper.java 2010-10-15
16:45:47 UTC (rev 19582)
@@ -0,0 +1,120 @@
+package org.richfaces.renderkit;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.model.SelectItem;
+
+import org.richfaces.component.AbstractSelect;
+import org.richfaces.component.util.InputUtils;
+import org.richfaces.component.util.SelectUtils;
+
+/**
+ * @author abelevich
+ *
+ */
+public final class SelectHelper {
+
+ public static final Map<String, ComponentAttribute>
SELECT_LIST_HANDLER_ATTRIBUTES = Collections
+ .unmodifiableMap(ComponentAttribute.createMap(
+ new ComponentAttribute(HtmlConstants.ONCLICK_ATTRIBUTE)
+ .setEventNames("listclick")
+ .setComponentAttributeName("onlistclick"),
+ new ComponentAttribute(HtmlConstants.ONDBLCLICK_ATTRIBUTE)
+ .setEventNames("listdblclick")
+ .setComponentAttributeName("onlistdblclick"),
+ new ComponentAttribute(HtmlConstants.ONMOUSEDOWN_ATTRIBUTE)
+ .setEventNames("listmousedown")
+ .setComponentAttributeName("onlistmousedown"),
+ new ComponentAttribute(HtmlConstants.ONMOUSEUP_ATTRIBUTE)
+ .setEventNames("listmouseup")
+ .setComponentAttributeName("onlistmouseup"),
+ new ComponentAttribute(HtmlConstants.ONMOUSEOVER_ATTRIBUTE)
+ .setEventNames("listmouseover")
+ .setComponentAttributeName("onlistmouseover"),
+ new ComponentAttribute(HtmlConstants.ONMOUSEMOVE_ATTRIBUTE)
+ .setEventNames("listmousemove")
+ .setComponentAttributeName("onlistmousemove"),
+ new ComponentAttribute(HtmlConstants.ONMOUSEOUT_ATTRIBUTE)
+ .setEventNames("listmouseout")
+ .setComponentAttributeName("onlistmouseout"),
+ new ComponentAttribute(HtmlConstants.ONKEYPRESS_ATTRIBUTE)
+ .setEventNames("listkeypress")
+ .setComponentAttributeName("onlistkeypress"),
+ new ComponentAttribute(HtmlConstants.ONKEYDOWN_ATTRIBUTE)
+ .setEventNames("listkeydown")
+ .setComponentAttributeName("onlistkeydown"),
+ new ComponentAttribute(HtmlConstants.ONKEYUP_ATTRIBUTE)
+ .setEventNames("listkeyup")
+ .setComponentAttributeName("onlistkeyup")
+ ));
+
+ private SelectHelper() {
+ }
+
+ public static List<ClientSelectItem> getConvertedSelectItems(FacesContext
facesContext, UIComponent component) {
+ AbstractSelect select = (AbstractSelect) component;
+ List<SelectItem> selectItems = SelectUtils.getSelectItems(facesContext,
select);
+ List<ClientSelectItem> clientSelectItems = new
ArrayList<ClientSelectItem>();
+
+ for (SelectItem selectItem : selectItems) {
+ String convertedStringValue =
InputUtils.getConvertedStringValue(facesContext, select, selectItem.getValue());
+ String label = selectItem.getLabel();
+ clientSelectItems.add(new ClientSelectItem(convertedStringValue,label));
+ }
+ return clientSelectItems;
+ }
+
+ public static void encodeItems(FacesContext facesContext, UIComponent component,
+ List<ClientSelectItem> clientSelectItems, String itemHtmlElement)
throws IOException {
+ AbstractSelect select = (AbstractSelect) component;
+ if (clientSelectItems != null && !clientSelectItems.isEmpty()) {
+ ResponseWriter writer = facesContext.getResponseWriter();
+ String clientId = component.getClientId(facesContext);
+ int i = 0;
+ for (ClientSelectItem clientSelectItem : clientSelectItems) {
+ String itemClientId = clientId + "Item" + (i++);
+ clientSelectItem.setClientId(itemClientId);
+
+ writer.startElement(itemHtmlElement, select);
+ writer.writeAttribute(HtmlConstants.ID_ATTRIBUTE, itemClientId,
+ null);
+ writer.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE, select.getItemCss(),
null);
+
+ String label = clientSelectItem.getLabel();
+ if (label != null && label.trim().length() > 0) {
+ writer.writeText(label, null);
+ } else {
+ writer.write("\u00a0");
+ }
+ writer.endElement(itemHtmlElement);
+ }
+ }
+ }
+
+ public static String getSelectInputLabel(FacesContext facesContext, UIComponent
component) {
+ AbstractSelect select = (AbstractSelect) component;
+ Object value = select.getSubmittedValue();
+ if (value == null) {
+ value = select.getValue();
+ if (value != null) {
+ List<SelectItem> items = SelectUtils.getSelectItems(
+ facesContext, component);
+ for (SelectItem item : items) {
+ if (value.equals(item.getValue())) {
+ value = item.getLabel();
+ }
+ }
+ }
+ }
+
+ return (String) value;
+ }
+
+}
Added: trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/SelectRendererBase.java
===================================================================
--- trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/SelectRendererBase.java
(rev 0)
+++
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/SelectRendererBase.java 2010-10-15
16:45:47 UTC (rev 19582)
@@ -0,0 +1,93 @@
+package org.richfaces.renderkit;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.faces.application.ResourceDependencies;
+import javax.faces.application.ResourceDependency;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import org.ajax4jsf.javascript.JSFunction;
+import org.richfaces.component.AbstractSelect;
+
+@ResourceDependencies({ @ResourceDependency(library = "javax.faces", name =
"jsf.js"),
+ @ResourceDependency(name = "jquery.js"), @ResourceDependency(name =
"jquery.position.js"),
+ @ResourceDependency(name = "richfaces.js"), @ResourceDependency(name =
"jquery.position.js"),
+ @ResourceDependency(name = "richfaces-event.js"),
@ResourceDependency(name = "richfaces-base-component.js"),
+ @ResourceDependency(name = "richfaces-selection.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"popup.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"popupList.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"selectList.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"select.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"select.ecss") })
+public class SelectRendererBase extends InputRendererBase {
+
+ //TODO: move to SelectHelper <!--
+ public static final String OPTION_SHOWCONTROL = "showControl";
+
+ public static final String OPTIONS_SELECT_ITEM_VALUE_INPUT =
"selValueInput";
+
+ public static final String OPTION_LIST_ITEMS = "items";
+ // -->
+
+ public void renderListHandlers(FacesContext facesContext, UIComponent component)
throws IOException {
+ RenderKitUtils.renderPassThroughAttributesOptimized(facesContext, component,
SelectHelper.SELECT_LIST_HANDLER_ATTRIBUTES);
+ }
+
+ public List<ClientSelectItem> getConvertedSelectItems(FacesContext
facesContext, UIComponent component) {
+ return SelectHelper.getConvertedSelectItems(facesContext, component);
+ }
+
+ public String getSelectInputLabel(FacesContext facesContext, UIComponent component)
{
+ return SelectHelper.getSelectInputLabel(facesContext, component);
+ }
+
+ public void encodeItems(FacesContext facesContext, UIComponent component,
List<ClientSelectItem> clientSelectItems)
+ throws IOException {
+ SelectHelper.encodeItems(facesContext, component, clientSelectItems,
HtmlConstants.DIV_ELEM);
+ }
+
+ public void buildScript(ResponseWriter writer, FacesContext facesContext, UIComponent
component, List<ClientSelectItem> selectItems) throws IOException {
+ if (!(component instanceof AbstractSelect)) {
+ return;
+ }
+
+ AbstractSelect abstractSelect = (AbstractSelect)component;
+ String scriptName = getScriptName();
+ JSFunction function = new JSFunction(scriptName);
+
+ String clientId = abstractSelect.getClientId(facesContext);
+ Map<String, Object> options = new HashMap<String, Object>();
+ options.put(OPTION_SHOWCONTROL, abstractSelect.isShowButton());
+ options.put(OPTION_LIST_ITEMS, selectItems);
+ options.put(PopupConstants.OPTIONS_ITEM_CLASS, abstractSelect.getItemCss());
+ options.put(PopupConstants.OPTIONS_SELECT_ITEM_CLASS,
abstractSelect.getSelectItemCss());
+ options.put(PopupConstants.OPTIONS_LIST_CLASS, abstractSelect.getListCss());
+ options.put(PopupConstants.OPTIONS_LIST_CORD, clientId + "List");
+
+ function.addParameter(clientId);
+ function.addParameter(options);
+
+ writer.write(function.toString());
+ }
+
+ public String getValue(FacesContext facesContext, UIComponent component) throws
IOException {
+ String value = getInputValue(facesContext, component);
+ if (value == null || "".equals(value)) {
+ value = ((AbstractSelect) component).getDefaultLabel();
+ }
+ return value;
+ }
+
+ protected String getScriptName() {
+ return "new RichFaces.ui.Select";
+ }
+
+ public String getListStyles(FacesContext facesContext, UIComponent component) {
+ return "";
+ }
+}
Modified:
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceSelect.js
===================================================================
---
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceSelect.js 2010-10-15
16:14:23 UTC (rev 19581)
+++
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceSelect.js 2010-10-15
16:45:47 UTC (rev 19582)
@@ -7,9 +7,9 @@
options['attachTo'] = id;
options['attachToBody'] = true;
- this.select = new rf.ui.SelectList(options.listCord, this, options);
+ this.popupList = new rf.ui.SelectList(options.list, this, options);
- this.selectItems = options.selectItems;
+ this.items = options.items;
this.selValueInput = $(document.getElementById(options.selValueInput));
this.openPopup = false;
@@ -34,7 +34,7 @@
onshow: function() {
if(this.openPopup) {
- this.select.show();
+ this.popupList.show();
}
if(!this.openPopup) {
@@ -45,7 +45,7 @@
},
onhide: function() {
- this.select.hide();
+ this.popupList.hide();
this.openPopup = false;
},
@@ -56,14 +56,14 @@
var label = this.getItemLabel(key);
this.setValue(label);
- this.select.hide();
+ this.popupList.hide();
this.openPopup = false;
this.__setInputFocus();
},
getItemValue: function(key) {
- for(var i in this.selectItems) {
- var item = this.selectItems[i];
+ for(var i in this.items) {
+ var item = this.items[i];
if(item && item.id == key) {
return item.value;
}
@@ -75,8 +75,8 @@
},
getItemLabel: function(key) {
- for(var i in this.selectItems) {
- var item = this.selectItems[i];
+ for(var i in this.items) {
+ var item = this.items[i];
if(item && item.id == key) {
return item.label;
}
@@ -93,23 +93,23 @@
code = e.which;
}
- if(this.select.isVisible()) {
+ if(this.popupList.isVisible()) {
switch(code) {
case rf.KEYS.DOWN:
e.preventDefault();
- this.select.__selectNext();
+ this.popupList.__selectNext();
this.__setInputFocus();
break;
case rf.KEYS.UP:
e.preventDefault();
- this.select.__selectPrev();
+ this.popupList.__selectPrev();
this.__setInputFocus();
break;
case rf.KEYS.RETURN:
e.preventDefault();
- this.select.__selectCurrent();
+ this.popupList.__selectCurrent();
this.__setInputFocus();
return false;
break;
@@ -118,19 +118,18 @@
$super.__keydownHandler.call(this,e);
- },
+ },
+
+ __isButton: function(target) {
+
+ },
__blurHandler: function(e) {
var target = $(e.originalEvent.explicitOriginalTarget);
- if(!this.__isPopupList(target)) {
+ if(!this.popupList.isPopupList(target)) {
$super.__blurHandler.call(this,e);
}
return false;
- },
-
- __isPopupList: function(target) {
- var parentId =
target.parents(".rf-is-lst-cord").attr("id");
- return (parentId && (parentId == this.select.getId()));
}
}
Modified:
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/popupList.js
===================================================================
---
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/popupList.js 2010-10-15
16:14:23 UTC (rev 19581)
+++
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/popupList.js 2010-10-15
16:45:47 UTC (rev 19582)
@@ -7,7 +7,7 @@
this.selectListener = listener;
this.selectItemCss = options.selectItemCss;
this.itemCss = options.itemCss;
-
+ this.listCss = options.listCss;
this.index = -1;
this.__updateItemsList();
};
@@ -43,6 +43,11 @@
}
},
+ isPopupList: function(target) {
+ var parentId = target.parents("." +
this.listCss).attr("id");
+ return (parentId && (parentId == this.getId()));
+ },
+
__updateItemsList: function () {
this.items = this.popup.find("."+this.itemCss);
},
@@ -121,7 +126,8 @@
__getItems: function () {
return this.items;
- }
+ }
+
}
})());
Added: trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/select.ecss
===================================================================
--- trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/select.ecss
(rev 0)
+++
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/select.ecss 2010-10-15
16:45:47 UTC (rev 19582)
@@ -0,0 +1,144 @@
+
+.rf-au-inp.rf-au-fnt, .rf-au-opt.rf-au-fnt{
+ color: '#{richSkin.generalTextColor}';
+ font-size: '#{richSkin.generalSizeFont}';
+ font-family: '#{richSkin.generalFamilyFont}';
+}
+
+input.rf-au-inp {
+ border-width: 0px;
+ background: none;
+ width: 100%;
+}
+
+.rf-au-fld{
+ width: 200px;
+ position: inline-block;
+ border-width: 1px;
+ border-style: solid;
+ border-color: '#{richSkin.panelBorderColor}';
+ display: inline-block;
+ background-image:
"url(#{resource['org.richfaces.renderkit.html.images.AutocompleteFieldGradient']})";
+ background-repeat: repeat-x;
+ background-position: top left;
+ background-color: '#{richSkin.controlBackgroundColor}';
+}
+
+.rf-au-btn{
+ background-image:
"url(#{resource['org.richfaces.renderkit.html.images.AutocompleteButtonGradient']})";
+ background-repeat: repeat-x;
+ background-position: top left;
+ background-color: '#{richSkin.headerBackgroundColor}';
+ text-align: center;
+ border-left-style: solid;
+ border-left-width: 1px;
+ border-left-color: '#{richSkin.panelBorderColor}';
+ width: 15px;
+ position: absolute;
+ top: 0px;
+ right: 0px;
+ height: 200px;
+ padding-top: 1px
+}
+
+.rf-au-btn-arrow{
+ background-position: center;
+ background-repeat: no-repeat;
+ background-image:
"url(#{resource['org.richfaces:combo_down_button.gif']})";
+ cursor: pointer;
+ width: 15px;
+ height: 15px;
+}
+
+.rf-au-lst-cord{
+ position: absolute;
+ /* TODO nick - review: font-size: 0px; */
+ display: none;
+}
+
+.rf-au-lst-dcrtn{
+ border-width: 1px;
+ border-style: solid;
+ border-color: '#{richSkin.panelBorderColor}';
+ padding: 0px;
+ background-color: '#{richSkin.tableBackgroundColor}';
+}
+
+.rf-au-lst-scrl{
+ overflow: auto;
+ overflow-x: hidden;
+ width: 200px;
+ max-height: 100px;
+ min-height: 20px;
+}
+
+.rf-au-opt{
+ padding: 2px;
+ white-space: nowrap;
+ cursor: default;
+ list-style-type: none;
+}
+
+.rf-au-sel{
+ padding: 1px;
+ width: 100%;
+ background-color: '#{richSkin.headerBackgroundColor}';
+ border-width: 1px;
+ border-style: dotted;
+ border-color: '#{richSkin.generalTextColor}';
+}
+
+.rf-au-shdw{
+ border: 0px solid red;
+ display: inline-block;
+ position: absolute;
+ float: left;
+ padding: 6px 6px 6px 6px;
+ top: -6px;
+ left: -7px;
+}
+
+.rf-au-shdw-t{
+ background-image:
"url(#{resource['org.richfaces:combo_list_shadow.png']})";
+ background-position: top left;
+ position: absolute;
+ width: 6px;
+ top: 0px;
+ bottom: 6px;
+ left: 0px
+}
+
+.rf-au-shdw-l{
+ background-image:
"url(#{resource['org.richfaces:combo_list_shadow.png']})";
+ background-position: bottom left;
+ position: absolute;
+ height: 6px;
+ bottom: 0px;
+ left: 0px;
+ right: 6px;
+}
+
+.rf-au-shdw-r{
+ background-image:
"url(#{resource['org.richfaces:combo_list_shadow.png']})";
+ background-position: bottom right;
+ position: absolute;
+ width: 6px;
+ top: 6px;
+ bottom: 0px;
+ right: 0px;
+}
+
+.rf-au-shdw-b{
+ background-image:
"url(#{resource['org.richfaces:combo_list_shadow.png']})";
+ background-position: right top;
+ position: absolute;
+ height: 6px;
+ top: 0px;
+ left: 6px;
+ right: 0px;
+}
+
+.rf-au-lst-ul{
+ margin: 0px;
+ padding: 0px;
+}
\ No newline at end of file
Modified: trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/select.js
===================================================================
---
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/select.js 2010-10-15
16:14:23 UTC (rev 19581)
+++
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/select.js 2010-10-15
16:45:47 UTC (rev 19582)
@@ -1,157 +1,131 @@
-//TODO: utils?
-(function (rf) {
- rf.KEYS = {
- BACKSPACE: 8,
- TAB: 9,
- RETURN: 13,
- ESC: 27,
- PAGEUP: 33,
- PAGEDOWN: 34,
- LEFT: 37,
- UP: 38,
- RIGHT: 39,
- DOWN: 40,
- DEL: 46
- };
-})(RichFaces);
-
(function ($, rf) {
rf.ui = rf.ui || {};
- var INTERFACE = {
- SelectListener : {
- processItem: function(e, element){}
- }
- };
-
- rf.ui.Select = function(id, listener, options) {
+ rf.ui.Select = function(id, options) {
this.id = id;
- this.select = $(document.getElementById(id));
- this.itemsCord = $(document.getElementById(options.itemsCord));
- this.selectItemCss = options.selectItemCss;
- this.itemCss = options.itemCss;
- this.selectListener = listener;
- this.select.bind("blur", $.proxy(this.__blurHandler, this));
- this.itemsCord.bind("mouseover", $.proxy(this.__mouseHandler, this));
- this.itemsCord.bind("click", $.proxy(this.__mouseHandler, this));
-
- this.index = -1;
- //TODO: from option map?
- this.visible = false;
- this.updateItemsList();
+ // TODO: move to defaultOptions ??
+ options['attachTo'] = id;
+ options['attachToBody'] = true;
+
+ this.selValueInput = $(document.getElementById(options.selValueInput));
+
+ this.input = $(document.getElementById(id+"Input"));
+ this.input.bind("click", $.proxy(this.__clickHandler, this));
+ this.input.bind("keydown", $.proxy(this.__keydownHandler, this));
+ this.input.bind("blur", $.proxy(this.__blurHandler, this));
+
+ this.items = options.items;
+
+ if(options.showControl) {
+ this.btn = $(document.getElementById(id+"Button"));
+ this.btn.bind("click", $.proxy(this.__clickHandler, this));
+ }
+ this.popupList = new rf.ui.SelectList(options.list, this, options);
};
rf.BaseComponent.extend(rf.ui.Select);
var $super = rf.ui.Select.$super;
$.extend(rf.ui.Select.prototype, ( function () {
-
- var processed = null;
-
- var isSelectListener = function(obj) {
- for (var method in INTERFACE.SelectListener) {
- if ( (typeof obj[method] != typeof INTERFACE.SelectListener[method]) ) {
- return false;
- }
- }
- return true;
- };
-
+
return{
name : "select",
+
+ __clickHandler: function(e) {
+ e.preventDefault();
+ if(!this.popupList.isVisible()) {
+ this.popupList.show();
+ } else {
+ this.popupList.hide();
+ }
+ this.__setInputFocus();
+ },
+
+ __keydownHandler: function(e) {
+ var code;
+
+ if(e.keyCode) {
+ code = e.keyCode;
+ } else if(e.which) {
+ code = e.which;
+ }
- show: function() {
- this.select.css("display", "");
- this.visible = true;
- },
-
- hide: function() {
- this.select.css("display", "none");
- this.visible = false;
+ if(this.popupList.isVisible()) {
+ switch(code) {
+ case rf.KEYS.DOWN:
+ e.preventDefault();
+ this.popupList.__selectNext();
+ this.__setInputFocus();
+ break;
+
+ case rf.KEYS.UP:
+ e.preventDefault();
+ this.popupList.__selectPrev();
+ this.__setInputFocus();
+ break;
+
+ case rf.KEYS.RETURN:
+ e.preventDefault();
+ this.popupList.__selectCurrent();
+ this.__setInputFocus();
+ return false;
+ break;
+ }
+ }
+ },
+
+ __setInputFocus: function() {
+ this.input.focus();
},
- processItem: function(e, element) {
- if(isSelectListener(this.selectListener)) {
- this.selectListener.processItem(e, element);
- }
+ __blurHandler: function(e) {
+ var target = $(e.originalEvent.explicitOriginalTarget);
+ if(!this.popupList.isPopupList(target)) {
+ this.popupList.hide();
+ return true;
+ }
+ return false;
},
-
- isVisible: function() {
- return this.visible;
- },
-
- __selectItem: function(e, index) {
- var item;
-
- if (this.index != -1) {
- item = this.items.eq(this.index);
- item.removeClass(this.selectItemCss);
- }
-
- this.index += index;
- if ( this.index < 0 ) {
- this.index = this.items.length - 1;
- } else if (this.index >= this.items.length) {
- this.index = 0;
- }
-
- item = this.items.eq(this.index);
- item.addClass(this.selectItemCss);
- },
-
- __onEnter: function(e) {
-
- },
-
- __onKeyUp: function(e) {
- this.__selectItem(e, -1);
- },
-
- __onKeyDown: function(e) {
- this.__selectItem(e, 1);
- },
-
- __getCurrentElement: function() {
- return processed;
- },
-
- __blurHandler: function(e) {
- processItem(e, processed);
- return false;
- },
-
- __mouseHandler: function(e) {
- var element = $(e.target).closest("."+this.itemCss,
e.currentTarget);
- if (e && element) {
- if(e.type == 'mouseover') {
- if(processed) {
- processed.removeClass(this.selectItemCss);
- }
- element.addClass(this.selectItemCss);
- processed = element;
- }
-
- if(e.type == 'click') {
- this.processItem(e, element);
- }
- }
- return false;
- },
-
- updateItemsList: function () {
- this.items = this.itemsCord.find("."+this.itemCss);
- },
-
- __getItems: function () {
- return this.items;
- },
-
- __getId: function() {
- return this.id;
+
+ processItem: function(item) {
+ var key = $(item).attr("id");
+ var value = this.getItemValue(key);
+ this.saveItemValue(value);
+ var label = this.getItemLabel(key);
+ this.setValue(label);
+ this.popupList.hide();
+ this.__setInputFocus();
+ },
+
+ getItemValue: function(key) {
+ for(var i in this.items) {
+ var item = this.items[i];
+ if(item && item.id == key) {
+ return item.value;
+ }
+ }
+ },
+
+ getItemLabel: function(key) {
+ for(var i in this.items) {
+ var item = this.items[i];
+ if(item && item.id == key) {
+ return item.label;
+ }
+ }
+ },
+
+ saveItemValue: function(value) {
+ this.selValueInput.val(value);
+ },
+
+ setValue: function(value){
+ this.input.val(value);
}
}
+
})());
})(jQuery, window.RichFaces);
Modified: trunk/ui/input/ui/src/main/templates/inplaceInput.template.xml
===================================================================
--- trunk/ui/input/ui/src/main/templates/inplaceInput.template.xml 2010-10-15 16:14:23 UTC
(rev 19581)
+++ trunk/ui/input/ui/src/main/templates/inplaceInput.template.xml 2010-10-15 16:45:47 UTC
(rev 19582)
@@ -30,7 +30,7 @@
<cc:interface>
<cdk:class>org.richfaces.renderkit.html.InplaceInputRenderer
</cdk:class>
- <cdk:superclass>org.richfaces.renderkit.InplaceInputBaseRenderer
+ <cdk:superclass>org.richfaces.renderkit.InplaceInputRendererBase
</cdk:superclass>
<cdk:component-family>org.richfaces.InplaceInput
</cdk:component-family>
Modified: trunk/ui/input/ui/src/main/templates/inplaceSelect.template.xml
===================================================================
--- trunk/ui/input/ui/src/main/templates/inplaceSelect.template.xml 2010-10-15 16:14:23
UTC (rev 19581)
+++ trunk/ui/input/ui/src/main/templates/inplaceSelect.template.xml 2010-10-15 16:45:47
UTC (rev 19582)
@@ -20,7 +20,7 @@
<cc:interface>
<cdk:class>org.richfaces.renderkit.html.InplaceSelectRenderer
</cdk:class>
- <cdk:superclass>org.richfaces.renderkit.InplaceSelectBaseRenderer
+ <cdk:superclass>org.richfaces.renderkit.InplaceSelectRendererBase
</cdk:superclass>
<cdk:component-family>org.richfaces.InplaceSelect
</cdk:component-family>
@@ -88,7 +88,7 @@
<span class="rf-is-shdw-b"></span>
<span class="rf-is-lst-dec">
<span class="rf-is-lst-scrl" id="#{clientId}Items"
style="height: #{component.attributes['listHeight']}">
- <cdk:call expression="encodeOptions(facesContext, component,
clientSelectItems);"/>
+ <cdk:call expression="encodeItems(facesContext, component,
clientSelectItems);"/>
</span>
</span>
</span>
Added: trunk/ui/input/ui/src/main/templates/select.template.xml
===================================================================
--- trunk/ui/input/ui/src/main/templates/select.template.xml (rev
0)
+++ trunk/ui/input/ui/src/main/templates/select.template.xml 2010-10-15 16:45:47 UTC (rev
19582)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<cdk:root
xmlns="http://jboss.org/schema/richfaces/cdk/xhtml-el"
xmlns:cdk="http://jboss.org/schema/richfaces/cdk/core"
+
xmlns:c="http://jboss.org/schema/richfaces/cdk/jstl/core"
xmlns:cc="http://jboss.org/schema/richfaces/cdk/jsf/composite"
+
xmlns:javaee="http://java.sun.com/xml/ns/javaee">
+
+ <cc:interface>
+ <cdk:class>org.richfaces.renderkit.html.SelectRenderer</cdk:class>
+
<cdk:superclass>org.richfaces.renderkit.SelectRendererBase</cdk:superclass>
+ <cdk:component-family>org.richfaces.Select</cdk:component-family>
+ <cdk:renderer-type>org.richfaces.SelectRenderer</cdk:renderer-type>
+ <cdk:renders-children>true</cdk:renders-children>
+ </cc:interface>
+
+ <cc:implementation>
+
+ <cdk:object type="java.util.List"
type-arguments="org.richfaces.renderkit.ClientSelectItem"
name="clientSelectItems"
+ value="#{getConvertedSelectItems(facesContext, component)}" />
+
+ <cdk:object type="java.lang.Object" name="disabled"
value="#{component.attributes['disabled']}" />
+
+ <div id="#{clientId}" class="rf-au-fld">
+ <div style="position : relative; overflow : hidden; text-align :
left; padding-right : 21px;">
+ <input id="#{clientId}selValue" name="#{clientId}"
type="hidden" value="#{getValue(facesContext, component)}"/>
+ <input cdk:passThroughWithExclusions="class autocomplete id value
disabled name type readonly"
+ id="#{clientId}Input"
+ value="#{getSelectInputLabel(facesContext, component)}"
+ disabled="#{disabled}"
+ type="text"
+ class="rf-au-fnt rf-au-inp"
+ autocomplete="off"
+ readonly="readonly"/>
+
+ <c:if
test="#{component.attributes['showButton']}">
+ <c:if
test="#{component.attributes['disabled']}">
+ <div id="#{clientId}Button"
class="rf-au-btn">
+ <div class="rf-au-btn-arrow"></div>
+ </div>
+ </c:if>
+ <c:if
test="#{!component.attributes['disabled']}">
+ <div id="#{clientId}Button"
class="rf-au-btn">
+ <div class="rf-au-btn-arrow"></div>
+ </div>
+ </c:if>
+ </c:if>
+ </div>
+
+ <div id="#{clientId}List" class="rf-au-lst-cord">
+ <cdk:call expression="renderListHandlers(facesContext,
component);"/>
+ <div class="rf-au-shdw">
+ <div class="rf-au-shdw-t"></div>
+ <div class="rf-au-shdw-l"></div>
+ <div class="rf-au-shdw-r"></div>
+ <div class="rf-au-shdw-b"></div>
+
+ <div class="rf-au-lst-dcrtn">
+ <div class="rf-au-lst-scrl">
+ <cdk:call expression="encodeItems(facesContext, component,
clientSelectItems);"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ <script type="text/javascript">
+ <cdk:call expression="buildScript(responseWriter, facesContext, component,
clientSelectItems);"/>
+ </script>
+ </div>
+ </cc:implementation>
+</cdk:root>