Author: chris.laprun(a)jboss.com
Date: 2008-08-11 17:14:31 -0400 (Mon, 11 Aug 2008)
New Revision: 11688
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/actions/CoordinationAction.java
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/actions/PortalInstanceDisplayNameAction.java
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/WEB-INF/classes/Resource.properties
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml
Log:
- Beginning of implementation for displaying existing event wirings:
+ needs better display of collections (in particular for windows)
+ checkbox progressive disclosure mechanism doesn't work yet
+ rename wiring has not been implemented as it'd be better implemented with support
in CoordinationConfigurator
+ delete wiring has not been tested (and thus probably doesn't work)
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/actions/CoordinationAction.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/actions/CoordinationAction.java 2008-08-11
20:35:28 UTC (rev 11687)
+++
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/actions/CoordinationAction.java 2008-08-11
21:14:31 UTC (rev 11688)
@@ -22,37 +22,37 @@
******************************************************************************/
package org.jboss.portal.core.admin.ui.actions;
+import org.jboss.portal.common.NotYetImplemented;
import org.jboss.portal.common.util.ConversionException;
import org.jboss.portal.core.admin.ui.PortalObjectManagerBean;
-import org.jboss.portal.core.admin.ui.PreferencesBean;
import org.jboss.portal.core.controller.coordination.AliasBindingInfo;
import org.jboss.portal.core.controller.coordination.EventWiringInfo;
+import org.jboss.portal.core.controller.coordination.IllegalCoordinationException;
import org.jboss.portal.core.controller.coordination.WindowBindingInfo;
+import org.jboss.portal.core.impl.model.content.portlet.PortletContent;
+import org.jboss.portal.core.model.content.ContentType;
+import org.jboss.portal.core.model.instance.Instance;
import org.jboss.portal.core.model.portal.Page;
import org.jboss.portal.core.model.portal.PortalObject;
import org.jboss.portal.core.model.portal.PortalObjectId;
import org.jboss.portal.core.model.portal.Window;
-import org.jboss.portal.core.model.instance.Instance;
-import org.jboss.portal.core.model.content.ContentType;
-import org.jboss.portal.core.impl.model.content.portlet.PortletContent;
-import org.jboss.portal.portlet.info.PortletInfo;
-import org.jboss.portal.portlet.info.EventingInfo;
-import org.jboss.portal.portlet.info.MetaInfo;
-import org.jboss.portal.portlet.info.PreferencesInfo;
-import org.jboss.portal.portlet.info.PreferenceInfo;
-import org.jboss.portal.portlet.info.CapabilitiesInfo;
-import org.jboss.portal.portlet.info.SecurityInfo;
+import org.jboss.portal.portlet.Portlet;
import org.jboss.portal.portlet.info.NavigationInfo;
import org.jboss.portal.portlet.info.ParameterInfo;
-import org.jboss.portal.portlet.Portlet;
+import org.jboss.portal.portlet.info.PortletInfo;
+import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
+import javax.faces.event.ValueChangeEvent;
import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
import java.util.Map;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ArrayList;
+import java.util.Set;
/**
* @author <a href="mailto:whales@redhat.com">Wesley Hales</a>
@@ -64,7 +64,8 @@
private Map<String, PortalObjectId> windows;
- private Map<String, String> eventWirings;
+ private Map<String, EventWiringInfo> eventWirings;
+ private Map<String, DisplayEventWiring> displayEventWirings;
private Map<String, String> eventSources;
@@ -112,20 +113,6 @@
this.pomb = pomb;
}
- public Map<String, String> getEventWirings()
- {
- if (eventWirings == null)
- {
- eventWirings = new HashMap<String, String>();
- }
- return eventWirings;
- }
-
- public void setEventWirings(Map<String, String> eventWirings)
- {
- this.eventWirings = eventWirings;
- }
-
public Map<String, String> getEventSources()
{
if (eventSources == null)
@@ -213,34 +200,26 @@
if (portalObject.getType() == PortalObject.TYPE_PAGE)
{
- Page page = (Page) portalObject;
+ Page page = (Page)portalObject;
try
{
//eventwirings prep for ui
- for (Object o : pomb.getCoordinationService().getEventWirings(page))
+ Collection<EventWiringInfo> wiringInfos =
pomb.getCoordinationService().getEventWirings(page);
+ for (EventWiringInfo ewInfo : wiringInfos)
{
- EventWiringInfo ewInfo = (EventWiringInfo)o;
- getEventWirings().put(ewInfo.getName(), ewInfo.getName());
-
- //prep sources
- for (Object o1 : ewInfo.getSources().entrySet())
+ if (eventWirings == null)
{
- Map.Entry entry = (Map.Entry)o1;
- Window paramName = (Window)entry.getKey();
- QName paramValue = (QName)entry.getValue();
- getEventSources().put(paramName.getName(),
paramValue.getNamespaceURI());
+ eventWirings = new HashMap<String,
EventWiringInfo>(wiringInfos.size());
}
+ eventWirings.put(ewInfo.getName(), ewInfo);
- //prep destinations
- for (Object o1 : ewInfo.getDestinations().entrySet())
+ if (displayEventWirings == null)
{
- Map.Entry entry = (Map.Entry)o1;
- Window paramName = (Window)entry.getKey();
- QName paramValue = (QName)entry.getValue();
- getEventDestinations().put(paramName.getName(),
paramValue.getNamespaceURI());
+ displayEventWirings = new HashMap<String, DisplayEventWiring>();
}
+ displayEventWirings.put(ewInfo.getName(), new
DisplayEventWiring(ewInfo));
}
//aliasbindings prep for ui
@@ -262,13 +241,11 @@
Map.Entry entry = (Map.Entry)o1;
Window paramName = (Window)entry.getKey();
QName paramValue = (QName)entry.getValue();
- getWindowBindings().put(paramName.getName(),paramValue.toString());
+ getWindowBindings().put(paramName.getName(), paramValue.toString());
}
-
+
}
-
-
// process only windows...
for (PortalObject po : page.getChildren(PortalObject.WINDOW_MASK))
{
@@ -279,9 +256,9 @@
//getEventSources().put(portalObject.getName(),pomb.getCoordinationService().getEventDestinationWirings((Window)portalObject));
//getEventDestinations().put(portalObject.getName(),pomb.getCoordinationService().getEventSourceWirings((Window)portalObject));
//}
- if(ContentType.PORTLET.equals(window.getContentType()))
+ if (ContentType.PORTLET.equals(window.getContentType()))
{
- PortletContent pc = (PortletContent) window.getContent();
+ PortletContent pc = (PortletContent)window.getContent();
Instance instance =
pomb.getInstanceContainer().getDefinition(pc.getInstanceRef());
Portlet portlet = instance.getPortlet();
PortletInfo info = portlet.getInfo();
@@ -312,4 +289,137 @@
return "editCoordination";
}
+ // JSF helper methods
+
+ /**
+ * Retrieves the value of the parameter which name is given.
+ *
+ * @param name
+ * @return
+ */
+ public String getFacesParam(String name)
+ {
+ return
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(name);
+ }
+
+ /** Bypass the rest of the life cycle and re-display page */
+ public void renderResponse()
+ {
+ FacesContext.getCurrentInstance().renderResponse();
+ }
+
+ // Event Wirings methods
+
+ public boolean isExplicitEventsUsed()
+ {
+ Map<String, String> props = getSelectedObject().getProperties();
+ if (props != null)
+ {
+ return
!Boolean.valueOf(props.get("coordination.event.implicit_mode"));
+ }
+ return false;
+ }
+
+ public Map<String, EventWiringInfo> getEventWirings()
+ {
+ return eventWirings;
+ }
+
+ public Collection<DisplayEventWiring> getDisplayEventWirings()
+ {
+ if (displayEventWirings == null)
+ {
+ return Collections.emptyList();
+ }
+
+ ArrayList<DisplayEventWiring> result = new
ArrayList<DisplayEventWiring>(displayEventWirings.values());
+ Collections.sort(result);
+
+ return result;
+ }
+
+ public String deleteWiring()
+ {
+ String wiring = getFacesParam("wiring");
+ EventWiringInfo event = eventWirings.get(wiring);
+ try
+ {
+ pomb.getCoordinationService().removeEventWiring(event);
+ displayEventWirings.remove(wiring);
+ }
+ catch (IllegalCoordinationException e)
+ {
+ e.printStackTrace(); //To change body of catch statement use File | Settings |
File Templates.
+ }
+
+ return null;
+ }
+
+ public String renameWiring()
+ {
+ String wiring = getFacesParam("wiring");
+ EventWiringInfo event = eventWirings.get(wiring);
+ // todo: implement, rename operation should be on CoordinationConfigurator
+
+ throw new NotYetImplemented("renameWiring not yet implemented!");
+ }
+
+ public void useWSDLListener(ValueChangeEvent event)
+ {
+
+ }
+
+
+ public static class DisplayEventWiring implements Comparable
+ {
+ private String name;
+ private Set<Window> sourceWindows;
+ private Set<QName> sourceEvents;
+ private Set<Window> destinationWindows;
+ private Set<QName> destinationEvents;
+
+ DisplayEventWiring(EventWiringInfo eventInfo)
+ {
+ name = eventInfo.getName();
+
+ Map<Window, QName> sources = eventInfo.getSources();
+ sourceWindows = new HashSet<Window>(sources.keySet());
+ sourceEvents = new HashSet<QName>(sources.values());
+
+ Map<Window, QName> destinations = eventInfo.getDestinations();
+ destinationWindows = new HashSet<Window>(destinations.keySet());
+ destinationEvents = new HashSet<QName>(destinations.values());
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public Set<Window> getSourceWindows()
+ {
+ return sourceWindows;
+ }
+
+ public Set<QName> getSourceEvents()
+ {
+ return sourceEvents;
+ }
+
+ public Set<Window> getDestinationWindows()
+ {
+ return destinationWindows;
+ }
+
+ public Set<QName> getDestinationEvents()
+ {
+ return destinationEvents;
+ }
+
+ public int compareTo(Object o)
+ {
+ DisplayEventWiring other = (DisplayEventWiring)o;
+ return name.compareTo(other.getName());
+ }
+ }
}
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/actions/PortalInstanceDisplayNameAction.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/actions/PortalInstanceDisplayNameAction.java 2008-08-11
20:35:28 UTC (rev 11687)
+++
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/actions/PortalInstanceDisplayNameAction.java 2008-08-11
21:14:31 UTC (rev 11688)
@@ -23,27 +23,20 @@
package org.jboss.portal.core.admin.ui.actions;
import org.jboss.portal.common.i18n.LocaleFormat;
-import org.jboss.portal.common.i18n.LocaleManager;
import org.jboss.portal.common.i18n.LocalizedString;
import org.jboss.portal.common.util.ConversionException;
-import org.jboss.portal.core.admin.ui.PortalObjectManagerBean;
-import org.jboss.portal.core.admin.ui.PortletManagerBean;
-import org.jboss.portal.core.admin.ui.InstanceManagerBean;
import org.jboss.portal.core.admin.ui.DisplayNameBean;
+import org.jboss.portal.core.admin.ui.InstanceManagerBean;
import org.jboss.portal.core.model.instance.Instance;
-import org.jboss.portal.core.model.portal.PortalObject;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.SortedMap;
-import java.util.TreeMap;
/**
* @author <a href="mailto:whales@redhat.com">Wesley Hales</a>
@@ -191,7 +184,7 @@
public String getFacesParam(String param)
{
- return
(String)FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(param);
+ return
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(param);
}
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/WEB-INF/classes/Resource.properties
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/WEB-INF/classes/Resource.properties 2008-08-11
20:35:28 UTC (rev 11687)
+++
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/WEB-INF/classes/Resource.properties 2008-08-11
21:14:31 UTC (rev 11688)
@@ -277,5 +277,13 @@
COORDINATION_ALIAS_BINDINGS=Alias bindings
COORDINATION_WINDOW_BINDINGS=Window bindings
-COORDINATION_EVENT_WIRINGS=Event wirings
-COORDINATION_EVENT_IMPLICIT_MODE=Event implicit mode
+COORDINATION_EVENT_WIRINGS=event wirings
+COORDINATION_EVENT_EXPLICIT_MODE=Use explicit event wiring
+COORDINATION_EVENT_MANAGE_EXISTING=Manage existing event wirings:
+COORDINATION_EVENT_EXISTING_NAME=Name
+COORDINATION_EVENT_EXISTING_SOURCE_WINDOWS=Source windows
+COORDINATION_EVENT_EXISTING_SOURCE_EVENTS=Source events
+COORDINATION_EVENT_EXISTING_DESTINATION_EVENTS=Destination events
+COORDINATION_EVENT_EXISTING_DESTINATION_WINDOWS=Destination windows
+COORDINATION_EVENT_EXISTING_ACTIONS=Actions
+COORDINATION_EVENT_CREATE=Create new event wiring:
\ No newline at end of file
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml 2008-08-11
20:35:28 UTC (rev 11687)
+++
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml 2008-08-11
21:14:31 UTC (rev 11688)
@@ -9,28 +9,27 @@
<ui:param name="portalObjectScreen"
value="#{bundle.COORDINATION_COORDINATION}"/>
<ui:define name="content">
<div class="tenpx-top-bottom">
- <h2
class="portlet-area-header">#{coordinationAction.selectedObject.name}
#{bundle.COORDINATION_PARAMETER_BINDINGS}</h2>
- <h3 class="sectionTitle
tenpx-top-bottom">#{bundle.COORDINATION_CREATE_PARAMETER_BINDING}</h3>
+ <h2
class="portlet-area-header">#{coordinationAction.selectedObject.name}
#{bundle.COORDINATION_PARAMETER_BINDINGS}</h2>
+
+ <!-- Create parameter binding -->
+ <h3 class="sectionTitle
tenpx-top-bottom">#{bundle.COORDINATION_CREATE_PARAMETER_BINDING}</h3>
#{bundle.COORDINATION_PARAMETER_IMPLICIT_MODE}
#{coordinationAction.selectedObject.properties['coordination.parameter.implicit_mode']}
- <hr/>
- #{bundle.COORDINATION_EVENT_IMPLICIT_MODE}
#{coordinationAction.selectedObject.properties['coordination.event.implicit_mode']}
- <hr/>
- #{bundle.COORDINATION_WINDOWS}
- <h:selectManyListbox size="5"
value="#{coordinationAction.stringStub}">
- <f:selectItems value="#{coordinationAction.windows}"/>
- </h:selectManyListbox>
+ <hr/>
- <hr/>
- #{bundle.COORDINATION_WINDOW_BINDINGS}
- <h:selectManyListbox size="5"
value="#{coordinationAction.stringStub}">
- <f:selectItems value="#{coordinationAction.windowBindings}"/>
- </h:selectManyListbox>
-
- <h3 class="sectionTitle tenpx-top-bottom">Manage Existing Parameter
Bindings</h3>
+ #{bundle.COORDINATION_WINDOWS}
+ <h:selectManyListbox size="5"
value="#{coordinationAction.stringStub}">
+ <f:selectItems value="#{coordinationAction.windows}"/>
+ </h:selectManyListbox>
- <div class="float-left quarter-width">
+ <hr/>
+ #{bundle.COORDINATION_WINDOW_BINDINGS}
+ <h:selectManyListbox size="5"
value="#{coordinationAction.stringStub}">
+ <f:selectItems
value="#{coordinationAction.windowBindings}"/>
+ </h:selectManyListbox>
- </div>
+ <!-- Manage existing parameter bindings -->
+ <h3 class="sectionTitle tenpx-top-bottom">Manage Existing
Parameter Bindings</h3>
+
<div class="float-left quarter-width">
<h:selectManyListbox size="5"
value="#{coordinationAction.stringStub}">
<f:selectItems value="#{coordinationAction.windows}"/>
@@ -39,10 +38,82 @@
<div class="float-left quarter-width">
<h:inputText value="#{coordinationAction.stringStub}"/>
</div>
+ <br class="clear"/>
+ </div>
- <h3 class="portlet-section-title
tenpx-top-bottom">#{coordinationAction.selectedObject.name} Event
Coordination</h3>
- #{bundle.COORDINATION_EVENT_WIRINGS}
- <h:selectManyListbox size="5"
value="#{coordinationAction.stringStub}">
+ <!-- Event wirings -->
+ <h2
class="portlet-area-header">#{coordinationAction.selectedObject.name}
#{bundle.COORDINATION_EVENT_WIRINGS}</h2>
+
+ <h:form>
+ <h:selectBooleanCheckbox id="useExplicitEvents"
value="#{coordinationAction.explicitEventsUsed}"
+ onchange="this.form.submit()"
valueChangeListener="#{consumer.explicitEventsListener}"
+ immediate="true"/>
#{bundle.COORDINATION_EVENT_EXPLICIT_MODE}
+ </h:form>
+
+ <!-- Manage existing wirings -->
+ <h3 class="sectionTitle
tenpx-top-bottom">#{bundle.COORDINATION_EVENT_MANAGE_EXISTING}</h3>
+ <h:form>
+ <h:dataTable var="wiring"
value="#{coordinationAction.displayEventWirings}"
+ rendered="#{coordinationAction.explicitEventsUsed}"
+ styleClass="objectList datatable"
+
rowClasses="portlet-section-body,portlet-section-alternate-blue"
+ columnClasses="objectNameColumn, objectActionColumn"
+ headerClass="portlet-section-header">
+ <h:column>
+ <f:facet name="header">
+ <h:outputText
value="#{bundle.COORDINATION_EVENT_EXISTING_NAME}"/>
+ </f:facet>
+ #{wiring.name}
+ </h:column>
+ <h:column>
+ <f:facet name="header">
+ <h:outputText
value="#{bundle.COORDINATION_EVENT_EXISTING_SOURCE_WINDOWS}"/>
+ </f:facet>
+ #{wiring.sourceWindows}
+ </h:column>
+ <h:column>
+ <f:facet name="header">
+ <h:outputText
value="#{bundle.COORDINATION_EVENT_EXISTING_SOURCE_EVENTS}"/>
+ </f:facet>
+ #{wiring.sourceEvents}
+ </h:column>
+ <h:column>
+ <f:facet name="header">
+ <h:outputText
value="#{bundle.COORDINATION_EVENT_EXISTING_DESTINATION_EVENTS}"/>
+ </f:facet>
+ #{wiring.destinationEvents}
+ </h:column>
+ <h:column>
+ <f:facet name="header">
+ <h:outputText
value="#{bundle.COORDINATION_EVENT_EXISTING_DESTINATION_WINDOWS}"/>
+ </f:facet>
+ #{wiring.destinationWindows}
+ </h:column>
+ <h:column>
+ <f:facet name="header">
+ <h:outputText
value="#{bundle.COORDINATION_EVENT_EXISTING_ACTIONS}"/>
+ </f:facet>
+
+ <h:commandLink
action="#{coordinationAction.deleteWiring}">
+ <h:outputText styleClass="actionDelete"
value="#{bundle.COMMON_DELETE}"/>
+ <f:param name="wiring"
value="#{wiring.name}"/>
+ </h:commandLink>
+ <h:commandLink
action="#{coordinationAction.renameWiring}">
+ <h:outputText styleClass="actionRename"
value="#{bundle.RENAME}"/>
+ <f:param name="wiring"
value="#{wiring.name}"/>
+ </h:commandLink>
+ </h:column>
+ </h:dataTable>
+ </h:form>
+
+ <!-- Create new event wiring -->
+ <h3 class="sectionTitle
tenpx-top-bottom">#{bundle.COORDINATION_EVENT_CREATE}</h3>
+ <h:form>
+
+ </h:form>
+
+ <ui:remove>
+ <h:selectManyListbox size="5"
value="#{coordinationAction.stringStub}">
<f:selectItems value="#{coordinationAction.eventWirings}"/>
</h:selectManyListbox>
<br/>
@@ -69,9 +140,6 @@
<ui:repeat var="eventDestinations"
value="#{coordinationAction.eventDestinations}">
#{eventDestinations}
</ui:repeat>
-
-
- <ui:remove>
<h:selectOneMenu id="locales"
value="#{coordinationAction.stringStub}">
<f:selectItems
value="#{coordinationAction.pomb.portalItems}"/>
</h:selectOneMenu>
@@ -92,6 +160,5 @@
</h:selectManyListbox>
<br/>
</ui:remove>
- </div>
</ui:define>
</ui:composition>