[gatein-commits] gatein SVN: r4105 - in components/wsrp/trunk: admin-gui/src/main/webapp/WEB-INF and 4 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Sep 8 17:05:36 EDT 2010


Author: chris.laprun at jboss.com
Date: 2010-09-08 17:05:34 -0400 (Wed, 08 Sep 2010)
New Revision: 4105

Added:
   components/wsrp/trunk/admin-gui/src/main/webapp/jsf/consumers/exports/import.xhtml
   components/wsrp/trunk/api/src/main/java/org/gatein/wsrp/api/PortalStructureProvider.java
Modified:
   components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/ConsumerBean.java
   components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/ConsumerManagerBean.java
   components/wsrp/trunk/admin-gui/src/main/webapp/WEB-INF/classes/Resource.properties
   components/wsrp/trunk/admin-gui/src/main/webapp/WEB-INF/classes/Resource_fr.properties
   components/wsrp/trunk/admin-gui/src/main/webapp/WEB-INF/faces-config.xml
   components/wsrp/trunk/admin-gui/src/main/webapp/jsf/consumers/exports/exportDetail.xhtml
   components/wsrp/trunk/admin-gui/src/main/webapp/jsf/consumers/exports/exports.xhtml
   components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/migration/MigrationService.java
Log:
- GTNWSRP-61:
  + Added prototype user experience for import fonctionality relying on the new API class PortalStructureProvider.
  + MigrationService currently provides a dummy PortalStructureProvider implementation.

Modified: components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/ConsumerBean.java
===================================================================
--- components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/ConsumerBean.java	2010-09-08 21:01:50 UTC (rev 4104)
+++ components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/ConsumerBean.java	2010-09-08 21:05:34 UTC (rev 4105)
@@ -27,29 +27,31 @@
 import org.gatein.pc.api.Portlet;
 import org.gatein.pc.api.PortletInvokerException;
 import org.gatein.wsrp.WSRPConsumer;
+import org.gatein.wsrp.api.PortalStructureProvider;
 import org.gatein.wsrp.consumer.EndpointConfigurationInfo;
 import org.gatein.wsrp.consumer.ProducerInfo;
 import org.gatein.wsrp.consumer.RegistrationInfo;
 import org.gatein.wsrp.consumer.RegistrationProperty;
 import org.gatein.wsrp.consumer.migration.ExportInfo;
+import org.gatein.wsrp.consumer.migration.MigrationService;
 import org.gatein.wsrp.consumer.registry.ConsumerRegistry;
 
+import javax.faces.context.FacesContext;
 import javax.faces.event.ActionEvent;
+import javax.faces.event.ValueChangeEvent;
 import javax.faces.model.DataModel;
 import javax.faces.model.ListDataModel;
+import javax.faces.model.SelectItem;
 import javax.xml.namespace.QName;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Date;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import java.util.Set;
 import java.util.SortedMap;
 
 /**
@@ -75,6 +77,7 @@
    private static final String MALFORMED_URL = "bean_consumer_malformed_url";
    private static final String UPDATE_SUCCESS = "bean_consumer_update_success";
    private static final String CANNOT_EXPORT = "bean_consumer_cannot_export";
+   private static final String IMPORT_SUCCESS = "bean_consumer_import_success";
    private static final String CONSUMER_TYPE = "CONSUMER_TYPE";
 
    private DataModel portletHandles;
@@ -514,7 +517,7 @@
                selectableHandles = new ArrayList<SelectablePortletHandle>(portlets.size());
                for (Portlet portlet : portlets)
                {
-                  selectableHandles.add(new SelectablePortletHandle(portlet.getContext().getId()));
+                  selectableHandles.add(new SelectablePortletHandle(portlet.getContext().getId(), consumer.getMigrationService().getStructureProvider()));
                }
             }
             portletHandles = new ListDataModel(selectableHandles);
@@ -545,7 +548,7 @@
 
          try
          {
-            currentExport = new ExportInfoDisplay(consumer.exportPortlets(selectedHandles), beanContext.getLocale());
+            currentExport = new ExportInfoDisplay(consumer.exportPortlets(selectedHandles), beanContext.getLocale(), consumer.getMigrationService().getStructureProvider());
          }
          catch (Exception e)
          {
@@ -569,11 +572,12 @@
       if (existingExports == null)
       {
          Locale locale = beanContext.getLocale();
-         List<ExportInfo> availableExportInfos = consumer.getMigrationService().getAvailableExportInfos();
+         MigrationService migrationService = consumer.getMigrationService();
+         List<ExportInfo> availableExportInfos = migrationService.getAvailableExportInfos();
          List<ExportInfoDisplay> exportDisplays = new ArrayList<ExportInfoDisplay>(availableExportInfos.size());
          for (ExportInfo exportInfo : availableExportInfos)
          {
-            exportDisplays.add(new ExportInfoDisplay(exportInfo, locale));
+            exportDisplays.add(new ExportInfoDisplay(exportInfo, locale, migrationService.getStructureProvider()));
          }
          existingExports = new ListDataModel(exportDisplays);
       }
@@ -590,13 +594,27 @@
 
    public String importPortlets()
    {
-      return ConsumerManagerBean.EXPORTS;
+      List<SelectablePortletHandle> exportedPortlets = currentExport.getExportedPortlets();
+      PortalStructureProvider structureProvider = consumer.getMigrationService().getStructureProvider();
+      int importCount = 0;
+      for (SelectablePortletHandle exportedPortlet : exportedPortlets)
+      {
+         if(exportedPortlet.isSelected())
+         {
+            structureProvider.assignPortletToWindow(exportedPortlet.getHandle(), exportedPortlet.getWindow(), exportedPortlet.getPage());
+            importCount++;
+         }
+      }
+
+      beanContext.createLocalizedMessage(BeanContext.STATUS, IMPORT_SUCCESS, beanContext.getInfoSeverity(), importCount);
+
+      return ConsumerManagerBean.CONSUMERS;
    }
 
    public String deleteExport()
    {
       ExportInfo export = currentExport.getExport();
-      if(consumer.getMigrationService().remove(export) == export)
+      if (consumer.getMigrationService().remove(export) == export)
       {
          existingExports = null; // force rebuild of export list
          currentExport = null;
@@ -612,17 +630,21 @@
 
    public void selectExport()
    {
-      currentExport = (ExportInfoDisplay) existingExports.getRowData();
+      currentExport = (ExportInfoDisplay)existingExports.getRowData();
    }
 
    public static class SelectablePortletHandle
    {
       private String handle;
       private boolean selected;
+      private String page;
+      private String window;
+      private PortalStructureProvider provider;
 
-      public SelectablePortletHandle(String handle)
+      public SelectablePortletHandle(String handle, PortalStructureProvider provider)
       {
          this.handle = handle;
+         this.provider = provider;
       }
 
       public String getHandle()
@@ -639,6 +661,60 @@
       {
          this.selected = selected;
       }
+
+      public void setPage(String page)
+      {
+         this.page = page;
+      }
+
+      public String getPage()
+      {
+         return page;
+      }
+
+      public void setWindow(String window)
+      {
+         this.window = window;
+      }
+
+      public String getWindow()
+      {
+         return window;
+      }
+
+      public void selectCurrentPage(ValueChangeEvent event)
+      {
+         page = (String)event.getNewValue();
+
+         // bypass the rest of the life cycle and re-display page
+         FacesContext.getCurrentInstance().renderResponse();
+      }
+
+      public List<SelectItem> getPages()
+      {
+         List<String> pageIdentifiers = provider.getPageIdentifiers();
+         return getSelectItemsFrom(pageIdentifiers);
+      }
+
+      private List<SelectItem> getSelectItemsFrom(List<String> identifiers)
+      {
+         List<SelectItem> result = new ArrayList<SelectItem>(identifiers.size());
+         for (String pageIdentifier : identifiers)
+         {
+            result.add(new SelectItem(pageIdentifier));
+         }
+         return result;
+      }
+
+      public List<SelectItem> getWindows()
+      {
+         return getSelectItemsFrom(provider.getWindowIndentifiersFor(page));
+      }
+
+      public void select(ValueChangeEvent event)
+      {
+         selected = (Boolean) event.getNewValue();
+      }
    }
 
    public static class ExportInfoDisplay
@@ -646,14 +722,30 @@
       private ExportInfo export;
       private Locale locale;
       private List<FailedPortletsDisplay> failedPortlets;
+      private List<SelectablePortletHandle> exportedPortlets;
 
-      public ExportInfoDisplay(ExportInfo export, Locale locale)
+      public ExportInfoDisplay(ExportInfo export, Locale locale, PortalStructureProvider provider)
       {
          this.export = export;
          this.locale = locale;
-         SortedMap<QName,List<String>> errorCodesToFailedPortletHandlesMapping = export.getErrorCodesToFailedPortletHandlesMapping();
-         if(ParameterValidation.existsAndIsNotEmpty(errorCodesToFailedPortletHandlesMapping))
+
+         List<String> exportedPortletHandles = export.getExportedPortletHandles();
+         if (ParameterValidation.existsAndIsNotEmpty(exportedPortletHandles))
          {
+            exportedPortlets = new ArrayList<SelectablePortletHandle>(exportedPortletHandles.size());
+            for (String handle : exportedPortletHandles)
+            {
+               exportedPortlets.add(new SelectablePortletHandle(handle, provider));
+            }
+         }
+         else
+         {
+            exportedPortlets = Collections.emptyList();
+         }
+
+         SortedMap<QName, List<String>> errorCodesToFailedPortletHandlesMapping = export.getErrorCodesToFailedPortletHandlesMapping();
+         if (ParameterValidation.existsAndIsNotEmpty(errorCodesToFailedPortletHandlesMapping))
+         {
             failedPortlets = new ArrayList<FailedPortletsDisplay>(errorCodesToFailedPortletHandlesMapping.size());
             for (Map.Entry<QName, List<String>> entry : errorCodesToFailedPortletHandlesMapping.entrySet())
             {
@@ -681,9 +773,9 @@
          return !failedPortlets.isEmpty();
       }
 
-      public List<String> getExportedPortlets()
+      public List<SelectablePortletHandle> getExportedPortlets()
       {
-         return export.getExportedPortletHandles();
+         return exportedPortlets;
       }
 
       public List<FailedPortletsDisplay> getFailedPortlets()

Modified: components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/ConsumerManagerBean.java
===================================================================
--- components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/ConsumerManagerBean.java	2010-09-08 21:01:50 UTC (rev 4104)
+++ components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/ConsumerManagerBean.java	2010-09-08 21:05:34 UTC (rev 4105)
@@ -53,8 +53,9 @@
    private static final String REFRESH_EXCEPTION = "bean_consumermanager_refresh_exception";
    static final String CONFIGURE_CONSUMER = "configureConsumer";
    static final String EXPORT = "export";
-   public static final String EXPORTS = "exports";
+   static final String EXPORTS = "exports";
    static final String EXPORT_DETAIL = "exportDetail";
+   static final String IMPORT = "import";
 
    static final String CONSUMERS = "consumers";
    static final String EXPECTED_REG_INFO_KEY = "expectedRegistrationInfo";

Modified: components/wsrp/trunk/admin-gui/src/main/webapp/WEB-INF/classes/Resource.properties
===================================================================
--- components/wsrp/trunk/admin-gui/src/main/webapp/WEB-INF/classes/Resource.properties	2010-09-08 21:01:50 UTC (rev 4104)
+++ components/wsrp/trunk/admin-gui/src/main/webapp/WEB-INF/classes/Resource.properties	2010-09-08 21:05:34 UTC (rev 4105)
@@ -97,6 +97,10 @@
 exports_actions_delete = Delete
 exports_actions_view = View
 exports_actions_use = Use for import
+import_use = Import?
+import_available_portlets = Available exported portlets
+import_assign = Assign to window
+import_import = Import
 
 # Confirm deletion of an export
 confirm_delete_export_title = Delete export from {0}?
@@ -176,6 +180,7 @@
 bean_consumer_cannot_erase_reg = Couldn't erase local registration!
 bean_consumer_malformed_url = ''{0}'' is not a valid URL: {1}
 bean_consumer_update_success = Successfully updated consumer!
+bean_consumer_import_success = ''{0}'' portlets were successfully imported!
 
 # ConsumerManagerBean
 bean_consumermanager_invalid_new_consumer_name = Need a non-null, non-empty name for the new consumer!

Modified: components/wsrp/trunk/admin-gui/src/main/webapp/WEB-INF/classes/Resource_fr.properties
===================================================================
--- components/wsrp/trunk/admin-gui/src/main/webapp/WEB-INF/classes/Resource_fr.properties	2010-09-08 21:01:50 UTC (rev 4104)
+++ components/wsrp/trunk/admin-gui/src/main/webapp/WEB-INF/classes/Resource_fr.properties	2010-09-08 21:05:34 UTC (rev 4105)
@@ -169,4 +169,9 @@
 confirm_delete_export_cancel=Annuler
 confirm_delete_export_message=Vous \u00eates sur le point d''effacer l''export du {0}!
 confirm_delete_export_submit=Effacer export
-confirm_delete_export_title=Voulez-vous r\u00e9ellement effacer l'export du {0}?
\ No newline at end of file
+confirm_delete_export_title=Voulez-vous r\u00e9ellement effacer l'export du {0}?
+import_available_portlets=Portlets exportŽes disponibles
+import_assign=Assigner ˆ la fentre
+import_import=Importer
+import_use=Importer?
+bean_consumer_import_success=''{0}'' portlets ont ŽtŽ correctement importŽes!
\ No newline at end of file

Modified: components/wsrp/trunk/admin-gui/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
--- components/wsrp/trunk/admin-gui/src/main/webapp/WEB-INF/faces-config.xml	2010-09-08 21:01:50 UTC (rev 4104)
+++ components/wsrp/trunk/admin-gui/src/main/webapp/WEB-INF/faces-config.xml	2010-09-08 21:05:34 UTC (rev 4105)
@@ -171,5 +171,9 @@
          <from-outcome>confirmDeleteExport</from-outcome>
          <to-view-id>/jsf/consumers/exports/confirmDeleteExport.xhtml</to-view-id>
       </navigation-case>
+      <navigation-case>
+         <from-outcome>import</from-outcome>
+         <to-view-id>/jsf/consumers/exports/import.xhtml</to-view-id>
+      </navigation-case>
    </navigation-rule>
 </faces-config>

Modified: components/wsrp/trunk/admin-gui/src/main/webapp/jsf/consumers/exports/exportDetail.xhtml
===================================================================
--- components/wsrp/trunk/admin-gui/src/main/webapp/jsf/consumers/exports/exportDetail.xhtml	2010-09-08 21:01:50 UTC (rev 4104)
+++ components/wsrp/trunk/admin-gui/src/main/webapp/jsf/consumers/exports/exportDetail.xhtml	2010-09-08 21:05:34 UTC (rev 4105)
@@ -40,12 +40,12 @@
          <tr>
             <th>#{i18n.export_detail_portlets}</th>
             <td>
-               <h:dataTable id="exported-portlets" value="#{consumer.currentExport.exportedPortlets}" var="handle"
+               <h:dataTable id="exported-portlets" value="#{consumer.currentExport.exportedPortlets}" var="portlet"
                             rowClasses="EvenRow,OddRow"
                             styleClass="UIGrid" width="100%">
                   <h:column>
                      <f:facet name="header">#{i18n.export_detail_exported_portlet_name}</f:facet>
-                     #{handle}
+                     #{portlet.handle}
                   </h:column>
                </h:dataTable>
             </td>

Modified: components/wsrp/trunk/admin-gui/src/main/webapp/jsf/consumers/exports/exports.xhtml
===================================================================
--- components/wsrp/trunk/admin-gui/src/main/webapp/jsf/consumers/exports/exports.xhtml	2010-09-08 21:01:50 UTC (rev 4104)
+++ components/wsrp/trunk/admin-gui/src/main/webapp/jsf/consumers/exports/exports.xhtml	2010-09-08 21:05:34 UTC (rev 4105)
@@ -43,7 +43,7 @@
 
             <h:column>
                <f:facet name="header">#{i18n.export_detail_has_failed}</f:facet>
-               <h:selectBooleanCheckbox value="#{export.hasFailedPortlets}" disabled="true"/>
+               <h:selectBooleanCheckbox id="hasFailed"  value="#{export.hasFailedPortlets}" disabled="true"/>
             </h:column>
 
             <h:column>
@@ -57,7 +57,7 @@
                   #{i18n.exports_actions_delete}
                </h:commandLink>
                |
-               <h:commandLink action="#{consumer.importPortlets}" styleClass="actionUse" id="use">
+               <h:commandLink action="import" actionListener="#{consumer.selectExport}" styleClass="actionUse" id="use">
                   #{i18n.exports_actions_use}
                </h:commandLink>
             </h:column>

Added: components/wsrp/trunk/admin-gui/src/main/webapp/jsf/consumers/exports/import.xhtml
===================================================================
--- components/wsrp/trunk/admin-gui/src/main/webapp/jsf/consumers/exports/import.xhtml	                        (rev 0)
+++ components/wsrp/trunk/admin-gui/src/main/webapp/jsf/consumers/exports/import.xhtml	2010-09-08 21:05:34 UTC (rev 4105)
@@ -0,0 +1,74 @@
+<!--
+  ~ JBoss, a division of Red Hat
+  ~ Copyright 2010, Red Hat Middleware, LLC, and individual
+  ~ contributors as indicated by the @authors tag. See the
+  ~ copyright.txt in the distribution for a full listing of
+  ~ individual contributors.
+  ~
+  ~ This is free software; you can redistribute it and/or modify it
+  ~ under the terms of the GNU Lesser General Public License as
+  ~ published by the Free Software Foundation; either version 2.1 of
+  ~ the License, or (at your option) any later version.
+  ~
+  ~ This software is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  ~ Lesser General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU Lesser General Public
+  ~ License along with this software; if not, write to the Free
+  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+  -->
+
+<ui:decorate template="../consumerTemplate.xhtml" xmlns="http://www.w3.org/1999/xhtml"
+             xmlns:f="http://java.sun.com/jsf/core"
+             xmlns:ui="http://java.sun.com/jsf/facelets"
+             xmlns:h="http://java.sun.com/jsf/html">
+
+   <ui:define name="content">
+
+      <h:form id="import-form">
+         <h:dataTable id="portletsList" value="#{consumer.currentExport.exportedPortlets}" var="portlet"
+                      rowClasses="EvenRow,OddRow" styleClass="UIGrid" width="100%">
+            <h:column>
+               <f:facet name="header">#{i18n.import_use}</f:facet>
+               <h:selectBooleanCheckbox id="selected"  value="#{portlet.selected}"
+                                        valueChangeListener="#{portlet.select}"
+                                        immediate="true" onclick="this.form.submit()"/>
+            </h:column>
+
+            <h:column>
+               <f:facet name="header">#{i18n.import_available_portlets}</f:facet>
+               #{portlet.handle}
+            </h:column>
+
+            <h:column>
+               <f:facet name="header">#{i18n.import_assign}</f:facet>
+               <h:selectOneListbox id="currentPage" value="#{portlet.page}"
+                                   valueChangeListener="#{portlet.selectCurrentPage}"
+                                   immediate="true"
+                                   onclick="this.form.submit()">
+                  <f:selectItems value="#{portlet.pages}"/>
+               </h:selectOneListbox>
+               <h:selectOneListbox id="currentWindow" value="#{portlet.window}" rendered="#{! empty portlet.page}">
+                  <f:selectItems value="#{portlet.windows}"/>
+               </h:selectOneListbox>
+            </h:column>
+         </h:dataTable>
+         <table class="ActionContainer">
+            <tr>
+               <td>
+                  <div class="ButtonLeft">
+                     <div class="ButtonRight">
+                        <div class="ButtonMiddle">
+                           <h:commandButton id="import" action="#{consumer.importPortlets}" value="#{i18n.import_import}"/>
+                        </div>
+                     </div>
+                  </div>
+               </td>
+            </tr>
+         </table>
+      </h:form>
+   </ui:define>
+</ui:decorate>
\ No newline at end of file

Added: components/wsrp/trunk/api/src/main/java/org/gatein/wsrp/api/PortalStructureProvider.java
===================================================================
--- components/wsrp/trunk/api/src/main/java/org/gatein/wsrp/api/PortalStructureProvider.java	                        (rev 0)
+++ components/wsrp/trunk/api/src/main/java/org/gatein/wsrp/api/PortalStructureProvider.java	2010-09-08 21:05:34 UTC (rev 4105)
@@ -0,0 +1,39 @@
+/*
+ * JBoss, a division of Red Hat
+ * Copyright 2010, Red Hat Middleware, LLC, and individual
+ * contributors as indicated by the @authors tag. See the
+ * copyright.txt in the distribution for a full listing of
+ * individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.gatein.wsrp.api;
+
+import java.util.List;
+
+/**
+ * @author <a href="mailto:chris.laprun at jboss.com">Chris Laprun</a>
+ * @version $Revision$
+ */
+public interface PortalStructureProvider
+{
+   List<String> getPageIdentifiers();
+
+   List<String> getWindowIndentifiersFor(String pageId);
+
+   void assignPortletToWindow(String portletId, String windowId, String pageId);
+}

Modified: components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/migration/MigrationService.java
===================================================================
--- components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/migration/MigrationService.java	2010-09-08 21:01:50 UTC (rev 4104)
+++ components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/migration/MigrationService.java	2010-09-08 21:05:34 UTC (rev 4105)
@@ -24,9 +24,13 @@
 package org.gatein.wsrp.consumer.migration;
 
 import org.gatein.common.util.ParameterValidation;
+import org.gatein.wsrp.api.PortalStructureProvider;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
@@ -37,7 +41,51 @@
 public class MigrationService
 {
    private SortedMap<Long, ExportInfo> exportInfos;
+   // todo: fix me
+   private PortalStructureProvider structureProvider = new PortalStructureProvider()
+   {
+      private Map<String, List<String>> pagesToWindows = new HashMap<String, List<String>>(7);
+      {
+         List<String> windows = new ArrayList<String>(3);
+         windows.add("p1w1");
+         windows.add("p1w2");
+         windows.add("p1w3");
 
+         pagesToWindows.put("p1", windows);
+
+         windows = new ArrayList<String>(2);
+         windows.add("p2w1");
+         windows.add("p2w2");
+
+         pagesToWindows.put("p2", windows);
+      }
+
+      public List<String> getPageIdentifiers()
+      {
+         return new ArrayList<String>(pagesToWindows.keySet());
+      }
+
+      public List<String> getWindowIndentifiersFor(String pageId)
+      {
+         return pagesToWindows.get(pageId);
+      }
+
+      public void assignPortletToWindow(String portletId, String windowId, String pageId)
+      {
+         System.out.println("Assigned portlet " + portletId + " to window " + windowId + " on page " + pageId);
+      }
+   };
+
+   public PortalStructureProvider getStructureProvider()
+   {
+      return structureProvider;
+   }
+
+   public void setStructureProvider(PortalStructureProvider structureProvider)
+   {
+      this.structureProvider = structureProvider;
+   }
+
    public List<ExportInfo> getAvailableExportInfos()
    {
       return new ArrayList<ExportInfo>(getExportInfos().values());



More information about the gatein-commits mailing list