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){