You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by Martin Marinschek <ma...@gmail.com> on 2006/02/25 12:58:59 UTC

Re: svn commit: r380866 - in /incubator/tobago/trunk: tobago-core/src/main/java/org/apache/myfaces/tobago/component/ tobago-core/src/main/java/org/apache/myfaces/tobago/taglib/component/ tobago-example/tobago-example-demo/src/main/java/org/apache/myf

What's Kohlfahrt?

just being curious ;)

regards,

Martin

On 2/25/06, Bernd Bohmann <be...@atanion.com> wrote:
> I think so, but now I go to a Kohlfahrt.
> We can discuss this tommorrow :-)
>
> Volker Weber schrieb:
> > Hi Bernd,
> >
> > the sheet was already using a actionListener methodBinding to do the
> > sort. The (mainly) only thing i did was to enable defining the
> > methodBinding to use in the sheetTag.
> >
> > Hmmm, when i started to write this mail, i thought it where mutch more
> > complicated to change this to queue a SortActionEvent instead of an
> > standard ActionEvent, because the event is generated in the
> > CommandRendererBase, but i just got an idea how to catch and replace
> > this ActionEvent with a SortActionEvent.
> >
> > This could be done in the queueEvent() method of UIData.
> > Thoughts?
> >
> > Regards,
> >   Volker
> >
> > Bernd Bohmann wrote:
> >
> >>Hi Volker,
> >>
> >>I would prefer an actionListener and a SortActionEvent instead of a
> >>sortActionListener.
> >>
> >>I don't like the x XYZActionListener.
> >>
> >>Can you change it?
> >>
> >>Regards
> >>
> >>Bernd
> >>
> >>weber@apache.org schrieb:
> >>
> >>
> >>>Author: weber
> >>>Date: Fri Feb 24 15:37:31 2006
> >>>New Revision: 380866
> >>>
> >>>URL: http://svn.apache.org/viewcvs?rev=380866&view=rev
> >>>Log:
> >>>add sortActionListener attribute to sheet
> >>>
> >>>Modified:
> >>>
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java
> >>>
> >>>
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Sorter.java
> >>>
> >>>
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/component/UIData.java
> >>>
> >>>
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/taglib/component/SheetTag.java
> >>>
> >>>
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/TobagoDemoController.java
> >>>
> >>>
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/model/solar/SolarObject.java
> >>>
> >>>
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/overview/OverviewController.java
> >>>
> >>>
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/overview/SheetConfig.java
> >>>
> >>>
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/overview/sheetControl.jsp
> >>>
> >>>
> >>>incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/SheetRenderer.java
> >>>
> >>>
> >>>incubator/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-sheet.js
> >>>
> >>>
> >>>Modified:
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java
> >>>
> >>>URL:
> >>>http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java?rev=380866&r1=380865&r2=380866&view=diff
> >>>
> >>>==============================================================================
> >>>
> >>>---
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java
> >>>(original)
> >>>+++
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/component/ComponentUtil.java
> >>>Fri Feb 24 15:37:31 2006
> >>>@@ -23,30 +23,7 @@
> >>>
> >>> import org.apache.commons.logging.Log;
> >>> import org.apache.commons.logging.LogFactory;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_ACCESS_KEY;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_ACTION_STRING;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_ALIGN;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_DISABLED;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_FOR;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_HOVER;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_LABEL;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_LABEL_WITH_ACCESS_KEY;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_READONLY;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_RENDER_RANGE;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_RENDER_RANGE_EXTERN;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_SORTABLE;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_VALUE;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.COMMAND_TYPE_NAVIGATE;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.COMMAND_TYPE_RESET;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.COMMAND_TYPE_SCRIPT;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.FACET_CHECKBOX;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.FACET_LABEL;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.FACET_RADIO;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.RENDERER_TYPE_OUT;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.RENDERER_TYPE_SELECT_BOOLEAN_CHECKBOX;
> >>>
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.RENDERER_TYPE_SELECT_ONE_RADIO;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_CREATE_SPAN;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_ESCAPE;
> >>>+import static org.apache.myfaces.tobago.TobagoConstants.*;
> >>> import org.apache.myfaces.tobago.el.ConstantMethodBinding;
> >>> import org.apache.myfaces.tobago.event.SheetStateChangeEvent;
> >>> import org.apache.myfaces.tobago.renderkit.RendererBase;
> >>>@@ -55,33 +32,22 @@
> >>>
> >>> import javax.faces.FactoryFinder;
> >>> import javax.faces.application.Application;
> >>>-import javax.faces.component.ActionSource;
> >>>-import javax.faces.component.EditableValueHolder;
> >>>-import javax.faces.component.UIColumn;
> >>>+import javax.faces.component.*;
> >>> import javax.faces.component.UICommand;
> >>>-import javax.faces.component.UIComponent;
> >>>-import javax.faces.component.UIGraphic;
> >>> import javax.faces.component.UIOutput;
> >>>-import javax.faces.component.UIParameter;
> >>>-import javax.faces.component.UISelectBoolean;
> >>> import javax.faces.component.UISelectItem;
> >>>-import javax.faces.component.UISelectItems;
> >>>-import javax.faces.component.ValueHolder;
> >>> import javax.faces.context.FacesContext;
> >>> import javax.faces.convert.Converter;
> >>> import javax.faces.el.MethodBinding;
> >>> import javax.faces.el.ValueBinding;
> >>>+import javax.faces.event.ActionEvent;
> >>> import javax.faces.event.ActionListener;
> >>> import javax.faces.model.SelectItem;
> >>> import javax.faces.render.RenderKit;
> >>> import javax.faces.render.RenderKitFactory;
> >>> import javax.faces.webapp.UIComponentTag;
> >>> import javax.servlet.jsp.JspException;
> >>>-import java.util.ArrayList;
> >>>-import java.util.Collection;
> >>>-import java.util.Iterator;
> >>>-import java.util.List;
> >>>-import java.util.Map;
> >>>+import java.util.*;
> >>>
> >>> public class ComponentUtil {
> >>>
> >>>@@ -90,6 +56,9 @@
> >>>   private static final String RENDER_KEY_PREFIX
> >>>       =
> >>>"org.apache.myfaces.tobago.component.ComponentUtil.RendererKeyPrefix_";
> >>>
> >>>+  private static final Class[] ACTION_LISTENER_ARGS =
> >>>{ActionEvent.class};
> >>>+
> >>>+
> >>>   private ComponentUtil() {
> >>>   }
> >>>
> >>>@@ -917,13 +886,27 @@
> >>>     final Application application = facesContext.getApplication();
> >>>     if (actionListener != null) {
> >>>       if (UIComponentTag.isValueReference(actionListener)) {
> >>>-        Class[] arguments = {javax.faces.event.ActionEvent.class};
> >>>         MethodBinding binding
> >>>-            = application.createMethodBinding(actionListener,
> >>>arguments);
> >>>+            = application.createMethodBinding(actionListener,
> >>>ACTION_LISTENER_ARGS);
> >>>         command.setActionListener(binding);
> >>>       } else {
> >>>         throw new IllegalArgumentException(
> >>>             "Must be a valueReference (actionListener): " +
> >>>actionListener);
> >>>+      }
> >>>+    }
> >>>+  }
> >>>+
> >>>+  public static void setSortActionListener(UIData data, String
> >>>actionListener) {
> >>>+    final FacesContext facesContext = FacesContext.getCurrentInstance();
> >>>+    final Application application = facesContext.getApplication();
> >>>+    if (actionListener != null) {
> >>>+      if (UIComponentTag.isValueReference(actionListener)) {
> >>>+        MethodBinding binding
> >>>+            = application.createMethodBinding(actionListener,
> >>>ACTION_LISTENER_ARGS);
> >>>+        data.setSortActionListener(binding);
> >>>+      } else {
> >>>+        throw new IllegalArgumentException(
> >>>+            "Must be a valueReference (sortActionListener): " +
> >>>actionListener);
> >>>       }
> >>>     }
> >>>   }
> >>>
> >>>Modified:
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Sorter.java
> >>>
> >>>URL:
> >>>http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Sorter.java?rev=380866&r1=380865&r2=380866&view=diff
> >>>
> >>>==============================================================================
> >>>
> >>>---
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Sorter.java
> >>>(original)
> >>>+++
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Sorter.java
> >>>Fri Feb 24 15:37:31 2006
> >>>@@ -21,15 +21,12 @@
> >>> import org.apache.myfaces.tobago.TobagoConstants;
> >>> import static org.apache.myfaces.tobago.TobagoConstants.ATTR_SORTABLE;
> >>> import org.apache.myfaces.tobago.model.SheetState;
> >>>-import org.apache.myfaces.tobago.model.SortableByApplication;
> >>> import org.apache.myfaces.tobago.util.BeanComparator;
> >>> import org.apache.myfaces.tobago.util.ValueBindingComparator;
> >>>
> >>>-import javax.faces.component.UIColumn;
> >>>-import javax.faces.component.UIComponent;
> >>>+import javax.faces.component.*;
> >>> import javax.faces.component.UIInput;
> >>> import javax.faces.component.UIOutput;
> >>>-import javax.faces.component.UISelectBoolean;
> >>> import javax.faces.context.FacesContext;
> >>> import javax.faces.el.EvaluationException;
> >>> import javax.faces.el.MethodBinding;
> >>>@@ -37,11 +34,7 @@
> >>> import javax.faces.el.ValueBinding;
> >>> import javax.faces.event.ActionEvent;
> >>> import javax.faces.model.DataModel;
> >>>-import java.util.Arrays;
> >>>-import java.util.Collections;
> >>>-import java.util.Comparator;
> >>>-import java.util.Iterator;
> >>>-import java.util.List;
> >>>+import java.util.*;
> >>>
> >>> /**
> >>>  * User: weber
> >>>@@ -52,8 +45,6 @@
> >>>
> >>>   private static final Log LOG = LogFactory.getLog(Sorter.class);
> >>>
> >>>-  public static final String ID_PREFIX = "sorter_";
> >>>-
> >>>
> >>>   public Object invoke(FacesContext facesContext, Object[] aobj)
> >>>       throws EvaluationException {
> >>>@@ -63,87 +54,66 @@
> >>>       if (LOG.isDebugEnabled()) {
> >>>         LOG.debug("sorterId = " + command.getId());
> >>>       }
> >>>-      UIData data = (UIData) command.getParent();
> >>>+      UIColumn column = (UIColumn) command.getParent();
> >>>+      UIData data = (UIData) column.getParent();
> >>>+
> >>>       Object value = data.getValue();
> >>>       if (value instanceof DataModel) {
> >>>         value = ((DataModel) value).getWrappedData();
> >>>       }
> >>>       SheetState sheetState = data.getSheetState(facesContext);
> >>>-      int column = sheetState.getSortedColumn();
> >>>-      boolean ascending = sheetState.isAscending();
> >>>
> >>>       Comparator comparator = null;
> >>>
> >>>-      if (value instanceof SortableByApplication
> >>>-        || value instanceof List
> >>>-        || value instanceof Object[]) {
> >>>+      if (value instanceof List || value instanceof Object[]) {
> >>>         String sortProperty;
> >>>
> >>>-        if (command.getId() != null &&
> >>>command.getId().startsWith(ID_PREFIX)) {
> >>>-          UIColumn uiColumn = null;
> >>>-          try {
> >>>-            int actualColumn =
> >>>-                Integer.parseInt(
> >>>-                    command.getId().substring(ID_PREFIX.length()));
> >>>-            if (actualColumn == column) {
> >>>-              ascending = !ascending;
> >>>-            } else {
> >>>-              ascending = true;
> >>>-              column = actualColumn;
> >>>-            }
> >>>-            sheetState.setAscending(ascending);
> >>>-            sheetState.setSortedColumn(column);
> >>>+        try {
> >>>+          if (!updateSheetState(data, column, sheetState)) {
> >>>+            return null;
> >>>+          }
> >>>
> >>>-            uiColumn = data.getRendererdColumns().get(column);
> >>>-            UIComponent child =
> >>>getFirstSortableChild(uiColumn.getChildren());
> >>>-            if (child != null) {
> >>>-              ValueBinding valueBinding =
> >>>child.getValueBinding("value");
> >>>-              String var = data.getVar();
> >>>-
> >>>-              if (valueBinding != null) {
> >>>-                if
> >>>(isSimpleProperty(valueBinding.getExpressionString())) {
> >>>-                  String expressionString =
> >>>valueBinding.getExpressionString();
> >>>-                  if (expressionString.startsWith("#{")
> >>>-                      && expressionString.endsWith("}")) {
> >>>-                    expressionString =
> >>>-                        expressionString.substring(2,
> >>>-                            expressionString.length() - 1);
> >>>-                  }
> >>>-                  sortProperty =
> >>>expressionString.substring(var.length() + 1);
> >>>-
> >>>-                  comparator = new BeanComparator(sortProperty, null,
> >>>!ascending);
> >>>-
> >>>-                  if (LOG.isDebugEnabled()) {
> >>>-                    LOG.debug("Sort property is " + sortProperty);
> >>>-                  }
> >>>-                } else {
> >>>-                  comparator = new
> >>>ValueBindingComparator(facesContext, var, valueBinding, !ascending);
> >>>+          UIComponent child =
> >>>getFirstSortableChild(column.getChildren());
> >>>+          if (child != null) {
> >>>+            ValueBinding valueBinding = child.getValueBinding("value");
> >>>+            String var = data.getVar();
> >>>+
> >>>+            if (valueBinding != null) {
> >>>+              if
> >>>(isSimpleProperty(valueBinding.getExpressionString())) {
> >>>+                String expressionString =
> >>>valueBinding.getExpressionString();
> >>>+                if (expressionString.startsWith("#{")
> >>>+                    && expressionString.endsWith("}")) {
> >>>+                  expressionString =
> >>>+                      expressionString.substring(2,
> >>>+                          expressionString.length() - 1);
> >>>                 }
> >>>-              }
> >>>+                sortProperty =
> >>>expressionString.substring(var.length() + 1);
> >>>
> >>>-            } else {
> >>>-              LOG.error("No sortable component found!");
> >>>-              removeSortableAttribute(uiColumn);
> >>>-              return null;
> >>>-            }
> >>>-          } catch (Exception e) {
> >>>-            LOG.error("Error while extracting sortMethod :" +
> >>>e.getMessage(), e);
> >>>-            if (uiColumn != null) {
> >>>-              removeSortableAttribute(uiColumn);
> >>>+                comparator = new BeanComparator(
> >>>+                    sortProperty, null, !sheetState.isAscending());
> >>>+
> >>>+                if (LOG.isDebugEnabled()) {
> >>>+                  LOG.debug("Sort property is " + sortProperty);
> >>>+                }
> >>>+              } else {
> >>>+                comparator = new ValueBindingComparator(
> >>>+                    facesContext, var, valueBinding,
> >>>!sheetState.isAscending());
> >>>+              }
> >>>             }
> >>>+
> >>>+          } else {
> >>>+            LOG.error("No sortable component found!");
> >>>+            removeSortableAttribute(column);
> >>>             return null;
> >>>           }
> >>>-        } else {
> >>>-          LOG.error(
> >>>-              "Sorter.invoke() with illegal id in ActionEvent's
> >>>source");
> >>>+        } catch (Exception e) {
> >>>+          LOG.error("Error while extracting sortMethod :" +
> >>>e.getMessage(), e);
> >>>+          if (column != null) {
> >>>+            removeSortableAttribute(column);
> >>>+          }
> >>>           return null;
> >>>         }
> >>>
> >>>-        //if (value instanceof SortableByApplication) {
> >>>-            //((SortableByApplication) value).sortBy(sortProperty);
> >>>-
> >>>-          // TODO ???? sortable by application
> >>>-        if (!(value instanceof SortableByApplication)) {
> >>>           // TODO: locale / comparator parameter?
> >>>           // don't compare numbers with Collator.getInstance()
> >>>comparator
> >>> //        Comparator comparator = Collator.getInstance();
> >>>@@ -151,16 +121,43 @@
> >>>
> >>>           if (value instanceof List) {
> >>>             Collections.sort((List) value, comparator);
> >>>-          } else { // if (value instanceof Object[]) {
> >>>+          } else { // value is instanceof Object[]
> >>>             Arrays.sort((Object[]) value, comparator);
> >>>           }
> >>>-        }
> >>>+
> >>>       } else {  // DataModel?, ResultSet, Result or Object
> >>>         LOG.warn("Sorting not supported for type "
> >>>                    + (value != null ? value.getClass().toString() :
> >>>"null"));
> >>>       }
> >>>     }
> >>>     return null;
> >>>+  }
> >>>+
> >>>+  private boolean updateSheetState(UIData data, UIColumn uiColumn,
> >>>SheetState sheetState) {
> >>>+    int actualColumn = -1;
> >>>+    List<UIColumn> rendererdColumns = data.getRendererdColumns();
> >>>+    for (int i = 0; i < rendererdColumns.size(); i++) {
> >>>+      if (uiColumn == rendererdColumns.get(i)) {
> >>>+        actualColumn = i;
> >>>+        break;
> >>>+      }
> >>>+    }
> >>>+    if (actualColumn == -1) {
> >>>+      LOG.warn("Can't find column to sort in rendered columns of
> >>>sheet!");
> >>>+      return false;
> >>>+    }
> >>>+
> >>>+    int column = sheetState.getSortedColumn();
> >>>+    boolean ascending = sheetState.isAscending();
> >>>+    if (actualColumn == column) {
> >>>+      ascending = !ascending;
> >>>+    } else {
> >>>+      ascending = true;
> >>>+      column = actualColumn;
> >>>+    }
> >>>+    sheetState.setAscending(ascending);
> >>>+    sheetState.setSortedColumn(column);
> >>>+    return true;
> >>>   }
> >>>
> >>>   private boolean isSimpleProperty(String expressionString) {
> >>>
> >>>Modified:
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/component/UIData.java
> >>>
> >>>URL:
> >>>http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/component/UIData.java?rev=380866&r1=380865&r2=380866&view=diff
> >>>
> >>>==============================================================================
> >>>
> >>>---
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/component/UIData.java
> >>>(original)
> >>>+++
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/component/UIData.java
> >>>Fri Feb 24 15:37:31 2006
> >>>@@ -53,12 +53,14 @@
> >>>
> >>>   public static final String COMPONENT_TYPE =
> >>>"org.apache.myfaces.tobago.Data";
> >>>
> >>>+  public static final String FACET_SORTER = "sorter";
> >>>+  public static final String SORTER_ID = "sorter";
> >>>+
> >>>   private MethodBinding stateChangeListener;
> >>>
> >>>   private List<Integer> widthList;
> >>>
> >>>-  // TODO: should be removed?
> >>>-  private Sorter sorter;
> >>>+  private MethodBinding sortActionListener;
> >>>
> >>>   private SheetState sheetState;
> >>>
> >>>@@ -320,10 +322,10 @@
> >>>   private void updateSheetState(FacesContext facesContext) {
> >>>     SheetState state = getSheetState(facesContext);
> >>>     if (state != null) {
> >>>-      // ensure sorter
> >>>-//      getSorter();
> >>>-//      state.setSortedColumn(sorter != null ? sorter.getColumn() : -1);
> >>>-//      state.setAscending(sorter != null && sorter.isAscending());
> >>>+      // ensure sortActionListener
> >>>+//      getSortActionListener();
> >>>+//      state.setSortedColumn(sortActionListener != null ?
> >>>sortActionListener.getColumn() : -1);
> >>>+//      state.setAscending(sortActionListener != null &&
> >>>sortActionListener.isAscending());
> >>>       state.setSelectedRows((List<Integer>)
> >>>           getAttributes().get(ATTR_SELECTED_LIST_STRING));
> >>>       state.setColumnWidths((String)
> >>>@@ -335,7 +337,7 @@
> >>>     Object[] saveState = new Object[5];
> >>>     saveState[0] = super.saveState(context);
> >>>     saveState[1] = sheetState;
> >>>-    saveState[2] = sorter;
> >>>+    saveState[2] = saveAttachedState(context, sortActionListener);
> >>>     saveState[3] = saveAttachedState(context, stateChangeListener);
> >>>     if (showHeaderSet) {
> >>>       saveState[4] = showHeader;
> >>>@@ -347,7 +349,7 @@
> >>>     Object[] values = (Object[]) savedState;
> >>>     super.restoreState(context, values[0]);
> >>>     sheetState = (SheetState) values[1];
> >>>-    sorter = (Sorter) values[2];
> >>>+    sortActionListener = (MethodBinding)
> >>>restoreAttachedState(context, values[2]);
> >>>     stateChangeListener = (MethodBinding)
> >>>restoreAttachedState(context, values[3]);
> >>>     if (values[4] != null) {
> >>>       showHeaderSet = true;
> >>>@@ -376,17 +378,16 @@
> >>>     return columns;
> >>>   }
> >>>
> >>>-  // TODO: should be removed?
> >>>-  public Sorter getSorter() {
> >>>-    if (sorter != null) {
> >>>-      return sorter;
> >>>+  public MethodBinding getSortActionListener() {
> >>>+    if (sortActionListener != null) {
> >>>+      return sortActionListener;
> >>>     } else {
> >>>       return new Sorter();
> >>>     }
> >>>   }
> >>>
> >>>-  public void setSorter(Sorter sorter) {
> >>>-    this.sorter = sorter;
> >>>+  public void setSortActionListener(MethodBinding sortActionListener) {
> >>>+    this.sortActionListener = sortActionListener;
> >>>   }
> >>>
> >>>   public void queueEvent(FacesEvent facesEvent) {
> >>>
> >>>Modified:
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/taglib/component/SheetTag.java
> >>>
> >>>URL:
> >>>http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/taglib/component/SheetTag.java?rev=380866&r1=380865&r2=380866&view=diff
> >>>
> >>>==============================================================================
> >>>
> >>>---
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/taglib/component/SheetTag.java
> >>>(original)
> >>>+++
> >>>incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/taglib/component/SheetTag.java
> >>>Fri Feb 24 15:37:31 2006
> >>>@@ -16,19 +16,7 @@
> >>>  * limitations under the License.
> >>>  */
> >>>
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_COLUMNS;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_DIRECT_LINK_COUNT;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_FIRST;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_FORCE_VERTICAL_SCROLLBAR;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_INNER_WIDTH;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_ROWS;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_SHOW_DIRECT_LINKS;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_SHOW_HEADER;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_SHOW_PAGE_RANGE;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_SHOW_ROW_RANGE;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_STATE;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_VALUE;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_VAR;
> >>>+import static org.apache.myfaces.tobago.TobagoConstants.*;
> >>> import org.apache.myfaces.tobago.apt.annotation.BodyContentDescription;
> >>> import org.apache.myfaces.tobago.apt.annotation.Tag;
> >>> import org.apache.myfaces.tobago.apt.annotation.TagAttribute;
> >>>@@ -59,6 +47,7 @@
> >>>   private String forceVerticalScrollbar;
> >>>   private String state;
> >>>   private String stateChangeListener;
> >>>+  private String sortActionListener;
> >>>
> >>>   public String getComponentType() {
> >>>     // TODO: implement uidata with overridden processUpdates to store
> >>>state
> >>>@@ -80,6 +69,7 @@
> >>>     forceVerticalScrollbar = null;
> >>>     state = null;
> >>>     stateChangeListener = null;
> >>>+    sortActionListener = null;
> >>>   }
> >>>
> >>>   protected void setProperties(UIComponent component) {
> >>>@@ -101,6 +91,7 @@
> >>>     data.getAttributes().put(ATTR_INNER_WIDTH, new Integer(-1));
> >>>     ComponentUtil.setValueBinding(component, ATTR_STATE, state);
> >>>     ComponentUtil.setStateChangeListener(data, stateChangeListener);
> >>>+    ComponentUtil.setSortActionListener(data, sortActionListener);
> >>>
> >>>   }
> >>>
> >>>@@ -280,5 +271,24 @@
> >>>   public void setStateChangeListener(String stateChangeListener) {
> >>>     this.stateChangeListener = stateChangeListener;
> >>>   }
> >>>+
> >>>+  /**
> >>>+   * MethodBinding representing an actionListener method that will be
> >>>+   * invoked when sorting was requested by the user.
> >>>+   * Use this if your application needs special handling for sorting
> >>>columns.
> >>>+   * If this is not set and the sortable attribute column is not
> >>>false the sheet
> >>>+   * implementation will use a default sort method.
> >>>+   * The expression must evaluate to a public method that takes an
> >>>+   * ActionEvent parameter, with a return type of void.
> >>>+   * The parent of the actionEvents source will be the UIColumn
> >>>object for that
> >>>+   * the sorting is requested,
> >>>+   * <code>UIColumn column =
> >>>(UIColumn)actionEvent.getSource().getParent()</code>.
> >>>+   */
> >>>+  @TagAttribute
> >>>+  @UIComponentTagAttribute()
> >>>+  public void setSortActionListener(String sortActionListener) {
> >>>+    this.sortActionListener = sortActionListener;
> >>>+  }
> >>>+
> >>> }
> >>>
> >>>
> >>>Modified:
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/TobagoDemoController.java
> >>>
> >>>URL:
> >>>http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/TobagoDemoController.java?rev=380866&r1=380865&r2=380866&view=diff
> >>>
> >>>==============================================================================
> >>>
> >>>---
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/TobagoDemoController.java
> >>>(original)
> >>>+++
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/TobagoDemoController.java
> >>>Fri Feb 24 15:37:31 2006
> >>>@@ -61,6 +61,8 @@
> >>>
> >>>   private SolarObject[] solarArray;
> >>>
> >>>+  private List<SolarObject> solarList;
> >>>+
> >>>   private List<UIColumn> solarArrayColumns;
> >>>
> >>>   private String solarArrayColumnLayout;
> >>>@@ -148,6 +150,7 @@
> >>>         = "**strong text**\n\n__emphasis__\n\nnormaler
> >>>text\n\n__dieses "
> >>>         + "ist emphasis__\n\n**und nochmal strong**\n\n**__ strong
> >>>und emphasis__**";
> >>>     solarArray = SolarObject.getArray();
> >>>+    solarList = SolarObject.getList();
> >>>     solarArrayColumns = createSolarArrayColumns();
> >>>     solarArrayColumnLayout = "3*; 3*; 3*";
> >>>
> >>>@@ -292,6 +295,14 @@
> >>>
> >>>   public void setSolarArray(SolarObject[] solarArray) {
> >>>     this.solarArray = solarArray;
> >>>+  }
> >>>+
> >>>+  public List<SolarObject> getSolarList() {
> >>>+    return solarList;
> >>>+  }
> >>>+
> >>>+  public void setSolarList(List<SolarObject> solarList) {
> >>>+    this.solarList = solarList;
> >>>   }
> >>>
> >>>   public List<UIColumn> getSolarArrayColumns() {
> >>>
> >>>Modified:
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/model/solar/SolarObject.java
> >>>
> >>>URL:
> >>>http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/model/solar/SolarObject.java?rev=380866&r1=380865&r2=380866&view=diff
> >>>
> >>>==============================================================================
> >>>
> >>>---
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/model/solar/SolarObject.java
> >>>(original)
> >>>+++
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/model/solar/SolarObject.java
> >>>Fri Feb 24 15:37:31 2006
> >>>@@ -176,7 +176,17 @@
> >>>     return array;
> >>>   }
> >>>
> >>>-  public static List<SolarObject> getSatellites(String center) {
> >>>+
> >>>+  public static List<SolarObject> getList() {
> >>>+    SolarObject[] array = getArray();
> >>>+    List<SolarObject> list = new ArrayList<SolarObject>(array.length);
> >>>+    for (SolarObject object : array) {
> >>>+      list.add(object);
> >>>+    }
> >>>+    return list;
> >>>+  }
> >>>+
> >>>+    public static List<SolarObject> getSatellites(String center) {
> >>>     List<SolarObject> collect = new ArrayList<SolarObject>();
> >>>     SolarObject[] all = getArray();
> >>>     for (int i = 0; i < all.length; i++) {
> >>>
> >>>Modified:
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/overview/OverviewController.java
> >>>
> >>>URL:
> >>>http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/overview/OverviewController.java?rev=380866&r1=380865&r2=380866&view=diff
> >>>
> >>>==============================================================================
> >>>
> >>>---
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/overview/OverviewController.java
> >>>(original)
> >>>+++
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/overview/OverviewController.java
> >>>Fri Feb 24 15:37:31 2006
> >>>@@ -23,9 +23,12 @@
> >>>
> >>> import org.apache.commons.logging.Log;
> >>> import org.apache.commons.logging.LogFactory;
> >>>+import org.apache.myfaces.tobago.component.Sorter;
> >>>+import org.apache.myfaces.tobago.component.UIData;
> >>> import org.apache.myfaces.tobago.context.ResourceManager;
> >>> import org.apache.myfaces.tobago.context.ResourceManagerFactory;
> >>>
> >>>+import javax.faces.component.UICommand;
> >>> import javax.faces.context.FacesContext;
> >>> import javax.faces.event.ActionEvent;
> >>> import javax.faces.model.SelectItem;
> >>>@@ -109,6 +112,19 @@
> >>>
> >>>   public void click(ActionEvent actionEvent) {
> >>>     lastAction = actionEvent.getComponent().getId();
> >>>+  }
> >>>+
> >>>+  +  public void sheetSorter(ActionEvent event) {
> >>>+    Object eventSource = event.getSource();
> >>>+    UIData data = (UIData) ((UICommand)
> >>>eventSource).getParent().getParent();
> >>>+    List list = (List) data.getValue();
> >>>+    Object sun = list.remove(0);
> >>>+    Object[] objects = new Object[1];
> >>>+    objects[0] = event;
> >>>+    Sorter sorter = new Sorter();
> >>>+    sorter.invoke(FacesContext.getCurrentInstance(), objects);
> >>>+    list.add(0, sun);
> >>>   }
> >>>
> >>>   public boolean getShowPopup() {
> >>>
> >>>Modified:
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/overview/SheetConfig.java
> >>>
> >>>URL:
> >>>http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/overview/SheetConfig.java?rev=380866&r1=380865&r2=380866&view=diff
> >>>
> >>>==============================================================================
> >>>
> >>>---
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/overview/SheetConfig.java
> >>>(original)
> >>>+++
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/overview/SheetConfig.java
> >>>Fri Feb 24 15:37:31 2006
> >>>@@ -47,7 +47,7 @@
> >>>   private boolean sheetConfigPopup;
> >>>
> >>>   public SheetConfig() {
> >>>-    sheetPagingStart = 1;
> >>>+    sheetPagingStart = 0;
> >>>     sheetPagingLength = 7;
> >>>     sheetDirectLinkCount = 5;
> >>>     sheetDirectLinkCountItems = createSheetDirectLinkCountItems();
> >>>
> >>>Modified:
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/overview/sheetControl.jsp
> >>>
> >>>URL:
> >>>http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/overview/sheetControl.jsp?rev=380866&r1=380865&r2=380866&view=diff
> >>>
> >>>==============================================================================
> >>>
> >>>---
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/overview/sheetControl.jsp
> >>>(original)
> >>>+++
> >>>incubator/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/overview/sheetControl.jsp
> >>>Fri Feb 24 15:37:31 2006
> >>>@@ -106,7 +106,7 @@
> >>>           </tc:toolBar>
> >>>         </f:facet>
> >>>
> >>>-        <tc:sheet value="#{demo.solarArray}" id="sheet"
> >>>+        <tc:sheet value="#{demo.solarList}" id="sheet"
> >>>             columns="3*;1*;3*;3*;3*;3*" var="luminary"
> >>>             state="#{demo.sheetState}"
> >>>
> >>>showHeader="#{overviewController.sheetConfig.sheetShowHeader}"
> >>>@@ -116,7 +116,8 @@
> >>>
> >>>pagingStart="#{overviewController.sheetConfig.sheetPagingStart}"
> >>>
> >>>pagingLength="#{overviewController.sheetConfig.sheetPagingLength}"
> >>>
> >>>directLinkCount="#{overviewController.sheetConfig.sheetDirectLinkCount}"
> >>>-            stateChangeListener="#{demo.stateChangeListener}">
> >>>+            stateChangeListener="#{demo.stateChangeListener}"
> >>>+            sortActionListener="#{overviewController.sheetSorter}">
> >>>           <tc:column label="#{overviewBundle.solarArrayName}"
> >>>id="name" sortable="true">
> >>>             <tc:out value="#{luminary.name}" id="t_name" />
> >>>           </tc:column>
> >>>
> >>>Modified:
> >>>incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/SheetRenderer.java
> >>>
> >>>URL:
> >>>http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/SheetRenderer.java?rev=380866&r1=380865&r2=380866&view=diff
> >>>
> >>>==============================================================================
> >>>
> >>>---
> >>>incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/SheetRenderer.java
> >>>(original)
> >>>+++
> >>>incubator/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/SheetRenderer.java
> >>>Fri Feb 24 15:37:31 2006
> >>>@@ -23,44 +23,11 @@
> >>>
> >>> import org.apache.commons.logging.Log;
> >>> import org.apache.commons.logging.LogFactory;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_ACTION_STRING;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_ALIGN;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_COMMAND_TYPE;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_DIRECT_LINK_COUNT;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_DISABLED;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_FOOTER_HEIGHT;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_FORCE_VERTICAL_SCROLLBAR;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_IMAGE;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_INLINE;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_LABEL;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_LAYOUT_HEIGHT;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_MENU_POPUP;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_MENU_POPUP_TYPE;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_SELECTED_LIST_STRING;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_SHOW_DIRECT_LINKS;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_SHOW_PAGE_RANGE;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_SHOW_ROW_RANGE;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_SORTABLE;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_STYLE;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_STYLE_BODY;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_STYLE_CLASS;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_STYLE_HEADER;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_TYPE;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.ATTR_WIDTH_LIST;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.ATTR_WIDTH_LIST_STRING;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.COMMAND_TYPE_SCRIPT;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.FACET_MENUPOPUP;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.FACET_PAGER_PAGE;
> >>>-import static org.apache.myfaces.tobago.TobagoConstants.FACET_PAGER_ROW;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.RENDERER_TYPE_LINK;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.RENDERER_TYPE_MENUBAR;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.RENDERER_TYPE_MENUCOMMAND;
> >>>-import static
> >>>org.apache.myfaces.tobago.TobagoConstants.SUBCOMPONENT_SEP;
> >>>+import static org.apache.myfaces.tobago.TobagoConstants.*;
> >>> import org.apache.myfaces.tobago.ajax.api.AjaxRenderer;
> >>> import org.apache.myfaces.tobago.ajax.api.AjaxUtils;
> >>> import org.apache.myfaces.tobago.component.ComponentUtil;
> >>> import org.apache.myfaces.tobago.component.Pager;
> >>>-import org.apache.myfaces.tobago.component.Sorter;
> >>> import org.apache.myfaces.tobago.component.UIColumnSelector;
> >>> import org.apache.myfaces.tobago.component.UIData;
> >>> import org.apache.myfaces.tobago.config.TobagoConfig;
> >>>@@ -77,22 +44,13 @@
> >>> import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
> >>>
> >>> import javax.faces.application.Application;
> >>>-import javax.faces.component.UIColumn;
> >>>-import javax.faces.component.UICommand;
> >>>-import javax.faces.component.UIComponent;
> >>>-import javax.faces.component.UIPanel;
> >>>-import javax.faces.component.UIViewRoot;
> >>>+import javax.faces.component.*;
> >>> import javax.faces.context.FacesContext;
> >>> import javax.faces.context.ResponseWriter;
> >>> import javax.faces.el.MethodBinding;
> >>> import java.io.IOException;
> >>> import java.text.MessageFormat;
> >>>-import java.util.ArrayList;
> >>>-import java.util.Collections;
> >>>-import java.util.Iterator;
> >>>-import java.util.List;
> >>>-import java.util.Locale;
> >>>-import java.util.Map;
> >>>+import java.util.*;
> >>>
> >>> public class SheetRenderer extends RendererBase
> >>>   implements SheetRendererWorkaround, AjaxRenderer {
> >>>@@ -774,7 +732,7 @@
> >>>       String image1x1, int sortMarkerWidth) throws IOException {
> >>>     String sheetId = component.getClientId(facesContext);
> >>>     Application application = facesContext.getApplication();
> >>>-    Sorter sorter = component.getSorter();
> >>>+    MethodBinding sorter = component.getSortActionListener();
> >>>
> >>>     List columnWidths
> >>>         = (List) component.getAttributes().get(ATTR_WIDTH_LIST);
> >>>@@ -797,18 +755,23 @@
> >>>         ComponentUtil.getBooleanAttribute(column,
> >>>             ATTR_SORTABLE);
> >>>     if (sortable && !(column instanceof UIColumnSelector)) {
> >>>-      String sorterId = Sorter.ID_PREFIX + columnCount;
> >>>+      UICommand sortCommand = (UICommand)
> >>>column.getFacet(UIData.FACET_SORTER);
> >>>+      if (sortCommand == null) {
> >>>+        String columnId = column.getClientId(facesContext);
> >>>+        String sorterId =
> >>>columnId.substring(columnId.lastIndexOf(":") + 1 )
> >>>+            + "_" + UIData.SORTER_ID;
> >>>+        sortCommand
> >>>+            = (UICommand)
> >>>application.createComponent(UICommand.COMPONENT_TYPE);
> >>>+        sortCommand.setRendererType(RENDERER_TYPE_LINK);
> >>>+        sortCommand.setActionListener(sorter);
> >>>+        sortCommand.setId(sorterId);
> >>>+        column.getFacets().put(UIData.FACET_SORTER,
> >>>sortCommand);        +      }
> >>>+
> >>>       String onclick = "submitAction('"
> >>>           + ComponentUtil.findPage(component).getFormId(facesContext)
> >>>-          + "','" + component.getClientId(facesContext) + ":" +
> >>>sorterId + "')";
> >>>+          + "','" + sortCommand.getClientId(facesContext) + "')";
> >>>       writer.writeAttribute("onclick", onclick, null);
> >>>-      UICommand sortCommand = (UICommand)
> >>>-          application.createComponent(UICommand.COMPONENT_TYPE);
> >>>-      sortCommand.setRendererType(RENDERER_TYPE_LINK);
> >>>-      sortCommand.setActionListener(sorter);
> >>>-      sortCommand.setId(sorterId);
> >>>-      component.getFacets().put(sorterId, sortCommand);
> >>>-      sortCommand.getClientId(facesContext); // this must called here
> >>>to fix the ClientId
> >>>
> >>>       writer.writeAttribute("title",
> >>>           ResourceManagerUtil.getPropertyNotNull(facesContext, "tobago",
> >>>
> >>>Modified:
> >>>incubator/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-sheet.js
> >>>
> >>>URL:
> >>>http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-sheet.js?rev=380866&r1=380865&r2=380866&view=diff
> >>>
> >>>==============================================================================
> >>>
> >>>---
> >>>incubator/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-sheet.js
> >>>(original)
> >>>+++
> >>>incubator/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-sheet.js
> >>>Fri Feb 24 15:37:31 2006
> >>>@@ -34,6 +34,9 @@
> >>>     LOG.debug("New Sheet with id " + this.sheetId);
> >>>   },
> >>>
> >>>+  sortOnclickRegExp :
> >>>+      new RegExp("submitAction\\(('|\")(.*?)('|\") *,
> >>>*('|\")(.*?)('|\")\\)"),
> >>>+
> >>>   setup: function() {
> >>>
> >>>     // setup sorting headers
> >>>@@ -42,7 +45,18 @@
> >>>     var headerBox = $(idPrefix + i++);
> >>>     while (headerBox) {
> >>>       if (headerBox.onclick) {
> >>>+        var match =
> >>>this.sortOnclickRegExp.exec(headerBox.onclick.valueOf());
> >>>+//        LOG.debug("match[0] = " + match[0]);
> >>>+//        LOG.debug("match[1] = " + match[1]);
> >>>+//        LOG.debug("*match[2] = " + match[2]);
> >>>+//        LOG.debug("match[3] = " + match[3]);
> >>>+//        LOG.debug("match[4] = " + match[4]);
> >>>+//        LOG.debug("*match[5] = " + match[5]);
> >>>+//        LOG.debug("match[6] = " + match[6]);
> >>>+//        headerBox.formId = match[2];
> >>>+        headerBox.sorterId = match[5];
> >>>         headerBox.onclick = null;
> >>>+//        LOG.debug("headerBox.id = " + headerBox.id);
> >>>         Event.observe(headerBox, "click",
> >>>this.doSort.bindAsEventListener(this));
> >>>       }
> >>>       headerBox = $(idPrefix + i++);
> >>>@@ -97,10 +111,12 @@
> >>>
> >>>   doSort: function(event) {
> >>>     var element = Event.element(event);
> >>>-    var idx = element.id.lastIndexOf('_');
> >>>-    idx = element.id.substring(idx + 1);
> >>>-    var action = this.sheetId + Tobago.componentSeparator + "sorter_"
> >>>+ idx;
> >>>-    this.reloadWithAction(action);
> >>>+    if (!element.sorterId) {
> >>>+      element = element.parentNode;
> >>>+    }
> >>>+//    LOG.debug("element.id = " + element.id);
> >>>+//    LOG.debug("sorterId = " + element.sorterId);
> >>>+    this.reloadWithAction(element.sorterId);
> >>>   },
> >>>
> >>>   doPagingDirect: function(event) {
> >>>
> >>>
> >>>
> >>
> >
>
> --
> Dipl.-Ing. Bernd Bohmann - Atanion GmbH - Software Development
> Bismarckstr. 13, 26122 Oldenburg, http://www.atanion.com
> phone: +49 441 4082312, mobile: +49 173 8839471, fax: +49 441 4082333
>


--

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces

Re: svn commit: r380866 - in /incubator/tobago/trunk: tobago-core/src/main/java/org/apache/myfaces/tobago/component/ tobago-core/src/main/java/org/apache/myfaces/tobago/taglib/component/ tobago-example/tobago-example-demo/src/main/java/org/apache/myf

Posted by Bernd Bohmann <be...@atanion.com>.
I'm back from the kohlfahrt :-)

Matthias Wessendorf schrieb:
> we something similar called "bosseln" :-)
> 
> On 2/26/06, Martin Marinschek <ma...@gmail.com> wrote:
> 
>>Sounds interesting.
>>
>>especially the Schnapps part.
>>
>>regards,
>>
>>Martin
>>
>>On 2/26/06, Matthias Wessendorf <mw...@gmail.com> wrote:
>>
>>>:-)
>>>
>>>On 2/25/06, Volker Weber <us...@weber-oldenburg.de> wrote:
>>>
>>>>Martin Marinschek wrote:
>>>>
>>>>>What's Kohlfahrt?
>>>>
>>>>Whoow, i found a english description:
>>>>
>>>>http://www.armin-grewe.com/holiday/kohlfahrt/kohlfahrt.htm
>>>>
>>>>
>>>>Regards,
>>>>  Volker
>>>>
>>>>
>>>>>just being curious ;)
>>>>>
>>>>>regards,
>>>>>
>>>>>Martin
>>>>>
>>>>>On 2/25/06, Bernd Bohmann <be...@atanion.com> wrote:
>>>>>
>>>>>
>>>>>>I think so, but now I go to a Kohlfahrt.
>>>>>>We can discuss this tommorrow :-)
>>>>>>
>>>>
>>>>--
>>>>Don't answer to From: address!
>>>>Mail to this account are droped if not recieved via mailinglist.
>>>>To contact me direct create the mail address by
>>>>concatenating my forename to my senders domain.
>>>>
>>>
>>>
>>>--
>>>Matthias Wessendorf
>>>Zülpicher Wall 12, 239
>>>50674 Köln
>>>http://www.wessendorf.net
>>>mwessendorf-at-gmail-dot-com
>>>
>>
>>
>>--
>>
>>http://www.irian.at
>>
>>Your JSF powerhouse -
>>JSF Consulting, Development and
>>Courses in English and German
>>
>>Professional Support for Apache MyFaces
>>
> 
> 
> 
> --
> Matthias Wessendorf
> Zülpicher Wall 12, 239
> 50674 Köln
> http://www.wessendorf.net
> mwessendorf-at-gmail-dot-com
> 

-- 
Dipl.-Ing. Bernd Bohmann - Atanion GmbH - Software Development
Bismarckstr. 13, 26122 Oldenburg, http://www.atanion.com
phone: +49 441 4082312, mobile: +49 173 8839471, fax: +49 441 4082333

Re: svn commit: r380866 - in /incubator/tobago/trunk: tobago-core/src/main/java/org/apache/myfaces/tobago/component/ tobago-core/src/main/java/org/apache/myfaces/tobago/taglib/component/ tobago-example/tobago-example-demo/src/main/java/org/apache/myf

Posted by Matthias Wessendorf <mw...@gmail.com>.
we something similar called "bosseln" :-)

On 2/26/06, Martin Marinschek <ma...@gmail.com> wrote:
> Sounds interesting.
>
> especially the Schnapps part.
>
> regards,
>
> Martin
>
> On 2/26/06, Matthias Wessendorf <mw...@gmail.com> wrote:
> > :-)
> >
> > On 2/25/06, Volker Weber <us...@weber-oldenburg.de> wrote:
> > > Martin Marinschek wrote:
> > > > What's Kohlfahrt?
> > >
> > > Whoow, i found a english description:
> > >
> > > http://www.armin-grewe.com/holiday/kohlfahrt/kohlfahrt.htm
> > >
> > >
> > > Regards,
> > >   Volker
> > >
> > > >
> > > > just being curious ;)
> > > >
> > > > regards,
> > > >
> > > > Martin
> > > >
> > > > On 2/25/06, Bernd Bohmann <be...@atanion.com> wrote:
> > > >
> > > >>I think so, but now I go to a Kohlfahrt.
> > > >>We can discuss this tommorrow :-)
> > > >>
> > >
> > > --
> > > Don't answer to From: address!
> > > Mail to this account are droped if not recieved via mailinglist.
> > > To contact me direct create the mail address by
> > > concatenating my forename to my senders domain.
> > >
> >
> >
> > --
> > Matthias Wessendorf
> > Zülpicher Wall 12, 239
> > 50674 Köln
> > http://www.wessendorf.net
> > mwessendorf-at-gmail-dot-com
> >
>
>
> --
>
> http://www.irian.at
>
> Your JSF powerhouse -
> JSF Consulting, Development and
> Courses in English and German
>
> Professional Support for Apache MyFaces
>


--
Matthias Wessendorf
Zülpicher Wall 12, 239
50674 Köln
http://www.wessendorf.net
mwessendorf-at-gmail-dot-com

Re: svn commit: r380866 - in /incubator/tobago/trunk: tobago-core/src/main/java/org/apache/myfaces/tobago/component/ tobago-core/src/main/java/org/apache/myfaces/tobago/taglib/component/ tobago-example/tobago-example-demo/src/main/java/org/apache/myf

Posted by Martin Marinschek <ma...@gmail.com>.
Sounds interesting.

especially the Schnapps part.

regards,

Martin

On 2/26/06, Matthias Wessendorf <mw...@gmail.com> wrote:
> :-)
>
> On 2/25/06, Volker Weber <us...@weber-oldenburg.de> wrote:
> > Martin Marinschek wrote:
> > > What's Kohlfahrt?
> >
> > Whoow, i found a english description:
> >
> > http://www.armin-grewe.com/holiday/kohlfahrt/kohlfahrt.htm
> >
> >
> > Regards,
> >   Volker
> >
> > >
> > > just being curious ;)
> > >
> > > regards,
> > >
> > > Martin
> > >
> > > On 2/25/06, Bernd Bohmann <be...@atanion.com> wrote:
> > >
> > >>I think so, but now I go to a Kohlfahrt.
> > >>We can discuss this tommorrow :-)
> > >>
> >
> > --
> > Don't answer to From: address!
> > Mail to this account are droped if not recieved via mailinglist.
> > To contact me direct create the mail address by
> > concatenating my forename to my senders domain.
> >
>
>
> --
> Matthias Wessendorf
> Zülpicher Wall 12, 239
> 50674 Köln
> http://www.wessendorf.net
> mwessendorf-at-gmail-dot-com
>


--

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces

Re: svn commit: r380866 - in /incubator/tobago/trunk: tobago-core/src/main/java/org/apache/myfaces/tobago/component/ tobago-core/src/main/java/org/apache/myfaces/tobago/taglib/component/ tobago-example/tobago-example-demo/src/main/java/org/apache/myf

Posted by Matthias Wessendorf <mw...@gmail.com>.
:-)

On 2/25/06, Volker Weber <us...@weber-oldenburg.de> wrote:
> Martin Marinschek wrote:
> > What's Kohlfahrt?
>
> Whoow, i found a english description:
>
> http://www.armin-grewe.com/holiday/kohlfahrt/kohlfahrt.htm
>
>
> Regards,
>   Volker
>
> >
> > just being curious ;)
> >
> > regards,
> >
> > Martin
> >
> > On 2/25/06, Bernd Bohmann <be...@atanion.com> wrote:
> >
> >>I think so, but now I go to a Kohlfahrt.
> >>We can discuss this tommorrow :-)
> >>
>
> --
> Don't answer to From: address!
> Mail to this account are droped if not recieved via mailinglist.
> To contact me direct create the mail address by
> concatenating my forename to my senders domain.
>


--
Matthias Wessendorf
Zülpicher Wall 12, 239
50674 Köln
http://www.wessendorf.net
mwessendorf-at-gmail-dot-com

Re: svn commit: r380866 - in /incubator/tobago/trunk: tobago-core/src/main/java/org/apache/myfaces/tobago/component/ tobago-core/src/main/java/org/apache/myfaces/tobago/taglib/component/ tobago-example/tobago-example-demo/src/main/java/org/apache/myf

Posted by Volker Weber <us...@weber-oldenburg.de>.
Martin Marinschek wrote:
> What's Kohlfahrt?

Whoow, i found a english description:

http://www.armin-grewe.com/holiday/kohlfahrt/kohlfahrt.htm


Regards,
  Volker

> 
> just being curious ;)
> 
> regards,
> 
> Martin
> 
> On 2/25/06, Bernd Bohmann <be...@atanion.com> wrote:
> 
>>I think so, but now I go to a Kohlfahrt.
>>We can discuss this tommorrow :-)
>>

-- 
Don't answer to From: address!
Mail to this account are droped if not recieved via mailinglist.
To contact me direct create the mail address by
concatenating my forename to my senders domain.