Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/ParameterPanel.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/ParameterPanel.java?rev=769862&r1=769861&r2=769862&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/ParameterPanel.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/ParameterPanel.java
 Wed Apr 29 18:26:19 2009
@@ -19,13 +19,19 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 
+import 
org.apache.jetspeed.components.portletregistry.FailedToStorePortletDefinitionException;
+import org.apache.jetspeed.components.portletregistry.PortletRegistry;
 import org.apache.jetspeed.components.portletregistry.RegistryException;
 import org.apache.jetspeed.om.portlet.Description;
 import org.apache.jetspeed.om.portlet.InitParam;
+import org.apache.jetspeed.om.portlet.PortletApplication;
 import org.apache.jetspeed.om.portlet.PortletDefinition;
-import org.apache.jetspeed.portlets.prm.model.DescriptionModel;
-import org.apache.jetspeed.portlets.prm.model.PortletModel;
+import org.apache.jetspeed.portlets.JetspeedServiceLocator;
+import org.apache.jetspeed.portlets.prm.DescriptionBean;
+import org.apache.jetspeed.portlets.prm.PortletApplicationNodeBean;
+import org.apache.jetspeed.portlets.wicket.AbstractAdminWebApplication;
 import org.apache.jetspeed.portlets.wicket.component.editor.EditorTemplate;
 import 
org.apache.jetspeed.portlets.wicket.component.editor.LocalizedDescriptionEditor;
 import org.apache.wicket.markup.html.form.Button;
@@ -40,11 +46,18 @@
 
 public class ParameterPanel extends EditorTemplate<InitParam>
 {
-    private String newName, newLocale, newDescription, newValue;
+    private static final long serialVersionUID = 1L;
+    
+    private PortletApplicationNodeBean paNodeBean;
+    private String newName;
+    private String newLocale;
+    private String newDescription;
+    private String newValue;
 
-    public ParameterPanel(String id, PortletModel model)
+    public ParameterPanel(String id, PortletApplicationNodeBean paNodeBean)
     {
-        super(id, model);
+        super(id);
+        this.paNodeBean = paNodeBean;
     }
 
     @Override
@@ -68,44 +81,62 @@
         fragment.add(new TextField<String>("name", new 
PropertyModel<String>(model, "name")));
         fragment.add(new TextField<String>("value", new 
PropertyModel<String>(model, "value")));
 
-        fragment.add(new LocalizedDescriptionEditor("localizationEditor", 
getDefaultModel())
+        JetspeedServiceLocator locator = ((AbstractAdminWebApplication) 
getApplication()).getServiceLocator();
+        
+        fragment.add(new LocalizedDescriptionEditor("localizationEditor", 
locator, paNodeBean, model.getParamName())
         {
 
             @Override
-            public IDataProvider<DescriptionModel> getDataProvider()
+            public IDataProvider<DescriptionBean> getDataProvider()
             {
-                PortletDefinition portletModel = (PortletDefinition) 
getDefaultModelObject();
-                final InitParam param = 
portletModel.getInitParam(model.getParamName());
+                PortletRegistry registry = ((AbstractAdminWebApplication) 
getApplication()).getServiceLocator().getPortletRegistry();
+                PortletApplication app = 
registry.getPortletApplication(paNodeBean.getApplicationName());
+                PortletDefinition def = app.getPortlet(paNodeBean.getName());
 
-                List<DescriptionModel> list = new 
ArrayList<DescriptionModel>();
+                final InitParam param = def.getInitParam(model.getParamName());
 
-                Iterator<Description> desc = 
param.getDescriptions().iterator();
-                while (desc.hasNext())
+                List<DescriptionBean> list = new ArrayList<DescriptionBean>();
+
+                for (Description description : param.getDescriptions())
                 {
-                    list.add(new DescriptionModel(param, desc.next()));
+                    list.add(new DescriptionBean(description));
                 }
 
-                return new ListDataProvider<DescriptionModel>(list);
+                return new ListDataProvider<DescriptionBean>(list);
             }
 
             @Override
             protected Button saveButton(String componentId)
             {
-                final PortletModel portlet = (PortletModel) getDefaultModel();
                 return new Button(componentId)
                 {
 
                     @Override
                     public void onSubmit()
                     {
+                        PortletRegistry registry = 
((AbstractAdminWebApplication) 
getApplication()).getServiceLocator().getPortletRegistry();
+                        PortletApplication app = 
registry.getPortletApplication(paNodeBean.getApplicationName());
+                        PortletDefinition def = 
app.getPortlet(paNodeBean.getName());
+                        
                         if (newLocale != null && newDescription != null)
                         {
-                            
model.addDescription(newLocale).setDescription(newDescription);
+                            Locale locale = new Locale(newLocale);
+                            Description description = 
def.getDescription(locale);
+                            
+                            if (description == null)
+                            {
+                                description = def.addDescription(newLocale);
+                            }
+                            
+                            description.setDescription(newDescription);
+                            
+                            newLocale = null;
+                            newDescription = null;
                         }
 
                         try
                         {
-                            
portlet.getParent().getServiceLocator().getPortletRegistry().savePortletDefinition(portlet.getObject());
+                            registry.savePortletDefinition(def);
                         }
                         catch (RegistryException e)
                         {
@@ -117,11 +148,38 @@
             }
 
             @Override
-            public void delete(IModel<DescriptionModel>[] fields)
+            public void delete(IModel<DescriptionBean>[] fields)
             {
-                for (IModel<DescriptionModel> field : fields)
+                try
                 {
-                    field.getObject().remove();
+                    PortletRegistry registry = ((AbstractAdminWebApplication) 
getApplication()).getServiceLocator().getPortletRegistry();
+                    PortletApplication app = 
registry.getPortletApplication(paNodeBean.getApplicationName());
+                    PortletDefinition def = 
app.getPortlet(paNodeBean.getName());
+                    InitParam initParam = def.getInitParam(name);
+                    
+                    if (initParam != null)
+                    {
+                        for (Iterator<Description> it = 
initParam.getDescriptions().iterator(); it.hasNext(); )
+                        {
+                            Description description = it.next();
+                            
+                            for (IModel<DescriptionBean> descriptionBeanModel 
: fields)
+                            {
+                                if 
(descriptionBeanModel.getObject().getLocale().equals(description.getLocale()))
+                                {
+                                    it.remove();
+                                    break;
+                                }
+                            }
+                        }
+                    
+                        registry.savePortletDefinition(def);
+                    }
+                }
+                catch (FailedToStorePortletDefinitionException e)
+                {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
                 }
             }
         });
@@ -131,12 +189,16 @@
     @Override
     public void delete(IModel<InitParam>[] fields)
     {
-        PortletModel portletModel = (PortletModel) getDefaultModel();
+        PortletRegistry registry = ((AbstractAdminWebApplication) 
getApplication()).getServiceLocator().getPortletRegistry();
+        PortletApplication app = 
registry.getPortletApplication(paNodeBean.getApplicationName());
+        PortletDefinition def = app.getPortlet(paNodeBean.getName());
 
-        Iterator<InitParam> it = 
portletModel.getObject().getInitParams().iterator();
+        Iterator<InitParam> it = def.getInitParams().iterator();
         while (it.hasNext())
         {
-            String id = it.next().getParamName();
+            InitParam initParam = it.next();
+            String id = initParam.getParamName();
+            
             for (IModel<InitParam> field : fields)
             {
                 if (field.getObject().getParamName().equals(id))
@@ -149,7 +211,7 @@
 
         try
         {
-            
portletModel.getParent().getServiceLocator().getPortletRegistry().savePortletDefinition(portletModel.getObject());
+            registry.savePortletDefinition(def);
         }
         catch (RegistryException e)
         {
@@ -162,7 +224,10 @@
     @Override
     public Iterator<IModel<InitParam>> getItemModels()
     {
-        PortletDefinition def = (PortletDefinition) getDefaultModelObject();
+        PortletRegistry registry = ((AbstractAdminWebApplication) 
getApplication()).getServiceLocator().getPortletRegistry();
+        PortletApplication app = 
registry.getPortletApplication(paNodeBean.getApplicationName());
+        PortletDefinition def = app.getPortlet(paNodeBean.getName());
+        
         return new 
ModelIteratorAdapter<InitParam>(def.getInitParams().iterator())
         {
 
@@ -184,17 +249,18 @@
     @Override
     protected Button saveButton(String componentId)
     {
-        final PortletModel portletModel = (PortletModel) getDefaultModel();
         return new Button(componentId)
         {
-
             @Override
             public void onSubmit()
             {
+                PortletRegistry registry = ((AbstractAdminWebApplication) 
getApplication()).getServiceLocator().getPortletRegistry();
+                PortletApplication app = 
registry.getPortletApplication(paNodeBean.getApplicationName());
+                PortletDefinition def = app.getPortlet(paNodeBean.getName());
 
                 if (newName != null && newValue != null)
                 {
-                    InitParam param = 
portletModel.getObject().addInitParam(newName);
+                    InitParam param = def.addInitParam(newName);
                     param.setParamValue(newValue);
 
                     if (newLocale != null && newDescription != null)
@@ -202,11 +268,16 @@
                         Description desc = param.addDescription(newLocale);
                         desc.setDescription(newDescription);
                     }
+                    
+                    newName = null;
+                    newValue = null;
+                    newLocale = null;
+                    newDescription = null;
                 }
 
                 try
                 {
-                    
portletModel.getParent().getServiceLocator().getPortletRegistry().savePortletDefinition(portletModel.getObject());
+                    registry.savePortletDefinition(def);
                 }
                 catch (RegistryException e)
                 {

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PortletDetailsView.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PortletDetailsView.java?rev=769862&r1=769861&r2=769862&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PortletDetailsView.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PortletDetailsView.java
 Wed Apr 29 18:26:19 2009
@@ -16,16 +16,13 @@
  */
 package org.apache.jetspeed.portlets.prm.portlet;
 
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.jetspeed.portlets.AdminPortletWebPage;
-import org.apache.jetspeed.portlets.prm.MetadataPanel;
 import org.apache.jetspeed.portlets.prm.ApplicationsListApplication;
-import org.apache.jetspeed.portlets.prm.PortletDefinitionBean;
-import org.apache.jetspeed.portlets.prm.model.ApplicationModel;
-import org.apache.jetspeed.portlets.prm.model.PortletModel;
+import org.apache.jetspeed.portlets.prm.MetadataPanel;
+import org.apache.jetspeed.portlets.prm.PortletApplicationNodeBean;
 import org.apache.portals.messaging.PortletMessaging;
 import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
 import org.apache.wicket.extensions.markup.html.tabs.ITab;
@@ -36,29 +33,25 @@
 
 public class PortletDetailsView extends AdminPortletWebPage
 {
-    private Map<String, ITab> tabs;
     private String title;
     private boolean dirty = true;
-    private PortletModel portletDefinitionModel;
+    private PortletApplicationNodeBean paNodeBean;
 
     public PortletDetailsView()
     {
-        tabs = new HashMap<String, ITab>();
-
         this.title = getPortletName();
     }
 
     @Override
     protected void onBeforeRender()
     {
-        PortletDefinitionBean portletDefinitionBean = (PortletDefinitionBean) 
PortletMessaging.consume(getPortletRequest(),
+        PortletApplicationNodeBean receivedPANodeBean = 
(PortletApplicationNodeBean) PortletMessaging.consume(getPortletRequest(),
                 ApplicationsListApplication.PRM_TOPIC, 
ApplicationsListApplication.SELECTED_PORTLET_EVENT);
 
-        if (portletDefinitionBean != null)
+        if (receivedPANodeBean != null)
         {
-            this.portletDefinitionModel = new PortletModel(new 
ApplicationModel(getServiceLocator(), portletDefinitionBean.getAppName()),
-                    portletDefinitionBean.getName());
-            this.title = getPortletName() + " - " + 
portletDefinitionBean.getName();
+            paNodeBean = receivedPANodeBean;
+            this.title = getPortletName() + " - " + paNodeBean.getName();
             this.dirty = true;
         }
 
@@ -75,7 +68,7 @@
 
     private void constructLayout()
     {
-        if (portletDefinitionModel == null)
+        if (paNodeBean == null)
         {
             removeAll();
             add(new Label("status", "No application selected"));
@@ -83,54 +76,51 @@
         }
         else
         {
+            addOrReplace(new Label("status", ""));
 
-            if (get("status") != null)
-            {
-                remove("status");
-            }
-            add(new Label("status", ""));
-
+            List<ITab> tabs = new ArrayList<ITab>();
+            
             ITab detailsTab = new AbstractTab(new Model("Details"))
             {
 
                 public Panel getPanel(String panelId)
                 {
-                    return new DetailsPanel(panelId, portletDefinitionModel);
+                    return new DetailsPanel(panelId, paNodeBean);
                 }
             };
-            tabs.put("details", detailsTab);
+            tabs.add(detailsTab);
 
-            ITab metadataTab = new AbstractTab(new Model("Metadata"))
+            ITab parametersTab = new AbstractTab(new Model("Parameters"))
             {
 
                 public Panel getPanel(String panelId)
                 {
-                    return new MetadataPanel(panelId, portletDefinitionModel);
+                    return new ParameterPanel(panelId, paNodeBean);
                 }
             };
-            tabs.put("metadata", metadataTab);
+            tabs.add(parametersTab);
 
             ITab preferencesTab = new AbstractTab(new Model("Preferences"))
             {
 
                 public Panel getPanel(String panelId)
                 {
-                    return new PreferencePanel(panelId, 
portletDefinitionModel);
+                    return new PreferencePanel(panelId, paNodeBean);
                 }
             };
-            tabs.put("preferences", preferencesTab);
+            tabs.add(preferencesTab);
 
-            ITab parametersTab = new AbstractTab(new Model("Parameters"))
+            ITab metadataTab = new AbstractTab(new Model("Metadata"))
             {
 
                 public Panel getPanel(String panelId)
                 {
-                    return new ParameterPanel(panelId, portletDefinitionModel);
+                    return new MetadataPanel(panelId, paNodeBean);
                 }
             };
-            tabs.put("parameters", parametersTab);
+            tabs.add(metadataTab);
 
-            TabbedPanel tabbedPanel = new TabbedPanel("tabs", 
Arrays.asList(tabs.values().toArray(new ITab[tabs.values().size()])));
+            TabbedPanel tabbedPanel = new TabbedPanel("tabs", tabs);
             if (get("tabs") == null)
             {
                 tabbedPanel.setSelectedTab(0);
@@ -146,7 +136,7 @@
                 }
             }
 
-            add(tabbedPanel);
+            addOrReplace(tabbedPanel);
         }
     }
 }

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PreferencePanel.html
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PreferencePanel.html?rev=769862&r1=769861&r2=769862&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PreferencePanel.html
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PreferencePanel.html
 Wed Apr 29 18:26:19 2009
@@ -27,7 +27,7 @@
                <th class="portlet-section-subheader">Name</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="name" readonly="true"/></td>
                        <td class="portlet-section-body" wicket:id="values">
                                <input type="text" wicket:id="value"/>
                        </td>

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PreferencePanel.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PreferencePanel.java?rev=769862&r1=769861&r2=769862&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PreferencePanel.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/portlet/PreferencePanel.java
 Wed Apr 29 18:26:19 2009
@@ -17,11 +17,15 @@
 package org.apache.jetspeed.portlets.prm.portlet;
 
 import java.util.Iterator;
+import java.util.List;
 
+import org.apache.jetspeed.components.portletregistry.PortletRegistry;
 import org.apache.jetspeed.components.portletregistry.RegistryException;
+import org.apache.jetspeed.om.portlet.PortletApplication;
 import org.apache.jetspeed.om.portlet.PortletDefinition;
 import org.apache.jetspeed.om.portlet.Preference;
-import org.apache.jetspeed.portlets.prm.model.PortletModel;
+import org.apache.jetspeed.portlets.prm.PortletApplicationNodeBean;
+import org.apache.jetspeed.portlets.wicket.AbstractAdminWebApplication;
 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;
@@ -35,11 +39,15 @@
 
 public class PreferencePanel extends EditorTemplate<Preference>
 {
+    private static final long serialVersionUID = 1L;
+    
+    private PortletApplicationNodeBean paNodeBean;
     private String newName, newValue;
 
-    public PreferencePanel(String id, PortletModel model)
+    public PreferencePanel(String id, PortletApplicationNodeBean paNodeBean)
     {
-        super(id, model);
+        super(id);
+        this.paNodeBean = paNodeBean;
     }
 
     /**
@@ -48,23 +56,27 @@
     @Override
     protected Button saveButton(String componentId)
     {
-        final PortletModel model = (PortletModel) getDefaultModel();
         return new Button(componentId)
         {
-
             @Override
             public void onSubmit()
             {
+                PortletRegistry registry = ((AbstractAdminWebApplication) 
getApplication()).getServiceLocator().getPortletRegistry();
+                PortletApplication app = 
registry.getPortletApplication(paNodeBean.getApplicationName());
+                PortletDefinition def = app.getPortlet(paNodeBean.getName());
+                
                 if (newName != null && newValue != null)
                 {
-                    PortletDefinition def = model.getObject();
                     Preference pref = 
def.getPortletPreferences().addPreference(newName);
                     pref.addValue(newValue);
+                    
+                    newName = null;
+                    newValue = null;
                 }
 
                 try
                 {
-                    
model.getParent().getServiceLocator().getPortletRegistry().savePortletDefinition(model.getObject());
+                    registry.savePortletDefinition(def);
                 }
                 catch (RegistryException e)
                 {
@@ -89,39 +101,22 @@
     }
 
     @Override
-    public void buildItems(Fragment fragment, final Preference model)
+    public void buildItems(Fragment fragment, final Preference preference)
     {
-        fragment.add(new TextField<String>("name", new Model<String>()
-        {
-
-            @Override
-            public String getObject()
-            {
-                return model.getName();
-            }
-
-            @Override
-            public void setObject(String object)
-            {
-                System.out.println("TODO set preference name: " + object);
-            }
-        }));
-
+        fragment.add(new TextField<String>("name", new 
PropertyModel(preference, "name")));
+        
         RefreshingView<String> view = new RefreshingView<String>("values")
         {
-
             @Override
             protected Iterator<IModel<String>> getItemModels()
             {
-                return new 
ModelIteratorAdapter<String>(model.getValues().iterator())
+                return new 
ModelIteratorAdapter<String>(preference.getValues().iterator())
                 {
-
                     @Override
                     protected IModel<String> model(String object)
                     {
                         return new Model<String>(object);
                     }
-
                 };
             }
 
@@ -130,7 +125,6 @@
             {
                 item.add(new TextField<String>("value", item.getModel()));
             }
-
         };
 
         fragment.add(view);
@@ -139,13 +133,19 @@
     @Override
     public void delete(IModel<Preference>[] fields)
     {
-        PortletModel model = (PortletModel) getDefaultModel();
+        PortletRegistry registry = ((AbstractAdminWebApplication) 
getApplication()).getServiceLocator().getPortletRegistry();
+        PortletApplication app = 
registry.getPortletApplication(paNodeBean.getApplicationName());
+        PortletDefinition def = app.getPortlet(paNodeBean.getName());
+        
         for (IModel<Preference> field : fields)
         {
-            Iterator<Preference> it = 
model.getObject().getPortletPreferences().getPortletPreferences().iterator();
+            Iterator<Preference> it = 
def.getPortletPreferences().getPortletPreferences().iterator();
+            
             while (it.hasNext())
             {
-                if (it.next().getName().equals(field.getObject().getName()))
+                Preference pref = it.next();
+                
+                if (pref.getName().equals(field.getObject().getName()))
                 {
                     it.remove();
                     break;
@@ -155,7 +155,7 @@
 
         try
         {
-            
model.getParent().getServiceLocator().getPortletRegistry().savePortletDefinition(model.getObject());
+            registry.savePortletDefinition(def);
         }
         catch (RegistryException e)
         {
@@ -167,22 +167,25 @@
     @Override
     public Iterator<IModel<Preference>> getItemModels()
     {
-        PortletModel model = (PortletModel) getDefaultModel();
-        return new 
ModelIteratorAdapter<Preference>(model.getObject().getPortletPreferences().getPortletPreferences().iterator())
-        {
+        PortletRegistry registry = ((AbstractAdminWebApplication) 
getApplication()).getServiceLocator().getPortletRegistry();
+        PortletApplication app = 
registry.getPortletApplication(paNodeBean.getApplicationName());
+        PortletDefinition def = app.getPortlet(paNodeBean.getName());
 
+        List<Preference> prefs = 
def.getPortletPreferences().getPortletPreferences();
+        
+        return new ModelIteratorAdapter<Preference>(prefs.iterator())
+        {
             @Override
-            protected IModel<Preference> model(Preference object)
+            protected IModel<Preference> model(Preference preference)
             {
-                return new Model<Preference>(object);
+                return new Model<Preference>(preference);
             }
-
         };
     }
 
     @Override
-    public IModel<Preference> getNewRowModel(Preference object)
+    public IModel<Preference> getNewRowModel(Preference preference)
     {
-        return new Model<Preference>(object);
+        return new Model<Preference>(preference);
     }
 }

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/AbstractAdminWebApplication.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/AbstractAdminWebApplication.java?rev=769862&r1=769861&r2=769862&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/AbstractAdminWebApplication.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/AbstractAdminWebApplication.java
 Wed Apr 29 18:26:19 2009
@@ -18,21 +18,41 @@
 
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.security.Principal;
+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;
+
+import org.apache.jetspeed.PortalReservedParameters;
+import org.apache.jetspeed.portlets.JetspeedServiceLocator;
+import org.apache.wicket.RequestContext;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.protocol.http.portlet.PortletRequestContext;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.UrlResourceStream;
 import org.apache.wicket.util.resource.locator.ResourceStreamLocator;
 
 /**
- * Abstract Admin Wicket Application to load customized templates from 
/WEB-INF/templates/.
+ * Abstract Admin Wicket Application
+ * <P>
+ * This abstract class loads customized templates from /WEB-INF/templates/.
+ * Also, this class contains many useful unitlity methods for portlet-based 
applications.
+ * </P>
  * 
  * @author <a href="mailto:[email protected]";>Woonsan Ko</a>
- * @version $Id: $
+ * @version $Id$
  */
 public abstract class AbstractAdminWebApplication extends WebApplication
 {
+    protected Map<String, String> initParams = null;
+    protected JetspeedServiceLocator serviceLocator;
+    public static final String USER_ADMINISTRATION = "J2 User Administration";
 
        public abstract Class getHomePage();
     
@@ -43,7 +63,7 @@
                // instruct the application to use our custom resource stream 
locator
                getResourceSettings().setResourceStreamLocator(new 
TemplatesResourceStreamLocator());
        }
-    
+       
     private class TemplatesResourceStreamLocator extends ResourceStreamLocator
     {
         
@@ -88,4 +108,174 @@
 
     }
 
+    // Utility methods
+    
+    public JetspeedServiceLocator getServiceLocator()
+    {
+        if (serviceLocator == null)
+        {
+            serviceLocator = new JetspeedServiceLocator();
+        }
+        
+        return serviceLocator;
+    }
+    
+    public Map<String, String> getInitParams()
+    {
+        if (initParams == null)
+        {
+            initParams = (Map<String, String>) 
getPortletRequest().getAttribute(AdminWicketPortlet.INIT_PARAMS);
+        }
+        
+        return initParams;
+    }
+    
+    public String getInitParam(String paramKey)
+    {
+        String paramValue = null;
+        if (getInitParams().containsKey(paramKey))
+        {
+            paramValue = (String) getInitParams().get(paramKey);
+        }
+        return paramValue;
+    }
+
+    public int getInitParamAsInteger(String paramKey)
+    {
+        int result = 0;
+        if (getInitParams().containsKey(paramKey))
+        {
+            String paramValue = (String) getInitParams().get(paramKey);
+            result = Integer.parseInt(paramValue);
+        }
+        return result;
+    }
+
+    public boolean getInitParamAsBoolean(String paramKey)
+    {
+        boolean result = false;
+        if (getInitParams().containsKey(paramKey))
+        {
+            String paramValue = (String) getInitParams().get(paramKey);
+            result = Boolean.parseBoolean(paramValue);
+        }
+        return result;
+    }
+    
+    public String getPreference(String key)
+    {
+        String preferenceValue = null;
+        if( getPortletRequest().getPreferences().getMap().containsKey(key))
+        {
+            preferenceValue = 
getPortletRequest().getPreferences().getValue(key, null);
+        }
+        return preferenceValue;
+    }
+    
+    public int getPreferenceAsInteger(String key)
+    {
+        int result = 0;
+        if (getPortletRequest().getPreferences().getMap().containsKey(key))
+        {
+            String preferenceValue = 
getPortletRequest().getPreferences().getValue(key, null);
+            if (preferenceValue != null)
+            {
+                result = Integer.parseInt(preferenceValue);
+            }
+        }
+        return result;
+    }
+
+    public boolean getPreferenceAsBoolean(String key)
+    {
+        boolean result = false;
+        if (getPortletRequest().getPreferences().getMap().containsKey(key))
+        {
+            String preferenceValue = 
getPortletRequest().getPreferences().getValue(key, null);
+            if (preferenceValue != null)
+            {
+                result = Boolean.parseBoolean(preferenceValue);
+            }
+        }
+        return result;
+    }
+    
+    public String getPreference(String key,String defaultValue)
+    {
+        String preferenceValue=null;;
+        if(getPortletRequest().getPreferences().getMap().containsKey(key))
+        {
+            preferenceValue = 
getPortletRequest().getPreferences().getValue(key, defaultValue);
+        }
+        return preferenceValue;
+    }
+    
+    public String [] getPreference(String key,String values [])
+    {
+        String preferenceValue[]=null;;
+        if(getPortletRequest().getPreferences().getMap().containsKey(key))
+        {
+            preferenceValue = 
getPortletRequest().getPreferences().getValues(key, null);
+        }
+        return preferenceValue;
+    }
+    
+    public PortletRequest getPortletRequest()
+    {
+        return ((PortletRequestContext) 
RequestContext.get()).getPortletRequest();
+    }
+    
+    public void setTitle(String title)
+    {
+        PortletResponse pr = getPortletResponse();
+        if (pr instanceof RenderResponse) {
+            RenderResponse rr = (RenderResponse) pr;
+            rr.setTitle(title);
+        }
+    }
+    
+    public String getTitle()
+    {
+        return 
(String)getPortletRequest().getAttribute(AdminWicketPortlet.PORTLET_TITLE);
+    }
+    
+    public String getPortletName()
+    {
+        GenericPortlet portlet = (GenericPortlet) 
getPortletRequest().getAttribute(AdminWicketPortlet.PORTLET);
+        return portlet.getPortletName();
+    }
+    
+    public PortletResponse getPortletResponse()
+    {
+        return ((PortletRequestContext) 
RequestContext.get()).getPortletResponse();
+    }
+    
+    public HttpServletRequest getServletRequest(PortletRequest request)
+    {
+        HttpServletRequest realRequest = 
(HttpServletRequest)((HttpServletRequestWrapper) request).getRequest();
+        return realRequest;
+    }
+    
+    public HttpServletRequest getServletRequest()
+    {
+        HttpServletRequest realRequest = 
(HttpServletRequest)((HttpServletRequestWrapper) 
getPortletRequest()).getRequest();
+        return realRequest;
+    }
+ 
+    public String getIPAddress()
+    {
+        org.apache.jetspeed.request.RequestContext context = 
(org.apache.jetspeed.request.RequestContext) getPortletRequest().getAttribute(
+                PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE);
+        return (context == null ? "" : context.getRequest().getRemoteAddr());
+    }
+ 
+    public String getAuthenticatedUsername()
+    {
+        Principal p = getPortletRequest().getUserPrincipal();
+        if (p == null)
+            return "";
+        else
+            return p.getName();
+    }
+    
 }

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/EditorTemplate.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/EditorTemplate.java?rev=769862&r1=769861&r2=769862&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/EditorTemplate.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/EditorTemplate.java
 Wed Apr 29 18:26:19 2009
@@ -48,6 +48,11 @@
     public static final String ITEMS_FRAGMENT_ID = "itemFragment";
     public static final String NEW_FRAGMENT_ID = "newFragment";
     
+    public EditorTemplate(String id)
+    {
+        this(id, null);
+    }
+    
     public EditorTemplate(String id, IModel<?> model)
     {
         super(id, model);
@@ -116,8 +121,6 @@
         add(form);
     }
     
-    
-    
     protected Button deleteButton(String componentId)
     {
         return new Button(componentId) {

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/LocalizedDescriptionEditor.html
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/LocalizedDescriptionEditor.html?rev=769862&r1=769861&r2=769862&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/LocalizedDescriptionEditor.html
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/LocalizedDescriptionEditor.html
 Wed Apr 29 18:26:19 2009
@@ -27,7 +27,7 @@
                <th class="portlet-section-subheader">Locale</th>
                <th class="portlet-section-subheader">Description</th>
                <wicket:fragment wicket:id="itemFragment">
-                       <td class="portlet-section-body"><input type="text" 
wicket:id="locale"/></td>
+                       <td class="portlet-section-body"><input type="text" 
wicket:id="locale" readonly="true"/></td>
                        <td class="portlet-section-body"><input type="text" 
wicket:id="description"/></td>
                </wicket:fragment>
                <wicket:fragment wicket:id="newFragment">

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/LocalizedDescriptionEditor.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/LocalizedDescriptionEditor.java?rev=769862&r1=769861&r2=769862&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/LocalizedDescriptionEditor.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/wicket/component/editor/LocalizedDescriptionEditor.java
 Wed Apr 29 18:26:19 2009
@@ -20,25 +20,36 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.jetspeed.portlets.prm.model.DescriptionModel;
+import org.apache.jetspeed.portlets.JetspeedServiceLocator;
+import org.apache.jetspeed.portlets.prm.DescriptionBean;
+import org.apache.jetspeed.portlets.prm.PortletApplicationNodeBean;
+import org.apache.jetspeed.portlets.prm.model.DescriptionBeanModel;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.markup.html.panel.Fragment;
 import org.apache.wicket.markup.repeater.data.IDataProvider;
 import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 
 /**
  * 
  * @author Ruben Alexander de Gooijer
  */
-public abstract class LocalizedDescriptionEditor extends 
EditorTemplate<DescriptionModel>
+public abstract class LocalizedDescriptionEditor extends 
EditorTemplate<DescriptionBean>
 {
+    private static final long serialVersionUID = 1L;
+    
+    protected JetspeedServiceLocator locator = null;
+    protected PortletApplicationNodeBean paNodeBean = null;
+    protected String name = null;
+
     protected String newLocale, newDescription;
     
-    public LocalizedDescriptionEditor(String id, IModel<?> model)
+    public LocalizedDescriptionEditor(String id, JetspeedServiceLocator 
locator, PortletApplicationNodeBean paNodeBean, String name)
     {
-        super(id, model);
+        super(id);
+        this.locator = locator;
+        this.paNodeBean = paNodeBean;
+        this.name = name;
     }
 
     @Override
@@ -48,23 +59,10 @@
     }
 
     @Override
-    public void buildItems(Fragment fragment, final DescriptionModel model)
+    public void buildItems(Fragment fragment, final DescriptionBean 
descriptionBean)
     {
-        fragment.add(new TextField<String>("locale", new Model<String>() {
-            @Override
-            public String getObject()
-            {
-                return model.getLang(); 
-            }
-            
-            @Override
-            public void setObject(String object)
-            {
-                model.setLang(object);
-            }
-        }));
-        
-        fragment.add(new TextField<String>("description", new 
PropertyModel<String>(model, "description")));
+        fragment.add(new TextField<String>("locale", new 
PropertyModel(descriptionBean, "localeString"))); 
+        fragment.add(new TextField<String>("description", new 
PropertyModel(descriptionBean, "description")));
     }
     
     @Override
@@ -75,22 +73,30 @@
     }
     
     @Override
-    public Iterator<IModel<DescriptionModel>> getItemModels()
+    public Iterator<IModel<DescriptionBean>> getItemModels()
     {
-        IDataProvider<DescriptionModel> dataProvider = getDataProvider();
-        Iterator<? extends DescriptionModel> it = dataProvider.iterator(0, 
dataProvider.size());
-        List<IModel<DescriptionModel>> list = new 
ArrayList<IModel<DescriptionModel>>();
-        while(it.hasNext()) {
-            list.add(dataProvider.model(it.next()));
+        IDataProvider<DescriptionBean> dataProvider = getDataProvider();
+        List<IModel<DescriptionBean>> list = new 
ArrayList<IModel<DescriptionBean>>();
+        JetspeedServiceLocator locator = null;
+        PortletApplicationNodeBean paNodeBean = null;
+        String name = null;
+        
+        Iterator<? extends DescriptionBean> it = dataProvider.iterator(0, 
dataProvider.size());
+        
+        while(it.hasNext()) 
+        {
+            DescriptionBean descriptionBean = it.next();
+            list.add(new DescriptionBeanModel(locator, paNodeBean, name, 
descriptionBean));
         }
+        
         return list.iterator();
     }
     
     @Override
-    public IModel<DescriptionModel> getNewRowModel(DescriptionModel object)
+    public IModel<DescriptionBean> getNewRowModel(DescriptionBean 
descriptionBean)
     {
-        return new Model<DescriptionModel>(object);
+        return new DescriptionBeanModel(locator, paNodeBean, name, 
descriptionBean);
     }
     
-    public abstract IDataProvider<DescriptionModel> getDataProvider();
+    public abstract IDataProvider<DescriptionBean> getDataProvider();
 }

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/webapp/WEB-INF/portlet.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/webapp/WEB-INF/portlet.xml?rev=769862&r1=769861&r2=769862&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/webapp/WEB-INF/portlet.xml 
(original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/webapp/WEB-INF/portlet.xml 
Wed Apr 29 18:26:19 2009
@@ -1689,7 +1689,6 @@
         </init-param>
            <supports>
              <mime-type>text/html</mime-type>
-             <portlet-mode>EDIT</portlet-mode>
              <portlet-mode>VIEW</portlet-mode>
              <portlet-mode>HELP</portlet-mode>
            </supports>
@@ -1716,7 +1715,6 @@
         </init-param>
            <supports>
              <mime-type>text/html</mime-type>
-             <portlet-mode>EDIT</portlet-mode>
              <portlet-mode>VIEW</portlet-mode>
              <portlet-mode>HELP</portlet-mode>
            </supports>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to