You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by sc...@apache.org on 2005/05/11 16:24:10 UTC

svn commit: r169637 - in /myfaces/trunk: src/components/org/apache/myfaces/custom/sortheader/ webapps/simple/ webapps/simple/images/ webapps/src/example/org/apache/myfaces/examples/listexample/

Author: schof
Date: Wed May 11 07:24:09 2005
New Revision: 169637

URL: http://svn.apache.org/viewcvs?rev=169637&view=rev
Log:
Fixes MYFACES-191

Added:
    myfaces/trunk/webapps/simple/images/ascending-arrow.gif   (with props)
    myfaces/trunk/webapps/simple/images/descending-arrow.gif   (with props)
    myfaces/trunk/webapps/src/example/org/apache/myfaces/examples/listexample/OpenDataList.java
Modified:
    myfaces/trunk/src/components/org/apache/myfaces/custom/sortheader/HtmlSortHeaderRenderer.java
    myfaces/trunk/webapps/simple/openDataTable.jsp

Modified: myfaces/trunk/src/components/org/apache/myfaces/custom/sortheader/HtmlSortHeaderRenderer.java
URL: http://svn.apache.org/viewcvs/myfaces/trunk/src/components/org/apache/myfaces/custom/sortheader/HtmlSortHeaderRenderer.java?rev=169637&r1=169636&r2=169637&view=diff
==============================================================================
--- myfaces/trunk/src/components/org/apache/myfaces/custom/sortheader/HtmlSortHeaderRenderer.java (original)
+++ myfaces/trunk/src/components/org/apache/myfaces/custom/sortheader/HtmlSortHeaderRenderer.java Wed May 11 07:24:09 2005
@@ -1,12 +1,12 @@
 /*
  * Copyright 2004 The Apache Software Foundation.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -28,7 +28,7 @@
 /**
  * @author Manfred Geiler (latest modification by $Author$)
  * @version $Revision$ $Date$
- * $Log$
+ * $Log: HtmlSortHeaderRenderer.java,v $
  * Revision 1.6  2004/10/13 11:50:58  matze
  * renamed packages to org.apache
  *
@@ -48,28 +48,33 @@
 public class HtmlSortHeaderRenderer
         extends HtmlLinkRendererBase
 {
+    private static final String FACET_ASCENDING = "ascending";
+    private static final String FACET_DESCENDING = "descending";
+
     //private static final Log log = LogFactory.getLog(HtmlSortHeaderRenderer.class);
 
     public void encodeEnd(FacesContext facesContext, UIComponent component) throws IOException
     {
         RendererUtils.checkParamValidity(facesContext, component, HtmlCommandSortHeader.class);
-
         if (UserRoleUtils.isEnabledOnUserRole(component))
         {
             HtmlCommandSortHeader sortHeader = (HtmlCommandSortHeader)component;
             HtmlDataTable dataTable = sortHeader.findParentDataTable();
-
-            if (sortHeader.isArrow() && sortHeader.getColumnName().equals(dataTable.getSortColumn()))
+            if (sortHeader.getColumnName().equals(dataTable.getSortColumn()))
             {
-                ResponseWriter writer = facesContext.getResponseWriter();
-
-                if (dataTable.isSortAscending())
+                UIComponent img = (dataTable.isSortAscending())
+                                  ? sortHeader.getFacet(FACET_ASCENDING)
+                                  : sortHeader.getFacet(FACET_DESCENDING);
+                // render directional image
+                if (img != null)
                 {
-                    writer.write("↑");
+                    RendererUtils.renderChild(facesContext, img);
                 }
-                else
+                // render directional character
+                if (sortHeader.isArrow())
                 {
-                    writer.write("↓");
+                    ResponseWriter writer = facesContext.getResponseWriter();
+                    writer.write((dataTable.isSortAscending()) ? "↑" : "↓");
                 }
             }
         }

Added: myfaces/trunk/webapps/simple/images/ascending-arrow.gif
URL: http://svn.apache.org/viewcvs/myfaces/trunk/webapps/simple/images/ascending-arrow.gif?rev=169637&view=auto
==============================================================================
Binary file - no diff available.

Propchange: myfaces/trunk/webapps/simple/images/ascending-arrow.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: myfaces/trunk/webapps/simple/images/descending-arrow.gif
URL: http://svn.apache.org/viewcvs/myfaces/trunk/webapps/simple/images/descending-arrow.gif?rev=169637&view=auto
==============================================================================
Binary file - no diff available.

Propchange: myfaces/trunk/webapps/simple/images/descending-arrow.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: myfaces/trunk/webapps/simple/openDataTable.jsp
URL: http://svn.apache.org/viewcvs/myfaces/trunk/webapps/simple/openDataTable.jsp?rev=169637&r1=169636&r2=169637&view=diff
==============================================================================
--- myfaces/trunk/webapps/simple/openDataTable.jsp (original)
+++ myfaces/trunk/webapps/simple/openDataTable.jsp Wed May 11 07:24:09 2005
@@ -6,7 +6,7 @@
 
 <!--
 /*
- * Copyright 2005 The Apache Software Foundation.
+ * Copyright 2004 The Apache Software Foundation.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -40,7 +40,7 @@
                  headerClass="standardTable_Header"
                  footerClass="standardTable_Header"
                  rowClasses="standardTable_Row1,standardTable_Row2"
-                 columnClasses="standardTable_Column,standardTable_ColumnCentered, standardTable_Column"
+                 columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column"
                  var="row"
                  value="#{openDataList.data}"
                  preserveDataModel="true"
@@ -50,7 +50,13 @@
                  preserveSort="true">
         <x:columns value="#{openDataList.columnHeaders}" var="columnHeader">
             <f:facet name="header">
-                <x:commandSortHeader columnName="#{columnHeader}" arrow="true">
+                <x:commandSortHeader columnName="#{columnHeader}" arrow="false">
+                    <f:facet name="ascending">
+                        <h:graphicImage value="images/ascending-arrow.gif" rendered="true" border="0"/>
+                    </f:facet>
+                    <f:facet name="descending">
+                        <h:graphicImage value="images/descending-arrow.gif" rendered="true" border="0"/>
+                    </f:facet>
                     <h:outputText value="#{columnHeader}" />
                 </x:commandSortHeader>
             </f:facet>

Added: myfaces/trunk/webapps/src/example/org/apache/myfaces/examples/listexample/OpenDataList.java
URL: http://svn.apache.org/viewcvs/myfaces/trunk/webapps/src/example/org/apache/myfaces/examples/listexample/OpenDataList.java?rev=169637&view=auto
==============================================================================
--- myfaces/trunk/webapps/src/example/org/apache/myfaces/examples/listexample/OpenDataList.java (added)
+++ myfaces/trunk/webapps/src/example/org/apache/myfaces/examples/listexample/OpenDataList.java Wed May 11 07:24:09 2005
@@ -0,0 +1,109 @@
+package org.apache.myfaces.examples.listexample;
+
+import java.util.*;
+import javax.faces.model.*;
+
+public class OpenDataList extends SortableList
+{
+    private DataModel data;
+    private DataModel columnHeaders;
+
+    private static final int SORT_ASCENDING = 1;
+    private static final int SORT_DESCENDING = -1;
+
+    public OpenDataList()
+    {
+        super(null);
+
+        // create header info
+        List headerList = new ArrayList();
+        headerList.add("Index");
+        headerList.add("Type");
+        headerList.add("Model");
+        columnHeaders = new ListDataModel(headerList);
+
+        // create list of lists (data)
+        List rowList = new ArrayList();
+        for (int i = 100; i <= 999; i++)
+        {
+            List colList = new ArrayList();
+            colList.add(new Integer(i));
+            colList.add("Car Type " + i);
+            colList.add((i%2==0) ? "blue" : "green");
+            rowList.add(colList);
+        }
+        data = new ListDataModel(rowList);
+    }
+
+    //==========================================================================
+    // Getters
+    //==========================================================================
+
+    public DataModel getData()
+    {
+        sort(getSort(), isAscending());
+        return data;
+    }
+
+    public DataModel getColumnHeaders()
+    {
+        return columnHeaders;
+    }
+
+    //==========================================================================
+    // Public Methods
+    //==========================================================================
+
+    public Object getColumnValue()
+    {
+        Object columnValue = null;
+        if (data.isRowAvailable() && columnHeaders.isRowAvailable())
+        {
+            columnValue = ((List)data.getRowData()).get(columnHeaders.getRowIndex());
+        }
+        return columnValue;
+    }
+
+    //==========================================================================
+    // Protected Methods
+    //==========================================================================
+
+    protected boolean isDefaultAscending(String sortColumn)
+    {
+        return true;
+    }
+
+    protected void sort(final String column, final boolean ascending)
+    {
+        if (column != null)
+        {
+            int columnIndex = ( (List) columnHeaders.getWrappedData()).indexOf(column);
+            int direction = (ascending) ? SORT_ASCENDING : SORT_DESCENDING;
+            sort(columnIndex, direction);
+        }
+    }
+
+    protected void sort(final int columnIndex, final int direction)
+    {
+        Comparator comparator = new Comparator()
+        {
+            public int compare(Object o1, Object o2)
+            {
+                int result = 0;
+                Object column1 = ((List)o1).get(columnIndex);
+                Object column2 = ((List)o2).get(columnIndex);
+                if (column1 == null && column2 != null)
+                    result = -1;
+                else if (column1 == null && column2 == null)
+                    result = 0;
+                else if (column1 != null && column2 == null)
+                    result = 1;
+                else
+                    result = ((Comparable)column1).compareTo(column2) * direction;
+                return result;
+            }
+        };
+        Collections.sort((List)data.getWrappedData(), comparator);
+    }
+
+}