You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by wo...@apache.org on 2008/02/05 11:41:45 UTC

svn commit: r618605 - in /portals/jetspeed-2/trunk/applications/j2-admin: ./ src/java/org/apache/jetspeed/portlets/security/users/ src/java/org/apache/jetspeed/portlets/wicket/ src/java/org/apache/jetspeed/portlets/wicket/component/ src/webapp/WEB-INF/...

Author: woonsan
Date: Tue Feb  5 02:41:40 2008
New Revision: 618605

URL: http://svn.apache.org/viewvc?rev=618605&view=rev
Log:
j2-admin refactoring with wickets. ("UserBrowser" portlet only this time.)

Added:
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowser.html
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowser.java
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowser.properties
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowserApplication.java
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/AbstractAdminWebApplication.java
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/AdminWicketPortlet.java
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/Blank.gif   (with props)
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/LinkPropertyColumn$LinkPanel.html
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/LinkPropertyColumn.java
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/PortletOddEvenItem.java
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/Selected.gif   (with props)
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/SelectionImagePropertyColumn$ImagePanel.html
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/SelectionImagePropertyColumn.java
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.html
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.html
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/NoRecordsToolbar.html
Modified:
    portals/jetspeed-2/trunk/applications/j2-admin/pom.xml
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/portlet.xml
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/web.xml

Modified: portals/jetspeed-2/trunk/applications/j2-admin/pom.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/pom.xml?rev=618605&r1=618604&r2=618605&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/pom.xml (original)
+++ portals/jetspeed-2/trunk/applications/j2-admin/pom.xml Tue Feb  5 02:41:40 2008
@@ -337,6 +337,11 @@
             <version>${wicket.version}</version>
         </dependency>
         <dependency>
+            <groupId>org.apache.wicket</groupId>
+            <artifactId>wicket-extensions</artifactId>
+            <version>${wicket.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-log4j12</artifactId>
             <version>${slf4j.version}</version>
@@ -346,6 +351,7 @@
     <!-- Build Configuration -->
 
     <build>
+        <finalName>j2-admin</finalName>
         <sourceDirectory>${basedir}/src/java</sourceDirectory>
         <resources>
             <resource>
@@ -353,6 +359,7 @@
             <includes>
                 <include>**/*.properties</include>
                 <include>**/*.html</include>
+                <include>**/*.gif</include>
             </includes>
             </resource>
         </resources>

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowser.html
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowser.html?rev=618605&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowser.html (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowser.html Tue Feb  5 02:41:40 2008
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<html xmlns="http://www.w3.org/1999/xhtml" >
+
+    <table wicket:id="entries" cellpadding="0" cellspacing="1" border="0" width="100%">
+    </table>
+
+    <hr/>
+
+    <form wicket:id="searchForm">
+        <table>
+            <tr>
+                <td><input class="portlet-form-button" type="submit" value="Search" /></td>
+                <td><input type="text" wicket:id="searchString" size="25" class="portlet-form-field-label" /></td>
+            </tr>
+            <tr>
+                <td nowrap align="right" style="vertical-align:middle">&nbsp;Filter</td>
+                <td style="vertical-align:middle"><input type="checkbox" wicket:id="filtered"/></td>
+            </tr>
+        </table>    
+    </form>
+
+</html>

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowser.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowser.java?rev=618605&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowser.java (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowser.java Tue Feb  5 02:41:40 2008
@@ -0,0 +1,231 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.portlets.security.users;
+
+import java.io.Serializable;
+import java.io.NotSerializableException;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.portlet.PortletContext;
+import javax.portlet.PortletSession;
+import javax.portlet.PortletRequest;
+
+import org.apache.wicket.RequestContext;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.markup.repeater.OddEvenItem;
+import org.apache.wicket.protocol.http.portlet.PortletRequestContext;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.HeadersToolbar;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.NavigationToolbar;
+import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
+
+import org.apache.portals.messaging.PortletMessaging;
+
+import org.apache.jetspeed.CommonPortletServices;
+import org.apache.jetspeed.security.UserManager;
+import org.apache.jetspeed.security.SecurityException;
+import org.apache.jetspeed.portlets.security.SecurityResources;
+import org.apache.jetspeed.portlets.security.SecurityUtil;
+
+import org.apache.jetspeed.portlets.wicket.component.SelectionImagePropertyColumn;
+import org.apache.jetspeed.portlets.wicket.component.LinkPropertyColumn;
+import org.apache.jetspeed.portlets.wicket.component.PortletOddEvenItem;
+
+/**
+ * User Browser Wicket WebPage
+ * 
+ * @author <a href="mailto:woonsan@apache.org">Woonsan Ko</a>
+ * @version $Id: $
+ */
+public class WicketUserBrowser extends WebPage
+{
+
+    protected List userNameList;
+    protected String searchString;
+    protected boolean filtered;
+    protected String selectedUserName;
+    
+	public WicketUserBrowser()
+	{
+        SortableDataProvider dataProvider = new SortableDataProvider()
+        {
+            public int size()
+            {
+                return getUserNameList().size();
+            }
+            
+            public IModel model(Object object)
+            {
+                String userName = (String) object;
+                return new Model(userName);
+            }
+            
+            public Iterator iterator(int first, int count)
+            {
+                return getUserNameList().subList(first, first + count).iterator();
+            }
+        };
+        
+        IColumn [] columns = 
+        {
+            new SelectionImagePropertyColumn(new Model(" "), "")
+            {
+                protected boolean isSelectedItem(Item item, String componentId, IModel model)
+                {
+                    String userName = (String) model.getObject();
+                    return userName.equals(selectedUserName);
+                }
+            },
+            new LinkPropertyColumn(new Model("User"), "")
+            {
+                public void onClick(Item item, String componentId, IModel model)
+                {
+                    PortletRequest request = ((PortletRequestContext) RequestContext.get()).getPortletRequest();
+                    setSelectedUserName((String) model.getObject());
+                    
+                    if (getSelectedUserName() != null)
+                    {
+                        try
+                        {
+                            PortletMessaging.publish(request, SecurityResources.TOPIC_USERS, SecurityResources.MESSAGE_SELECTED, getSelectedUserName());
+                        }
+                        catch (NotSerializableException e)
+                        {
+                        }
+                    }
+                }
+            }
+        };
+        
+        DataTable userDataTable = new DataTable("entries", columns, dataProvider, 10)
+        {
+            protected Item newRowItem(String id, int index, IModel model)
+            {
+                return new PortletOddEvenItem(id, index, model);
+            }
+        };
+        
+        userDataTable.addTopToolbar(new HeadersToolbar(userDataTable, dataProvider));
+        userDataTable.addBottomToolbar(new NavigationToolbar(userDataTable));
+        
+        add(userDataTable);
+        
+        Form searchForm = new Form("searchForm")
+        {
+            protected void onSubmit()
+            {
+            }
+        };
+        
+        TextField searchString = new TextField("searchString", new PropertyModel(this, "searchString"));
+        searchForm.add(searchString);
+        
+        CheckBox filtered = new CheckBox("filtered", new PropertyModel(this, "filtered"));
+        searchForm.add(filtered);
+        
+        add(searchForm);
+	}
+
+    public void setSearchString(String searchString)
+    {
+        this.searchString = (searchString == null ? "" : searchString.trim());
+    }
+    
+    public String getSearchString()
+    {
+        return (this.searchString == null ? "" : this.searchString);
+    }
+    
+    public void setFiltered(boolean filtered)
+    {
+        this.filtered = filtered;
+    }
+    
+    public boolean getFiltered()
+    {
+        return this.filtered;
+    }
+    
+    public void setSelectedUserName(String selectedUserName)
+    {
+        this.selectedUserName = selectedUserName;
+    }
+    
+    public String getSelectedUserName()
+    {
+        return this.selectedUserName;
+    }
+    
+    public void setUserNameList(List userNameList)
+    {
+        this.userNameList = userNameList;
+    }
+    
+    public List getUserNameList()
+    {
+        return this.userNameList;
+    }
+    
+    protected void onBeforeRender()
+    {
+        PortletRequest request = ((PortletRequestContext) RequestContext.get()).getPortletRequest();
+        
+        try
+        {
+            if (getFiltered())
+            {
+                PortletMessaging.publish(request, SecurityResources.TOPIC_USERS, SecurityResources.MESSAGE_FILTERED, "on");            
+            }
+            else
+            {
+                PortletMessaging.cancel(request, SecurityResources.TOPIC_USERS, SecurityResources.MESSAGE_FILTERED);
+            }
+
+            this.userNameList = new ArrayList();
+            UserManager userManager = (UserManager) request.getAttribute(CommonPortletServices.CPS_USER_MANAGER_COMPONENT);
+            Iterator users = userManager.getUserNames(getSearchString());
+
+            while (users.hasNext())
+            {
+                this.userNameList.add(users.next());
+            }            
+        }
+        catch (NotSerializableException e)
+        {
+        }
+        catch (SecurityException e)
+        {
+            SecurityUtil.publishErrorMessage(request, SecurityResources.TOPIC_USERS, e.getMessage());
+        }                                    
+        
+        super.onBeforeRender();
+    }
+    
+}
\ No newline at end of file

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowser.properties
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowser.properties?rev=618605&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowser.properties (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowser.properties Tue Feb  5 02:41:40 2008
@@ -0,0 +1 @@
+NavigatorLabel=${from}-${to}. Total: ${Of}
\ No newline at end of file

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowserApplication.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowserApplication.java?rev=618605&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowserApplication.java (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/security/users/WicketUserBrowserApplication.java Tue Feb  5 02:41:40 2008
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.portlets.security.users;
+
+import org.apache.wicket.Request;
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.Response;
+import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.protocol.http.WebRequest;
+import org.apache.wicket.protocol.http.WebRequestCycle;
+
+import org.apache.jetspeed.portlets.wicket.AbstractAdminWebApplication;
+
+/**
+ * User Browser Wicket Application
+ * 
+ * @author <a href="mailto:woonsan@apache.org">Woonsan Ko</a>
+ * @version $Id: $
+ */
+public class WicketUserBrowserApplication extends AbstractAdminWebApplication
+{
+
+	/**
+	 * @see org.apache.wicket.Application#getHomePage()
+	 */
+	public Class getHomePage()
+	{
+		return WicketUserBrowser.class;
+	}
+    
+}

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/AbstractAdminWebApplication.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/AbstractAdminWebApplication.java?rev=618605&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/AbstractAdminWebApplication.java (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/AbstractAdminWebApplication.java Tue Feb  5 02:41:40 2008
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.portlets.wicket;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.apache.wicket.Response;
+import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.util.resource.IResourceStream;
+import org.apache.wicket.util.resource.UrlResourceStream;
+import org.apache.wicket.util.resource.locator.ResourceStreamLocator;
+import org.apache.wicket.util.string.Strings;
+import org.apache.wicket.util.file.IResourceFinder;
+
+/**
+ * Abstract Admin Wicket Application to load customized templates from /WEB-INF/templates/.
+ * 
+ * @author <a href="mailto:woonsan@apache.org">Woonsan Ko</a>
+ * @version $Id: $
+ */
+public abstract class AbstractAdminWebApplication extends WebApplication
+{
+
+	public abstract Class getHomePage();
+    
+	protected void init()
+	{
+        super.init();
+
+		// instruct the application to use our custom resource stream locator
+		getResourceSettings().setResourceStreamLocator(new TemplatesResourceStreamLocator());
+	}
+    
+    private class TemplatesResourceStreamLocator extends ResourceStreamLocator
+    {
+        
+        protected String templatesPath = "/WEB-INF/templates/";
+
+        public void setTemplatesPath(String templatesPath)
+        {
+            this.templatesPath = templatesPath;
+        }
+        
+        public String getTemplatesPath()
+        {
+            return this.templatesPath;
+        }
+
+        /**
+         * @see org.apache.wicket.util.resource.locator.ResourceStreamLocator#locate(java.lang.Class,
+         *      java.lang.String)
+         */
+        public IResourceStream locate(Class clazz, String path)
+        {
+            String location = this.templatesPath + path;
+            
+            try
+            {
+                // try to load the resource from the web context
+                URL url = getServletContext().getResource(location);
+                
+                if (url != null)
+                {
+                    return new UrlResourceStream(url);
+                }
+            }
+            catch (MalformedURLException e)
+            {
+                throw new WicketRuntimeException(e);
+            }
+
+            // resource not found; fall back on class loading
+            return super.locate(clazz, path);
+        }
+
+    }
+
+}

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/AdminWicketPortlet.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/AdminWicketPortlet.java?rev=618605&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/AdminWicketPortlet.java (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/AdminWicketPortlet.java Tue Feb  5 02:41:40 2008
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.portlets.wicket;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.HashMap;
+
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletResponse;
+
+import org.apache.wicket.util.string.StringList;
+import org.apache.wicket.util.string.IStringIterator;
+import org.apache.wicket.protocol.http.portlet.WicketPortlet;
+
+/**
+ * AdminWicketPortlet which overrides init() and processRequest() to pass cps: components to Wicket pages.
+ * 
+ * @author <a href="mailto:woonsan@apache.org">Woonsan Ko</a>
+ * @version $Id: $
+ */
+public class AdminWicketPortlet extends WicketPortlet
+{
+
+    public static final String SERVICE_COMPONENT_NAMES = "serviceComponentNames";
+    
+    protected StringList serviceComponentNameList;
+    protected Map serviceComponentsMap = null;
+
+    public void init(PortletConfig config) throws PortletException
+    {
+        super.init(config);
+        
+        String serviceComponentNames = config.getInitParameter(SERVICE_COMPONENT_NAMES);
+        
+        if (serviceComponentNames != null)
+        {
+            this.serviceComponentNameList = StringList.tokenize(serviceComponentNames);
+            this.serviceComponentsMap = new HashMap();
+            
+            for (int i = serviceComponentNameList.size() - 1; i >= 0; i--)
+            {
+                String serviceComponentName = serviceComponentNameList.get(i).trim();
+                
+                if ("".equals(serviceComponentName))
+                {
+                    this.serviceComponentNameList.remove(i);
+                }
+                else
+                {
+                    Object component = getPortletContext().getAttribute(serviceComponentName);
+                    this.serviceComponentsMap.put(serviceComponentName, component);
+                }
+            }
+        }
+    }
+    
+	protected void processRequest(PortletRequest request, PortletResponse response, String requestType, String pageType) throws PortletException, IOException
+    {
+        if (this.serviceComponentNameList != null)
+        {
+            for (IStringIterator it = this.serviceComponentNameList.iterator(); it.hasNext(); )
+            {
+                String serviceComponentName = it.next();
+                Object component = this.serviceComponentsMap.get(serviceComponentName);
+                request.setAttribute(serviceComponentName, component);
+            }
+        }
+        
+        super.processRequest(request, response, requestType, pageType);
+    }
+    
+}
\ No newline at end of file

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/Blank.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/Blank.gif?rev=618605&view=auto
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/Blank.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/LinkPropertyColumn$LinkPanel.html
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/LinkPropertyColumn%24LinkPanel.html?rev=618605&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/LinkPropertyColumn$LinkPanel.html (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/LinkPropertyColumn$LinkPanel.html Tue Feb  5 02:41:40 2008
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You 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.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml" >
+
+    <wicket:panel>
+        <a href="#" wicket:id="link"><span wicket:id="label">link</span></a>
+    </wicket:panel>
+    
+</html>
\ No newline at end of file

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/LinkPropertyColumn.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/LinkPropertyColumn.java?rev=618605&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/LinkPropertyColumn.java (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/LinkPropertyColumn.java Tue Feb  5 02:41:40 2008
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.portlets.wicket.component;
+
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.markup.html.link.PopupSettings;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+
+/**
+ * LinkPropertyColumn to show simple link column.
+ * 
+ * @author <a href="mailto:woonsan@apache.org">Woonsan Ko</a>
+ * @version $Id: $
+ */
+public abstract class LinkPropertyColumn extends PropertyColumn 
+{
+	private static final long serialVersionUID = 1L;
+
+    protected PopupSettings popupSettings;
+    protected IModel labelModel;
+
+    public LinkPropertyColumn(IModel displayModel, String sortProperty, String propertyExpression, PopupSettings popupSettings) 
+    {
+        this(displayModel, sortProperty, propertyExpression);
+        this.popupSettings = popupSettings;
+    }
+
+    public LinkPropertyColumn(IModel displayModel, IModel labelModel) 
+    {
+        super(displayModel, null);
+        this.labelModel = labelModel;
+    }
+
+    public LinkPropertyColumn(IModel displayModel, String sortProperty, String propertyExpression) 
+    {
+        super(displayModel, sortProperty, propertyExpression);
+    }
+
+    public LinkPropertyColumn(IModel displayModel, String propertyExpressions) 
+    {
+        super(displayModel, propertyExpressions);
+    }
+
+    public void populateItem(Item item, String componentId, IModel model) 
+    {
+        item.add(new LinkPanel(item, componentId, model));
+    }
+
+    public abstract void onClick(Item item, String componentId, IModel model);
+
+    public class LinkPanel extends Panel 
+    {
+        public LinkPanel(final Item item, final String componentId, final IModel model) 
+        {
+            super(componentId);
+
+            Link link = new Link("link") 
+            {
+                public void onClick() 
+                {
+                    LinkPropertyColumn.this.onClick(item, componentId, model);
+                }
+            };
+
+            link.setPopupSettings(popupSettings);
+
+            add(link);
+
+            IModel tmpLabelModel = labelModel;
+
+            if (labelModel == null) 
+            {
+                tmpLabelModel = createLabelModel(model);
+            }
+
+            link.add(new Label("label", tmpLabelModel));
+        }
+    }
+
+}
\ No newline at end of file

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/PortletOddEvenItem.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/PortletOddEvenItem.java?rev=618605&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/PortletOddEvenItem.java (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/PortletOddEvenItem.java Tue Feb  5 02:41:40 2008
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.portlets.wicket.component;
+
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.markup.repeater.OddEvenItem;
+import org.apache.wicket.markup.ComponentTag;
+
+/**
+ * PortletOddEvenItem to show rows with different colors.
+ * 
+ * @author <a href="mailto:woonsan@apache.org">Woonsan Ko</a>
+ * @version $Id: $
+ */
+public class PortletOddEvenItem extends OddEvenItem
+{
+	private static final long serialVersionUID = 1L;
+
+    private String evenClass = "portlet-section-body";
+    private String oddClass = "portlet-section-alternate";
+       
+	public PortletOddEvenItem(String id, int index, IModel model)
+	{
+		this(id, index, model, null, null);
+	}
+
+	public PortletOddEvenItem(String id, int index, IModel model, String evenClass, String oddClass)
+	{
+		super(id, index, model);
+        
+        if (evenClass != null)
+        {
+            this.evenClass = evenClass;
+        }
+        
+        if (oddClass != null)
+        {
+            this.oddClass = oddClass;
+        }
+	}
+    
+	protected void onComponentTag(ComponentTag tag)
+	{
+		super.onComponentTag(tag);
+		tag.put("class", (getIndex() % 2 == 0) ? this.evenClass : this.oddClass);
+	}
+}
\ No newline at end of file

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/Selected.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/Selected.gif?rev=618605&view=auto
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/Selected.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/SelectionImagePropertyColumn$ImagePanel.html
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/SelectionImagePropertyColumn%24ImagePanel.html?rev=618605&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/SelectionImagePropertyColumn$ImagePanel.html (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/SelectionImagePropertyColumn$ImagePanel.html Tue Feb  5 02:41:40 2008
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You 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.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml" >
+
+    <wicket:panel>
+        <img wicket:id="image" />
+    </wicket:panel>
+    
+</html>
\ No newline at end of file

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/SelectionImagePropertyColumn.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/SelectionImagePropertyColumn.java?rev=618605&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/SelectionImagePropertyColumn.java (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/wicket/component/SelectionImagePropertyColumn.java Tue Feb  5 02:41:40 2008
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.portlets.wicket.component;
+
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.markup.html.image.Image;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+
+/**
+ * SelectionImagePropertyColumn to show selection column with image icons.
+ * 
+ * @author <a href="mailto:woonsan@apache.org">Woonsan Ko</a>
+ * @version $Id: $
+ */
+public abstract class SelectionImagePropertyColumn extends PropertyColumn 
+{
+	private static final long serialVersionUID = 1L;
+    
+    protected String selectedImage = "Selected.gif";
+    protected String blankImage = "Blank.gif";
+    
+    protected String cellWidth = "1%";
+
+    public SelectionImagePropertyColumn(IModel displayModel, String propertyExpressions) 
+    {
+        super(displayModel, propertyExpressions);
+    }
+    
+    public void setSelectedImage(String selectedImage)
+    {
+        this.selectedImage = selectedImage;
+    }
+    
+    public String getSelectedImage()
+    {
+        return this.selectedImage;
+    }
+    
+    public void setBlankImage(String blankImage)
+    {
+        this.blankImage = blankImage;
+    }
+    
+    public String getBlankImage()
+    {
+        return this.blankImage;
+    }
+    
+    public void setCellWidth(String cellWidth)
+    {
+        this.cellWidth = cellWidth;
+    }
+    
+    public String getCellWidth()
+    {
+        return this.cellWidth;
+    }
+
+    public void populateItem(Item item, String componentId, IModel model) 
+    {
+        IModel imageModel = new Model(isSelectedItem(item, componentId, model) ? getSelectedImage() : getBlankImage());
+        item.add(new AttributeModifier("width", true, new Model(getCellWidth())));
+        item.add(new ImagePanel(item, componentId, model, imageModel));
+    }
+    
+    protected boolean isSelectedItem(Item item, String componentId, IModel model)
+    {
+        return false;
+    }
+    
+    public class ImagePanel extends Panel 
+    {
+        public ImagePanel(final Item item, final String componentId, final IModel model, final IModel imageModel) 
+        {
+            super(componentId);
+            Image image = new Image("image", imageModel);
+            add(image);
+        }
+    }
+
+}
\ No newline at end of file

Modified: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/portlet.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/portlet.xml?rev=618605&r1=618604&r2=618605&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/portlet.xml (original)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/portlet.xml Tue Feb  5 02:41:40 2008
@@ -201,6 +201,36 @@
     </portlet-preferences>
 </portlet>
 
+<portlet>
+    <description>The Wicket User Browser displays a list of users managed in this portal. From here you can select users for editing. Place this portlet on the same page as the Wicket User Details portlet.</description>
+    <description xml:lang="ja">ユーザーブラウザはこのポータル内で管理されているユーザーのリストを表示します。このポートレットにより、ユーザーを追加・編集することができます。</description>
+    <description xml:lang="zh">显示门户的用户列表。可以添加、修改用户资料。</description>
+    <description xml:lang="zh-TW">顯示門戶的用戶列表。可以添加、修改用戶資料。</description>        
+    <portlet-name>WicketUserBrowserPortlet</portlet-name>
+    <display-name>Wicket User Browser</display-name>
+    <display-name xml:lang="ja">ユーザーブラウザ</display-name>
+    <display-name xml:lang="zh">浏览用户</display-name>
+    <display-name xml:lang="zh-TW">流覽用戶</display-name>
+    <portlet-class>org.apache.jetspeed.portlets.wicket.AdminWicketPortlet</portlet-class>
+    <init-param>
+      <name>wicketFilterPath</name>
+      <value>/userbrowser</value>
+    </init-param>
+    <init-param>
+      <name>serviceComponentNames</name>
+      <value>cps:UserManager</value>
+    </init-param>
+    <supports>
+      <mime-type>*/*</mime-type>
+      <portlet-mode>VIEW</portlet-mode>
+    </supports>
+    <portlet-info>
+        <title>User Browser</title>
+        <short-title>Users</short-title>
+        <keywords>admin,security,users</keywords>            
+    </portlet-info>
+</portlet>
+
 <portlet id="UserDetailsPortlet">
     <description>The User Details portlet displays a users details in a tabbed view. From here you can add, edit, and delete User information. Place this portlet on the same page as the User Browser portlet.</description>
     <description xml:lang="ja">ユーザー詳細ポートレットはタブで表示されたユーザー情報の詳細を表示します。このポートレットにより、ユーザー情報の追加・編集することができます。</description>

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.html
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.html?rev=618605&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.html (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.html Tue Feb  5 02:41:40 2008
@@ -0,0 +1,23 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<wicket:panel>
+	<tr>
+		<span wicket:id="headers">
+			<th wicket:id="header" align='center' class="portlet-section-header" nowrap><span wicket:id="label">[header-label]</span></th>
+		</span>
+	</tr>
+</wicket:panel>
\ No newline at end of file

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.html
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.html?rev=618605&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.html (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.html Tue Feb  5 02:41:40 2008
@@ -0,0 +1,24 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<wicket:panel>
+	<tr class="portlet-section-footer">
+		<td wicket:id="span" class="portlet-section-footer">
+			<div style="float: left;" class="navigatorLabel"><span wicket:id="navigatorLabel">[navigator-label]</span></div>
+			<div style="text-align: right;" class="navigator"><span wicket:id="navigator">[navigator]</span></div>
+		</td>
+	</tr>
+</wicket:panel>
\ No newline at end of file

Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/NoRecordsToolbar.html
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/NoRecordsToolbar.html?rev=618605&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/NoRecordsToolbar.html (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/templates/org/apache/wicket/extensions/markup/html/repeater/data/table/NoRecordsToolbar.html Tue Feb  5 02:41:40 2008
@@ -0,0 +1,23 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<wicket:panel>
+	<tr class="portlet-section-body">
+		<td wicket:id="td" class="portlet-section-body">
+			<span wicket:id="msg" class="norecords">[no records found message]</span>
+		</td>
+	</tr>
+</wicket:panel>
\ No newline at end of file

Modified: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/web.xml?rev=618605&r1=618604&r2=618605&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/web.xml (original)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/web.xml Tue Feb  5 02:41:40 2008
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You 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
@@ -88,7 +88,23 @@
 		<param-name>contextConfigLocation</param-name>
 		<param-value>/WEB-INF/springmvc/context/applicationContext.xml</param-value>
 	</context-param>
-
+    
+    <filter>
+      <filter-name>WicketUserBrowserApplication</filter-name>
+      <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
+      <init-param>
+        <param-name>applicationClassName</param-name>
+        <param-value>org.apache.jetspeed.portlets.security.users.WicketUserBrowserApplication</param-value>
+      </init-param>
+    </filter>
+    
+    <filter-mapping>
+      <filter-name>WicketUserBrowserApplication</filter-name>
+      <url-pattern>/userbrowser/*</url-pattern>
+      <dispatcher>REQUEST</dispatcher>
+      <dispatcher>INCLUDE</dispatcher>
+    </filter-mapping>
+    
     <listener>
       <listener-class>org.apache.jetspeed.webapp.logging.Log4JConfigurator</listener-class>
     </listener>



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org