Author: nbelaevski
Date: 2007-11-08 21:06:22 -0500 (Thu, 08 Nov 2007)
New Revision: 3844
Modified:
trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingList.java
trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/renderkit/OrderingListRendererBase.java
trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/css/orderingList.xcss
trunk/sandbox/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx
Log:
latest changes for orderingList
Modified:
trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingList.java
===================================================================
---
trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingList.java 2007-11-09
02:06:15 UTC (rev 3843)
+++
trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/component/UIOrderingList.java 2007-11-09
02:06:22 UTC (rev 3844)
@@ -174,8 +174,8 @@
private Object value;
private boolean localValueSet;
- private SubmittedValue submittedValueHolder = null;
- private EditableState editableState = new EditableState();
+ private transient SubmittedValue submittedValueHolder = null;
+ private transient EditableState editableState = new EditableState();
public void restoreState(FacesContext faces, Object object) {
Object[] state = (Object[]) object;
@@ -276,7 +276,6 @@
this.editableState = (EditableState) values[1];
} else {
this.submittedValueHolder = null;
- this.editableState = null;
}
}
@@ -869,4 +868,13 @@
return ScriptUtils.toScript(order);
}
+
+ public abstract boolean isOrderControlsVisible();
+ public abstract void setOrderControlsVisible(boolean visible);
+
+ public abstract boolean isFastOrderControlsVisible();
+ public abstract void setFastOrderControlsVisible(boolean visible);
+
+ public abstract String getControlsType();
+ public abstract void setControlsType(String type);
}
Modified:
trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/renderkit/OrderingListRendererBase.java
===================================================================
---
trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/renderkit/OrderingListRendererBase.java 2007-11-09
02:06:15 UTC (rev 3843)
+++
trunk/sandbox/ui/orderingList/src/main/java/org/richfaces/renderkit/OrderingListRendererBase.java 2007-11-09
02:06:22 UTC (rev 3844)
@@ -14,11 +14,14 @@
import org.ajax4jsf.component.UIDataAdaptor;
import org.ajax4jsf.renderkit.RendererUtils.HTML;
-import org.ajax4jsf.renderkit.compiler.FacetElement;
import org.apache.commons.collections.Predicate;
import org.apache.commons.collections.iterators.FilterIterator;
import org.richfaces.component.Column;
import org.richfaces.component.UIOrderingList;
+import org.richfaces.renderkit.html.images.OrderingListIconBottom;
+import org.richfaces.renderkit.html.images.OrderingListIconDown;
+import org.richfaces.renderkit.html.images.OrderingListIconTop;
+import org.richfaces.renderkit.html.images.OrderingListIconUp;
public abstract class OrderingListRendererBase extends AbstractRowsRenderer {
@@ -28,13 +31,13 @@
private final static String ITEM_SEPARATOR = ",";
- private final static String FACET_TOP = "Top";
+ private final static String FACET_TOP = "topControl";
- private final static String FACET_BOTTOM = "Bottom";
+ private final static String FACET_BOTTOM = "bottomControl";
- private final static String FACET_UP = "Up";
+ private final static String FACET_UP = "upControl";
- private final static String FACET_DOWN = "Down";
+ private final static String FACET_DOWN = "downControl";
private final static String CONTROL_TYPE_LINK = "link";
@@ -52,6 +55,92 @@
private final static String CONTROL_ID_BOTTOM = "_bottom";
+ protected static abstract class ControlsHelper {
+ private String name;
+
+ private String text;
+
+ private String imageURI;
+
+ private String facetName;
+
+ private String styleClassName;
+
+ private String idSuffix;
+
+ public abstract boolean isRendered(FacesContext context, UIOrderingList list);
+
+ public ControlsHelper(String name, String text, String imageURI,
+ String facetName, String styleClassName, String idSuffix) {
+ super();
+ this.name = name;
+ this.text = text;
+ this.imageURI = imageURI;
+ this.facetName = facetName;
+ this.styleClassName = styleClassName;
+ this.idSuffix = idSuffix;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public String getImageURI() {
+ return imageURI;
+ }
+
+ public String getFacetName() {
+ return facetName;
+ }
+
+ public String getStyleClassName() {
+ return styleClassName;
+ }
+
+ public String getIdSuffix() {
+ return idSuffix;
+ }
+ };
+
+ protected static final ControlsHelper[] HELPERS = new ControlsHelper[] {
+ new ControlsHelper("top", "↟",
OrderingListIconTop.class.getName(), FACET_TOP,
+ "rich-ordering-control-top", CONTROL_ID_TOP) {
+
+ public boolean isRendered(FacesContext context, UIOrderingList list) {
+ return list.isFastOrderControlsVisible();
+ }
+
+ },
+ new ControlsHelper("up", "↑",
OrderingListIconUp.class.getName(), FACET_UP,
+ "rich-ordering-control-up", CONTROL_ID_UP) {
+
+ public boolean isRendered(FacesContext context, UIOrderingList list) {
+ return list.isOrderControlsVisible();
+ }
+
+ },
+ new ControlsHelper("down", "↡",
OrderingListIconDown.class.getName(), FACET_DOWN,
+ "rich-ordering-control-down", CONTROL_ID_DOWN) {
+
+ public boolean isRendered(FacesContext context, UIOrderingList list) {
+ return list.isFastOrderControlsVisible();
+ }
+
+ },
+ new ControlsHelper("botton", "↓",
OrderingListIconBottom.class.getName(), FACET_BOTTOM,
+ "rich-ordering-control-bottom", CONTROL_ID_BOTTOM) {
+
+ public boolean isRendered(FacesContext context, UIOrderingList list) {
+ return list.isOrderControlsVisible();
+ }
+
+ }
+ };
+
protected Class getComponentClass() {
return UIOrderingList.class;
}
@@ -98,48 +187,72 @@
writer.endElement("thead");
}
- public void encodeControlsList(FacesContext context, UIOrderingList orderingList)
+ public void encodeControlsFacets(FacesContext context, UIOrderingList orderingList)
throws IOException {
+ String clientId = orderingList.getClientId(context);
ResponseWriter writer = context.getResponseWriter();
- writer.startElement(HTML.td_ELEM, orderingList);
- writer.writeAttribute(HTML.class_ATTRIBUTE, "ol_button_layout", null);
- encodeContolsFacets(context, orderingList, writer);
- writer.endElement(HTML.td_ELEM);
+
+ for (int i = 0; i < HELPERS.length; i++) {
+ if (HELPERS[i].isRendered(context, orderingList)) {
+ encodeControlFacet(context, orderingList, HELPERS[i], clientId, writer);
+ }
+ }
}
- protected void encodeContolsFacets(FacesContext context, UIOrderingList orderingList,
ResponseWriter writer)
+ protected void encodeControlFacet(FacesContext context, UIOrderingList orderingList,
ControlsHelper helper, String clientId, ResponseWriter writer)
throws IOException {
- Map facets = orderingList.getFacets();
- String clientId = orderingList.getClientId(context);
- encodeControlFacet(context, orderingList, writer, (UIComponent) facets.get(FACET_TOP),
"rich-ordering-control-top", clientId.concat(CONTROL_ID_TOP));
- encodeControlFacet(context, orderingList, writer, (UIComponent) facets.get(FACET_UP),
"rich-ordering-control-up", clientId.concat(CONTROL_ID_UP));
- encodeControlFacet(context, orderingList, writer, (UIComponent) facets.get(FACET_DOWN),
"rich-ordering-control-down", clientId.concat(CONTROL_ID_DOWN));
- encodeControlFacet(context, orderingList, writer, (UIComponent)
facets.get(FACET_BOTTOM), "rich-ordering-control-bottom",
clientId.concat(CONTROL_ID_BOTTOM));
- }
-
- protected void encodeControlFacet(FacesContext context, UIOrderingList orderingList,
ResponseWriter writer, UIComponent facet, String facetClass, String controlId)
- throws IOException {
- if (facet != null && facet.isRendered()) {
- String controlType = (String)
orderingList.getAttributes().get(ATTRIBUTE_CONTROLS_TYPE);
- String htmlElem = null;
- if (CONTROL_TYPE_BUTTON.equals(controlType)) {
- htmlElem = HTML.BUTTON;
- } else if (CONTROL_TYPE_LINK.equals(controlType)) {
- htmlElem = HTML.a_ELEMENT;
- } else {
- return;
- }
-
+
+
+ UIComponent facet = orderingList.getFacet(helper.getFacetName());
+ boolean isButton = false;
+ boolean useFacet = (facet != null && facet.isRendered());
+
+ String controlType = (String)
orderingList.getAttributes().get(ATTRIBUTE_CONTROLS_TYPE);
+ String htmlElem = null;
+ if (CONTROL_TYPE_BUTTON.equals(controlType)) {
+ isButton = true;
+ htmlElem = HTML.BUTTON;
+ } else if (CONTROL_TYPE_LINK.equals(controlType)) {
+ htmlElem = HTML.a_ELEMENT;
+ } else {
+ //none
+ }
+
+ boolean encodeDiv = useFacet || htmlElem != null;
+
+ if (encodeDiv) {
writer.startElement(HTML.DIV_ELEM, orderingList);
writer.writeAttribute(HTML.class_ATTRIBUTE, "ol_button", null);
-
+ }
+
+ if (htmlElem != null) {
writer.startElement(htmlElem, orderingList);
- writer.writeAttribute(HTML.id_ATTRIBUTE, controlId, null);
- writer.writeAttribute(HTML.class_ATTRIBUTE, facetClass, null);
- //writer.writeAttribute(HTML.TYPE_ATTR, HTML.BUTTON, null);
+ writer.writeAttribute(HTML.id_ATTRIBUTE, clientId + helper.getIdSuffix(), null);
+ writer.writeAttribute(HTML.class_ATTRIBUTE, helper.getStyleClassName(), null);
+ }
+
+ if (useFacet) {
renderChild(context, facet);
+ } else {
+ if (isButton) {
+ writer.writeAttribute("style", "font-size: 1.5em;", null);
+ writer.write(helper.getText());
+ } else {
+ writer.startElement(HTML.IMG_ELEMENT, orderingList);
+
+ writer.writeAttribute("border", "0", null);
+ writer.writeAttribute("alt", helper.getFacetName(), null);
+ writer.writeAttribute("src",
getResource(helper.getImageURI()).getUri(context, null), null);
+
+ writer.endElement(HTML.IMG_ELEMENT);
+ }
+ }
+
+ if (htmlElem != null) {
writer.endElement(htmlElem);
-
+ }
+
+ if (encodeDiv) {
writer.endElement(HTML.DIV_ELEM);
}
}
Modified:
trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/css/orderingList.xcss
===================================================================
---
trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/css/orderingList.xcss 2007-11-09
02:06:15 UTC (rev 3843)
+++
trunk/sandbox/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/css/orderingList.xcss 2007-11-09
02:06:22 UTC (rev 3844)
@@ -21,8 +21,8 @@
}
.ol_list {
- width : 200px;
- height : 150px;
+ width : 300px;
+ height : 250px;
background : #FFFFFF;
border : 1px solid #bfbfc0;
margin : 0px 8px 8px 8px;
@@ -30,13 +30,13 @@
.ol_list_content {
overflow : auto;
- width: 200px;
- height: 132px;
+ width: 300px;
+ height: 232px;
}
.ol_list_header {
overflow: hidden;
- width: 200px;
+ width: 300px;
height: 18px;
}
Modified:
trunk/sandbox/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx
===================================================================
---
trunk/sandbox/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx 2007-11-09
02:06:15 UTC (rev 3843)
+++
trunk/sandbox/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx 2007-11-09
02:06:22 UTC (rev 3844)
@@ -36,10 +36,11 @@
var="bottomIcon" />
<div id="#{clientId}" x:passThruWithExclusions="id">
- <input id="#{clientId}focusKeeper" type="button"
value="" style="position: absolute; left: -32767px;"
name="focusKeeper"/>
+ <input id="#{clientId}focusKeeper" type="button"
value="" style="width: 1px; position: absolute; left: -32767px;"
name="focusKeeper"/>
<input id="#{clientId}valueKeeper" type="hidden"
name="#{clientId}" value="#{component.submittedValueAsString}"/>
<table id="#{clientId}table" cellpadding="0"
cellspacing="0" class="ol_body">
+ <tbody>
<tr>
<td>
<div id="#{clientId}headerBox" class="ol_list">
@@ -57,10 +58,11 @@
</div>
</div>
</td>
- <td>
- <f:call name="encodeControlsList"/>
+ <td class="ol_button_layout">
+ <f:call name="encodeControlsFacets"/>
</td>
</tr>
+ </tbody>
</table>
<f:clientId var="clientId"/>
<a id="#{clientId}sortLabel" href="#">Header</a>