Author: alexsmirnov
Date: 2010-10-08 13:57:34 -0400 (Fri, 08 Oct 2010)
New Revision: 19509
Added:
branches/RF-8742/examples/input-demo/src/main/java/org/richfaces/demo/InputBean.java
branches/RF-8742/examples/input-demo/src/main/webapp/examples/inplaceSelect.xhtml
branches/RF-8742/ui/input/api/src/main/java/org/richfaces/component/InplaceComponent.java
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceSelect.java
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceSelectBaseRenderer.java
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceBase.js
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceSelect.ecss
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceSelect.js
branches/RF-8742/ui/input/ui/src/main/templates/inplaceSelect.template.xml
Modified:
branches/RF-8742/
branches/RF-8742/examples/input-demo/src/main/webapp/WEB-INF/faces-config.xml
branches/RF-8742/examples/input-demo/src/main/webapp/examples/inplaceInput.xhtml
branches/RF-8742/examples/input-demo/src/main/webapp/templates/template.xhtml
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceInput.java
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputBaseRenderer.java
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.ecss
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.js
branches/RF-8742/ui/input/ui/src/main/templates/inplaceInput.template.xml
branches/RF-8742/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java
branches/RF-8742/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/popupPanel.ecss
branches/RF-8742/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/progressBar.js
Log:
Merged revisions 19498-19499,19501,19504,19506-19507 via svnmerge from
https://svn.jboss.org/repos/richfaces/trunk
.......
r19498 | amarkhel | 2010-10-08 02:37:19 -0700 (Fri, 08 Oct 2010) | 1 line
RF-9436
.......
r19499 | amarkhel | 2010-10-08 02:38:48 -0700 (Fri, 08 Oct 2010) | 1 line
RF-9437
.......
r19501 | abelevich | 2010-10-08 06:08:18 -0700 (Fri, 08 Oct 2010) | 1 line
inplaceSelect developer sample
.......
r19504 | abelevich | 2010-10-08 06:41:56 -0700 (Fri, 08 Oct 2010) | 1 line
move inplaceSelect component to the trunk, refactoring, bugfixing
(
https://jira.jboss.org/browse/RF-9347,
https://jira.jboss.org/browse/RF-2816,
https://jira.jboss.org/browse/RF-9056)
.......
r19506 | abelevich | 2010-10-08 08:03:43 -0700 (Fri, 08 Oct 2010) | 1 line
rename css according richfaces css names convention
.......
r19507 | abelevich | 2010-10-08 08:21:01 -0700 (Fri, 08 Oct 2010) | 1 line
fix button background gradients
.......
Property changes on: branches/RF-8742
___________________________________________________________________
Name: svnmerge-integrated
- /trunk:1-19495
+ /trunk:1-19508
Copied:
branches/RF-8742/examples/input-demo/src/main/java/org/richfaces/demo/InputBean.java (from
rev 19507, trunk/examples/input-demo/src/main/java/org/richfaces/demo/InputBean.java)
===================================================================
--- branches/RF-8742/examples/input-demo/src/main/java/org/richfaces/demo/InputBean.java
(rev 0)
+++
branches/RF-8742/examples/input-demo/src/main/java/org/richfaces/demo/InputBean.java 2010-10-08
17:57:34 UTC (rev 19509)
@@ -0,0 +1,20 @@
+package org.richfaces.demo;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+
+@SessionScoped
+@ManagedBean(name = "inputBean")
+public class InputBean {
+
+ private String value;
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+}
Modified: branches/RF-8742/examples/input-demo/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
---
branches/RF-8742/examples/input-demo/src/main/webapp/WEB-INF/faces-config.xml 2010-10-08
15:48:10 UTC (rev 19508)
+++
branches/RF-8742/examples/input-demo/src/main/webapp/WEB-INF/faces-config.xml 2010-10-08
17:57:34 UTC (rev 19509)
@@ -12,6 +12,10 @@
<to-view-id>/examples/inplaceInput.xhtml</to-view-id>
</navigation-case>
<navigation-case>
+ <from-outcome>inplaceSelect</from-outcome>
+ <to-view-id>/examples/inplaceSelect.xhtml</to-view-id>
+ </navigation-case>
+ <navigation-case>
<from-outcome>inputNumberSlider</from-outcome>
<to-view-id>/examples/inputNumberSlider.xhtml</to-view-id>
</navigation-case>
Modified:
branches/RF-8742/examples/input-demo/src/main/webapp/examples/inplaceInput.xhtml
===================================================================
---
branches/RF-8742/examples/input-demo/src/main/webapp/examples/inplaceInput.xhtml 2010-10-08
15:48:10 UTC (rev 19508)
+++
branches/RF-8742/examples/input-demo/src/main/webapp/examples/inplaceInput.xhtml 2010-10-08
17:57:34 UTC (rev 19509)
@@ -12,7 +12,7 @@
<h:body>
<h:form id="form">
- <in:inplaceInput showControls="false" value="New York"/>
+ <in:inplaceInput showControls="true" value="New York"/>
<h:commandButton value="submit"/>
</h:form>
</h:body>
Copied: branches/RF-8742/examples/input-demo/src/main/webapp/examples/inplaceSelect.xhtml
(from rev 19507, trunk/examples/input-demo/src/main/webapp/examples/inplaceSelect.xhtml)
===================================================================
--- branches/RF-8742/examples/input-demo/src/main/webapp/examples/inplaceSelect.xhtml
(rev 0)
+++
branches/RF-8742/examples/input-demo/src/main/webapp/examples/inplaceSelect.xhtml 2010-10-08
17:57:34 UTC (rev 19509)
@@ -0,0 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html
xmlns="http://www.w3.org/1999/xhtml"
+
xmlns:h="http://java.sun.com/jsf/html"
+
xmlns:f="http://java.sun.com/jsf/core"
+
xmlns:ui="http://java.sun.com/jsf/facelets"
+
xmlns:in="http://richfaces.org/input">
+<f:view contentType="text/html" />
+
+<h:head>
+ <title>InplaceInput</title>
+</h:head>
+
+
+<h:body>
+ <h:form id="form">
+ <div id="scroll" style="width: 400px; height:400px;
overflow:auto;" >
+ <fieldset>
+ <legend>Test App</legend>
+ Fresh off his victory in the Florida primary, Sen. John McCain is poised to take
another big prize. Former
+ <in:inplaceSelect defaultLabel="Edit Text"
value="#{inputBean.value}">
+ <f:selectItem itemLabel="1#OptionLabel"
itemValue="1#OptionValue"/>
+ <f:selectItem itemLabel="2#OptionLabel"
itemValue="2#OptionValue"/>
+ <f:selectItem itemLabel="3#OptionLabel"
itemValue="3#OptionValue"/>
+ <f:selectItem itemLabel="4#OptionLabel"
itemValue="4#OptionValue"/>
+ </in:inplaceSelect>
+ Mayor Rudy Giuliani plans to drop out and endorse McCain, two GOP sources said. That
would give McCain added momentum heading into a debate Wednesday and next week's Super
Tuesday contests
+ </fieldset>
+ <h:commandButton value="submit"></h:commandButton>
+ </div>
+ <h:panelGroup id="out">
+ <h:outputText value="Entered Value: #{inputBean.value}"/>
+ </h:panelGroup>
+ </h:form>
+</h:body>
+</html>
Modified: branches/RF-8742/examples/input-demo/src/main/webapp/templates/template.xhtml
===================================================================
---
branches/RF-8742/examples/input-demo/src/main/webapp/templates/template.xhtml 2010-10-08
15:48:10 UTC (rev 19508)
+++
branches/RF-8742/examples/input-demo/src/main/webapp/templates/template.xhtml 2010-10-08
17:57:34 UTC (rev 19509)
@@ -32,6 +32,7 @@
<p>Input Component's Examples</p>
<ul>
<li><h:commandLink value="rich:inplaceInput"
action="inplaceInput" /></li>
+ <li><h:commandLink value="rich:inplaceSelect"
action="inplaceSelect" /></li>
<li><h:commandLink value="rich:inputNumberSlider"
action="inputNumberSlider" /></li>
<li><h:commandLink value="rich:inputNumberSpinner"
action="inputNumberSpinner" /></li>
<li><h:commandLink value="rich:autocomplete"
action="autocomplete" /></li>
Copied:
branches/RF-8742/ui/input/api/src/main/java/org/richfaces/component/InplaceComponent.java
(from rev 19507,
trunk/ui/input/api/src/main/java/org/richfaces/component/InplaceComponent.java)
===================================================================
---
branches/RF-8742/ui/input/api/src/main/java/org/richfaces/component/InplaceComponent.java
(rev 0)
+++
branches/RF-8742/ui/input/api/src/main/java/org/richfaces/component/InplaceComponent.java 2010-10-08
17:57:34 UTC (rev 19509)
@@ -0,0 +1,16 @@
+package org.richfaces.component;
+
+
+public interface InplaceComponent {
+
+ public String getDefaultLabel();
+
+ public String getEditEvent();
+
+ public boolean isShowControls();
+
+ public boolean isSaveOnBlur();
+
+ public InplaceState getState();
+
+}
Modified:
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceInput.java
===================================================================
---
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceInput.java 2010-10-08
15:48:10 UTC (rev 19508)
+++
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceInput.java 2010-10-08
17:57:34 UTC (rev 19509)
@@ -40,7 +40,7 @@
renderer = @JsfRenderer(type = "org.richfaces.InplaceInputRenderer"),
tag = @Tag(name="inplaceInput")
)
-public abstract class AbstractInplaceInput extends UIInput {
+public abstract class AbstractInplaceInput extends UIInput implements InplaceComponent {
public static final String COMPONENT_TYPE = "org.richfaces.InplaceInput";
@@ -49,6 +49,9 @@
@Attribute
public abstract String getDefaultLabel();
+ @Attribute(defaultValue="true")
+ public abstract boolean isSaveOnBlur();
+
@Attribute(defaultValue="InplaceState.ready")
public abstract InplaceState getState();
Copied:
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceSelect.java
(from rev 19507,
trunk/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceSelect.java)
===================================================================
---
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceSelect.java
(rev 0)
+++
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceSelect.java 2010-10-08
17:57:34 UTC (rev 19509)
@@ -0,0 +1,49 @@
+package org.richfaces.component;
+
+import javax.faces.component.UISelectOne;
+
+import org.richfaces.cdk.annotations.Attribute;
+import org.richfaces.cdk.annotations.JsfComponent;
+import org.richfaces.cdk.annotations.JsfRenderer;
+import org.richfaces.cdk.annotations.Tag;
+
+
+/**
+ * @author Anton Belevich
+ *
+ */
+
+@JsfComponent(
+ type = AbstractInplaceSelect.COMPONENT_TYPE,
+ family = AbstractInplaceSelect.COMPONENT_FAMILY,
+ generate = "org.richfaces.component.UIInplaceSelect",
+ renderer = @JsfRenderer(type = "org.richfaces.InplaceSelectRenderer"),
+ tag = @Tag(name="inplaceSelect")
+)
+public abstract class AbstractInplaceSelect extends UISelectOne implements
InplaceComponent {
+
+ public static final String COMPONENT_TYPE = "org.richfaces.InplaceSelect";
+
+ public static final String COMPONENT_FAMILY =
"org.richfaces.InplaceSelect";
+
+ @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="true")
+ public abstract boolean isSaveOnBlur();
+
+ @Attribute(defaultValue="false")
+ public abstract boolean isShowControls();
+
+ @Attribute(defaultValue="click")
+ public abstract String getEditEvent();
+}
Modified:
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputBaseRenderer.java
===================================================================
---
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputBaseRenderer.java 2010-10-08
15:48:10 UTC (rev 19508)
+++
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputBaseRenderer.java 2010-10-08
17:57:34 UTC (rev 19509)
@@ -35,7 +35,7 @@
import javax.faces.context.ResponseWriter;
import org.ajax4jsf.javascript.JSFunction;
-import org.richfaces.component.AbstractInplaceInput;
+import org.richfaces.component.InplaceComponent;
import org.richfaces.component.InplaceState;
import org.richfaces.component.util.HtmlUtil;
@@ -43,10 +43,11 @@
* @author Anton Belevich
*
*/
-@ResourceDependencies({
- @ResourceDependency(library = "javax.faces", name = "jsf.js"),
- @ResourceDependency(library = "org.richfaces", name =
"base-component.reslib"),
+@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 {
@@ -75,14 +76,9 @@
public static final String OPTIONS_INITIAL_VALUE = "initialValue";
- private static final String READY_STATE_CSS = "rf-ii-ready-st";
+ public static final String OPTIONS_SAVE_ON_BLUR = "saveOnBlur";
+
- private static final String EDIT_STATE_CSS = "rf-ii-edt-st";
-
- private static final String CHANGED_STATE_CSS = "rf-ii-chd-st";
-
- private static final String NONE_CSS = "rf-ii-none";
-
private static final Map<String, ComponentAttribute>
INPLACEINPUT_HANDLER_ATTRIBUTES = Collections
.unmodifiableMap(ComponentAttribute.createMap(
new
ComponentAttribute(HtmlConstants.ONCLICK_ATTRIBUTE).setEventNames("inputClick").
@@ -120,14 +116,13 @@
}
public InplaceState getInplaceState(UIComponent component) {
- return ((AbstractInplaceInput) component).getState();
+ return ((InplaceComponent) component).getState();
}
public String getValue(FacesContext facesContext, UIComponent component) throws
IOException {
- AbstractInplaceInput inplaceInput = (AbstractInplaceInput)component;
- String value = getInputValue(facesContext, inplaceInput);
+ String value = getInputValue(facesContext, component);
if(value == null || "".equals(value)) {
- value = inplaceInput.getDefaultLabel();
+ value = ((InplaceComponent)component).getDefaultLabel();
}
return value;
}
@@ -142,11 +137,11 @@
}
public String getReadyStyleClass(UIComponent component, InplaceState inplaceState) {
- return (InplaceState.changed != inplaceState) ? READY_STATE_CSS :
HtmlUtil.concatClasses(READY_STATE_CSS, CHANGED_STATE_CSS);
+ return (InplaceState.changed != inplaceState) ? getReadyStateCss() :
HtmlUtil.concatClasses(getReadyStateCss(), getChangedStateCss());
}
public String getEditStyleClass(UIComponent component, InplaceState inplaceState) {
- return (InplaceState.edit != inplaceState)?
HtmlUtil.concatClasses(EDIT_STATE_CSS, NONE_CSS) : EDIT_STATE_CSS;
+ return (InplaceState.edit != inplaceState)?
HtmlUtil.concatClasses(getEditStateCss(), getNoneCss()) : getEditStateCss();
}
public String getReadyClientId(FacesContext facesContext, UIComponent component,
InplaceState inplaceState) {
String clientId = component.getClientId(facesContext);
@@ -166,30 +161,64 @@
return result;
}
- public void buildScript(ResponseWriter writer, FacesContext facesContext, UIComponent
component) throws IOException {
- AbstractInplaceInput inplaceInput = (AbstractInplaceInput)component;
- JSFunction function = new JSFunction("new RichFaces.ui.InplaceInput");
- function.addParameter(inplaceInput.getClientId(facesContext));
-
- String clientId = inplaceInput.getClientId(facesContext);
+ 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, inplaceInput.getEditEvent());
- options.put(OPTIONS_NONE_CSS, NONE_CSS);
- options.put(OPTIONS_CHANGED_CSS, CHANGED_STATE_CSS);
+ options.put(OPTIONS_EDIT_EVENT, inplaceComponent.getEditEvent());
+ options.put(OPTIONS_NONE_CSS, getNoneCss());
+ options.put(OPTIONS_CHANGED_CSS, getChangedStateCss());
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, inplaceInput.getDefaultLabel());
+ options.put(OPTIONS_DEFAULT_LABEL, inplaceComponent.getDefaultLabel());
+ options.put(OPTIONS_SAVE_ON_BLUR, inplaceComponent.isSaveOnBlur());
+
+ boolean showControls = inplaceComponent.isShowControls();
- boolean showControls = inplaceInput.isShowControls();
options.put(OPTIONS_SHOWCONTROLS, showControls);
if(showControls) {
options.put(OPTIONS_BUTTON_OK, clientId + ":okbtn");
options.put(OPTIONS_BUTTON_CANCEL, clientId + ":cancelbtn");
- }
- function.addParameter(options);
-
- writer.write(function.toString());
+ }
+ 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 getNoneCss() {
+ return "rf-ii-none";
+ }
}
Copied:
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceSelectBaseRenderer.java
(from rev 19507,
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceSelectBaseRenderer.java)
===================================================================
---
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceSelectBaseRenderer.java
(rev 0)
+++
branches/RF-8742/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceSelectBaseRenderer.java 2010-10-08
17:57:34 UTC (rev 19509)
@@ -0,0 +1,214 @@
+package org.richfaces.renderkit;
+
+import java.io.IOException;
+import java.util.ArrayList;
+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 = "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 =
"select.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";
+
+ 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)
+ + "}";
+ }
+ }
+
+ @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
+ 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");
+ }
+
+ 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 (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) {
+ return "";
+ }
+
+ 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 getNoneCss() {
+ return "rf-is-none";
+ }
+
+ public String getOptionCss() {
+ return "rf-is-opt rf-is-fnt";
+ }
+
+}
Copied:
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceBase.js
(from rev 19507,
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceBase.js)
===================================================================
---
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceBase.js
(rev 0)
+++
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceBase.js 2010-10-08
17:57:34 UTC (rev 19509)
@@ -0,0 +1,169 @@
+// TODO: remove when these functions will be moved to the RichFaces.Event <!--
+$.extend(RichFaces.Event, {
+ bindScrollEventHandlers: function(element, handler, component) {
+ var elements = [];
+ element = RichFaces.getDomElement(element).parentNode;
+ while (element && element!=window.document.body)
+ {
+ if (element.offsetWidth!=element.scrollWidth ||
element.offsetHeight!=element.scrollHeight)
+ {
+ elements.push(element);
+ RichFaces.Event.bind(element, "scroll"+component.getNamespace(), handler,
component);
+ }
+ element = element.parentNode;
+ }
+ return elements;
+ },
+ unbindScrollEventHandlers: function(elements, component) {
+ RichFaces.Event.unbind(elements, "scroll"+component.getNamespace());
+ }
+});
+// -->
+
+(function ($, rf) {
+
+ rf.ui = rf.ui || {};
+
+ rf.ui.InplaceBase = function(id, options) {
+ $super.constructor.call(this, id);
+ this.attachToDom(id);
+ this.namespace = this.getNamespace() || "." +
rf.Event.createNamespace(this.getName(), this.id);
+
+ this.editEvent = options.editEvent;
+ this.noneCss = options.noneCss;
+ this.changedCss = options.changedCss;
+ this.showControls = options.showControls;
+ this.defaultLabel = options.defaultLabel;
+
+ this.element = $(document.getElementById(id));
+ this.editContainer = $(document.getElementById(options.editContainer));
+
+ this.element.bind(this.editEvent, $.proxy(this.__editHandler, this));
+
+ this.isSaved = false;
+ this.useDefaultLabel = false;
+
+ if(this.showControls) {
+ this.okbtn = $(document.getElementById(options.okbtn));
+ this.cancelbtn = $(document.getElementById(options.cancelbtn));
+ this.okbtn.bind("mousedown", $.proxy(this.__saveBtnHandler, this));
+ this.cancelbtn.bind("mousedown", $.proxy(this.__cancelBtnHandler,
this));
+ }
+ };
+
+ rf.BaseComponent.extend(rf.ui.InplaceBase);
+ var $super = rf.ui.InplaceBase.$super;
+
+ $.extend(rf.ui.InplaceBase.prototype, ( function () {
+
+ return {
+ getName: function() {
+ },
+
+ getNamespace: function() {
+ },
+
+ getValue: function() {
+ },
+
+ setValue: function(value){
+ },
+
+ getLabel: function() {
+ },
+
+ setLabel: function(value) {
+ },
+
+ onshow: function(){
+ },
+
+ onhide: function() {
+ },
+
+ getNamespace: function() {
+ },
+
+ save: function() {
+ var value = this.getValue()
+ if(value.length > 0) {
+ this.setLabel(value);
+ } else {
+ this.setLabel(this.defaultLabel);
+ this.useDefaultLabel = true;
+ }
+
+ this.isSaved = true;
+
+ this.__applyChangedStyles();
+ this.__hide();
+ },
+
+ __applyChangedStyles: function() {
+ if(this.isValueChanged()) {
+ this.element.addClass(this.changedCss);
+ } else {
+ this.element.removeClass(this.changedCss);
+ }
+ },
+
+ cancel: function(){
+ var text = "";
+ if(!this.useDefaultLabel) {
+ text = this.getLabel()
+ }
+ this.setValue(text);
+ this.isSaved = true;
+ this.__hide();
+ },
+
+ isValueSaved: function() {
+ return this.isSaved;
+ },
+
+ __saveValue: function(value) {
+
+ },
+
+ __show: function() {
+ this.scrollElements = rf.Event.bindScrollEventHandlers(this.id, this.__scrollHandler,
this);
+ this.onshow();
+ },
+
+ __hide: function() {
+ if(this.scrollElements) {
+ rf.Event.unbindScrollEventHandlers(this.scrollElements, this);
+ this.scrollElements = null;
+ }
+ this.onhide();
+ this.editContainer.addClass(this.noneCss);
+ },
+
+ __editHandler: function(e) {
+ this.isSaved = false;
+ this.editContainer.removeClass(this.noneCss);
+ this.__show();
+ },
+
+ __saveBtnHandler: function(e) {
+ this.save();
+ return false;
+ },
+
+ __cancelBtnHandler: function(e) {
+ this.cancel();
+ return false;
+ },
+
+ __scrollHandler: function(e) {
+ this.cancel();
+ },
+
+ destroy: function () {
+ $super.destroy.call(this);
+ }
+ }
+
+ })());
+
+})(jQuery, window.RichFaces);
Modified:
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.ecss
===================================================================
---
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.ecss 2010-10-08
15:48:10 UTC (rev 19508)
+++
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.ecss 2010-10-08
17:57:34 UTC (rev 19509)
@@ -1,6 +1,7 @@
input.rf-ii-fld {
background-image: none;
background-color : '#{richSkin.editBackgroundColor}';
+ /*TODO: seems these styles are incorrect*/
border-bottom-width : 10px;
border-bottom-style: solid;
border-bottom-color: '#{richSkin.editBackgroundColor}';
@@ -17,7 +18,7 @@
white-space : nowrap;
}
-.rf-ii-ready-st {
+.rf-ii-d-s {
display : inline-block;
white-space : nowrap;
background-color : '#{richSkin.editorBackgroundColor}';
@@ -30,14 +31,14 @@
position : relative;
}
-.rf-ii-chd-st {
+.rf-ii-c-s {
display : inline-block;
background-image :
url("#{resource['org.richfaces:mark_changed.gif']}");
background-position : top left;
background-repeat : no-repeat;
}
-.rf-ii-edt-st {
+.rf-ii-e-s {
position : absolute;
top : 0px;
left : 0px;
@@ -63,7 +64,7 @@
}
.rf-ii-btn {
- background-image :
"url(#{resource['org.richfaces.images:inplaceBtnGrad.png']})";
+ background-image :
url("#{resource['org.richfaces.images:inplaceBtnGrad.png']}");
background-attachment: scroll;
background-position: center top;
background-repeat: repeat-x;
@@ -75,8 +76,8 @@
margin : 0px;
}
-.rf-ii-btn-prsd {
- background-image :
"url(#{resource['org.richfaces.images:inplaceBtnPressGrad.png']})";
+.rf-ii-btn-p {
+ background-image :
url("#{resource['org.richfaces.images:inplaceBtnPressGrad.png']}");
background-position: top;
background-repeat: repeat-x;
background-color: '#{richSkin.tabBackgroundColor}';
@@ -86,6 +87,13 @@
padding : 0px;
margin : 0px;
}
+
+.rf-ii-btn-set {
+ position : absolute;
+ top:0px;
+ left : 100px;
+ white-space : nowrap;
+}
.rf-ii-btn-prepos {
position : absolute;
Modified:
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.js
===================================================================
---
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.js 2010-10-08
15:48:10 UTC (rev 19508)
+++
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.js 2010-10-08
17:57:34 UTC (rev 19509)
@@ -1,199 +1,108 @@
-// TODO: remove when these functions will be moved to the RichFaces.Event
-$.extend(RichFaces.Event, {
- bindScrollEventHandlers: function(element, handler, component) {
- var elements = [];
- element = RichFaces.getDomElement(element).parentNode;
- while (element && element!=window.document.body)
- {
- if (element.offsetWidth!=element.scrollWidth ||
element.offsetHeight!=element.scrollHeight)
- {
- elements.push(element);
- RichFaces.Event.bind(element, "scroll"+component.getNamespace(), handler,
component);
- }
- element = element.parentNode;
- }
- return elements;
- },
- unbindScrollEventHandlers: function(elements, component) {
- RichFaces.Event.unbind(elements, "scroll"+component.getNamespace());
- }
-});
-
(function ($, rf) {
rf.ui = rf.ui || {};
rf.ui.InplaceInput = function(id, options) {
- /*TODO: use defaultOptions*/
- $super.constructor.call(this, id);
- this.attachToDom(id);
+ $super.constructor.call(this, id, options);
- this.namespace = this.namespace || "." +
rf.Event.createNamespace(this.name, this.id);
-
- this.currentState = options.state;
- this.editEvent = options.editEvent;
- this.noneCss = options.noneCss;
- this.changedCss = options.changedCss;
- this.showControls = options.showControls;
- this.defaultLabel = options.defaultLabel;
-
- this.element = $(document.getElementById(id));
- this.editContainer = $(document.getElementById(options.editContainer));
- this.input = $(document.getElementById(options.input));
+ this.input = $(document.getElementById(options.input));
this.label = $(document.getElementById(options.label));
- this.focusElement = $(document.getElementById(options.focusElement));
-
+
var label = this.label.text();
var inputLabel = this.input.val();
-
this.initialValue = (label == inputLabel) ? label : "";
+ this.saveOnBlur = options.saveOnBlur;
- this.element.bind(this.editEvent, $.proxy(this.__editHandler, this));
- this.input.bind("focus", $.proxy(this.__editHandler, this));
+ this.input.bind("focus", $.proxy(this.__editHandler, this));
this.input.bind("change", $.proxy(this.__changeHandler, this));
this.input.bind("blur", $.proxy(this.__blurHandler, this));
this.input.bind("keydown", $.proxy(this.__keydownHandler, this));
-
- if(this.showControls) {
- this.okbtn = $(document.getElementById(options.okbtn));
- this.cancelbtn = $(document.getElementById(options.cancelbtn));
- this.okbtn.bind("mousedown", $.proxy(this.__saveBtnHandler,
this));
- this.cancelbtn.bind("mousedown", $.proxy(this.__cancelBtnHandler,
this));
- }
+
+ this.focusElement = $(document.getElementById(options.focusElement));
};
-
- // Extend component class and add protected methods from parent class to our
container
- rf.BaseComponent.extend( rf.ui.InplaceInput);
-
- // define super class link
- var $super = rf.ui.InplaceInput.$super;
+ rf.ui.InplaceBase.extend(rf.ui.InplaceInput);
+ var $super = rf.ui.InplaceInput.$super;
+
$.extend(rf.ui.InplaceInput.prototype, ( function () {
-
- var isSaved = false;
- var isValueChanged = false;
-
+
return {
- name : "inplaceInput",
-/****************** public methods *****************************************/
+ name : "inplaceInput",
+
+ geName: function() {
+ return this.name;
+ },
+
+ geNamespace: function() {
+ return this.namespace;
+ },
- getNamespace: function () {
- return this.namespace;
- },
-
- edit: function() {
- isSaved = false;
- this.__show();
- this.input.focus();
- },
-
- save: function() {
- var inputValue = this.input.val();
- if(inputValue.length > 0) {
- this.label.text(inputValue);
- isValueChanged = true;
- } else {
- this.label.text(this.defaultLabel);
- isValueChanged = false;
+ __keydownHandler: function(e) {
+ switch(e.keyCode) {
+ case 27:
+ this.cancel();
+ break;
+ case 13:
+ this.save();
+ return false;
}
-
- if(inputValue != this.initialValue) {
- this.element.addClass(this.changedCss);
+ },
+
+ __blurHandler: function(e) {
+ if(!this.isValueSaved() && this.__isSaveOnBlur()) {
+ this.save();
} else {
- this.element.removeClass(this.changedCss);
+ this.__hide();
}
- isSaved = true;
- this.__hide();
- },
-
- cancel: function() {
- var text = "";
- if(isValueChanged) {
- text = this.label.text();
- }
- this.input.val(text);
- isSaved = true;
- this.__hide();
- this.element.focus();
+ return false;
},
+
+ __changeHandler: function(e) {
+ if(!this.isValueSaved()) {
+ this.save();
+ }
+ },
- setValue: function (value) {
- this.input.val(value);
- this.save();
+ __isSaveOnBlur: function() {
+ return this.saveOnBlur;
},
- getValue: function() {
- return this.input.val();
- },
+ __setInputFocus: function() {
+ this.input.unbind("focus", this.__editHandler);
+ this.input.focus();
+ this.input.bind("focus", $.proxy(this.__editHandler, this));
+ },
-/****************** private methods *****************************************/
+ getValue: function() {
+ return this.input.val();
+ },
- __saveBtnHandler: function(e) {
- this.save();
- return false;
+ setValue: function(value){
+ this.input.val(value);
},
- __cancelBtnHandler: function(e) {
- this.cancel();
- return false;
+ getLabel: function() {
+ return this.label.text();
},
-
- __editHandler: function(e) {
- this.input.unbind("focus", this.__editHandler);
- this.edit();
- this.input.bind("focus", $.proxy(this.__editHandler, this));
+
+ setLabel: function(value) {
+ this.label.text(value);
},
- __changeHandler: function(e) {
- if(!isSaved) {
- this.save();
- }
- },
-
- __blurHandler: function(e) {
- if(!isSaved) {
- this.save();
- }
- return false;
+ isValueChanged: function () {
+ return (this.getValue() != this.initialValue);
},
-
- __scrollHandler: function(e) {
- this.cancel();
- },
-
- __keydownHandler: function(e) {
- switch(e.keyCode) {
- /*Esc*/
- case 27:
- this.cancel();
- break;
- /*Enter*/
- case 13:
- this.save();
- return false;
- }
-
- },
-
- __show: function() {
- this.scrollElements = rf.Event.bindScrollEventHandlers(this.id,
this.__scrollHandler, this);
- this.editContainer.removeClass(this.noneCss);
- },
-
- __hide: function() {
- rf.Event.unbindScrollEventHandlers(this.scrollElements, this);
- this.scrollElements = null;
- this.editContainer.addClass(this.noneCss);
- this.focusElement.focus();
- },
+
+ onshow: function(){
+ this.__setInputFocus();
+ },
+
+ onhide: function() {
+ this.focusElement.focus();
+ }
- destroy: function () {
- //TODO: unbind handlers
- $super.destroy.call(this);
- }
- }
- })());
+ }
+ })());
-})(jQuery, window.RichFaces);
-
+})(jQuery, window.RichFaces);
\ No newline at end of file
Copied:
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceSelect.ecss
(from rev 19507,
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceSelect.ecss)
===================================================================
---
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceSelect.ecss
(rev 0)
+++
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceSelect.ecss 2010-10-08
17:57:34 UTC (rev 19509)
@@ -0,0 +1,218 @@
+input.rf-is-fld {
+ background : '#{richSkin.editBackgroundColor}';
+ padding : 0px 0px 0px 0px;
+ border : 0px;
+ margin : 0px;
+ width : 112px;
+ background-image:"url(#{resource['org.richfaces:mark_list.gif']})";
+ background-position : center right;
+ background-repeat : no-repeat;
+ font-family:inherit;
+ font-size : inherit;
+}
+
+.rf-is-none {
+ clip: "rect(0px 0px 1px 1px)";
+}
+
+.rf-is-none {
+ clip: rect(0px, 0px, 1px, 1px);
+}
+
+.rf-is-fnt {
+}
+
+.rf-is-d-s {
+ display : inline-block;
+ position : relative;
+ white-space : nowrap;
+ background-color : '#{richSkin.editorBackgroundColor}';
+ border-bottom-width : 1px;
+ border-bottom-style : dashed;
+ border-bottom-color : '#{richSkin.generalTextColor}';
+ padding-left : 3px;
+ padding-right : 3px;
+}
+
+.rf-is-c-s {
+ display : inline-block;
+ background-image :
"url(#{resource['org.richfaces:mark_changed.gif']})";
+ background-position : top left;
+ background-repeat : no-repeat;
+}
+
+.rf-is-e-s {
+ position : absolute;
+ top : 0px;
+ left : 0px;
+ width : 100px;
+ background-color : '#{richSkin.editBackgroundColor}';
+}
+
+.rf-is-fld {
+ background-color : '#{richSkin.editBackgroundColor}';
+ padding : 0px 0px 0px 0px;
+ border : 0px;
+ margin : 0px;
+ width : 112px;
+ background-image: "url(#{resource['org.richfaces:mark_list.gif']})";
+ background-position : center right;
+ background-repeat : no-repeat;
+}
+
+.rf-is-btn {
+ background-image :
url("#{resource['org.richfaces.images:inplaceBtnGrad.png']}");
+ background-position : top;
+ background-repeat: repeat-x;
+ background-color: '#{richSkin.tabBackgroundColor}';
+ border-width : 1px;
+ border-style : outset;
+ border-color : '#{richSkin.panelBorderColor}';
+ padding : 3px;
+ margin : 0px;
+}
+
+.rf-is-btn-p {
+ background-image :
url("#{resource['org.richfaces.images:inplaceBtnPressGrad.png']}");
+ background-position : top;
+ background-repeat : repeat-x;
+ background-color : '#{richSkin.tabBackgroundColor}';
+ border-width : 1px;
+ border-style : inset;
+ border-color : '#{richSkin.panelBorderColor}';
+ padding : 3px;
+ margin : 0px;
+}
+
+.rf-is-btn-set {
+ position : absolute;
+ top : 0px;
+ left : 112px;
+ white-space : nowrap;
+}
+
+.rf-is-lst-cord {
+ display : block;
+ /*font-size : 0px;*/
+ position : relative;
+ font-family:inherit;
+ font-size : inherit;
+}
+
+.rf-is-lst-pos {
+ display : block;
+ position : absolute;
+ top: 0px;
+ left: -1px;
+}
+
+.rf-is-lst-dec {
+ display : block;
+ border-width : 1px;
+ border-style : solid;
+ border-color : '#{richSkin.panelBorderColor}';
+ padding : 0px;
+ /*width: 100%;*/
+ background-color : '#{richSkin.editBackgroundColor}';
+}
+
+.rf-is-lst-scrl {
+ display : block;
+ overflow : auto;
+ overflow-x : hidden;
+ /*height : 100px;*/
+}
+
+.rf-is-opt {
+ display : block;
+ padding : 2px;
+ white-space : nowrap;
+ background-color : '#{richSkin.editBackgroundColor}';
+ cursor : default;
+}
+
+.rf-is-sel {
+ display : block;
+ padding : 1px;
+ background-color: #DFE8F6; /*get from skin???*/
+ border-width : 1px;
+ border-style : dotted;
+ border-color : '#{richSkin.generalTextColor}';
+}
+
+.rf-is-btn-prepos {
+ display : block;
+ position : absolute;
+ top : -4px;
+ right : 0px;
+ wigth : 1px;
+ height : 1px;
+}
+
+.rf-is-btn-pos {
+ display : block;
+ position : absolute;
+ top : 0px;
+ left : 0px;
+ white-space : nowrap;
+}
+
+.rf-is-btn-shdw {
+ display : block;
+ position: relative;
+ padding : 6px 6px 6px 6px;
+ top : -6px;
+ right : -6px;
+}
+
+.rf-is-shdw {
+ display : block;
+ position: relative;
+ padding : 6px 6px 6px 6px;
+ top : -6px;
+ left : -6px;
+}
+
+.rf-is-shdw-t {
+ display : block;
+ background-image :
"url(#{resource['org.richfaces:bg_shadow.png']})";
+ background-position : top left;
+ position: absolute;
+ width: 6px;
+ top: 0px;
+ bottom: 6px;
+ left : 0px
+}
+
+.rf-is-shdw-l {
+ display : block;
+ background-image : "url(#{resource['org.richfaces:bg_shadow.png']})";
+ background-position : bottom left;
+ position : absolute;
+ height : 6px;
+ bottom : 0px;
+ left : 0px;
+ right : 6px;
+}
+
+.rf-is-shdw-r {
+ display : block;
+ background : "url(#{resource['org.richfaces:bg_shadow.png']})";
+ background-position : bottom right;
+ position : absolute;
+ width : 6px;
+ top : 6px;
+ bottom : 0px;
+ right : 0px;
+}
+
+.rf-is-shdw-b {
+ display : block;
+ background : "url(#{resource['org.richfaces:bg_shadow.png']})";
+ background-position : right top;
+ position: absolute;
+ height : 6px;
+ top: 0px;
+ left : 6px;
+ right : 0px;
+}
Copied:
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceSelect.js
(from rev 19507,
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceSelect.js)
===================================================================
---
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceSelect.js
(rev 0)
+++
branches/RF-8742/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceSelect.js 2010-10-08
17:57:34 UTC (rev 19509)
@@ -0,0 +1,99 @@
+(function ($, rf) {
+
+ rf.ui = rf.ui || {};
+
+ rf.ui.InplaceSelect = function(id, options) {
+ $super.constructor.call(this, id, options)
+ this.select = new rf.ui.Select(options.listCord, this, options);
+ this.selectItems = options.selectItems;
+ this.selValueInput = $(document.getElementById(options.selValueInput));
+ this.openPopup = false;
+
+ }
+
+ rf.ui.InplaceInput.extend(rf.ui.InplaceSelect);
+ $.extend(rf.ui.InplaceSelect, rf.ui.SelectListener);
+
+ var $super = rf.ui.InplaceSelect.$super;
+ $.extend(rf.ui.InplaceSelect.prototype, ( function () {
+
+ return{
+ name : "inplaceSelect",
+
+ getName: function() {
+ return this.name;
+ },
+
+ geNamespace: function() {
+ return this.namespace;
+ },
+
+ onshow: function() {
+ if(this.openPopup) {
+ this.select.show();
+ }
+
+ if(!this.openPopup) {
+ this.openPopup = true;
+ }
+
+ $super.onshow.call(this);
+ },
+
+ onhide: function() {
+ this.select.hide();
+ this.openPopup = false;
+ },
+
+ processItem: function(event, element) {
+ var key = element.attr("id");
+ var value = this.getItemValue(key);
+ this.saveItemValue(value);
+
+ var label = this.getItemLabel(key);
+ //inplace label
+ this.setValue(label);
+ this.select.hide();
+
+ this.__setInputFocus();
+ },
+
+ getItemValue: function(key) {
+ for(var i in this.selectItems) {
+ var item = this.selectItems[i];
+ if(item && item.id == key) {
+ return item.value;
+ }
+ }
+ },
+
+ saveItemValue: function(value) {
+ this.selValueInput.val(value);
+ },
+
+ getItemLabel: function(key) {
+ for(var i in this.selectItems) {
+ var item = this.selectItems[i];
+ if(item && item.id == key) {
+ return item.label;
+ }
+ }
+ },
+
+ __blurHandler: function(e) {
+ var target = $(e.originalEvent.explicitOriginalTarget);
+ if(!this.__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()));
+ }
+ }
+
+ })());
+
+})(jQuery, window.RichFaces);
Modified: branches/RF-8742/ui/input/ui/src/main/templates/inplaceInput.template.xml
===================================================================
--- branches/RF-8742/ui/input/ui/src/main/templates/inplaceInput.template.xml 2010-10-08
15:48:10 UTC (rev 19508)
+++ branches/RF-8742/ui/input/ui/src/main/templates/inplaceInput.template.xml 2010-10-08
17:57:34 UTC (rev 19509)
@@ -49,14 +49,13 @@
<input id="#{clientId}:focus" type="image"
style="position: absolute; top: 0px; left: 0px; outline-style: none;"
class="rf-ii-none"/>
<span id="#{clientId}:edit" class="#{getEditStyleClass(component,
inplaceState)}">
<input id="#{clientId}:input" autocomplete="off"
name="#{clientId}"
- type="text" value="#{getInputValue(facesContext, component)}"
class="rf-ii-fld" style="width:
#{component.attributes['inputWidth']};"
- cdk:passThrough="tabIndex">
+ type="text" value="#{getInputValue(facesContext, component)}"
class="rf-ii-fld" style="width:
#{component.attributes['inputWidth']};"
cdk:passThrough="tabIndex">
<cdk:call expression="renderInputHandlers(facesContext,
component);"/>
</input>
<c:if test="#{component.attributes['showControls']}">
<span class="rf-ii-btn-prepos">
<span class="rf-ii-btn-pos">
- <span id="#{clientId}:btnshadow"
class="rf-ii-btn-shdw">
+ <span id="#{clientId}:btnshadow"
class="rf-ii-btn-shadow">
<span class="rf-ii-btn-shdw-t"></span>
<span class="rf-ii-btn-shdw-l"></span>
<span class="rf-ii-btn-shdw-r"></span>
@@ -66,12 +65,12 @@
<input type="image"
id="#{clientId}:okbtn"
src="#{getResourcePath(facesContext,
'org.richfaces/ico_ok.gif')}"
- class="rf-ii-btn"
onmousedown="this.className='rf-ii-btn-prsd'"
+ class="rf-ii-btn"
onmousedown="this.className='rf-ii-btn-p'"
onmouseout="this.className='rf-ii-btn'"
onmouseup="this.className='rf-ii-btn'" />
<input type="image"
id="#{clientId}:cancelbtn"
src="#{getResourcePath(facesContext,'org.richfaces/ico_cancel.gif')}"
- class="rf-ii-btn"
onmousedown="this.className='rf-ii-btn-prsd'"
+ class="rf-ii-btn"
onmousedown="this.className='rf-ii-btn-press'"
onmouseout="this.className='rf-ii-btn'"
onmouseup="this.className='rf-ii-btn'" />
<br />
</span>
@@ -81,7 +80,7 @@
</c:if>
</span>
<script type="text/javascript">
- <cdk:call expression="buildScript(responseWriter, facesContext,
component);"/>
+ <cdk:call expression="buildScript(responseWriter, facesContext, component,
null);"/>
</script>
</span>
</cc:implementation>
Copied: branches/RF-8742/ui/input/ui/src/main/templates/inplaceSelect.template.xml (from
rev 19507, trunk/ui/input/ui/src/main/templates/inplaceSelect.template.xml)
===================================================================
--- branches/RF-8742/ui/input/ui/src/main/templates/inplaceSelect.template.xml
(rev 0)
+++ branches/RF-8742/ui/input/ui/src/main/templates/inplaceSelect.template.xml 2010-10-08
17:57:34 UTC (rev 19509)
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- JBoss, Home of Professional Open Source Copyright ${year}, 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. -->
+<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.InplaceSelectRenderer
+ </cdk:class>
+ <cdk:superclass>org.richfaces.renderkit.InplaceSelectBaseRenderer
+ </cdk:superclass>
+ <cdk:component-family>org.richfaces.InplaceSelect
+ </cdk:component-family>
+ <cdk:renderer-type>org.richfaces.InplaceSelectRenderer
+ </cdk:renderer-type>
+ </cc:interface>
+
+ <cc:implementation>
+ <cdk:object type="org.richfaces.component.InplaceState"
+ name="inplaceState" value="#{getInplaceState(component)}" />
+ <cdk:object type="java.lang.String" name="inplaceValue"
+ value="#{getSelectLabel(facesContext, component)}"/>
+
+ <cdk:object type="java.util.List"
type-arguments="InplaceSelectBaseRenderer.ClientSelectItem"
name="clientSelectItems"
+ value="#{getConvertedSelectItems(facesContext, component)}" />
+
+ <span id="#{clientId}" class="#{getReadyStyleClass(component,
inplaceState)}"
+ cdk:passThroughWithExclusions="id class">
+
+ <span id="#{clientId}:label" class="rf-is-lbl">
+ #{inplaceValue}
+ </span>
+
+ <input id="#{clientId}:focus" type="image"
style="position: absolute; top: 0px; left: 0px; outline-style: none;"
class="rf-is-none" />
+
+ <span id="#{clientId}:edit" class="#{getEditStyleClass(component,
inplaceState)}">
+ <input id="#{clientId}selValue" name="#{clientId}"
type="hidden" value="#{getValue(facesContext, component)}"/>
+ <input id="#{clientId}:input" autocomplete="off"
+ type="text" value="#{getSelectInputLabel(facesContext,
component)}"
+ class="rf-is-fld" style="width:
#{component.attributes['inputWidth']};" readonly="readonly"
+ cdk:passThrough="tabIndex">
+ <cdk:call expression="renderInputHandlers(facesContext, component);"
/>
+ </input>
+ <c:if test="#{component.attributes['showControls']}">
+ <span class="rf-is-btn-prepos">
+ <span class="rf-is-btn-pos">
+ <span id="#{clientId}:btnshadow" class="rf-is-shdw">
+ <span class="rf-is-shdw-t"></span>
+ <span class="rf-is-shdw-l"></span>
+ <span class="rf-is-shdw-r"></span>
+ <span class="rf-is-shdw-b"></span>
+
+ <span id="#{clientId}:btn" style="position :
relative;">
+ <input type="image" id="#{clientId}:okbtn"
+ src="#{getResourcePath(facesContext,
'org.richfaces/ico_ok.gif')}"
+ class="rf-is-btn"
onmousedown="this.className='rf-is-btn-press'"
+ onmouseout="this.className='rf-is-btn'"
onmouseup="this.className='rf-is-btn'" />
+ <input type="image" id="#{clientId}:cancelbtn"
+ src="#{getResourcePath(facesContext,'org.richfaces/ico_cancel.gif')}"
+ class="rf-is-btn"
onmousedown="this.className='rf-is-btn-press'"
+ onmouseout="this.className='rf-is-btn'"
onmouseup="this.className='rf-is-btn'" />
+ <br />
+ </span>
+ </span>
+ </span>
+ </span>
+ </c:if>
+ <span id="#{clientId}List" class="rf-is-none
rf-is-lst-cord">
+ <span class="rf-is-lst-pos" style="width:
#{component.attributes['listWidth']}">
+ <span class="rf-is-shdw">
+ <span class="rf-is-shdw-t"></span>
+ <span class="rf-is-shdw-l"></span>
+ <span class="rf-is-shdw-r"></span>
+ <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);"/>
+ </span>
+ </span>
+ </span>
+ </span>
+ </span>
+ </span>
+ <script type="text/javascript">
+ <cdk:call expression="buildScript(responseWriter, facesContext, component,
clientSelectItems);" />
+ </script>
+ </span>
+ </cc:implementation>
+</cdk:root>
\ No newline at end of file
Modified:
branches/RF-8742/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java
===================================================================
---
branches/RF-8742/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java 2010-10-08
15:48:10 UTC (rev 19508)
+++
branches/RF-8742/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java 2010-10-08
17:57:34 UTC (rev 19509)
@@ -59,7 +59,7 @@
HtmlPage page = environment.getPage("/test.jsf");
HtmlElement span = page.getFirstByXPath("//*[@id =
'form:input_default']");
assertEquals("span", span.getNodeName());
- assertEquals("rf-ii-ready-st",
span.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
+ assertEquals("rf-ii-d-s",
span.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
HtmlElement label = (HtmlElement)span.getFirstChild();
assertEquals("span", label.getNodeName());
@@ -69,7 +69,7 @@
HtmlElement edit = page.getFirstByXPath("//*[@id =
'form:input_default:edit']");
assertEquals("span", edit.getNodeName());
- assertEquals("rf-ii-edt-st rf-ii-none",
edit.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
+ assertEquals("rf-ii-e-s rf-ii-none",
edit.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
HtmlElement input = (HtmlElement)edit.getFirstChild();
assertEquals("input", input.getNodeName());
@@ -87,7 +87,7 @@
HtmlElement span = page.getFirstByXPath("//*[@id =
'form:input_edit']");
assertEquals("span", span.getNodeName());
- assertEquals("rf-ii-ready-st",
span.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
+ assertEquals("rf-ii-d-s",
span.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
HtmlElement label = (HtmlElement)span.getFirstChild();
assertEquals("span", label.getNodeName());
@@ -97,7 +97,7 @@
HtmlElement edit = page.getFirstByXPath("//*[@id =
'form:input_edit:edit']");
assertEquals("span", edit.getNodeName());
- assertEquals("rf-ii-edt-st",
edit.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
+ assertEquals("rf-ii-e-s",
edit.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
HtmlElement input = (HtmlElement)edit.getFirstChild();
assertEquals("input", input.getNodeName());
@@ -127,7 +127,7 @@
DomText text = page.getFirstByXPath("//*[@id =
'form:input_default:label']/text()");
assertEquals("Another Test String", text.getTextContent());
HtmlElement span = page.getFirstByXPath("//*[@id =
'form:input_default']");
- assertEquals("rf-ii-ready-st rf-ii-chd-st",
span.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
+ assertEquals("rf-ii-d-s rf-ii-c-s",
span.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
}
private void blur(HtmlPage page) throws Exception {
@@ -145,7 +145,7 @@
HtmlElement span = page.getFirstByXPath("//*[@id = 'form:" +
inplaceInputId + "']");
span.click();
HtmlElement edit = page.getFirstByXPath("//*[@id = 'form:" +
inplaceInputId + ":edit']");
- assertEquals("rf-ii-edt-st",
edit.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
+ assertEquals("rf-ii-e-s",
edit.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
typeNewValue(page, inplaceInputId, value);
}
@@ -161,7 +161,7 @@
assertEquals("Test String", text.getTextContent());
HtmlElement span = page.getFirstByXPath("//*[@id =
'form:input_controls']");
- assertEquals("rf-ii-ready-st",
span.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
+ assertEquals("rf-ii-d-s",
span.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
edit(page, "input_controls", "Another Test String");
@@ -172,7 +172,7 @@
assertEquals("Another Test String", text.getTextContent());
span = page.getFirstByXPath("//*[@id =
'form:input_controls']");
- assertEquals("rf-ii-ready-st rf-ii-chd-st",
span.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
+ assertEquals("rf-ii-d-s rf-ii-c-s",
span.getAttribute(HtmlConstants.CLASS_ATTRIBUTE));
edit(page, "input_controls", "Test String");
Modified:
branches/RF-8742/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/popupPanel.ecss
===================================================================
---
branches/RF-8742/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/popupPanel.ecss 2010-10-08
15:48:10 UTC (rev 19508)
+++
branches/RF-8742/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/popupPanel.ecss 2010-10-08
17:57:34 UTC (rev 19509)
@@ -8,7 +8,7 @@
top: 0px;
z-index: -300;
opacity: 0.1;
- filter: 'alpha(opacity \5C 3D 10)';
+ filter: 'alpha(opacity = 10)';
}
.rf-pp-shade {
@@ -19,13 +19,13 @@
left: 0px;
background-color: #D0D0D0;
opacity: 0.5;
- filter: 'alpha(opacity \5C 3D 50)';
+ filter: 'alpha(opacity = 50)';
}
.rf-pp-shdw {
background-color: #000000;
opacity: 0.1;
- filter: 'alpha(opacity \5C 3D 10)';
+ filter: 'alpha(opacity = 10)';
}
.rf-pp-cntr {
@@ -79,11 +79,10 @@
font-size : '#{richSkin.generalSizeFont}';
}
.rf-pp-hndlr {
- background : red;
opacity:0;
position : absolute;
margin : -4px;
- filter : 'alpha(opacity \5C 3D 0)';
+ filter : 'alpha(opacity = 0)';
}
.rf-pp-hndlr-l {
Modified:
branches/RF-8742/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/progressBar.js
===================================================================
---
branches/RF-8742/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/progressBar.js 2010-10-08
15:48:10 UTC (rev 19508)
+++
branches/RF-8742/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/progressBar.js 2010-10-08
17:57:34 UTC (rev 19509)
@@ -286,7 +286,7 @@
renderLabel: renderLabel,
switchState: switchState,
renderState: renderState,
- forceState: forceState,
+ forceState: forceState
};
})());