Author: abelevich
Date: 2010-10-13 13:50:11 -0400 (Wed, 13 Oct 2010)
New Revision: 19557
Modified:
trunk/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceSelect.java
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceSelectBaseRenderer.java
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.js
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/popup.js
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/popupList.js
trunk/ui/input/ui/src/main/templates/inplaceSelect.template.xml
Log:
add openOnEdit attribute, fix keyboard navigation
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-13
16:09:22 UTC (rev 19556)
+++
trunk/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceSelect.java 2010-10-13
17:50:11 UTC (rev 19557)
@@ -60,7 +60,10 @@
@Attribute
public abstract String getDefaultLabel();
-
+
+ @Attribute(defaultValue="false")
+ public abstract boolean isOpenOnEdit();
+
@Attribute(defaultValue="true")
public abstract boolean isSaveOnBlur();
Modified:
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-13
16:09:22 UTC (rev 19556)
+++
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceSelectBaseRenderer.java 2010-10-13
17:50:11 UTC (rev 19557)
@@ -74,6 +74,8 @@
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 {
@@ -166,6 +168,7 @@
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,
@@ -227,7 +230,8 @@
}
public String getListStyles(FacesContext facesContext, UIComponent component) {
- return "";
+ AbstractInplaceSelect inplaceSelect = (AbstractInplaceSelect) component;
+ return inplaceSelect.isOpenOnEdit() ? "" : "display: none";
}
public String getReadyStateCss() {
Modified:
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.js
===================================================================
---
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.js 2010-10-13
16:09:22 UTC (rev 19556)
+++
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.js 2010-10-13
17:50:11 UTC (rev 19557)
@@ -57,11 +57,14 @@
switch(code) {
case 27:
+ e.preventDefault();
this.cancel();
break;
case 13:
+ e.preventDefault();
this.save();
return false;
+ break;
}
},
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-13
16:09:22 UTC (rev 19556)
+++
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceSelect.js 2010-10-13
17:50:11 UTC (rev 19557)
@@ -46,13 +46,15 @@
},
processItem: function(event, element) {
- var key = $(element).attr("id");
- var value = this.getItemValue(key);
- this.saveItemValue(value);
+ if(element) {
+ var key = $(element).attr("id");
+ var value = this.getItemValue(key);
+ this.saveItemValue(value);
+ var label = this.getItemLabel(key);
+ //inplace label
+ this.setValue(label);
+ }
- var label = this.getItemLabel(key);
- //inplace label
- this.setValue(label);
this.select.hide();
this.openPopup = false;
this.__setInputFocus();
@@ -81,7 +83,6 @@
},
__keydownHandler: function(e) {
- $super.__keydownHandler(e);
var code;
@@ -91,17 +92,30 @@
code = e.which;
}
- switch(code) {
- case rf.KEYS.DOWN:
- e.preventDefault();
- this.select.__onKeyDown(e);
- break;
-
- case rf.KEYS.UP:
- e.preventDefault();
- this.select.__onKeyUp(e);
- break;
- }
+ if(this.select.isVisible()) {
+ switch(code) {
+ case rf.KEYS.DOWN:
+ e.preventDefault();
+ this.select.__onKeyDown(e);
+ this.__setInputFocus();
+ break;
+
+ case rf.KEYS.UP:
+ e.preventDefault();
+ this.select.__onKeyUp(e);
+ this.__setInputFocus();
+ break;
+
+ case rf.KEYS.RETURN:
+ e.preventDefault();
+ this.select.__onEnter(e);
+ return false;
+ break;
+ }
+ }
+
+ $super.__keydownHandler.call(this,e);
+
},
__blurHandler: function(e) {
Modified: trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/popup.js
===================================================================
---
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/popup.js 2010-10-13
16:09:22 UTC (rev 19556)
+++
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/popup.js 2010-10-13
17:50:11 UTC (rev 19557)
@@ -6,8 +6,8 @@
this.id = id;
this.attachToDom(id);
this.popup = $(document.getElementById(id));
- this.visible = options.visible;
-
+
+ this.visible = options.visible;;
this.popup.bind("mouseover", $.proxy(this.__onMouseOver, this));
this.popup.bind("click", $.proxy(this.__onClick, this));
};
@@ -23,11 +23,13 @@
show: function() {
this.popup.css('display', '');
+ //add attachToBody logic
this.visible = true;
},
hide: function() {
this.popup.css('display', 'none');
+ //add attachToBody logic
this.visible = false;
},
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-13
16:09:22 UTC (rev 19556)
+++
trunk/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/popupList.js 2010-10-13
17:50:11 UTC (rev 19557)
@@ -16,7 +16,6 @@
//TODO: from option map?
this.index = -1;
- this.visible = false;
this.__updateItemsList();
};
@@ -97,6 +96,11 @@
//remove event, rename ???
__onEnter: function(e) {
+ var item;
+ if(this.items) {
+ item = this.items.eq(this.index);
+ this.processItem(e, item);
+ }
},
//remove event, rename
Modified: trunk/ui/input/ui/src/main/templates/inplaceSelect.template.xml
===================================================================
--- trunk/ui/input/ui/src/main/templates/inplaceSelect.template.xml 2010-10-13 16:09:22
UTC (rev 19556)
+++ trunk/ui/input/ui/src/main/templates/inplaceSelect.template.xml 2010-10-13 17:50:11
UTC (rev 19557)
@@ -79,7 +79,7 @@
</span>
</span>
</c:if>
- <span id="#{clientId}List" class="rf-is-lst-cord">
+ <span id="#{clientId}List" style="#{getListStyles(facesContext,
component)}" class="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>