Author: scottbw
Date: Thu Oct  7 11:02:26 2010
New Revision: 1005408

URL: http://svn.apache.org/viewvc?rev=1005408&view=rev
Log:
Ensure that the widget gallery view is sorted by widget title - see WOOKIE-138.

Modified:
    incubator/wookie/trunk/WebContent/webmenu/listall.jsp
    incubator/wookie/trunk/src/org/apache/wookie/WidgetWebMenuServlet.java

Modified: incubator/wookie/trunk/WebContent/webmenu/listall.jsp
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/WebContent/webmenu/listall.jsp?rev=1005408&r1=1005407&r2=1005408&view=diff
==============================================================================
--- incubator/wookie/trunk/WebContent/webmenu/listall.jsp (original)
+++ incubator/wookie/trunk/WebContent/webmenu/listall.jsp Thu Oct  7 11:02:26 
2010
@@ -14,7 +14,7 @@
  */
 --%>
 <%@ page import='org.apache.wookie.helpers.FlashMessage' %>
-<%@ page 
import='org.apache.wookie.Messages,org.apache.wookie.beans.IWidget,java.util.ArrayList,java.util.Enumeration,java.util.Hashtable;'
 %>
+<%@ page 
import='org.apache.wookie.Messages,org.apache.wookie.beans.IWidget,org.apache.wookie.beans.IWidgetInstance,java.util.ArrayList;'
 %>
 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%>
 <% Messages localizedMessages = 
(Messages)session.getAttribute(Messages.class.getName()); %>
 <!DOCTYPE html>
@@ -48,12 +48,14 @@
        <table align="center">  
        <tr align="center">
        <%      
-       Hashtable widgetsHash = (Hashtable)request.getAttribute("widgetsHash");
+       IWidgetInstance[] widgetInstances = 
(IWidgetInstance[])request.getAttribute("widgetInstances");
        ArrayList<String> guids = new ArrayList<String>();
        int count = -1;
-       for(Enumeration e = widgetsHash.keys(); e.hasMoreElements();){          
                
-               String id = (String) e.nextElement();
-               IWidget widget = (IWidget) widgetsHash.get(id);
+               
+       for(IWidgetInstance instance: widgetInstances){                         
+               String id = instance.getIdKey();
+               IWidget widget = instance.getWidget();
+               
                if 
(!widget.getGuid().equalsIgnoreCase("http://www.tencompetence.org/widgets/default/notsupported";)){
                        String guid = widget.getGuid();
                        if(!guids.contains(guid)){

Modified: incubator/wookie/trunk/src/org/apache/wookie/WidgetWebMenuServlet.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/WidgetWebMenuServlet.java?rev=1005408&r1=1005407&r2=1005408&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/WidgetWebMenuServlet.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/WidgetWebMenuServlet.java Thu 
Oct  7 11:02:26 2010
@@ -15,7 +15,9 @@
 package org.apache.wookie;
 
 import java.io.IOException;
-import java.util.Hashtable;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 
 import javax.servlet.RequestDispatcher;
 import javax.servlet.Servlet;
@@ -183,25 +185,20 @@ public class WidgetWebMenuServlet extend
        /**
         * Creates a table, looks for widget definitions with a string (the 
name of 
         * the widget) and an instance of the widget which references the 
actual widget 
-        * object and its putting widgets in widgets_hash" 
-        * Results are returned in the request.
+        * object and puts the resulting set of instances in the 
widgetInstances attribute
+        * of the request. This can then be accessed by listall.jsp 
         * 
         * @param request
         * @param session
         * @param manager
         */
        private void listOperation(HttpServletRequest request, HttpSession 
session, IWidgetAdminManager manager){
-               Hashtable<String, IWidget> widgetsHash = new Hashtable<String, 
IWidget>();
+               ArrayList<IWidgetInstance> widgetInstances = new 
ArrayList<IWidgetInstance>();
 
         IPersistenceManager persistenceManager = 
PersistenceManagerFactory.getPersistenceManager();
         IWidget[] widgets = persistenceManager.findAll(IWidget.class);
                for(IWidget widget : widgets){
-                       
                        // Create an instance of the widget so that we can 
display it as the demo widget
-                       // An instance of a widget refers to a widget that has 
data stored on
-                       // to it and is going to be deployed on different 
platforms. In this 
-                       // case its windows.  
-                       
                        IWidgetInstance instance = null;
                        String apiKey = "TEST"; //$NON-NLS-1$
                        String userId = "testuser"; //$NON-NLS-1$
@@ -209,16 +206,22 @@ public class WidgetWebMenuServlet extend
                        String widgetId = widget.getGuid();
                        instance = 
WidgetInstanceFactory.getWidgetFactory(session, 
LocaleHandler.localizeMessages(request)).newInstance(apiKey, userId, 
sharedDataKey, null, widgetId, null);
                        if (instance != null) {
-                               widgetsHash.put(instance.getIdKey(), widget);
-                               // widgets could be organised alphabetically 
here.
-                       
+                               widgetInstances.add(instance);
                        }
                }
-
-               //for(WidgetDefault defaultWidget : 
manager.getAllDefaultWidgets()){
-               //      widgetsHash.put(defaultWidget.getWidgetContext(), 
manager.getWidget(defaultWidget.getWidgetId()));
-               //}
-               request.setAttribute("widgetsHash", widgetsHash); //$NON-NLS-1$
+               
+               // Sort the widget instances by name
+               Collections.sort(widgetInstances, new Comparator<Object>(){
+                       public int compare(Object o1, Object o2) {
+                               String w1 = 
((IWidgetInstance)o1).getWidget().getWidgetTitle(null);
+                               String w2 = 
((IWidgetInstance)o2).getWidget().getWidgetTitle(null);
+                               return w1.compareTo(w2);
+                       }
+                       
+               });
+               
+               // Store the array of instances in the request attribute
+               request.setAttribute("widgetInstances", 
widgetInstances.toArray( new IWidgetInstance[widgetInstances.size()])); 
//$NON-NLS-1$
        }
 
        private void requestApiKeyOperation(HttpServletRequest request, 
Configuration properties, IWidgetAdminManager manager){


Reply via email to