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 ta...@apache.org on 2009/04/28 02:04:33 UTC

svn commit: r769206 [1/3] - in /portals/jetspeed-2/applications/j2-admin/trunk: ./ src/main/java/org/apache/jetspeed/portlets/ src/main/java/org/apache/jetspeed/portlets/prm/ src/main/java/org/apache/jetspeed/portlets/prm/application/ src/main/java/org...

Author: taylor
Date: Tue Apr 28 00:04:31 2009
New Revision: 769206

URL: http://svn.apache.org/viewvc?rev=769206&view=rev
Log:
https://issues.apache.org/jira/browse/JS2-946
contribution from Ruben de Gooijer

Added:
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/KeyVal.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/MetadataPanel.html   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/MetadataPanel.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/application/
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/application/ApplicationDetailsApplication.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/application/ApplicationDetailsView.html   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/application/ApplicationDetailsView.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/application/ApplicationModel.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/application/DetailsPanel.html   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/application/DetailsPanel.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/application/UserAttributePanel.html   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/application/UserAttributePanel.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/model/
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/model/ApplicationModel.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/model/DescriptionModel.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/model/LocalizedFieldModel.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/model/PortletModel.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/DetailsPanel.html   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/DetailsPanel.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/InitParameterPanel.html   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/ParameterPanel.html   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/ParameterPanel.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PortletDetailsApplication.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PortletDetailsView.html   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PortletDetailsView.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PreferencePanel.html   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PreferencePanel.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/SecurityPanel.html   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/EditorTemplate.html   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/EditorTemplate.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/LocalizedDescriptionEditor.html   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/LocalizedDescriptionEditor.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/SelectableModel.java   (with props)
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/add.png   (with props)
Removed:
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationModel.java
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListEdit2.html
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/PortletDefinitionModel.java
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/PortletsListHome.html
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/PortletsListHome.java
Modified:
    portals/jetspeed-2/applications/j2-admin/trunk/pom.xml
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/AdminPortletWebPage.java
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationDataProvider.java
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListApplication.java
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListEdit.html
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListEdit.properties
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome$ActionPanel.html
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome$RunningPanel.html
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.html
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.java
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.properties
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/PortletDataProvider.java
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/PortletDefinitionBean.java
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/UploadPortletApp.html
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/UploadPortletApp.properties
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/AdminWicketPortlet.java
    portals/jetspeed-2/applications/j2-admin/trunk/src/webapp/WEB-INF/portlet.xml
    portals/jetspeed-2/applications/j2-admin/trunk/src/webapp/WEB-INF/web.xml

Modified: portals/jetspeed-2/applications/j2-admin/trunk/pom.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/pom.xml?rev=769206&r1=769205&r2=769206&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/pom.xml (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/pom.xml Tue Apr 28 00:04:31 2009
@@ -396,6 +396,7 @@
                 <include>**/*.properties</include>
                 <include>**/*.html</include>
                 <include>**/*.gif</include>
+                <include>**/*.png</include>
             </includes>
             </resource>
         </resources>

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/AdminPortletWebPage.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/AdminPortletWebPage.java?rev=769206&r1=769205&r2=769206&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/AdminPortletWebPage.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/AdminPortletWebPage.java Tue Apr 28 00:04:31 2009
@@ -21,8 +21,10 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.portlet.GenericPortlet;
 import javax.portlet.PortletRequest;
 import javax.portlet.PortletResponse;
+import javax.portlet.RenderResponse;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequestWrapper;
 
@@ -151,7 +153,27 @@
     {
         return ((PortletRequestContext) RequestContext.get()).getPortletRequest();
     }
-
+    
+    protected void setTitle(String title)
+    {
+        PortletResponse pr = getPortletResponse();
+        if (pr instanceof RenderResponse) {
+            RenderResponse rr = (RenderResponse) pr;
+            rr.setTitle(title);
+        }
+    }
+    
+    protected String getTitle()
+    {
+        return (String)getPortletRequest().getAttribute(AdminWicketPortlet.PORTLET_TITLE);
+    }
+    
+    protected String getPortletName()
+    {
+        GenericPortlet portlet = (GenericPortlet) getPortletRequest().getAttribute(AdminWicketPortlet.PORTLET);
+        return portlet.getPortletName();
+    }
+    
     protected PortletResponse getPortletResponse()
     {
         return ((PortletRequestContext) RequestContext.get()).getPortletResponse();

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationDataProvider.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationDataProvider.java?rev=769206&r1=769205&r2=769206&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationDataProvider.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationDataProvider.java Tue Apr 28 00:04:31 2009
@@ -31,6 +31,7 @@
 import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
 import org.apache.wicket.markup.repeater.data.IDataProvider;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -55,11 +56,12 @@
     {
         this.serviceLocator = locator;
         setSort("name", true);
+        
+        refresh();
     }
     
     public Iterator<ApplicationBean> iterator(int first, int count)
     {
-        retrieveApplications();
         int last = first + count;
         if (last > portletApps.size())
             last = portletApps.size() - 1;
@@ -91,7 +93,7 @@
     {
     }
 
-    public void retrieveApplications()
+    public void refresh()
     {
         if (searchMode)
         {
@@ -229,7 +231,7 @@
     
     public IModel<ApplicationBean> model(ApplicationBean object)
     {
-        return new ApplicationModel((ApplicationBean)object);
+        return new Model<ApplicationBean>((ApplicationBean)object);
     }
     
     public AppOrderBy getOrderBy()

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListApplication.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListApplication.java?rev=769206&r1=769205&r2=769206&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListApplication.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListApplication.java Tue Apr 28 00:04:31 2009
@@ -27,7 +27,8 @@
 public class ApplicationsListApplication extends AbstractAdminWebApplication
 {
     public static final String PRM_TOPIC = "org.apache.jetspeed.portlets.prm.Topic";
-    public static final String SELECTED_APP_EVENT = "org.apache.jetspeed.portlets.prm.SelectedAppEvent";
+    public static final String SELECTED_APPLICATION_EVENT = "org.apache.jetspeed.portlets.prm.SelectedAppEvent";
+    public static final String SELECTED_PORTLET_EVENT = "org.apache.jetspeed.portlets.prm.SelectedPortletEvent";
     
     @Override
     public Class<ApplicationsListHome> getHomePage()

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListEdit.html
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListEdit.html?rev=769206&r1=769205&r2=769206&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListEdit.html (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListEdit.html Tue Apr 28 00:04:31 2009
@@ -1,5 +1,21 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
+<!-- 
+  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" 
 	xmlns:wicket="http://wicket.sourceforge.net/" 

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListEdit.properties
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListEdit.properties?rev=769206&r1=769205&r2=769206&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListEdit.properties (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListEdit.properties Tue Apr 28 00:04:31 2009
@@ -1,3 +1,17 @@
+# 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.
 save=Save
 rowsDisplayed=No. of Rows Displayed:
 errorReadonly=Preference 'rows' is readonly, cannot update

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome$ActionPanel.html
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome%24ActionPanel.html?rev=769206&r1=769205&r2=769206&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome$ActionPanel.html (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome$ActionPanel.html Tue Apr 28 00:04:31 2009
@@ -1,6 +1,22 @@
+<!-- 
+  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>
-<a style='font-size: 8pt;' href="#" wicket:id="start"><wicket:message key="start"/></a>
-<a style='font-size: 8pt;' href="#" wicket:id="stop"><wicket:message key="stop"/></a>
-<a style='font-size: 8pt;' href="#" wicket:id="undeploy"><wicket:message key="undeploy"/></a>
-<a style='font-size: 8pt;' href="#" wicket:id="delete"><wicket:message key="delete"/></a>
+<a href="#" wicket:id="start"><wicket:message key="start"/></a>
+<a href="#" wicket:id="stop"><wicket:message key="stop"/></a>
+<a href="#" wicket:id="undeploy"><wicket:message key="undeploy"/></a>
+<a href="#" wicket:id="delete"><wicket:message key="delete"/></a>
 </wicket:panel>
\ No newline at end of file

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome$RunningPanel.html
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome%24RunningPanel.html?rev=769206&r1=769205&r2=769206&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome$RunningPanel.html (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome$RunningPanel.html Tue Apr 28 00:04:31 2009
@@ -1,3 +1,19 @@
+<!-- 
+  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>
 <img wicket:id="running"/>
 </wicket:panel>
\ No newline at end of file

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.html
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.html?rev=769206&r1=769205&r2=769206&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.html (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.html Tue Apr 28 00:04:31 2009
@@ -1,116 +1,75 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
-<html 
-	xmlns="http://www.w3.org/1999/xhtml" 
-	xmlns:wicket="http://wicket.sourceforge.net/" 
-	xml:lang="en" 
-	lang="en">
-<head>
-<style type="text/css">
-.feedbackPanelERROR {font-size: 9px;color: red; }
-.feedbackPanelWARN {font-size: 9px;color: orange; }
-.feedbackPanelINFO {font-size: 9px;color: blue; }
-
-.newjet .alternate { padding:4px; border:1px solid #e9e9e9; font-size:8pt; font-family:Verdana,Arial; border-collapse:collapse; color:green;}
-
-. wicket_orderUp
-{
-   padding:4px; background:#efefef; border:1px solid #e9e9e9;  font-size:8pt; font-family:Verdana,Arial; border-collapse:collapse;
-}
-. wicket_orderDown
-{
-   padding:4px; background:#efefef; border:1px solid #e9e9e9;  font-size:8pt; font-family:Verdana,Arial; border-collapse:collapse;
-}
-. wicket_orderNone
-{
-   padding:4px; background:#efefef; border:1px solid #e9e9e9;  font-size:8pt; font-family:Verdana,Arial; border-collapse:collapse;
-}
-
-.newjet .portlet-section-header 
-{
-   padding:4px; background:#efefef; border:1px solid #e9e9e9;  font-size:8pt; font-family:Verdana,Arial; border-collapse:collapse;
-}
-
-.newjet .portlet-section-body 
-{
-	padding:4px; border:1px solid #e9e9e9; font-size:8pt; font-family:Verdana,Arial; border-collapse:collapse; 
-}
-
-.newjet .portlet-section-alternate
-{
-	padding:4px; border:1px solid #e9e9e9; font-size:8pt; font-family:Verdana,Arial; border-collapse:collapse; 
-}
-
-.newjet .portlet-section-footer
-{
-   padding:4px; background:#efefef; border:1px solid #e9e9e9;  font-size:8pt; font-family:Verdana,Arial; border-collapse:collapse; padding-top:5px;
-}; 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!-- 
+  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"
+	xmlns:wicket="http://wicket.sourceforge.net/" xml:lang="en" lang="en">
+<head></head>
+<body>
 
-</style>
+<div class="portlet-message-error" wicket:id="feedback"></div>
 
-</head>
-<body>
-<div class='newjet'>
-<table border='1' height="100%">
-<tr>
-   <td border='0' width="15px">&nbsp;</td>                
-   <td border='1'>                
-	<table class='portlet.section.body'>
-		<tr class='portlet.section.header'>
-    	<td height = "100%" valign = "top" border='1' >
-		  <form wicket:id="appSearchForm">
-          <input type='text' wicket:id="appSearchField" size="25" style='font-size: 10px;'></input>
-          <input type='submit' wicket:id="appSearchButton" value='search'/> |          
-		  <a wicket:id="appDeploy" style='font-size: 10px;'><wicket:message key="deploy"/></a> |
-		  <a wicket:id="appHome" style='font-size: 10px;'><wicket:message key="refresh"/></a> 
-         </form> 
-		</td>
-		</tr>
-		<tr>
-		<td>
-			<table>
-			   <tr><td>	
-			   <table>	
-				<tr class='portlet.section.header'>
-			        <th wicket:id="appOrderByName" style='padding:4px; background:#efefef; border:1px solid #e9e9e9;  font-size:8pt; font-family:Verdana,Arial; border-collapse:collapse;' class='portlet-section-header'><wicket:message key="name"/></th>
-			        <th wicket:id="appOrderByVersion" class='portlet-section-header'><wicket:message key="version"/></th>
-			        <th wicket:id="appOrderByPath" class='portlet-section-header'><wicket:message key="path"/></th>
-			        <th class='portlet-section-header'><wicket:message key="status"/></th>
-			        <th class='portlet-section-header'><wicket:message key="actions"/></th>
-			    </tr>
-			    <tr wicket:id="appTable" class='portlet.section.body'>
-			        <td class='portlet-section-body'><a href='#' wicket:id='nameLink'><span wicket:id="nameLabel">[name]</span></a></td>
-			        <td class='portlet-section-body'><span wicket:id="version">[version]</span></td>
-			        <td class='portlet-section-body'><span wicket:id="path">[path]</span></td>
-			        <td class='portlet-section-body'><span wicket:id="running">[running]</span></td>	        
-			        <td class='portlet-section-body'><span wicket:id="actions">[actions]</span></td>  
-			    </tr>
-			   </table>
-			   		<span wicket:id="appNavigator">[dataview navigator]</span>
-    				<div wicket:id="feedback"></div>			   	
-			   </td>
-			   <td>
-			   	<table>
-				    <tr>
-				        <th wicket:id="plOrderByName" style='font-size: 10px;'>Portlet Name</th>
-				        <th wicket:id="plOrderByDisplayName" style='font-size: 10px;'>Display Name</th>
-				    </tr>
-				    <tr wicket:id="portletTable">
-				        <td><span style='font-size: 10px;' wicket:id="name">[name]</span></td>
-				        <td><span style='font-size: 10px;' wicket:id="displayName">[title]</span></td>
-				    </tr>
-				 </table>
-				 <span wicket:id="plNavigator">[dataview navigator]</span>				 
-			   </td>
-			   </tr>			    
-			</table>
-		</td>
-		</tr>		    
-	</table>
-   </td>   
-</tr>
+<form wicket:id="appSearchForm"><input type='text'
+	wicket:id="appSearchField" /> <input type='submit'
+	wicket:id="appSearchButton" value='search' /> | <a
+	wicket:id="appDeploy"><wicket:message key="deploy" /></a> | <a
+	wicket:id="appHome"><wicket:message key="refresh" /></a></form>
+
+<table style="border-collapse: collapse; width: 350px; margin-top: 8px; float: left;">
+	<tr>
+		<th class="portlet-section-header" colspan="5">Applications</th>
+	</tr>
+	<tr>
+		<th class="portlet-section-subheader"><a href="#"
+			wicket:id="appOrderByName"><wicket:message key="name" /></a></th>
+		<th class="portlet-section-subheader"><a href="#"
+			wicket:id="appOrderByVersion"><wicket:message key="version" /></a></th>
+		<th class="portlet-section-subheader"><a href="#"
+			wicket:id="appOrderByPath"><wicket:message key="path" /></a></th>
+		<th class="portlet-section-subheader">Status</th>
+		<th class="portlet-section-subheader">Actions</th>
+	</tr>
+	<tr wicket:id="appTable">
+		<td class="portlet-section-body"><a href='#' wicket:id='nameLink'><span
+			wicket:id="nameLabel">[name]</span></a></td>
+		<td class="portlet-section-body"><span wicket:id="version">[version]</span></td>
+		<td class="portlet-section-body"><span wicket:id="path">[path]</span></td>
+		<td class="portlet-section-body"><span wicket:id="running">[running]</span></td>
+		<td class="portlet-section-body"><span wicket:id="actions">[actions]</span></td>
+	</tr>
+	<tr class="portlet-section-footer">
+		<td colspan="5"><span wicket:id="appNavigator">[dataview navigator]</span></td>
+	</tr>
+</table>
+<table style="border-collapse: collapse; margin-top: 8px; width: 150px; margin-left: 3px; float: left;">
+	<tr>
+		<th class="portlet-section-header">Portlets</th>
+	</tr>
+	<tr>
+		<th class="portlet-section-subheader"><span
+			wicket:id="plOrderByName">Portlet Name</span></th>
+	</tr>
+	<tr wicket:id="portletTable">
+		<td class="portlet-section-body"><a href="#" wicket:id="nameLink"><span
+			wicket:id="nameLabel">[name]</span></a></td>
+	</tr>
+	<tr class="portlet-section-footer">
+		<td><span wicket:id="plNavigator">[dataview navigator]</span></td>
+	</tr>
 </table>
-<br/>
-</div>
 </body>
 </html>
\ No newline at end of file

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.java?rev=769206&r1=769205&r2=769206&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.java Tue Apr 28 00:04:31 2009
@@ -23,14 +23,14 @@
 import org.apache.jetspeed.portlets.AdminPortletWebPage;
 import org.apache.jetspeed.portlets.prm.ApplicationDataProvider.AppOrderBy;
 import org.apache.jetspeed.portlets.prm.PortletDataProvider.PortletOrderBy;
-import org.apache.jetspeed.portlets.prm.PortletsListHome.ActionPanel;
 import org.apache.jetspeed.tools.pamanager.PortletApplicationManagement;
 import org.apache.jetspeed.tools.pamanager.servletcontainer.ApplicationServerManager;
 import org.apache.jetspeed.tools.pamanager.servletcontainer.ApplicationServerManagerResult;
 import org.apache.portals.messaging.PortletMessaging;
-import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ResourceReference;
 import org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByBorder;
+import org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink;
+import org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink.VoidCssProvider;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.Button;
 import org.apache.wicket.markup.html.form.Form;
@@ -42,7 +42,6 @@
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.markup.repeater.data.DataView;
-import org.apache.wicket.model.AbstractReadOnlyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
@@ -59,123 +58,196 @@
 {
     private static final String APP_TABLE = "appTable";
     private static final String PORTLET_TABLE = "portletTable";
-    private final static Logger log = LoggerFactory.getLogger(ApplicationsListHome.class);
+    private final static Logger log = LoggerFactory
+            .getLogger(ApplicationsListHome.class);
+
     public static final String PORTLET_REGISTRY_MANAGER = "Portlet Registry Manager";
-    
+
     @SuppressWarnings({ "unchecked", "serial"})
     public ApplicationsListHome()
     {
         SearchForm form = new SearchForm("appSearchForm");
         add(form);
-        
+
         // Construct Data View
-        final ApplicationDataProvider dp = new ApplicationDataProvider(this.getServiceLocator());
-        final DataView dataView = new DataView(APP_TABLE, dp)
+        final ApplicationDataProvider applicationDataProvider = new ApplicationDataProvider(this.getServiceLocator());
+        final PortletDataProvider portletListDataProvider = new PortletDataProvider("j2-admin", 
+                getPortletRequest().getLocale(),
+                getServiceLocator());
+
+        final DataView dataView = new DataView(APP_TABLE,
+                applicationDataProvider)
         {
+
             protected void populateItem(final Item item)
             {
-                ApplicationBean pa = (ApplicationBean) item.getModelObject();
+                final ApplicationBean pa = (ApplicationBean) item
+                        .getModelObject();
                 Link nameLink = new Link("nameLink")
                 {
+
                     public void onClick()
                     {
-                        ApplicationsListHome home = (ApplicationsListHome)this.getPage();                        
-                        String appName = this.get("nameLabel").getDefaultModelObjectAsString();                        
-                        System.out.println("clicking on " + appName);
+                        ApplicationsListHome home = (ApplicationsListHome) this
+                                .getPage();
+                        String appName = this.get("nameLabel")
+                                .getDefaultModelObjectAsString();
+
+                        portletListDataProvider.changeAppName(appName);
+
                         try
                         {
-                            PortletMessaging.publish(home.getPortletRequest(), 
-                                    ApplicationsListApplication.PRM_TOPIC, ApplicationsListApplication.SELECTED_APP_EVENT, appName);
-                            final PortletDataProvider dp = new PortletDataProvider(appName, getPortletRequest().getLocale(), getServiceLocator());                            
-                            dp.retrievePortlets();
-                            
-                        }
-                        catch (NotSerializableException e)
+                            PortletMessaging
+                                    .publish(
+                                            home.getPortletRequest(),
+                                            ApplicationsListApplication.PRM_TOPIC,
+                                            ApplicationsListApplication.SELECTED_APPLICATION_EVENT,
+                                            pa);
+                        } catch (NotSerializableException e)
                         {
-                            log.error("failed to publish message: " + appName);
+                            e.printStackTrace();
                         }
                     }
-                };                
+                };
                 nameLink.add(new Label("nameLabel", pa.getName()));
                 item.add(nameLink);
                 item.add(new Label("version", pa.getVersion()));
                 item.add(new Label("path", pa.getPath()));
                 item.add(new RunningPanel("running", item.getModel()));
                 item.add(new ActionPanel("actions", item.getModel()));
-//                item.add(new AttributeModifier("class", true, new AbstractReadOnlyModel()
-//                {
-//                    public Object getObject()
-//                    {
-//                        return (item.getIndex() % 2 == 1) ? "portlet-section-alternate" : "class='portlet-section-body'";
-//                    }
-//                }));
             }
         };
         dataView.setItemsPerPage(this.getPreferenceAsInteger("rows"));
-        add(new OrderByBorder("appOrderByName", "name", dp)
+
+        add(new OrderByLink("appOrderByName", "name", applicationDataProvider,
+                VoidCssProvider.getInstance())
         {
+
             protected void onSortChanged()
             {
-                if (dp.getOrderBy() == AppOrderBy.NAME_ASC)
-                    dp.setOrderBy(AppOrderBy.NAME_DESC);                    
+                if (applicationDataProvider.getOrderBy() == AppOrderBy.NAME_ASC)
+                    applicationDataProvider.setOrderBy(AppOrderBy.NAME_DESC);
                 else
-                    dp.setOrderBy(AppOrderBy.NAME_ASC);
+                    applicationDataProvider.setOrderBy(AppOrderBy.NAME_ASC);
                 dataView.setCurrentPage(0);
             }
         });
-        add(new OrderByBorder("appOrderByVersion", "version", dp)
+
+        add(new OrderByLink("appOrderByVersion", "version",
+                applicationDataProvider, VoidCssProvider.getInstance())
         {
+
             protected void onSortChanged()
             {
-                if (dp.getOrderBy() == AppOrderBy.VERSION_ASC)
-                    dp.setOrderBy(AppOrderBy.VERSION_DESC);
+                if (applicationDataProvider.getOrderBy() == AppOrderBy.VERSION_ASC)
+                    applicationDataProvider.setOrderBy(AppOrderBy.VERSION_DESC);
                 else
-                    dp.setOrderBy(AppOrderBy.VERSION_ASC);
+                    applicationDataProvider.setOrderBy(AppOrderBy.VERSION_ASC);
                 dataView.setCurrentPage(0);
-            }            
+            }
         });
-        add(new OrderByBorder("appOrderByPath", "path", dp)
+
+        add(new OrderByLink("appOrderByPath", "path", applicationDataProvider,
+                VoidCssProvider.getInstance())
         {
+
             protected void onSortChanged()
             {
-                if (dp.getOrderBy() == AppOrderBy.PATH_ASC)
-                    dp.setOrderBy(AppOrderBy.PATH_DESC);
+                if (applicationDataProvider.getOrderBy() == AppOrderBy.PATH_ASC)
+                    applicationDataProvider.setOrderBy(AppOrderBy.PATH_DESC);
                 else
-                    dp.setOrderBy(AppOrderBy.PATH_ASC);
+                    applicationDataProvider.setOrderBy(AppOrderBy.PATH_ASC);
                 dataView.setCurrentPage(0);
             }
         });
-        
+
         add(dataView);
         add(new PagingNavigator("appNavigator", dataView));
         FeedbackPanel feedback = new FeedbackPanel("feedback");
-        feedback.setEscapeModelStrings(false);       
+        feedback.setEscapeModelStrings(false);
         add(feedback);
-        dp.retrieveApplications();
-        retrievePortletList();
+
+        final DataView portletListView = new DataView(PORTLET_TABLE,
+                portletListDataProvider)
+        {
+
+            protected void populateItem(final Item item)
+            {
+                final PortletDefinitionBean portletDefinitionBean = (PortletDefinitionBean) item.getModelObject();
+
+                Link link = new Link("nameLink", item.getModel())
+                {
+
+                    @Override
+                    public void onClick()
+                    {
+                        try
+                        {
+                            PortletMessaging
+                            .publish(getPortletRequest(), ApplicationsListApplication.PRM_TOPIC,
+                                    ApplicationsListApplication.SELECTED_PORTLET_EVENT, portletDefinitionBean);
+                        } catch (NotSerializableException e)
+                        {
+                            // TODO Auto-generated catch block
+                            e.printStackTrace();
+                        }
+                    }
+                };
+
+                link.add(new Label("nameLabel", portletDefinitionBean.getDisplayName()));
+
+                item.add(link);
+            }
+        };
+
+        portletListView.setItemsPerPage(10);
+
+        add(new OrderByBorder("plOrderByName", "name", portletListDataProvider)
+        {
+
+            protected void onSortChanged()
+            {
+                if (portletListDataProvider.getOrderBy() == PortletOrderBy.NAME_ASC)
+                    portletListDataProvider
+                            .setOrderBy(PortletOrderBy.NAME_DESC);
+                else
+                    portletListDataProvider.setOrderBy(PortletOrderBy.NAME_ASC);
+                dataView.setCurrentPage(0);
+            }
+        });
+
+        add(portletListView);
+        add(new PagingNavigator("plNavigator", portletListView));
     }
 
     @SuppressWarnings("serial")
     class RunningPanel extends Panel
     {
+
         public RunningPanel(String id, final IModel<ApplicationBean> model)
         {
             super(id, model);
-            ApplicationBean pa = (ApplicationBean)model.getObject();
+            ApplicationBean pa = (ApplicationBean) model.getObject();
             if (pa.isRunning())
             {
-                add(new Image("running", new ResourceReference(ApplicationsListHome.class, "running.gif")) {});
-            }
-            else
+                add(new Image("running", new ResourceReference(
+                        ApplicationsListHome.class, "running.gif"))
+                {
+                });
+            } else
             {
-                add(new Image("running", new ResourceReference(ApplicationsListHome.class, "stop.gif")) {});                
+                add(new Image("running", new ResourceReference(
+                        ApplicationsListHome.class, "stop.gif"))
+                {
+                });
             }
-        }        
+        }
     }
-    
+
     @SuppressWarnings("serial")
     class ActionPanel extends Panel
     {
+
         /**
          * @param id
          *            component id
@@ -186,135 +258,204 @@
         public ActionPanel(String id, final IModel model)
         {
             super(id, model);
-            ApplicationsListHome home = ApplicationsListHome.this;     
-            ApplicationBean pab = (ApplicationBean)model.getObject();
-            PortletApplication pa = home.getServiceLocator().getPortletRegistry().getPortletApplication(pab.getName());
-            ApplicationServerManager asm = home.getServiceLocator().getApplicationServerManager();
+            ApplicationsListHome home = ApplicationsListHome.this;
+            ApplicationBean pab = (ApplicationBean) model.getObject();
+            PortletApplication pa = home.getServiceLocator()
+                    .getPortletRegistry().getPortletApplication(pab.getName());
+            ApplicationServerManager asm = home.getServiceLocator()
+                    .getApplicationServerManager();
             boolean isLocal = pa.getApplicationType() == PortletApplication.LOCAL;
-            boolean isAdmin = (pa.getContextPath().equals(home.getPortletRequest().getContextPath()));
+            boolean isAdmin = (pa.getContextPath().equals(home
+                    .getPortletRequest().getContextPath()));
             Link start = new Link("start")
             {
+
                 public void onClick()
                 {
-                    ApplicationsListHome home = (ApplicationsListHome)this.getPage();     
-                    ApplicationBean pab = (ApplicationBean)model.getObject();
-                    PortletApplication pa = home.getServiceLocator().getPortletRegistry().getPortletApplication(pab.getName());
-                    ApplicationServerManager asm = home.getServiceLocator().getApplicationServerManager();                    
-                    FeedbackPanel feed = (FeedbackPanel)home.get("feedback");
+                    ApplicationsListHome home = (ApplicationsListHome) this
+                            .getPage();
+                    ApplicationBean pab = (ApplicationBean) model.getObject();
+                    PortletApplication pa = home.getServiceLocator()
+                            .getPortletRegistry().getPortletApplication(
+                                    pab.getName());
+                    ApplicationServerManager asm = home.getServiceLocator()
+                            .getApplicationServerManager();
+                    FeedbackPanel feed = (FeedbackPanel) home.get("feedback");
                     if (isServerReady(asm, feed, "start", pa, pab))
                     {
                         try
                         {
-                            ApplicationServerManagerResult result = asm.start(pa.getContextPath());
+                            ApplicationServerManagerResult result = asm
+                                    .start(pa.getContextPath());
                             if (!result.isOk())
                             {
-                                throw new Exception(getString("appServerNotConfigured"));
-                            }
-                            else
+                                throw new Exception(
+                                        getString("appServerNotConfigured"));
+                            } else
                             {
-                                feed.info(messageSubstition("startOK", new String[] {"path"}, new Object[] {pab.getPath()}));
-                                home.getServiceLocator().getAuditActivity().logAdminRegistryActivity(
-                                        getAuthenticatedUsername(), getIPAddress(), AuditActivity.REGISTRY_START, PORTLET_REGISTRY_MANAGER);
+                                feed.info(messageSubstition("startOK",
+                                        new String[]
+                                        { "path"}, new Object[]
+                                        { pab.getPath()}));
+                                home.getServiceLocator().getAuditActivity()
+                                        .logAdminRegistryActivity(
+                                                getAuthenticatedUsername(),
+                                                getIPAddress(),
+                                                AuditActivity.REGISTRY_START,
+                                                PORTLET_REGISTRY_MANAGER);
                             }
+                        } catch (Exception e)
+                        {
+                            feed.error(messageSubstition("startFailure",
+                                    new String[]
+                                    { "path", "msg"}, new Object[]
+                                    { pab.getPath(), e.getMessage()}));
                         }
-                        catch (Exception e)
-                        {                            
-                            feed.error(messageSubstition("startFailure", new String[] {"path", "msg"}, new Object[] {pab.getPath(), e.getMessage()}));
-                        }
-                    }                    
+                    }
                 }
             };
-            start.setVisible((asm != null && !pab.isRunning()) && !(isLocal || isAdmin));      
+            start.setVisible((asm != null && !pab.isRunning())
+                    && !(isLocal || isAdmin));
             Link stop = new Link("stop")
             {
+
                 public void onClick()
-                {                
-                    ApplicationsListHome home = (ApplicationsListHome)this.getPage();     
-                    ApplicationBean pab = (ApplicationBean)model.getObject();
-                    PortletApplication pa = home.getServiceLocator().getPortletRegistry().getPortletApplication(pab.getName());
-                    ApplicationServerManager asm = home.getServiceLocator().getApplicationServerManager();                    
-                    FeedbackPanel feed = (FeedbackPanel)home.get("feedback");
+                {
+                    ApplicationsListHome home = (ApplicationsListHome) this
+                            .getPage();
+                    ApplicationBean pab = (ApplicationBean) model.getObject();
+                    PortletApplication pa = home.getServiceLocator()
+                            .getPortletRegistry().getPortletApplication(
+                                    pab.getName());
+                    ApplicationServerManager asm = home.getServiceLocator()
+                            .getApplicationServerManager();
+                    FeedbackPanel feed = (FeedbackPanel) home.get("feedback");
                     if (isServerReady(asm, feed, "stop", pa, pab))
                     {
                         try
                         {
-                            ApplicationServerManagerResult result = asm.stop(pa.getContextPath());
+                            ApplicationServerManagerResult result = asm.stop(pa
+                                    .getContextPath());
                             if (!result.isOk())
                             {
-                                throw new Exception(getString("appServerNotConfigured"));
-                            }
-                            else
+                                throw new Exception(
+                                        getString("appServerNotConfigured"));
+                            } else
                             {
-                                feed.info(messageSubstition("stopOK", new String[] {"path"}, new Object[] {pab.getPath()}));
-                                home.getServiceLocator().getAuditActivity().logAdminRegistryActivity(
-                                        getAuthenticatedUsername(), getIPAddress(), AuditActivity.REGISTRY_STOP, PORTLET_REGISTRY_MANAGER);
+                                feed.info(messageSubstition("stopOK",
+                                        new String[]
+                                        { "path"}, new Object[]
+                                        { pab.getPath()}));
+                                home.getServiceLocator().getAuditActivity()
+                                        .logAdminRegistryActivity(
+                                                getAuthenticatedUsername(),
+                                                getIPAddress(),
+                                                AuditActivity.REGISTRY_STOP,
+                                                PORTLET_REGISTRY_MANAGER);
                             }
-                        }
-                        catch (Exception e)
+                        } catch (Exception e)
                         {
-                            feed.error(messageSubstition("stopFailure", new String[] {"path", "msg"}, new Object[] {pab.getPath(), e.getMessage()}));
+                            feed.error(messageSubstition("stopFailure",
+                                    new String[]
+                                    { "path", "msg"}, new Object[]
+                                    { pab.getPath(), e.getMessage()}));
                         }
-                    }                    
+                    }
                 }
             };
-            stop.setVisible((asm != null && pab.isRunning()) && !(isLocal || isAdmin));  
+            stop.setVisible((asm != null && pab.isRunning())
+                    && !(isLocal || isAdmin));
             Link undeploy = new Link("undeploy")
             {
+
                 public void onClick()
                 {
-                    ApplicationsListHome home = (ApplicationsListHome)this.getPage();     
-                    ApplicationBean pab = (ApplicationBean)model.getObject();
-                    PortletApplication pa = home.getServiceLocator().getPortletRegistry().getPortletApplication(pab.getName());
-                    ApplicationServerManager asm = home.getServiceLocator().getApplicationServerManager();                    
-                    FeedbackPanel feed = (FeedbackPanel)home.get("feedback");
+                    ApplicationsListHome home = (ApplicationsListHome) this
+                            .getPage();
+                    ApplicationBean pab = (ApplicationBean) model.getObject();
+                    PortletApplication pa = home.getServiceLocator()
+                            .getPortletRegistry().getPortletApplication(
+                                    pab.getName());
+                    ApplicationServerManager asm = home.getServiceLocator()
+                            .getApplicationServerManager();
+                    FeedbackPanel feed = (FeedbackPanel) home.get("feedback");
                     if (isServerReady(asm, feed, "undeploy", pa, pab))
                     {
                         try
                         {
-                            ApplicationServerManagerResult result = asm.undeploy(pa.getContextPath());
+                            ApplicationServerManagerResult result = asm
+                                    .undeploy(pa.getContextPath());
                             if (!result.isOk())
                             {
-                                throw new Exception(getString("appServerNotConfigured"));
-                            }
-                            else
+                                throw new Exception(
+                                        getString("appServerNotConfigured"));
+                            } else
                             {
-                                feed.info(messageSubstition("undeployOK", new String[] {"path"}, new Object[] {pab.getPath()}));
-                                home.getServiceLocator().getAuditActivity().logAdminRegistryActivity(
-                                        getAuthenticatedUsername(), getIPAddress(), AuditActivity.REGISTRY_UNDEPLOY, PORTLET_REGISTRY_MANAGER);                                
+                                feed.info(messageSubstition("undeployOK",
+                                        new String[]
+                                        { "path"}, new Object[]
+                                        { pab.getPath()}));
+                                home
+                                        .getServiceLocator()
+                                        .getAuditActivity()
+                                        .logAdminRegistryActivity(
+                                                getAuthenticatedUsername(),
+                                                getIPAddress(),
+                                                AuditActivity.REGISTRY_UNDEPLOY,
+                                                PORTLET_REGISTRY_MANAGER);
                             }
-                        }
-                        catch (Exception e)
+                        } catch (Exception e)
                         {
-                            feed.error(messageSubstition("undeployFailure", new String[] {"path", "msg"}, new Object[] {pab.getPath(), e.getMessage()}));
+                            feed.error(messageSubstition("undeployFailure",
+                                    new String[]
+                                    { "path", "msg"}, new Object[]
+                                    { pab.getPath(), e.getMessage()}));
                         }
-                    }                                        
+                    }
                 }
             };
-            undeploy.setVisible((asm != null && !pab.isRunning()) && !(isLocal || isAdmin));  
+            undeploy.setVisible((asm != null && !pab.isRunning())
+                    && !(isLocal || isAdmin));
             Link del = new Link("delete")
             {
+
                 public void onClick()
-                {      
-                    ApplicationsListHome home = (ApplicationsListHome)this.getPage();     
-                    ApplicationBean pab = (ApplicationBean)model.getObject();
-                    PortletApplication pa = home.getServiceLocator().getPortletRegistry().getPortletApplication(pab.getName());
-                    ApplicationServerManager asm = home.getServiceLocator().getApplicationServerManager();                    
-                    PortletApplicationManagement pam = home.getServiceLocator().getPortletApplicationManager();
-                    FeedbackPanel feed = (FeedbackPanel)home.get("feedback");
-                    if (isServerReady(asm, feed, "remove from registry", pa, pab))
+                {
+                    ApplicationsListHome home = (ApplicationsListHome) this
+                            .getPage();
+                    ApplicationBean pab = (ApplicationBean) model.getObject();
+                    PortletApplication pa = home.getServiceLocator()
+                            .getPortletRegistry().getPortletApplication(
+                                    pab.getName());
+                    ApplicationServerManager asm = home.getServiceLocator()
+                            .getApplicationServerManager();
+                    PortletApplicationManagement pam = home.getServiceLocator()
+                            .getPortletApplicationManager();
+                    FeedbackPanel feed = (FeedbackPanel) home.get("feedback");
+                    if (isServerReady(asm, feed, "remove from registry", pa,
+                            pab))
                     {
                         try
                         {
                             pam.unregisterPortletApplication(pa.getName());
-                            feed.info(messageSubstition("deleteOK", new String[] {"path"}, new Object[] {pab.getPath()}));
-                            home.getServiceLocator().getAuditActivity().logAdminRegistryActivity(
-                                    getAuthenticatedUsername(), getIPAddress(), AuditActivity.REGISTRY_DELETE, PORTLET_REGISTRY_MANAGER);                            
-                        }
-                        catch (Exception e)
+                            feed.info(messageSubstition("deleteOK",
+                                    new String[]
+                                    { "path"}, new Object[]
+                                    { pab.getPath()}));
+                            home.getServiceLocator().getAuditActivity()
+                                    .logAdminRegistryActivity(
+                                            getAuthenticatedUsername(),
+                                            getIPAddress(),
+                                            AuditActivity.REGISTRY_DELETE,
+                                            PORTLET_REGISTRY_MANAGER);
+                        } catch (Exception e)
                         {
-                            feed.error(messageSubstition("deleteFailure", new String[] {"path", "msg"}, new Object[] {pab.getPath(), e.getMessage()}));                            
+                            feed.error(messageSubstition("deleteFailure",
+                                    new String[]
+                                    { "path", "msg"}, new Object[]
+                                    { pab.getPath(), e.getMessage()}));
                         }
-                    }                                        
+                    }
                 }
             };
             del.setVisible(!(isLocal || isAdmin) && !pab.isRunning());
@@ -324,127 +465,91 @@
             add(del);
         }
     }
-    
-    protected boolean isServerReady(ApplicationServerManager asm, FeedbackPanel feedback, String operation, 
-            PortletApplication pa, ApplicationBean pab)
+
+    protected boolean isServerReady(ApplicationServerManager asm,
+            FeedbackPanel feedback, String operation, PortletApplication pa,
+            ApplicationBean pab)
     {
         if (pa == null)
         {
-            feedback.error(messageSubstition("serverReadyFailure", new String[] {"path", "operation"}, new Object[] {pab.getPath(), operation}));                            
+            feedback.error(messageSubstition("serverReadyFailure", new String[]
+            { "path", "operation"}, new Object[]
+            { pab.getPath(), operation}));
             return false;
-        }
-        else if (asm == null || !asm.isConnected())
+        } else if (asm == null || !asm.isConnected())
         {
-            feedback.error(messageSubstition("serverNotAvailable", new String[] {"path", "operation"}, new Object[] {pab.getPath(), operation}));                            
+            feedback.error(messageSubstition("serverNotAvailable", new String[]
+            { "path", "operation"}, new Object[]
+            { pab.getPath(), operation}));
             return false;
         }
         return true;
     }
-        
-    @SuppressWarnings({ "unchecked", "serial"})
+
+    @SuppressWarnings(
+    { "unchecked", "serial"})
     private class SearchForm extends Form<Void>
     {
+
         private String appSearchField;
 
         public SearchForm(String name)
         {
             super(name);
-            add(new TextField("appSearchField", new PropertyModel(this, "appSearchField")));
+
+            add(new TextField("appSearchField", new PropertyModel(this,
+                    "appSearchField")));
             add(new Button("appSearchButton", new ResourceModel("search"))
             {
+
                 @Override
                 public void onSubmit()
                 {
-                    DataView view = (DataView)this.getParent().getParent().get(APP_TABLE);
-                    ApplicationDataProvider dp = (ApplicationDataProvider)view.getDataProvider();
+                    DataView view = (DataView) this.getParent().getParent()
+                            .get(APP_TABLE);
+                    ApplicationDataProvider dp = (ApplicationDataProvider) view
+                            .getDataProvider();
                     dp.searchApplications(getAppSearchField());
                 }
             });
             add(new Link("appDeploy")
             {
+
                 @Override
                 public void onClick()
                 {
-                    ApplicationsListHome home = (ApplicationsListHome)this.getPage();                                        
-                    UploadPortletApp upa = new UploadPortletApp(home.getServiceLocator().getDeploymentManager());
+                    ApplicationsListHome home = (ApplicationsListHome) this
+                            .getPage();
+                    UploadPortletApp upa = new UploadPortletApp(home
+                            .getServiceLocator().getDeploymentManager());
                     this.setResponsePage(upa);
                 }
             });
             add(new Link("appHome")
             {
+
                 @Override
                 public void onClick()
                 {
-                    DataView view = (DataView)this.getParent().getParent().get(APP_TABLE);
-                    ApplicationDataProvider dp = (ApplicationDataProvider)view.getDataProvider();
+                    DataView view = (DataView) this.getParent().getParent()
+                            .get(APP_TABLE);
+                    ApplicationDataProvider dp = (ApplicationDataProvider) view
+                            .getDataProvider();
                     dp.setSearchMode(false);
-                    dp.retrieveApplications();
+                    dp.refresh();
                 }
-            });                    
+            });
         }
-        
+
         public String getAppSearchField()
         {
             return appSearchField;
         }
 
-        
         public void setAppSearchField(String appSearchField)
         {
             this.appSearchField = appSearchField;
         }
-        
-    }
-    
-    @SuppressWarnings({ "unchecked", "serial"})
-    protected void retrievePortletList()
-    {
-        String appName= (String) 
-            PortletMessaging.receive(getPortletRequest(), ApplicationsListApplication.PRM_TOPIC, ApplicationsListApplication.SELECTED_APP_EVENT);        
-        final PortletDataProvider dp = new PortletDataProvider(appName, getPortletRequest().getLocale(), getServiceLocator());
-        final DataView dataView = new DataView(PORTLET_TABLE, dp)
-        {
-            protected void populateItem(final Item item)
-            {
-                PortletDefinitionBean pa = (PortletDefinitionBean) item.getModelObject();
-                item.add(new Label("name", pa.getName()));
-                item.add(new Label("displayName", pa.getDisplayName()));
-//                item.add(new ActionPanel("actions", item.getModel()));
-//                item.add(new AttributeModifier("class", true, new AbstractReadOnlyModel()
-//                {
-//                    public Object getObject()
-//                    {
-//                        return (item.getIndex() % 2 == 1) ? "background-color: #fff;" : "background-color: #ffebcd;";
-//                    }
-//                }));
-            }
-        };
-        dataView.setItemsPerPage(10);
-        add(new OrderByBorder("plOrderByName", "name", dp)
-        {
-            protected void onSortChanged()
-            {
-                if (dp.getOrderBy() == PortletOrderBy.NAME_ASC)
-                    dp.setOrderBy(PortletOrderBy.NAME_DESC);
-                else
-                    dp.setOrderBy(PortletOrderBy.NAME_ASC);                
-                dataView.setCurrentPage(0);
-            }
-        });
-        add(new OrderByBorder("plOrderByDisplayName", "displayName", dp)
-        {
-            protected void onSortChanged()
-            {
-                if (dp.getOrderBy() == PortletOrderBy.DISPLAY_NAME_ASC)
-                    dp.setOrderBy(PortletOrderBy.DISPLAY_NAME_DESC);
-                else
-                    dp.setOrderBy(PortletOrderBy.DISPLAY_NAME_ASC);                
-                dataView.setCurrentPage(0);
-            }
-        });
-        
-        add(dataView);
-        add(new PagingNavigator("plNavigator", dataView));
-        dp.retrievePortlets();
+
     }
 }

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.properties
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.properties?rev=769206&r1=769205&r2=769206&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.properties (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.properties Tue Apr 28 00:04:31 2009
@@ -1,3 +1,17 @@
+# 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.
 deploy=Deploy...
 refresh=Refresh
 search=Search

Added: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/KeyVal.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/KeyVal.java?rev=769206&view=auto
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/KeyVal.java (added)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/KeyVal.java Tue Apr 28 00:04:31 2009
@@ -0,0 +1,42 @@
+/*
+ * 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.prm;
+
+import java.io.Serializable;
+
+public class KeyVal implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+    private String key;
+    private String value;
+
+    public KeyVal(String key, String value)
+    {
+        this.key = key;
+        this.value = value;
+    }
+
+    public String getKey()
+    {
+        return key;
+    }
+
+    public String getValue()
+    {
+        return value;
+    }
+}

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/KeyVal.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/KeyVal.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/MetadataPanel.html
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/MetadataPanel.html?rev=769206&view=auto
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/MetadataPanel.html (added)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/MetadataPanel.html Tue Apr 28 00:04:31 2009
@@ -0,0 +1,42 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
+<!-- 
+  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" 
+	xmlns:wicket="http://wicket.sourceforge.net/" 
+	xml:lang="en" 
+	lang="en">
+<head></head>
+<body>
+	<wicket:extend>
+		<th class="portlet-section-subheader">Name</th>
+		<th class="portlet-section-subheader">Locale</th>
+		<th class="portlet-section-subheader">Value</th>
+		<wicket:fragment wicket:id="itemFragment">
+			<td class="portlet-section-body"><input type="text" wicket:id="name"/></td>
+			<td class="portlet-section-body"><input type="text" wicket:id="locale"/></td>
+			<td class="portlet-section-body"><input type="text" wicket:id="value"/></td>
+		</wicket:fragment>
+		<wicket:fragment wicket:id="newFragment">
+			<td style="border-top:1px dashed #000;"><input wicket:id="newName" style="margin-top:10px;" type="text"/></td>
+			<td style="border-top:1px dashed #000;"><input wicket:id="newLocale" style="margin-top:10px;" type="text"/></td>
+			<td style="border-top:1px dashed #000;"><input wicket:id="newValue" style="margin-top:10px;" type="text"/></td>
+		</wicket:fragment>
+	</wicket:extend>
+</body>
+</html>
\ No newline at end of file

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/MetadataPanel.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/MetadataPanel.html
------------------------------------------------------------------------------
    svn:keywords = Id

Added: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/MetadataPanel.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/MetadataPanel.java?rev=769206&view=auto
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/MetadataPanel.java (added)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/MetadataPanel.java Tue Apr 28 00:04:31 2009
@@ -0,0 +1,250 @@
+/*
+ * 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.prm;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+
+import org.apache.jetspeed.components.portletregistry.RegistryException;
+import org.apache.jetspeed.om.portlet.GenericMetadata;
+import org.apache.jetspeed.om.portlet.LocalizedField;
+import org.apache.jetspeed.portlets.prm.model.ApplicationModel;
+import org.apache.jetspeed.portlets.prm.model.LocalizedFieldModel;
+import org.apache.jetspeed.portlets.prm.model.PortletModel;
+import org.apache.jetspeed.portlets.wicket.component.editor.EditorTemplate;
+import org.apache.wicket.markup.html.form.Button;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.panel.Fragment;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+
+public class MetadataPanel extends EditorTemplate<LocalizedFieldModel>
+{
+    private String newName, newValue, newLocale;
+    private MetadataHandler handler;
+
+    private abstract class MetadataHandler implements Serializable
+    {
+
+        public abstract GenericMetadata getMetadata();
+
+        public abstract void save() throws RegistryException;
+
+        public abstract LocalizedFieldModel newLocalizedFieldModel(LocalizedField field);
+    }
+
+    public MetadataPanel(String id, final ApplicationModel application)
+    {
+        super(id, application);
+
+        this.handler = new MetadataHandler()
+        {
+
+            @Override
+            public GenericMetadata getMetadata()
+            {
+                return application.getObject().getMetadata();
+            }
+
+            @Override
+            public void save() throws RegistryException
+            {
+                application.getServiceLocator().getPortletRegistry().updatePortletApplication(application.getObject());
+            }
+
+            @Override
+            public LocalizedFieldModel newLocalizedFieldModel(LocalizedField field)
+            {
+                return new LocalizedFieldModel(application, field);
+            }
+
+        };
+    }
+
+    public MetadataPanel(String id, final PortletModel portlet)
+    {
+        super(id, portlet);
+
+        this.handler = new MetadataHandler()
+        {
+
+            @Override
+            public GenericMetadata getMetadata()
+            {
+                return portlet.getObject().getMetadata();
+            }
+
+            @Override
+            public void save() throws RegistryException
+            {
+                portlet.getParent().getServiceLocator().getPortletRegistry().savePortletDefinition(portlet.getObject());
+            }
+
+            @Override
+            public LocalizedFieldModel newLocalizedFieldModel(LocalizedField field)
+            {
+                return new LocalizedFieldModel(portlet, field);
+            }
+
+        };
+    }
+
+    @Override
+    protected Button saveButton(String componentId)
+    {
+        return new Button(componentId)
+        {
+
+            @Override
+            public void onSubmit()
+            {
+                if (newName != null && newValue != null && newLocale != null)
+                {
+                    LocalizedField field = handler.getMetadata().createLocalizedField();
+                    field.setLocale(new Locale(newLocale));
+                    field.setName(newName);
+                    field.setValue(newValue);
+                    handler.getMetadata().addField(field);
+                }
+
+                try
+                {
+                    handler.save();
+                }
+                catch (RegistryException e)
+                {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+            }
+        };
+    }
+
+    @Override
+    public void buildNew(Fragment fragment)
+    {
+        fragment.add(new TextField<String>("newName", new PropertyModel<String>(this, "newName")));
+        fragment.add(new TextField<String>("newValue", new PropertyModel<String>(this, "newValue")));
+        fragment.add(new TextField<String>("newLocale", new PropertyModel<String>(this, "newLocale")));
+    }
+
+    @Override
+    public int getColumnCount()
+    {
+        return 4;
+    }
+
+    @Override
+    public void buildItems(Fragment fragment, final LocalizedFieldModel model)
+    {
+        fragment.add(new TextField<String>("name", new Model<String>()
+        {
+
+            @Override
+            public String getObject()
+            {
+                return model.getName();
+            }
+
+            @Override
+            public void setObject(String object)
+            {
+                model.setName(object);
+            }
+        }));
+        fragment.add(new TextField<String>("value", new Model<String>()
+        {
+
+            @Override
+            public String getObject()
+            {
+                return model.getValue();
+            }
+
+            @Override
+            public void setObject(String object)
+            {
+                model.setValue(object);
+            }
+        }));
+        fragment.add(new TextField<String>("locale", new Model<String>()
+        {
+
+            @Override
+            public String getObject()
+            {
+                return model.getLocale();
+            }
+
+            @Override
+            public void setObject(String object)
+            {
+                model.setLocale(object);
+            }
+        }));
+    }
+
+    @Override
+    public void delete(IModel<LocalizedFieldModel>[] fields)
+    {
+        Iterator<LocalizedField> it = handler.getMetadata().getFields().iterator();
+        while (it.hasNext())
+        {
+            String id = it.next().getName();
+            for (IModel<LocalizedFieldModel> field : fields)
+            {
+                if (field.getObject().getName().equals(id))
+                {
+                    it.remove();
+                    break;
+                }
+            }
+        }
+
+        try
+        {
+            handler.save();
+        }
+        catch (RegistryException e)
+        {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public Iterator<IModel<LocalizedFieldModel>> getItemModels()
+    {
+        List<IModel<LocalizedFieldModel>> list = new ArrayList<IModel<LocalizedFieldModel>>();
+        for (LocalizedField field : handler.getMetadata().getFields())
+        {
+            list.add(new Model<LocalizedFieldModel>(handler.newLocalizedFieldModel(field)));
+        }
+
+        return list.iterator();
+    }
+
+    @Override
+    public IModel<LocalizedFieldModel> getNewRowModel(LocalizedFieldModel object)
+    {
+        return new Model<LocalizedFieldModel>(object);
+    }
+}

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/MetadataPanel.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/MetadataPanel.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/PortletDataProvider.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/PortletDataProvider.java?rev=769206&r1=769205&r2=769206&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/PortletDataProvider.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/PortletDataProvider.java Tue Apr 28 00:04:31 2009
@@ -1,3 +1,19 @@
+/*
+ * 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.prm;
 
 import java.util.ArrayList;
@@ -14,10 +30,10 @@
 import org.apache.jetspeed.portlets.JetspeedServiceLocator;
 import org.apache.jetspeed.search.ParsedObject;
 import org.apache.jetspeed.search.SearchResults;
-import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
 import org.apache.wicket.markup.repeater.data.IDataProvider;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -40,18 +56,18 @@
     private final static Logger log = LoggerFactory.getLogger(PortletDataProvider.class);
     private PortletOrderBy orderBy = PortletOrderBy.NAME_ASC;
     
-    public PortletDataProvider(String appName, Locale locale, JetspeedServiceLocator locator)
+    public PortletDataProvider(String defaultAppName, Locale locale, JetspeedServiceLocator locator)
     {
         this.serviceLocator = locator;
         this.locale = locale;
-        this.appName = appName;
+        this.appName = defaultAppName;
         setSort("name", true);
+
+        refresh();
     }
     
     public Iterator<PortletDefinitionBean> iterator(int first, int count)
     {
-        System.out.println("retrieving portlets " + count);
-        retrievePortlets(); 
         int last = first + count;
         if (last > portlets.size())
             last = portlets.size() - 1;
@@ -84,7 +100,7 @@
         super.detach();        
     }
 
-    public void retrievePortlets()
+    public void refresh()
     {
         if (searchMode)
         {
@@ -97,16 +113,17 @@
         }
         else
         {
-            System.out.println("retrieving portlets " + appName);
-            if (appName == null)
-                appName = "j2-admin";
+            if (getAppName() == null) {
+                changeAppName("j2-admin");
+            }
+
             portlets = new ArrayList<PortletDefinitionBean>();
-            PortletApplication app = serviceLocator.getPortletRegistry().getPortletApplication(appName);
+            PortletApplication app = serviceLocator.getPortletRegistry().getPortletApplication(getAppName());
             if (app != null)
             {
                 for (PortletDefinition def : app.getPortlets())
                 {
-                    portlets.add(new PortletDefinitionBean(def, locale));
+                    portlets.add(new PortletDefinitionBean(def, getAppName(), locale));
                 }
             }
             sort(portlets, this.orderBy);            
@@ -125,7 +142,7 @@
     
     public IModel<PortletDefinitionBean> model(PortletDefinitionBean object)
     {
-        return new PortletDefinitionModel((PortletDefinitionBean)object);
+        return new Model<PortletDefinitionBean>(object);
     }
 
     public void sort(List<PortletDefinitionBean> list, PortletOrderBy orderBy)
@@ -211,7 +228,7 @@
                         PortletDefinition pd = serviceLocator.getPortletRegistry().getPortletDefinitionByUniqueName(name);
                         if (pd != null)
                         {
-                            searchResults.add(new PortletDefinitionBean(pd, locale));
+                            searchResults.add(new PortletDefinitionBean(pd, paName, locale));
                         }                        
                     }
                 }
@@ -234,6 +251,16 @@
     public void setOrderBy(PortletOrderBy orderBy)
     {
         this.orderBy = orderBy;
-    }    
+    }
+
+	public void changeAppName(String appName) {
+		this.appName = appName;
+		
+		refresh();
+	}
+
+	public String getAppName() {
+		return appName;
+	}    
     
 }

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/PortletDefinitionBean.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/PortletDefinitionBean.java?rev=769206&r1=769205&r2=769206&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/PortletDefinitionBean.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/PortletDefinitionBean.java Tue Apr 28 00:04:31 2009
@@ -27,11 +27,13 @@
     protected String name;
     protected String uniqueName;
     protected String displayName;
+    protected String appName;
     private static final long serialVersionUID = 1L;    
         
-    public PortletDefinitionBean(PortletDefinition portlet, Locale locale)
+    public PortletDefinitionBean(PortletDefinition portlet, String appName, Locale locale)
     {
         this.name = portlet.getPortletName();
+        this.appName = appName;
         this.uniqueName = portlet.getUniqueName();
         DisplayName dn = portlet.getDisplayName(locale);
         if (dn == null)
@@ -39,7 +41,12 @@
         else
             this.displayName = dn.getDisplayName();
     }
-
+    
+    public String getUniqueName()
+    {
+        return uniqueName;
+    }
+    
     public String toString()
     {
         return getDisplayName();
@@ -54,5 +61,10 @@
     {
         return name;
     }
+
+    public String getAppName()
+    {
+        return appName;
+    }
     
 }



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