Author: chris.laprun(a)jboss.com
Date: 2007-10-22 22:52:32 -0400 (Mon, 22 Oct 2007)
New Revision: 8745
Modified:
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PortalObjectManagerBean.java
trunk/core-admin/src/resources/portal-admin-war/WEB-INF/faces-config.xml
trunk/core-admin/src/resources/portal-admin-war/WEB-INF/jboss-portlet.xml
trunk/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/editProperties.xhtml
trunk/core/src/main/org/jboss/portal/core/event/PortalEventListenerRegistry.java
trunk/core/src/main/org/jboss/portal/core/event/PortalEventListenerRegistryImpl.java
trunk/core/src/main/org/jboss/portal/core/impl/api/node/PortalNodeEventContextImpl.java
Log:
- JBPORTAL-1771: Added support to set listener on portal nodes graphically in the admin
GUI.
Modified:
trunk/core/src/main/org/jboss/portal/core/event/PortalEventListenerRegistry.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/event/PortalEventListenerRegistry.java 2007-10-23
02:50:17 UTC (rev 8744)
+++
trunk/core/src/main/org/jboss/portal/core/event/PortalEventListenerRegistry.java 2007-10-23
02:52:32 UTC (rev 8745)
@@ -23,6 +23,7 @@
package org.jboss.portal.core.event;
import java.util.Collection;
+import java.util.Set;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -50,4 +51,12 @@
*
*/
Collection getListeners();
+
+ /**
+ * Returns the set of String identifiers for all currently registered listeners.
+ *
+ * @return the set of String identifiers for all currently registered listeners.
+ * @since 2.6.3
+ */
+ Set getListenerIds();
}
Modified:
trunk/core/src/main/org/jboss/portal/core/event/PortalEventListenerRegistryImpl.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/event/PortalEventListenerRegistryImpl.java 2007-10-23
02:50:17 UTC (rev 8744)
+++
trunk/core/src/main/org/jboss/portal/core/event/PortalEventListenerRegistryImpl.java 2007-10-23
02:52:32 UTC (rev 8745)
@@ -22,10 +22,11 @@
******************************************************************************/
package org.jboss.portal.core.event;
+import org.jboss.portal.common.util.CopyOnWriteRegistry;
import org.jboss.portal.jems.as.system.AbstractJBossService;
-import org.jboss.portal.common.util.CopyOnWriteRegistry;
import java.util.Collection;
+import java.util.Set;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -57,4 +58,9 @@
return listeners.getRegistrations();
}
+ public Set getListenerIds()
+ {
+ return listeners.getKeys();
+ }
+
}
Modified:
trunk/core/src/main/org/jboss/portal/core/impl/api/node/PortalNodeEventContextImpl.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/api/node/PortalNodeEventContextImpl.java 2007-10-23
02:50:17 UTC (rev 8744)
+++
trunk/core/src/main/org/jboss/portal/core/impl/api/node/PortalNodeEventContextImpl.java 2007-10-23
02:52:32 UTC (rev 8745)
@@ -22,11 +22,11 @@
******************************************************************************/
package org.jboss.portal.core.impl.api.node;
+import org.jboss.portal.api.PortalRuntimeContext;
+import org.jboss.portal.api.node.PortalNode;
+import org.jboss.portal.api.node.event.PortalNodeEvent;
import org.jboss.portal.api.node.event.PortalNodeEventContext;
-import org.jboss.portal.api.node.event.PortalNodeEvent;
import org.jboss.portal.api.node.event.PortalNodeEventListener;
-import org.jboss.portal.api.node.PortalNode;
-import org.jboss.portal.api.PortalRuntimeContext;
import org.jboss.portal.core.event.PortalEventListenerRegistry;
/**
@@ -68,9 +68,10 @@
public PortalNodeEvent dispatch()
{
PortalNodeEventListener listener = null;
- if (node.object.getListener() != null)
+ String listenerId = node.object.getListener();
+ if (listenerId != null && listenerId.length() > 0)
{
- Object tmp = registry.getListener(node.object.getListener());
+ Object tmp = registry.getListener(listenerId);
if (tmp != null && tmp instanceof PortalNodeEventListener)
{
listener = (PortalNodeEventListener)tmp;
Modified:
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PortalObjectManagerBean.java
===================================================================
---
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PortalObjectManagerBean.java 2007-10-23
02:50:17 UTC (rev 8744)
+++
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PortalObjectManagerBean.java 2007-10-23
02:52:32 UTC (rev 8745)
@@ -26,6 +26,7 @@
import org.jboss.portal.core.admin.ui.actions.PropertyAction;
import org.jboss.portal.core.admin.ui.common.PageManagerBean;
import org.jboss.portal.core.admin.ui.portlet.PortletDefinitionInvoker;
+import org.jboss.portal.core.event.PortalEventListenerRegistry;
import org.jboss.portal.core.impl.model.content.ContentProviderRegistryService;
import org.jboss.portal.core.model.content.Content;
import org.jboss.portal.core.model.content.ContentType;
@@ -99,6 +100,9 @@
/** . */
private RoleModule roleModule;
+ /** Listener registry to bind even listener to PortalNodes. */
+ private PortalEventListenerRegistry listenerRegistry;
+
// Navigational state
/** The selected id. */
@@ -206,6 +210,16 @@
return null;
}
+ public PortalEventListenerRegistry getListenerRegistry()
+ {
+ return listenerRegistry;
+ }
+
+ public void setListenerRegistry(PortalEventListenerRegistry listenerRegistry)
+ {
+ this.listenerRegistry = listenerRegistry;
+ }
+
public RoleModule getRoleModule()
{
return roleModule;
@@ -800,4 +814,23 @@
{
return controlProperties;
}
+
+ public SelectItem[] getListenerIds()
+ {
+ Set ids = listenerRegistry.getListenerIds();
+ if (ids != null)
+ {
+ SelectItem[] result = new SelectItem[ids.size() + 1];
+ int i = 1;
+ result[0] = new SelectItem("", "no bound listener");
+ for (Iterator idsIt = ids.iterator(); idsIt.hasNext();)
+ {
+ result[i++] = new SelectItem(idsIt.next());
+ }
+
+ return result;
+ }
+
+ return null;
+ }
}
Modified: trunk/core-admin/src/resources/portal-admin-war/WEB-INF/faces-config.xml
===================================================================
--- trunk/core-admin/src/resources/portal-admin-war/WEB-INF/faces-config.xml 2007-10-23
02:50:17 UTC (rev 8744)
+++ trunk/core-admin/src/resources/portal-admin-war/WEB-INF/faces-config.xml 2007-10-23
02:52:32 UTC (rev 8745)
@@ -75,6 +75,10 @@
<property-name>domainConfigurator</property-name>
<value>#{applicationScope.AuthorizationDomainRegistry.portalobject.configurator}</value>
</managed-property>
+ <managed-property>
+ <property-name>listenerRegistry</property-name>
+ <value>#{applicationScope.ListenerRegistry}</value>
+ </managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>portalAction</managed-bean-name>
Modified: trunk/core-admin/src/resources/portal-admin-war/WEB-INF/jboss-portlet.xml
===================================================================
--- trunk/core-admin/src/resources/portal-admin-war/WEB-INF/jboss-portlet.xml 2007-10-23
02:50:17 UTC (rev 8744)
+++ trunk/core-admin/src/resources/portal-admin-war/WEB-INF/jboss-portlet.xml 2007-10-23
02:52:32 UTC (rev 8745)
@@ -112,4 +112,9 @@
<service-class>org.jboss.portal.portlet.federation.FederatingPortletInvoker</service-class>
<service-ref>:service=PortletInvoker,type=Federating</service-ref>
</service>
+ <service>
+ <service-name>ListenerRegistry</service-name>
+
<service-class>org.jboss.portal.core.event.PortalEventListenerRegistry</service-class>
+ <service-ref>portal:service=ListenerRegistry</service-ref>
+ </service>
</portlet-app>
Modified:
trunk/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/editProperties.xhtml
===================================================================
---
trunk/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/editProperties.xhtml 2007-10-23
02:50:17 UTC (rev 8744)
+++
trunk/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/editProperties.xhtml 2007-10-23
02:52:32 UTC (rev 8745)
@@ -1,22 +1,37 @@
<div
-
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"
-
xmlns:c="http://java.sun.com/jstl/core">
+
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"
+
xmlns:c="http://java.sun.com/jstl/core">
<ui:composition template="objectTemplate.xhtml">
<ui:param name="portalObjectScreen" value="Properties"/>
<ui:define name="content">
-
- <ui:include src="common/editProperties.xhtml">
- <ui:param name="properties"
value="#{portalobjectmgr.selectedProperties}"/>
+
+ <p class="portlet-area-header">Event Listener Binding</p>
+
+ <div class="portlet-area-body">
+ <h:form>
+ <h:outputLabel for="listener"
styleClass="portlet-form-field-label">
+ Choose the id of the PortalEventListener to bind to this
#{portalobjectmgr.selectedObjectType}:
+ </h:outputLabel>
+ <h:selectOneMenu id="listener"
value="#{portalobjectmgr.selectedObject.listener}">
+ <f:selectItems
value="#{portalobjectmgr.listenerIds}"/>
+ </h:selectOneMenu>
+ <h:commandButton value="Update"
styleClass="portlet-form-button"/>
+ </h:form>
+ </div>
+
+ <ui:include src="common/editProperties.xhtml">
+ <ui:param name="properties"
value="#{portalobjectmgr.selectedProperties}"/>
</ui:include>
<br/>
- <c:if test="#{portalobjectmgr.selectedProperties.relatedObject.type ==
PortalObject.TYPE_CONTEXT or portalobjectmgr.selectedProperties.relatedObject.type ==
PortalObject.TYPE_PORTAL}">
+ <c:if
+ test="#{portalobjectmgr.selectedProperties.relatedObject.type ==
PortalObject.TYPE_CONTEXT or portalobjectmgr.selectedProperties.relatedObject.type ==
PortalObject.TYPE_PORTAL}">
<!-- -->
<ui:include src="common/editPortalErrorHandling.xhtml">
@@ -36,6 +51,6 @@
</c:if>
</ui:define>
-
+
</ui:composition>
</div>
\ No newline at end of file