JBoss Portal SVN: r12193 - in tags/JBoss_Portal_2_7_0: faces/src/main/org/jboss/portal/faces/component/portlet and 1 other directory.
by portal-commits@lists.jboss.org
Author: thomas.heute(a)jboss.com
Date: 2008-10-28 03:03:48 -0400 (Tue, 28 Oct 2008)
New Revision: 12193
Modified:
tags/JBoss_Portal_2_7_0/core-admin/src/resources/portal-admin-war/jsf/common/editPageLayout.xhtml
tags/JBoss_Portal_2_7_0/faces/src/main/org/jboss/portal/faces/component/portlet/PortletHandler.java
Log:
JBPORTAL-2196: Selecting a portlet in page layout loses any already entered window name
Modified: tags/JBoss_Portal_2_7_0/core-admin/src/resources/portal-admin-war/jsf/common/editPageLayout.xhtml
===================================================================
--- tags/JBoss_Portal_2_7_0/core-admin/src/resources/portal-admin-war/jsf/common/editPageLayout.xhtml 2008-10-28 01:44:06 UTC (rev 12192)
+++ tags/JBoss_Portal_2_7_0/core-admin/src/resources/portal-admin-war/jsf/common/editPageLayout.xhtml 2008-10-28 07:03:48 UTC (rev 12193)
@@ -28,43 +28,25 @@
styleClass="portlet-form-input-field id-window-name"/>
</label>
<h:message for="windowName" errorClass="portlet-msg-error"/>
- </h:form>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <hr/>
- #{bundle.COMMON_SELECT_TYPE_CONTENT}:
- </td>
- </tr>
- <tr>
- <td>
- <h:form id="contentTypesForm">
+
+ <hr/>
+ #{bundle.COMMON_SELECT_TYPE_CONTENT}:
+ <br/>
<label for="instanceId" class="portlet-form-field-label-container">
<span class="portlet-form-field-label admin-label">#{bundle.COMMON_CONTENT_TYPE}:</span>
- <h:inputHidden id="windowNameCopy" value="#{pageManager.windowName}"/>
<h:selectOneMenu
id="instanceId"
value="#{pageManager.selectedContentType}"
styleClass="portlet-form-field contentType"
- onchange="document.getElementById('#{pageManager.namespace}:contentTypesForm:windowNameCopy').value = document.getElementById('#{pageManager.namespace}:windowForm:windowName').value;
- document.getElementById('#{pageManager.namespace}:contentTypesForm').submit(); ">
+ onchange="this.form.submit(); ">
<f:selectItems value="#{pageManager.contentTypeItems}"/>
</h:selectOneMenu>
</label>
<h:message for="instanceId" errorClass="portlet-msg-error"/>
- </h:form>
- </td>
- </tr>
- <tr>
- <td colspan="2">
+
<hr/>
#{bundle.COMMON_SELECT_CONTENT}:
- </td>
- </tr>
- <tr>
- <td colspan="2" valign="top">
- <h:form></h:form>
+ </h:form>
<jbp:portlet
portletId="#{pageManager.selectedEditorPortletId}"
portletInvoker="#{pageManager.portletInvoker}"
@@ -74,7 +56,8 @@
initialMode="edit_content"
initialWindowState="normal"
renderParameters="#{pageManager.selectedRenderParameters}"
- onClick="url.setParameter('windowName', document.getElementById('#{pageManager.namespace}:windowForm:windowName').value);"/>
+ onClick="url.setParameter('windowName', document.getElementById(document.getElementById('namespaceHolder').value + ':windowForm:windowName').value);"/>
+ <input type="hidden" value="#{pageManager.namespace}" id="namespaceHolder"/>
</td>
</tr>
</table>
Modified: tags/JBoss_Portal_2_7_0/faces/src/main/org/jboss/portal/faces/component/portlet/PortletHandler.java
===================================================================
--- tags/JBoss_Portal_2_7_0/faces/src/main/org/jboss/portal/faces/component/portlet/PortletHandler.java 2008-10-28 01:44:06 UTC (rev 12192)
+++ tags/JBoss_Portal_2_7_0/faces/src/main/org/jboss/portal/faces/component/portlet/PortletHandler.java 2008-10-28 07:03:48 UTC (rev 12193)
@@ -95,6 +95,18 @@
};
}
}
+ if ("onClick".equals(name))
+ {
+ final String s = attribute.getValue();
+ return new Metadata()
+ {
+ public void applyMetadata(FaceletContext ctx, Object instance)
+ {
+ UIPortlet portlet = (UIPortlet)instance;
+ portlet.setOnClick(s);
+ }
+ };
+ }
return null;
}
});
17 years, 6 months
JBoss Portal SVN: r12192 - in docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en: modules and 1 other directory.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2008-10-27 21:44:06 -0400 (Mon, 27 Oct 2008)
New Revision: 12192
Added:
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_alias_1.png
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_alias_2.png
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_aliast_3.png
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_parameter_1.png
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_parameter_2.png
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_parameter_3.png
Modified:
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/modules/coordination.xml
Log:
-Added more graphical configuration for aliases and parameters.
Added: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_alias_1.png
===================================================================
(Binary files differ)
Property changes on: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_alias_1.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Added: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_alias_2.png
===================================================================
(Binary files differ)
Property changes on: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_alias_2.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Added: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_aliast_3.png
===================================================================
(Binary files differ)
Property changes on: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_aliast_3.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Added: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_parameter_1.png
===================================================================
(Binary files differ)
Property changes on: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_parameter_1.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Added: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_parameter_2.png
===================================================================
(Binary files differ)
Property changes on: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_parameter_2.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Added: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_parameter_3.png
===================================================================
(Binary files differ)
Property changes on: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_parameter_3.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Modified: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/modules/coordination.xml
===================================================================
--- docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/modules/coordination.xml 2008-10-28 00:03:17 UTC (rev 12191)
+++ docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/modules/coordination.xml 2008-10-28 01:44:06 UTC (rev 12192)
@@ -159,7 +159,28 @@
</sect2>
<sect2>
<title>Graphical configuration</title>
- <para>TODO</para>
+ <para>
+ Creating a new alias binding is done by first selecting one or more public parameters that will be used for the binding:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/coordination/create_alias_1.png" format="png" align="center" valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+
+ The interface will prompt you for a name for this new binding:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/coordination/create_alias_2.png" format="png" align="center" valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+
+ Clicking on <literal>Create alias</literal> will create the new binding and it will appear in the existing binding lists:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/coordination/create_alias_3.png" format="png" align="center" valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+ </para>
</sect2>
</sect1>
@@ -200,7 +221,28 @@
</sect2>
<sect2>
<title>Graphical configuration</title>
- <para>TODO</para>
+ <para>
+ Creating a new parameter binding is done by first selecting a public parameter / window from the list:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/coordination/create_parameter_1.png" format="png" align="center" valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+
+ The interface will prompt you for a name for this new binding:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/coordination/create_parameter_2.png" format="png" align="center" valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+
+ Clicking on <literal>Create binding</literal> will create the new binding and it will appear in the existing binding lists:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/coordination/create_parameter_3.png" format="png" align="center" valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+ </para>
</sect2>
</sect1>
17 years, 6 months
JBoss Portal SVN: r12191 - in docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en: images/coordination and 1 other directories.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2008-10-27 20:03:17 -0400 (Mon, 27 Oct 2008)
New Revision: 12191
Added:
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/coordination.png
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/coordination_event.png
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_1.png
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_2.png
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_3.png
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_4.png
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_5.png
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_6.png
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/wiring_example.png
Modified:
docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/modules/coordination.xml
Log:
- Started updating coordination chapter. Still needs some work on alias and parameter bindings.
Added: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/coordination.png
===================================================================
(Binary files differ)
Property changes on: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/coordination.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Added: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/coordination_event.png
===================================================================
(Binary files differ)
Property changes on: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/coordination_event.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Added: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_1.png
===================================================================
(Binary files differ)
Property changes on: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_1.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Added: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_2.png
===================================================================
(Binary files differ)
Property changes on: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_2.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Added: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_3.png
===================================================================
(Binary files differ)
Property changes on: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_3.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Added: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_4.png
===================================================================
(Binary files differ)
Property changes on: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_4.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Added: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_5.png
===================================================================
(Binary files differ)
Property changes on: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_5.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Added: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_6.png
===================================================================
(Binary files differ)
Property changes on: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/create_event_6.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Added: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/wiring_example.png
===================================================================
(Binary files differ)
Property changes on: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/images/coordination/wiring_example.png
___________________________________________________________________
Name: svn:mime-type
+ image/png
Modified: docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/modules/coordination.xml
===================================================================
--- docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/modules/coordination.xml 2008-10-27 22:23:32 UTC (rev 12190)
+++ docs/branches/JBoss_Portal_Branch_2_7/referenceGuide/en/modules/coordination.xml 2008-10-28 00:03:17 UTC (rev 12191)
@@ -7,50 +7,130 @@
<firstname>Boleslaw</firstname>
<surname>Dawidowicz</surname>
</author>
+ <author>
+ <firstname>Chris</firstname>
+ <surname>Laprun</surname>
+ </author>
</chapterinfo>
- <title>JBoss Portal Explicit Coordination</title>
+ <title>JBoss Portal support for Portlet 2.0 coordination features</title>
<sect1>
- <title>Explicit vs implicit coordination</title>
+ <title>Introduction</title>
<para>
- Portlet 2.0 coordination features are mediated by the portal between several
- portlet windows, therefore the portal at runtime needs to be able to define
- relationships between windows. Relationship can be established from an implicit
- model (i.e a set of predicates applied on some state that will answer TRUE/FALSE
- to the question are the portlet windows foo and bar in a relationship) or from an
- explicit model (that states that foo and bar have a relationship). The implicit
- model is very good for defining default configuration as it does not require much
- configuration but is not able to cover the exceptional case, that's why we need
- to combine it with an explicit model that will take precedence over the implicit
- model, it is the well known principle of convention over configuration.
+ While the Portlet 2.0 specification provides for more advanced coordination between portlets than the 1.0
+ version of the specification, it is left up to specific implementations how portlets are wired together. This
+ chapter will look into how the coordination features are implemented in JBoss Portal.
</para>
<para>
- Currently all explicit coordination happens only in the scope of the same page.
+ If you are interested in these features, we strongly encourage you to read the Portlet 2.0 (JSR-286)
+ specification as we will assume in this chapter that you are familiar with the different coordination concepts.
</para>
- </sect1>
- <sect1>
- <title>Bindings and wirings</title>
-
<sect2>
- <title>Event wiring</title>
+ <title>Explicit vs. implicit coordination</title>
+ <para>
+ Most JSR-286 specification implementations support the coordination features using what is called an
+ <emphasis>implicit</emphasis> coordination model. This model is called implicit because the relations
+ between the different interacting portlets are inferred based on the event or parameter names that are used
+ to pass information between the portlets. This follows the well-known principle of convention over
+ configuration and provides a good default behavior as it doesn't require explicit user action to wire
+ portlets.
+ </para>
+ <para>
+ However, such an <emphasis>implicit</emphasis> model of how portlets are wired together fails to handle more
+ complex cases. In particular, it is often the case that semantically related events or public parameters are
+ named differently by different portlet providers. As it is not always possible to modify the portlets to
+ adjust for this minor naming difference of otherwise semnantically compatible portlets, JBoss Portal
+ introduces an <emphasis>explicit</emphasis> coordination model that takes precedence over the implicit model
+ when so required.
+ </para>
+ <para>
+ Consider, for example, the following case: we have 3 windows (<literal>A</literal>, <literal>B</literal>
+ and <literal>C</literal>) on a given page. Each window is associated to a given portlet
+ (<literal>Portlet A</literal>, <literal>Portlet B</literal> and <literal>Portlet C</literal>, respectively).
+ <literal>Portlet A</literal> can produce the <literal>Event A</literal> event, while
+ <literal>Portlet B</literal> and <literal>Portlet C</literal> can consume <literal>Event B</literal> and
+ <literal>Event C</literal>, respectively. Assuming that these events are semantically equivalent, we would
+ like to wire these portlets via their events such that when <literal>Portlet A</literal> emits an
+ <literal>Event A</literal>, it gets converted to the appropriate event and transmitted to both
+ <literal>Portlet B</literal> and <literal>Portlet C</literal> so that their respective windows can be
+ appropriately updated. This scenario, as depicted below, is impossible using <emphasis>implicit</emphasis>
+ wiring of events:
+ <example>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/coordination/wiring_example.png" format="png" align="center"
+ valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+ </example>
+
+ </para>
<para>
- Wires JSR-286 events. With implicit wirings the event producer and the
- consumer declares the same event namespace and local name to get event
- delivered in the scope of the same page. With explicit wiring any pairs of
- Window:Event can be connected.
+ We look at how to bypass the default implicit model using JBoss Portal's explicit model
+ in the rest of this chapter. It is, however, interesting to note that JBoss Portal can function with both
+ models at the same time. More precisely, it is possible to use the implicit handling of coordination while
+ still specifying explicit wirings, as we will see later.
</para>
</sect2>
+ </sect1>
+
+ <sect1>
+ <title>General configuration considerations</title>
+ <para>
+ As most other features of JBoss Portal, the coordination functionality can be configured either declaratively
+ using the now familiar <literal>*-object.xml</literal> descriptors (see <xref linkend="xmldescriptors"/> for
+ a refresher on these descriptors) or, at runtime, using the administration configuration GUI. We detail, below,
+ both configuration options for each type of coordination entities.
+
+ <note>
+ Explicit coordination is currently scoped only at the page level. More specificially, explicit
+ coordination between portlets is only supported between portlets located on the same page.
+ </note>
+ </para>
+
<sect2>
- <title>Parameter binding</title>
+ <title>Overview of the configuration interface</title>
+ <para>
+ Launching JBoss Portal's administration interface, you will notice a few changes. In particular, a new option
+ is available on page configuration screens: the ability to configure coordination using the
+ <literal>Coordination</literal> action:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/coordination/coordination.png" format="png" align="center" valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+ </para>
<para>
- Binds JSR-286 shared parameters. With implicit binding parameters with the
- same public name are shared. With explicit binding any public parameters can
- share values. Windows for which such binding applies are explicitly defined.
+ Clicking on that link will bring you to the coordination configuration for that particular page. The
+ interface is organized in three sections, each of which is collapsible by clicking on the section header.
+ These sections detail the configuration for each coordination element that can be controlled by JBoss Portal:
+ <itemizedlist>
+ <listitem>
+ <para>Alias bindings</para>
+ </listitem>
+ <listitem>
+ <para>Parameter bindings</para>
+ </listitem>
+ <listitem>
+ <para>Event wirings</para>
+ </listitem>
+ </itemizedlist>
+ We will look at the specific configuration and what each of these concepts mean later. Here is how the
+ interface looks like for a page, with both the alias and parameter bindings section collapsed:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/coordination/coordination_event.png" format="png" align="center" valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
</para>
</sect2>
+ </sect1>
+
+ <sect1>
+ <title>Alias Bindings</title>
<sect2>
- <title>Alias binding</title>
+ <title>Definition</title>
<para>
Explicit alias binding define a name of page scoped parameter that will apply
@@ -59,144 +139,280 @@
<programlisting><![CDATA[http://localhost:8080/portal/portal/default/Coordination+Samples?aliasBinding1=someValue]]></programlisting>
</sect2>
+ <sect2>
+ <title>Configuration via XML</title>
+ <para>TODO</para>
+ <programlisting role="XML"><![CDATA[<coordination>
+ <bindings>
+ <implicit-mode>FALSE</implicit-mode>
+ <alias-binding>
+ <id>aliasBinding1</id>
+ <qname>foo</qname>
+ </alias-binding>
+ <alias-binding>
+ <id>aliasBinding2</id>
+ <qname>bar1</qname>
+ <qname>{urn:jboss:portal:samples:daa2}daa2</qname>
+ </alias-binding>
+ </bindings>
+</coordination>]]></programlisting>
+ </sect2>
+ <sect2>
+ <title>Graphical configuration</title>
+ <para>TODO</para>
+ </sect2>
</sect1>
+
<sect1>
- <title>Coordination configuration</title>
+ <title>Parameter bindings</title>
+ <sect2>
+ <title>Definition</title>
<para>
- Configuration takes place in -object.xml file. The <coordination> tag
- can be used in both <page> and <portal> tags. When used in
- <portal> tag only <implicit-mode> tag can be defined for wirings
- and bindings:
+ Binds JSR-286 shared parameters. With implicit binding parameters with the
+ same public name are shared. With explicit binding any public parameters can
+ share values. Windows for which such binding applies are explicitly defined.
</para>
+ </sect2>
+ <sect2>
+ <title>Configuration via XML</title>
+ <para>TODO</para>
+ <programlisting role="XML"><![CDATA[<coordination>
+ <bindings>
+ <implicit-mode>FALSE</implicit-mode>
+ <parameter-binding>
+ <id>parameterBinding1</id>
+ <window-coordination>
+ <window-name>SomePortletWindow1</window-name>
+ <qname>foo</qname>
+ </window-coordination>
+ <window-coordination>
+ <window-name>SomePortletWindow2</window-name>
+ <qname>foo</qname>
+ </window-coordination>
+ <window-coordination>
+ <window-name>SomePortletWindow2</window-name>
+ <qname>{urn:jboss:portal:samples:daa1}daa1</qname>
+ </window-coordination>
+ </parameter-binding>
+ </bindings>
+</coordination>]]></programlisting>
+ </sect2>
+ <sect2>
+ <title>Graphical configuration</title>
+ <para>TODO</para>
+ </sect2>
+ </sect1>
- <programlisting role="XML"><![CDATA[<portal>
+ <sect1>
+ <title>Event wirings</title>
+ <sect2>
+ <title>Definition</title>
- ...
+ <para>
+ An <emphasis>event wiring</emphasis> wires an event produced by specified portlet windows to consumer
+ portlet windows. In the <emphasis>implicit</emphasis> form, this wiring associates producer and consumer
+ via the event's qualified name (QName).
+ </para>
+ </sect2>
- <coordination>
- <bindings>
- <implicit-mode>TRUE</implicit-mode>
- </bindings>
- <wirings>
- <implicit-mode>FALSE</implicit-mode>
- </wirings>
- </coordination>
-
-</portal>]]></programlisting>
+ <sect2>
+ <title>Configuration via XML</title>
<para>
- When used within the <page> tag coordination event wirings and bindings
- can be defined:</page></para>
+ Explicit event wirings can be defined in any page definition of your <literal>*-object.xml</literal>
+ descriptors. For example, this is how the example that we detailed above would be implemented, within a
+ page definition:
+ </para>
+ <programlistingco>
+ <areaspec>
+ <area id="coordination.wirings.coordination" coords='2' />
+ <area id="coordination.wirings.wirings" coords='3' />
+ <area id="coordination.wirings.implicit" coords='4' />
+ <area id="coordination.wirings.event" coords='5' />
+ <area id="coordination.wirings.name" coords='6' />
+ <area id="coordination.wirings.sources" coords='7' />
+ <area id="coordination.wirings.windowcoord" coords='8' />
+ <area id="coordination.wirings.destinations" coords='13' />
+ </areaspec>
+ <programlisting><![CDATA[...
+<coordination>
+ <wirings>
+ <implicit-mode>TRUE</implicit-mode>
+ <event-wiring>
+ <name>wiring</name>
+ <sources>
+ <window-coordination>
+ <window-name>Window A</window-name>
+ <qname>Event A</qname>
+ </window-coordination>
+ </sources>
+ <destinations>
+ <window-coordination>
+ <window-name>Window B</window-name>
+ <qname>Event B</qname>
+ </window-coordination>
+ <window-coordination>
+ <window-name>Window C</window-name>
+ <qname>Event C</qname>
+ </window-coordination>
+ </destinations>
+ </event-wiring>
+ </wirings>
+</coordination>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="coordination.wirings.coordination">
+ <para>
+ Coordination configuration is done via the newly introduced <literal><coordination></literal>
+ element.
+ </para>
+ </callout>
+ <callout arearefs="coordination.wirings.wirings">
+ <para>
+ Event wirings are defined using the <literal><wirings></literal> element.
+ </para>
+ </callout>
+ <callout arearefs="coordination.wirings.implicit">
+ <para>
+ We specify here that we default to implicit wiring of events for this page. However, we will
+ define one explicit event wiring that will take precedence over the implicit wiring when
+ needed.
+ </para>
+ </callout>
+ <callout arearefs="coordination.wirings.event">
+ <para>
+ An event wiring definition consists of:
+ <itemizedlist>
+ <listitem>
+ <para>a name used to identify it</para>
+ </listitem>
+ <listitem>
+ <para>a list of source events that are to be mapped to the destination ones</para>
+ </listitem>
+ <listitem>
+ <para> a list of destination events that will be mapped from the source events</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </callout>
+ <callout arearefs="coordination.wirings.name">
+ <para>The name of the event wiring which must be unique in the scope of the specified page.</para>
+ </callout>
+ <callout arearefs="coordination.wirings.sources">
+ <para>
+ The list of source events, each being identified by a
+ <literal><window-coordination></literal> element.
+ </para>
+ </callout>
+ <callout arearefs="coordination.wirings.windowcoord">
+ <para>
+ A window / event name pair identifying either a source or destination of event to be mapped.
+ </para>
+ </callout>
+ <callout arearefs="coordination.wirings.destinations">
+ <para>
+ The list of destination events, each being identified by a
+ <literal><window-coordination></literal> element.
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ </sect2>
+ <sect2>
+ <title>Graphical configuration</title>
+ <para>
+ Creating a new event wiring is fairly easy as the interface will guide you. First, it will present a list of
+ available produced events on this page:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/coordination/create_event_1.png" format="png" align="center" valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
- <programlisting role="XML"><![CDATA[<coordination>
-
- <wirings>
- <implicit-mode>TRUE</implicit-mode>
- <event-wiring>
- <name>eventWiring1</name>
- <sources>
- <window-coordination>
- <window-name>ShoppingCatalogPortletWindow1</window-name>
- <qname>{urn:jboss:portal:samples:event}CartEvent</qname>
- </window-coordination>
- </sources>
- <destinations>
- <window-coordination>
- <window-name>ShoppingCartPortletWindow2</window-name>
- <qname>{urn:jboss:portal:samples:event}CartEvent</qname>
- </window-coordination>
- <window-coordination>
- <window-name>ShoppingCartPortletWindow3</window-name>
- <qname>{urn:jboss:portal:samples:event}CartEvent</qname>
- </window-coordination>
- </destinations>
- </event-wiring>
- <event-wiring>
- <name>eventWiring2</name>
- <sources>
- <window-coordination>
- <window-name>ShoppingCatalogPortletWindow2</window-name>
- <qname>{urn:jboss:portal:samples:event}CartEvent</qname>
- </window-coordination>
- </sources>
- <destinations>
- <window-coordination>
- <window-name>ShoppingCartPortletWindow1</window-name>
- <qname>{urn:jboss:portal:samples:event}CartEvent</qname>
- </window-coordination>
- <window-coordination>
- <window-name>ShoppingCartPortletWindow4</window-name>
- <qname>{urn:jboss:portal:samples:event}CartEvent</qname>
- </window-coordination>
- </destinations>
- </event-wiring>
- </wirings>
-
+ Select an event. The interface will display the list of all windows producing this event for this page. Note
+ also that your selection is summarized on the right side of the screen:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/coordination/create_event_2.png" format="png" align="center" valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
- <bindings>
- <implicit-mode>FALSE</implicit-mode>
-
- <parameter-binding>
- <id>parameterBinding1</id>
- <window-coordination>
- <window-name>SomePortletWindow1</window-name>
- <qname>foo</qname>
- </window-coordination>
- <window-coordination>
- <window-name>SomePortletWindow2</window-name>
- <qname>foo</qname>
- </window-coordination>
- <window-coordination>
- <window-name>SomePortletWindow3</window-name>
- <qname>foo</qname>
- </window-coordination>
- </parameter-binding>
+ Selecting one or more windows (here we selected two) will continue the process. The interface will now
+ present you with the list of consumed events on this page, while your new event wiring is still be being
+ built up on the right side of the screen:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/coordination/create_event_3.png" format="png" align="center" valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
- <parameter-binding>
- <id>parameterBinding2</id>
- <window-coordination>
- <window-name>SomePortletWindow1</window-name>
- <qname>bar1</qname>
- </window-coordination>
- <window-coordination>
- <window-name>SomePortletWindow2</window-name>
- <qname>{urn:jboss:portal:samples:daa1}daa1</qname>
- </window-coordination>
- </parameter-binding>
+ Select a destination event and be presented with the list of windows consuming that event:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/coordination/create_event_4.png" format="png" align="center" valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
- <alias-binding>
- <id>aliasBinding1</id>
- <qname>foo</qname>
- </alias-binding>
+ Select one or more destination windows to which the source event will be mapped via the destination event.
+ You will now be ask to name your new event wiring after having the opportunity to review what will be
+ created. We name our new event wiring <literal>foo</literal> here:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/coordination/create_event_5.png" format="png" align="center" valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
- <alias-binding>
- <id>aliasBinding2</id>
- <qname>bar1</qname>
- <qname>{urn:jboss:portal:samples:daa2}daa2</qname>
- </alias-binding>
-
- </bindings>
-</coordination>]]></programlisting>
+ Click on the <literal>Create wiring</literal> button. Your new event wiring has been created and will appear
+ in the list of existing wirings:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/coordination/create_event_6.png" format="png" align="center" valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+ </para>
+ </sect2>
+ </sect1>
- <sect2>
- <title><implicit-mode></title>
+ <sect1>
+ <title><implicit-mode></title>
- <para>
- This tag can be applied for both <bindings> and <wirings>
- tags. It defines if implicit coordination is enabled or disabled for
- this given portal object. Value of this setting is cascaded to all
- children in portal object tree unless overwritten somewhere in the
- hierarchy. If no <implicit-mode> is defined in portal object tree
- default value is TRUE.
- </para>
- </sect2>
+ <para>
+ While the new <literal><coordination></literal> element can be used in both
+ <literal><page></literal> and <literal><portal></literal> elements, the only configuration that
+ can be specified at the portal level is whether to use the implicit mode or not:
+ </para>
+
+ <programlisting role="XML"><![CDATA[<portal>
+ ...
+
+ <coordination>
+ <bindings>
+ <implicit-mode>TRUE</implicit-mode>
+ </bindings>
+ <wirings>
+ <implicit-mode>FALSE</implicit-mode>
+ </wirings>
+ </coordination>
+
+ </portal>]]></programlisting>
+
+ <para>
+ Specifying this <literal><implicit-mode></literal> element at the portal level allows the user to specify
+ which default behavior to apply to child pages. Quite reasonably, if <literal><implicit-mode></literal>
+ is set to <literal>TRUE</literal> then the implicit mode will be used by default. This does not, however,
+ preclude specific pages to define explicit associations where needed. Setting
+ <literal><implicit-mode></literal> to <literal>FALSE</literal>, however, completely deactivates the
+ implicit handling of coordination features, leaving it up to users to configure only the associations that
+ need to be made. Note also that the implicit mode can be set for either <emphasis>bindings</emphasis> or
+ <emphasis>wirings</emphasis>. If no value is provided, implicit mode is used by default.
+ </para>
</sect1>
<sect1>
<title>Coordination Samples</title>
<para>
- JBoss Portal comes with several examples in 'Coordination Samples' page. Its good
- to follow them looking at the configuration file that can be found in
- portal-coordination-samples.war/WEB-INF/default-object.xml
+ As part of the <literal>core-samples</literal> module, JBoss Portal provides several examples of how
+ coordination can be used. These examples are gathered in the <literal>Coordination Samples</literal> page. You
+ can look at how the examples are configured using the administration interface or by looking at the
+ <filename>portal-coordination-samples.war/WEB-INF/default-object.xml</filename> file.
</para>
</sect1>
</chapter>
\ No newline at end of file
17 years, 6 months
JBoss Portal SVN: r12190 - in branches/JBoss_Portal_Branch_2_7: faces/src/main/org/jboss/portal/faces/component/portlet and 1 other directory.
by portal-commits@lists.jboss.org
Author: wesleyhales
Date: 2008-10-27 18:23:32 -0400 (Mon, 27 Oct 2008)
New Revision: 12190
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/common/editPageLayout.xhtml
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/PortletHandler.java
Log:
https://jira.jboss.org/jira/browse/JBPORTAL-2196
Modified: branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/common/editPageLayout.xhtml
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/common/editPageLayout.xhtml 2008-10-27 18:47:36 UTC (rev 12189)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/common/editPageLayout.xhtml 2008-10-27 22:23:32 UTC (rev 12190)
@@ -28,43 +28,25 @@
styleClass="portlet-form-input-field id-window-name"/>
</label>
<h:message for="windowName" errorClass="portlet-msg-error"/>
- </h:form>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <hr/>
- #{bundle.COMMON_SELECT_TYPE_CONTENT}:
- </td>
- </tr>
- <tr>
- <td>
- <h:form id="contentTypesForm">
+
+ <hr/>
+ #{bundle.COMMON_SELECT_TYPE_CONTENT}:
+ <br/>
<label for="instanceId" class="portlet-form-field-label-container">
<span class="portlet-form-field-label admin-label">#{bundle.COMMON_CONTENT_TYPE}:</span>
- <h:inputHidden id="windowNameCopy" value="#{pageManager.windowName}"/>
<h:selectOneMenu
id="instanceId"
value="#{pageManager.selectedContentType}"
styleClass="portlet-form-field contentType"
- onchange="document.getElementById('#{pageManager.namespace}:contentTypesForm:windowNameCopy').value = document.getElementById('#{pageManager.namespace}:windowForm:windowName').value;
- document.getElementById('#{pageManager.namespace}:contentTypesForm').submit(); ">
+ onchange="this.form.submit(); ">
<f:selectItems value="#{pageManager.contentTypeItems}"/>
</h:selectOneMenu>
</label>
<h:message for="instanceId" errorClass="portlet-msg-error"/>
- </h:form>
- </td>
- </tr>
- <tr>
- <td colspan="2">
+
<hr/>
#{bundle.COMMON_SELECT_CONTENT}:
- </td>
- </tr>
- <tr>
- <td colspan="2" valign="top">
- <h:form></h:form>
+ </h:form>
<jbp:portlet
portletId="#{pageManager.selectedEditorPortletId}"
portletInvoker="#{pageManager.portletInvoker}"
@@ -74,7 +56,8 @@
initialMode="edit_content"
initialWindowState="normal"
renderParameters="#{pageManager.selectedRenderParameters}"
- onClick="url.setParameter('windowName', document.getElementById('#{pageManager.namespace}:windowForm:windowName').value);"/>
+ onClick="url.setParameter('windowName', document.getElementById(document.getElementById('namespaceHolder').value + ':windowForm:windowName').value);"/>
+ <input type="hidden" value="#{pageManager.namespace}" id="namespaceHolder"/>
</td>
</tr>
</table>
Modified: branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/PortletHandler.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/PortletHandler.java 2008-10-27 18:47:36 UTC (rev 12189)
+++ branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/PortletHandler.java 2008-10-27 22:23:32 UTC (rev 12190)
@@ -95,6 +95,18 @@
};
}
}
+ if ("onClick".equals(name))
+ {
+ final String s = attribute.getValue();
+ return new Metadata()
+ {
+ public void applyMetadata(FaceletContext ctx, Object instance)
+ {
+ UIPortlet portlet = (UIPortlet)instance;
+ portlet.setOnClick(s);
+ }
+ };
+ }
return null;
}
});
17 years, 6 months
JBoss Portal SVN: r12189 - in tags/JBoss_Portal_2_7_0/core-admin/src: resources/portal-admin-war/jsf and 1 other directory.
by portal-commits@lists.jboss.org
Author: thomas.heute(a)jboss.com
Date: 2008-10-27 14:47:36 -0400 (Mon, 27 Oct 2008)
New Revision: 12189
Modified:
tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
tags/JBoss_Portal_2_7_0/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml
Log:
- JBPORTAL-2213: always display creation form (when data exists) so that fallback handling can be properly supported.
- Fixed NPE.
- Sort parameter names in parameter binding creation form.
Modified: tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
===================================================================
--- tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java 2008-10-27 17:34:56 UTC (rev 12188)
+++ tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java 2008-10-27 18:47:36 UTC (rev 12189)
@@ -40,6 +40,7 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -68,6 +69,11 @@
public List<? extends SelectItem> getAvailableParameterWindowPairs()
{
+ if(availableParameterWindowPairs == null || availableParameterWindowPairs.isEmpty())
+ {
+ return Collections.emptyList();
+ }
+
List<WindowSelectItemGroup> result = new LinkedList<WindowSelectItemGroup>(availableParameterWindowPairs.values());
Collections.sort(result);
return result;
@@ -348,8 +354,18 @@
{
List<SelectItem> items = new ArrayList<SelectItem>(Arrays.asList(existing));
items.add(parameterWindowSelectItem);
+ Collections.sort(items, COMP);
setSelectItems(items.toArray(new SelectItem[items.size()]));
}
}
}
+
+ static class ParameterWindowSelectItemComparator implements Comparator<SelectItem>
+ {
+ public int compare(SelectItem o1, SelectItem o2)
+ {
+ return o1.getLabel().compareTo(o2.getLabel());
+ }
+ }
+ private final static Comparator<SelectItem> COMP = new ParameterWindowSelectItemComparator();
}
Modified: tags/JBoss_Portal_2_7_0/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml
===================================================================
--- tags/JBoss_Portal_2_7_0/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml 2008-10-27 17:34:56 UTC (rev 12188)
+++ tags/JBoss_Portal_2_7_0/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml 2008-10-27 18:47:36 UTC (rev 12189)
@@ -86,12 +86,7 @@
</ul>
</div>
</h:column>
- <ui:remove>
<h:column>
- <f:facet name="header">#{bundle.COORDINATION_ALIAS_EXISTING_ORIGINAL}</f:facet>
- </h:column>
- </ui:remove>
- <h:column>
<f:facet name="header">#{bundle.COORDINATION_ALIAS_EXISTING_ACTIONS}</f:facet>
<h:panelGrid columns="2" cellpadding="0" cellspacing="0" border="0">
<h:commandLink action="renameCoordination" actionListener="#{coordinationManager.select}">
@@ -123,95 +118,92 @@
#{bundle.COORDINATION_PARAMETER_EXPLICIT_MODE}
</h:form>
- <h:panelGroup rendered="#{coordinationManager.explicitParametersUsed || !empty parameterManager.displayParameterBindings}">
- <hr/>
+ <hr/>
- <!-- Create parameter binding -->
- <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_PARAMETER_CREATE}</h3>
- <h:outputText value="#{bundle.COORDINATION_PARAMETER_CREATE_NO_PAIRS}" rendered="#{empty parameterManager.availableParameterWindowPairs}"/>
- <h:form rendered="#{!empty parameterManager.availableParameterWindowPairs}">
- <div class="float-left tenpx-right">
- <h4>#{bundle.COORDINATION_PARAMETER_CREATE_STEP1}</h4>
- <h:selectManyListbox id="parameterWindowPair" size="5" value="#{parameterManager.selectedParameterWindowPairs}"
- immediate="true" onchange="this.form.submit()">
- <f:selectItems value="#{parameterManager.availableParameterWindowPairs}"/>
- </h:selectManyListbox>
- </div>
+ <!-- Create parameter binding -->
+ <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_PARAMETER_CREATE}</h3>
+ <h:outputText value="#{bundle.COORDINATION_PARAMETER_CREATE_NO_PAIRS}" rendered="#{empty parameterManager.availableParameterWindowPairs}"/>
+ <h:form rendered="#{!empty parameterManager.availableParameterWindowPairs}">
+ <div class="float-left tenpx-right">
+ <h4>#{bundle.COORDINATION_PARAMETER_CREATE_STEP1}</h4>
+ <h:selectManyListbox id="parameterWindowPair" size="5" value="#{parameterManager.selectedParameterWindowPairs}"
+ immediate="true" onchange="this.form.submit()">
+ <f:selectItems value="#{parameterManager.availableParameterWindowPairs}"/>
+ </h:selectManyListbox>
+ </div>
- <h:panelGroup rendered="#{!empty parameterManager.selectedParameterWindowPairs}">
- <div class="float-left paramBinding-step2">
- <h4>#{bundle.COORDINATION_PARAMETER_CREATE_STEP2}</h4>
- <div class="full-width">
- <span><h:inputText id="bindingName" value="#{parameterManager.windowBindingName}"/></span>
- <span>
- <h:commandButton value="#{bundle.COORDINATION_PARAMETER_CREATE_CREATE}"
- action="#{parameterManager.create}" styleClass="portlet-form-button"/>
- <h:commandButton value="#{bundle.COMMON_CANCEL}" action="#{parameterManager.cancel}"
- styleClass="portlet-form-button"/>
- </span>
- </div>
+ <h:panelGroup rendered="#{!empty parameterManager.selectedParameterWindowPairs}">
+ <div class="float-left paramBinding-step2">
+ <h4>#{bundle.COORDINATION_PARAMETER_CREATE_STEP2}</h4>
+ <div class="full-width">
+ <span><h:inputText id="bindingName" value="#{parameterManager.windowBindingName}"/></span>
+ <span>
+ <h:commandButton value="#{bundle.COORDINATION_PARAMETER_CREATE_CREATE}"
+ action="#{parameterManager.create}" styleClass="portlet-form-button"/>
+ <h:commandButton value="#{bundle.COMMON_CANCEL}" action="#{parameterManager.cancel}"
+ styleClass="portlet-form-button"/>
+ </span>
</div>
- </h:panelGroup>
+ </div>
+ </h:panelGroup>
- <br class="clear"/>
- </h:form>
+ <br class="clear"/>
+ </h:form>
- <!-- Manage existing parameter bindings -->
- <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_PARAMETER_MANAGE_EXISTING}</h3>
- <div class="float-left full-width">
- <h:outputText value="#{bundle.COORDINATION_PARAMETER_EXISTING_NONE}" rendered="#{empty parameterManager.displayParameterBindings}"/>
- <h:form rendered="#{!empty parameterManager.displayParameterBindings}">
- <h:dataTable var="binding" value="#{parameterManager.displayParameterBindings}"
- rendered="true" styleClass="objectList datatable full-width"
- rowClasses="portlet-section-body,portlet-section-alternate-blue"
- columnClasses="ten-percent-width,half-width,quarter-width"
- headerClass="portlet-section-header">
- <h:column>
- <f:facet name="header">#{bundle.COORDINATION_PARAMETER_EXISTING_NAME}</f:facet>
- <h4>#{binding.name}</h4>
- </h:column>
- <h:column>
- <f:facet name="header">#{bundle.COORDINATION_PARAMETER_EXISTING_PAIRS}</f:facet>
- <div class="full-width">
- <ui:repeat var="pair" value="#{binding.parameterWindowPairs}">
- <div class="float-left pad5">
- <div class="paramList-header">#{pair.window.name}</div>
- <ul class="paramList">
- <c:set var="pairname" value="#{fn:split(pair.name, ';')}" />
- <ui:repeat var="name" value="#{pairname}">
- <li>#{name}</li>
- </ui:repeat>
- </ul>
- </div>
- </ui:repeat>
- </div>
+ <!-- Manage existing parameter bindings -->
+ <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_PARAMETER_MANAGE_EXISTING}</h3>
+ <div class="float-left full-width">
+ <h:outputText value="#{bundle.COORDINATION_PARAMETER_EXISTING_NONE}" rendered="#{empty parameterManager.displayParameterBindings}"/>
+ <h:form rendered="#{!empty parameterManager.displayParameterBindings}">
+ <h:dataTable var="binding" value="#{parameterManager.displayParameterBindings}"
+ rendered="true" styleClass="objectList datatable full-width"
+ rowClasses="portlet-section-body,portlet-section-alternate-blue"
+ columnClasses="ten-percent-width,half-width,quarter-width"
+ headerClass="portlet-section-header">
+ <h:column>
+ <f:facet name="header">#{bundle.COORDINATION_PARAMETER_EXISTING_NAME}</f:facet>
+ <h4>#{binding.name}</h4>
+ </h:column>
+ <h:column>
+ <f:facet name="header">#{bundle.COORDINATION_PARAMETER_EXISTING_PAIRS}</f:facet>
+ <div class="full-width">
+ <ui:repeat var="pair" value="#{binding.parameterWindowPairs}">
+ <div class="float-left pad5">
+ <div class="paramList-header">#{pair.window.name}</div>
+ <ul class="paramList">
+ <c:set var="pairname" value="#{fn:split(pair.name, ';')}" />
+ <ui:repeat var="name" value="#{pairname}">
+ <li>#{name}</li>
+ </ui:repeat>
+ </ul>
+ </div>
+ </ui:repeat>
+ </div>
- </h:column>
- <h:column>
- <f:facet name="header">#{bundle.COORDINATION_PARAMETER_EXISTING_ACTIONS}</f:facet>
- <h:panelGrid columns="2" cellpadding="0" cellspacing="0" border="0">
- <h:commandLink action="renameCoordination" actionListener="#{coordinationManager.select}">
- <h:outputText styleClass="actionRename" value="#{bundle.RENAME}"/>
- <f:param name="name" value="#{binding.name}"/>
- <f:param name="type" value="parameter"/>
- </h:commandLink>
- <h:commandLink action="confirmCoordinationDeletion" actionListener="#{coordinationManager.select}">
- <h:outputText styleClass="actionDelete" value="#{bundle.COMMON_DELETE}"/>
- <f:param name="name" value="#{binding.name}"/>
- <f:param name="type" value="parameter"/>
- </h:commandLink>
- </h:panelGrid>
- </h:column>
- </h:dataTable>
- </h:form>
- </div>
- </h:panelGroup>
+ </h:column>
+ <h:column>
+ <f:facet name="header">#{bundle.COORDINATION_PARAMETER_EXISTING_ACTIONS}</f:facet>
+ <h:panelGrid columns="2" cellpadding="0" cellspacing="0" border="0">
+ <h:commandLink action="renameCoordination" actionListener="#{coordinationManager.select}">
+ <h:outputText styleClass="actionRename" value="#{bundle.RENAME}"/>
+ <f:param name="name" value="#{binding.name}"/>
+ <f:param name="type" value="parameter"/>
+ </h:commandLink>
+ <h:commandLink action="confirmCoordinationDeletion" actionListener="#{coordinationManager.select}">
+ <h:outputText styleClass="actionDelete" value="#{bundle.COMMON_DELETE}"/>
+ <f:param name="name" value="#{binding.name}"/>
+ <f:param name="type" value="parameter"/>
+ </h:commandLink>
+ </h:panelGrid>
+ </h:column>
+ </h:dataTable>
+ </h:form>
+ </div>
<br class="clear"/>
</div>
</div>
<!-- Event wirings -->
-
<h2 class="portlet-area-header" onclick="toggle_visibility('eventWirings');" style="cursor: pointer"><a name="#{bundle.COORDINATION_EVENT_WIRINGS}"/>#{bundle.COORDINATION_EVENT_WIRINGS}</h2>
<div id="eventWirings">
<h:form>
@@ -219,189 +211,188 @@
onchange="this.form.submit()" immediate="true"/>#{bundle.COORDINATION_EVENT_EXPLICIT_MODE}
</h:form>
- <h:panelGroup rendered="#{coordinationManager.explicitEventsUsed || !empty eventManager.displayEventWirings}">
- <hr/>
- <!-- Create new event wiring -->
- <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_EVENT_CREATE}</h3>
- <h:outputText value="#{bundle.COORDINATION_EVENT_CREATE_NO_EVENTS}" rendered="#{empty eventManager.sourceEvents}"/>
- <h:form rendered="#{!empty eventManager.sourceEvents}">
- <div class="half-width float-left">
+ <hr/>
+
+ <!-- Create new event wiring -->
+ <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_EVENT_CREATE}</h3>
+ <h:outputText value="#{bundle.COORDINATION_EVENT_CREATE_NO_EVENTS}" rendered="#{empty eventManager.sourceEvents}"/>
+ <h:form rendered="#{!empty eventManager.sourceEvents}">
+ <div class="half-width float-left">
+ <div class="full-width pad5">
+ <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP1}</h4>
+ <h:selectOneListbox id="sourceEvent" size="5" value="#{eventManager.selectedSourceEvent}" immediate="true"
+ onchange="this.form.submit()">
+ <f:selectItems value="#{eventManager.sourceEvents}"/>
+ </h:selectOneListbox>
+ </div>
+
+ <f:subview id="COORDINATION_EVENT_CREATE_STEP2" rendered="#{!empty eventManager.selectedSourceEvent}">
<div class="full-width pad5">
- <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP1}</h4>
- <h:selectOneListbox id="sourceEvent" size="5" value="#{eventManager.selectedSourceEvent}" immediate="true"
+ <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP2}</h4>
+ <div class="pad5"><h:graphicImage url="/img/jbp-icon-set/event_source.gif"/> #{eventManager.selectedSourceEvent}</div>
+ <h:selectManyListbox id="sourceWindows" size="5" value="#{eventManager.selectedSourceWindows}" immediate="true"
+ onchange="this.form.submit()">
+ <f:selectItems value="#{eventManager.sourceWindows}"/>
+ </h:selectManyListbox>
+ </div>
+ </f:subview>
+
+ <f:subview id="COORDINATION_EVENT_CREATE_STEP3" rendered="#{!empty eventManager.selectedSourceWindows}">
+ <div class="full-width pad5">
+ <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP3}</h4>
+ <h:selectOneListbox id="destEvent" size="5" value="#{eventManager.selectedDestinationEvent}" immediate="true"
onchange="this.form.submit()">
- <f:selectItems value="#{eventManager.sourceEvents}"/>
+ <f:selectItems value="#{eventManager.destinationEvents}"/>
</h:selectOneListbox>
</div>
+ </f:subview>
- <f:subview id="COORDINATION_EVENT_CREATE_STEP2" rendered="#{!empty eventManager.selectedSourceEvent}">
- <div class="full-width pad5">
- <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP2}</h4>
- <div class="pad5"><h:graphicImage url="/img/jbp-icon-set/event_source.gif"/> #{eventManager.selectedSourceEvent}</div>
- <h:selectManyListbox id="sourceWindows" size="5" value="#{eventManager.selectedSourceWindows}" immediate="true"
- onchange="this.form.submit()">
- <f:selectItems value="#{eventManager.sourceWindows}"/>
- </h:selectManyListbox>
- </div>
- </f:subview>
+ <f:subview id="COORDINATION_EVENT_CREATE_STEP4" rendered="#{!empty eventManager.selectedDestinationEvent}">
+ <div class="full-width pad5">
+ <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP4}</h4>
+ <div class="pad5"><h:graphicImage url="/img/jbp-icon-set/event_dest.gif"/>#{eventManager.selectedDestinationEvent}</div>
+ <h:selectManyListbox id="destWindows" size="5" value="#{eventManager.selectedDestinationWindows}" immediate="true"
+ onchange="this.form.submit()">
+ <f:selectItems value="#{eventManager.destinationWindows}"/>
+ </h:selectManyListbox>
+ </div>
+ </f:subview>
- <f:subview id="COORDINATION_EVENT_CREATE_STEP3" rendered="#{!empty eventManager.selectedSourceWindows}">
- <div class="full-width pad5">
- <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP3}</h4>
- <h:selectOneListbox id="destEvent" size="5" value="#{eventManager.selectedDestinationEvent}" immediate="true"
- onchange="this.form.submit()">
- <f:selectItems value="#{eventManager.destinationEvents}"/>
- </h:selectOneListbox>
- </div>
- </f:subview>
+ <br class="clear"/>
+ </div>
- <f:subview id="COORDINATION_EVENT_CREATE_STEP4" rendered="#{!empty eventManager.selectedDestinationEvent}">
- <div class="full-width pad5">
- <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP4}</h4>
- <div class="pad5"><h:graphicImage url="/img/jbp-icon-set/event_dest.gif"/>#{eventManager.selectedDestinationEvent}</div>
- <h:selectManyListbox id="destWindows" size="5" value="#{eventManager.selectedDestinationWindows}" immediate="true"
- onchange="this.form.submit()">
- <f:selectItems value="#{eventManager.destinationWindows}"/>
- </h:selectManyListbox>
- </div>
- </f:subview>
+ <div class="half-width float-left event-wiring-preview">
+ <f:subview id="sourceEventUI" rendered="#{!empty eventManager.selectedSourceEvent}">
+ <h4>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW}</h4>
+ <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP1}</p>
+ <ul class="sourceEventList">
+ <li>#{eventManager.selectedSourceEvent}</li>
+ </ul>
+ </f:subview>
+ <f:subview id="sourceWindowUI" rendered="#{!empty eventManager.selectedSourceWindows}" >
+ <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP2}</p>
+ <ul class="sourceWindowList">
+ <ui:repeat var="window" value="#{eventManager.selectedSourceWindows}">
+ <li>#{window}</li>
+ </ui:repeat>
+ </ul>
+ </f:subview>
+ <f:subview id="destEventUI" rendered="#{!empty eventManager.selectedDestinationEvent}">
+ <hr/>
+ <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP3}</p>
+ <ul class="destEventList">
+ <li>#{eventManager.selectedDestinationEvent}</li>
+ </ul>
+ </f:subview>
+ <f:subview id="destWindowUI" rendered="#{!empty eventManager.selectedDestinationWindows}">
+ <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP4}</p>
+ <ul class="destWindowList">
+ <ui:repeat var="window" value="#{eventManager.selectedDestinationWindows}">
+ <li>#{window}</li>
+ </ui:repeat>
+ </ul>
+ </f:subview>
- <br class="clear"/>
- </div>
-
- <div class="half-width float-left event-wiring-preview">
- <f:subview id="sourceEventUI" rendered="#{!empty eventManager.selectedSourceEvent}">
- <h4>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW}</h4>
- <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP1}</p>
- <ul class="sourceEventList">
- <li>#{eventManager.selectedSourceEvent}</li>
- </ul>
- </f:subview>
- <f:subview id="sourceWindowUI" rendered="#{!empty eventManager.selectedSourceWindows}" >
- <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP2}</p>
- <ul class="sourceWindowList">
- <ui:repeat var="window" value="#{eventManager.selectedSourceWindows}">
- <li>#{window}</li>
- </ui:repeat>
- </ul>
- </f:subview>
- <f:subview id="destEventUI" rendered="#{!empty eventManager.selectedDestinationEvent}">
- <hr/>
- <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP3}</p>
- <ul class="destEventList">
- <li>#{eventManager.selectedDestinationEvent}</li>
- </ul>
- </f:subview>
- <f:subview id="destWindowUI" rendered="#{!empty eventManager.selectedDestinationWindows}">
- <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP4}</p>
- <ul class="destWindowList">
- <ui:repeat var="window" value="#{eventManager.selectedDestinationWindows}">
- <li>#{window}</li>
- </ui:repeat>
- </ul>
- </f:subview>
-
- <f:subview id="COORDINATION_EVENT_CREATE_STEP5" rendered="#{!empty eventManager.selectedDestinationWindows}">
- <div class="full-width createwiring-box">
- <div class="margin10">
- <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP5}</h4>
- <h:inputText id="wiringName" value="#{eventManager.wiringName}"/>
- <h:commandButton value="#{bundle.COORDINATION_EVENT_CREATE_CREATE}" action="#{eventManager.create}"
- styleClass="portlet-form-button"/>
- <h:commandButton value="#{bundle.COMMON_CANCEL}" action="#{eventManager.cancel}"
- styleClass="portlet-form-button"/>
- </div>
+ <f:subview id="COORDINATION_EVENT_CREATE_STEP5" rendered="#{!empty eventManager.selectedDestinationWindows}">
+ <div class="full-width createwiring-box">
+ <div class="margin10">
+ <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP5}</h4>
+ <h:inputText id="wiringName" value="#{eventManager.wiringName}"/>
+ <h:commandButton value="#{bundle.COORDINATION_EVENT_CREATE_CREATE}" action="#{eventManager.create}"
+ styleClass="portlet-form-button"/>
+ <h:commandButton value="#{bundle.COMMON_CANCEL}" action="#{eventManager.cancel}"
+ styleClass="portlet-form-button"/>
</div>
- </f:subview>
+ </div>
+ </f:subview>
- <br class="clear"/>
- </div>
+ <br class="clear"/>
+ </div>
- </h:form>
+ </h:form>
- <br class="clear"/>
+ <br class="clear"/>
- <!-- Manage existing wirings -->
- <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_EVENT_MANAGE_EXISTING}</h3>
- <h:outputText value="#{bundle.COORDINATION_EVENT_EXISTING_NONE}" rendered="#{empty eventManager.displayEventWirings}"/>
- <h:form rendered="#{!empty eventManager.displayEventWirings}">
- <h:dataTable var="wiring" value="#{eventManager.displayEventWirings}"
- styleClass="objectList datatable"
- rowClasses="portlet-section-body,portlet-section-alternate-blue"
- columnClasses="ten-percent-width,quarter-width,quarter-width,ten-percent-width"
- headerClass="portlet-section-header">
- <h:column>
- <f:facet name="header">
- #{bundle.COORDINATION_EVENT_EXISTING_NAME}
- </f:facet>
- #{wiring.name}
- </h:column>
+ <!-- Manage existing wirings -->
+ <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_EVENT_MANAGE_EXISTING}</h3>
+ <h:outputText value="#{bundle.COORDINATION_EVENT_EXISTING_NONE}" rendered="#{empty eventManager.displayEventWirings}"/>
+ <h:form rendered="#{!empty eventManager.displayEventWirings}">
+ <h:dataTable var="wiring" value="#{eventManager.displayEventWirings}"
+ styleClass="objectList datatable"
+ rowClasses="portlet-section-body,portlet-section-alternate-blue"
+ columnClasses="ten-percent-width,quarter-width,quarter-width,ten-percent-width"
+ headerClass="portlet-section-header">
+ <h:column>
+ <f:facet name="header">
+ #{bundle.COORDINATION_EVENT_EXISTING_NAME}
+ </f:facet>
+ #{wiring.name}
+ </h:column>
- <h:column>
- <f:facet name="header">
- #{bundle.COORDINATION_EVENT_EXISTING_SOURCE_WINDOWS} ⇒ #{bundle.COORDINATION_EVENT_EXISTING_SOURCE_EVENTS}
- </f:facet>
- <ul class="sourceWindowList">
- <ui:repeat var="window" value="#{wiring.sourceWindows}">
- <li>
- <h:commandLink action="#{portalobjectmgr.selectObject}" styleClass="objectName">
- <f:param name="id" value="#{window.id}"/>
- #{window.name}
- </h:commandLink>
- </li>
- </ui:repeat>
- </ul>
- <span style="display: block; text-align:center;">⇓</span>
- <ul class="sourceEventList">
- <ui:repeat var="event" value="#{wiring.sourceEvents}">
- <li>#{event}</li>
- </ui:repeat>
- </ul>
- </h:column>
- <h:column>
- <f:facet name="header">
- #{bundle.COORDINATION_EVENT_EXISTING_DESTINATION_WINDOWS} ⇐ #{bundle.COORDINATION_EVENT_EXISTING_DESTINATION_EVENTS}
- </f:facet>
+ <h:column>
+ <f:facet name="header">
+ #{bundle.COORDINATION_EVENT_EXISTING_SOURCE_WINDOWS} ⇒ #{bundle.COORDINATION_EVENT_EXISTING_SOURCE_EVENTS}
+ </f:facet>
+ <ul class="sourceWindowList">
+ <ui:repeat var="window" value="#{wiring.sourceWindows}">
+ <li>
+ <h:commandLink action="#{portalobjectmgr.selectObject}" styleClass="objectName">
+ <f:param name="id" value="#{window.id}"/>
+ #{window.name}
+ </h:commandLink>
+ </li>
+ </ui:repeat>
+ </ul>
+ <span style="display: block; text-align:center;">⇓</span>
+ <ul class="sourceEventList">
+ <ui:repeat var="event" value="#{wiring.sourceEvents}">
+ <li>#{event}</li>
+ </ui:repeat>
+ </ul>
+ </h:column>
+ <h:column>
+ <f:facet name="header">
+ #{bundle.COORDINATION_EVENT_EXISTING_DESTINATION_WINDOWS} ⇐ #{bundle.COORDINATION_EVENT_EXISTING_DESTINATION_EVENTS}
+ </f:facet>
- <ul class="destWindowList">
- <ui:repeat var="window" value="#{wiring.destinationWindows}">
- <li>
- <h:commandLink action="#{portalobjectmgr.selectObject}" styleClass="objectName">
- <f:param name="id" value="#{window.id}"/>
- #{window.name}
- </h:commandLink>
- </li>
- </ui:repeat>
- </ul>
- <span style="display: block; text-align:center;">⇑</span>
- <ul class="destEventList">
- <ui:repeat var="event" value="#{wiring.destinationEvents}">
- <li>#{event}</li>
- </ui:repeat>
- </ul>
+ <ul class="destWindowList">
+ <ui:repeat var="window" value="#{wiring.destinationWindows}">
+ <li>
+ <h:commandLink action="#{portalobjectmgr.selectObject}" styleClass="objectName">
+ <f:param name="id" value="#{window.id}"/>
+ #{window.name}
+ </h:commandLink>
+ </li>
+ </ui:repeat>
+ </ul>
+ <span style="display: block; text-align:center;">⇑</span>
+ <ul class="destEventList">
+ <ui:repeat var="event" value="#{wiring.destinationEvents}">
+ <li>#{event}</li>
+ </ui:repeat>
+ </ul>
- </h:column>
- <h:column>
- <f:facet name="header">
- #{bundle.COORDINATION_EVENT_EXISTING_ACTIONS}
- </f:facet>
- <h:panelGrid columns="2" cellpadding="0" cellspacing="0" border="0">
- <h:commandLink action="renameCoordination" actionListener="#{coordinationManager.select}">
- <h:outputText styleClass="actionRename" value="#{bundle.RENAME}"/>
- <f:param name="name" value="#{wiring.name}"/>
- <f:param name="type" value="wiring"/>
- </h:commandLink>
- <h:commandLink action="confirmCoordinationDeletion" actionListener="#{coordinationManager.select}">
- <h:outputText styleClass="actionDelete" value="#{bundle.COMMON_DELETE}"/>
- <f:param name="name" value="#{wiring.name}"/>
- <f:param name="type" value="wiring"/>
- </h:commandLink>
- </h:panelGrid>
- </h:column>
- </h:dataTable>
- </h:form>
- </h:panelGroup>
+ </h:column>
+ <h:column>
+ <f:facet name="header">
+ #{bundle.COORDINATION_EVENT_EXISTING_ACTIONS}
+ </f:facet>
+ <h:panelGrid columns="2" cellpadding="0" cellspacing="0" border="0">
+ <h:commandLink action="renameCoordination" actionListener="#{coordinationManager.select}">
+ <h:outputText styleClass="actionRename" value="#{bundle.RENAME}"/>
+ <f:param name="name" value="#{wiring.name}"/>
+ <f:param name="type" value="wiring"/>
+ </h:commandLink>
+ <h:commandLink action="confirmCoordinationDeletion" actionListener="#{coordinationManager.select}">
+ <h:outputText styleClass="actionDelete" value="#{bundle.COMMON_DELETE}"/>
+ <f:param name="name" value="#{wiring.name}"/>
+ <f:param name="type" value="wiring"/>
+ </h:commandLink>
+ </h:panelGrid>
+ </h:column>
+ </h:dataTable>
+ </h:form>
</div>
</ui:define>
17 years, 6 months
JBoss Portal SVN: r12188 - in branches/JBoss_Portal_Branch_2_7/core-admin/src: resources/portal-admin-war/jsf and 1 other directory.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2008-10-27 13:34:56 -0400 (Mon, 27 Oct 2008)
New Revision: 12188
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml
Log:
- JBPORTAL-2213: always display creation form (when data exists) so that fallback handling can be properly supported.
- Fixed NPE.
- Sort parameter names in parameter binding creation form.
Modified: branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java 2008-10-27 16:46:16 UTC (rev 12187)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java 2008-10-27 17:34:56 UTC (rev 12188)
@@ -40,6 +40,7 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -68,6 +69,11 @@
public List<? extends SelectItem> getAvailableParameterWindowPairs()
{
+ if(availableParameterWindowPairs == null || availableParameterWindowPairs.isEmpty())
+ {
+ return Collections.emptyList();
+ }
+
List<WindowSelectItemGroup> result = new LinkedList<WindowSelectItemGroup>(availableParameterWindowPairs.values());
Collections.sort(result);
return result;
@@ -348,8 +354,18 @@
{
List<SelectItem> items = new ArrayList<SelectItem>(Arrays.asList(existing));
items.add(parameterWindowSelectItem);
+ Collections.sort(items, COMP);
setSelectItems(items.toArray(new SelectItem[items.size()]));
}
}
}
+
+ static class ParameterWindowSelectItemComparator implements Comparator<SelectItem>
+ {
+ public int compare(SelectItem o1, SelectItem o2)
+ {
+ return o1.getLabel().compareTo(o2.getLabel());
+ }
+ }
+ private final static Comparator<SelectItem> COMP = new ParameterWindowSelectItemComparator();
}
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-10-27 16:46:16 UTC (rev 12187)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml 2008-10-27 17:34:56 UTC (rev 12188)
@@ -86,12 +86,7 @@
</ul>
</div>
</h:column>
- <ui:remove>
<h:column>
- <f:facet name="header">#{bundle.COORDINATION_ALIAS_EXISTING_ORIGINAL}</f:facet>
- </h:column>
- </ui:remove>
- <h:column>
<f:facet name="header">#{bundle.COORDINATION_ALIAS_EXISTING_ACTIONS}</f:facet>
<h:panelGrid columns="2" cellpadding="0" cellspacing="0" border="0">
<h:commandLink action="renameCoordination" actionListener="#{coordinationManager.select}">
@@ -123,95 +118,92 @@
#{bundle.COORDINATION_PARAMETER_EXPLICIT_MODE}
</h:form>
- <h:panelGroup rendered="#{coordinationManager.explicitParametersUsed || !empty parameterManager.displayParameterBindings}">
- <hr/>
+ <hr/>
- <!-- Create parameter binding -->
- <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_PARAMETER_CREATE}</h3>
- <h:outputText value="#{bundle.COORDINATION_PARAMETER_CREATE_NO_PAIRS}" rendered="#{empty parameterManager.availableParameterWindowPairs}"/>
- <h:form rendered="#{!empty parameterManager.availableParameterWindowPairs}">
- <div class="float-left tenpx-right">
- <h4>#{bundle.COORDINATION_PARAMETER_CREATE_STEP1}</h4>
- <h:selectManyListbox id="parameterWindowPair" size="5" value="#{parameterManager.selectedParameterWindowPairs}"
- immediate="true" onchange="this.form.submit()">
- <f:selectItems value="#{parameterManager.availableParameterWindowPairs}"/>
- </h:selectManyListbox>
- </div>
+ <!-- Create parameter binding -->
+ <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_PARAMETER_CREATE}</h3>
+ <h:outputText value="#{bundle.COORDINATION_PARAMETER_CREATE_NO_PAIRS}" rendered="#{empty parameterManager.availableParameterWindowPairs}"/>
+ <h:form rendered="#{!empty parameterManager.availableParameterWindowPairs}">
+ <div class="float-left tenpx-right">
+ <h4>#{bundle.COORDINATION_PARAMETER_CREATE_STEP1}</h4>
+ <h:selectManyListbox id="parameterWindowPair" size="5" value="#{parameterManager.selectedParameterWindowPairs}"
+ immediate="true" onchange="this.form.submit()">
+ <f:selectItems value="#{parameterManager.availableParameterWindowPairs}"/>
+ </h:selectManyListbox>
+ </div>
- <h:panelGroup rendered="#{!empty parameterManager.selectedParameterWindowPairs}">
- <div class="float-left paramBinding-step2">
- <h4>#{bundle.COORDINATION_PARAMETER_CREATE_STEP2}</h4>
- <div class="full-width">
- <span><h:inputText id="bindingName" value="#{parameterManager.windowBindingName}"/></span>
- <span>
- <h:commandButton value="#{bundle.COORDINATION_PARAMETER_CREATE_CREATE}"
- action="#{parameterManager.create}" styleClass="portlet-form-button"/>
- <h:commandButton value="#{bundle.COMMON_CANCEL}" action="#{parameterManager.cancel}"
- styleClass="portlet-form-button"/>
- </span>
- </div>
+ <h:panelGroup rendered="#{!empty parameterManager.selectedParameterWindowPairs}">
+ <div class="float-left paramBinding-step2">
+ <h4>#{bundle.COORDINATION_PARAMETER_CREATE_STEP2}</h4>
+ <div class="full-width">
+ <span><h:inputText id="bindingName" value="#{parameterManager.windowBindingName}"/></span>
+ <span>
+ <h:commandButton value="#{bundle.COORDINATION_PARAMETER_CREATE_CREATE}"
+ action="#{parameterManager.create}" styleClass="portlet-form-button"/>
+ <h:commandButton value="#{bundle.COMMON_CANCEL}" action="#{parameterManager.cancel}"
+ styleClass="portlet-form-button"/>
+ </span>
</div>
- </h:panelGroup>
+ </div>
+ </h:panelGroup>
- <br class="clear"/>
- </h:form>
+ <br class="clear"/>
+ </h:form>
- <!-- Manage existing parameter bindings -->
- <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_PARAMETER_MANAGE_EXISTING}</h3>
- <div class="float-left full-width">
- <h:outputText value="#{bundle.COORDINATION_PARAMETER_EXISTING_NONE}" rendered="#{empty parameterManager.displayParameterBindings}"/>
- <h:form rendered="#{!empty parameterManager.displayParameterBindings}">
- <h:dataTable var="binding" value="#{parameterManager.displayParameterBindings}"
- rendered="true" styleClass="objectList datatable full-width"
- rowClasses="portlet-section-body,portlet-section-alternate-blue"
- columnClasses="ten-percent-width,half-width,quarter-width"
- headerClass="portlet-section-header">
- <h:column>
- <f:facet name="header">#{bundle.COORDINATION_PARAMETER_EXISTING_NAME}</f:facet>
- <h4>#{binding.name}</h4>
- </h:column>
- <h:column>
- <f:facet name="header">#{bundle.COORDINATION_PARAMETER_EXISTING_PAIRS}</f:facet>
- <div class="full-width">
- <ui:repeat var="pair" value="#{binding.parameterWindowPairs}">
- <div class="float-left pad5">
- <div class="paramList-header">#{pair.window.name}</div>
- <ul class="paramList">
- <c:set var="pairname" value="#{fn:split(pair.name, ';')}" />
- <ui:repeat var="name" value="#{pairname}">
- <li>#{name}</li>
- </ui:repeat>
- </ul>
- </div>
- </ui:repeat>
- </div>
+ <!-- Manage existing parameter bindings -->
+ <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_PARAMETER_MANAGE_EXISTING}</h3>
+ <div class="float-left full-width">
+ <h:outputText value="#{bundle.COORDINATION_PARAMETER_EXISTING_NONE}" rendered="#{empty parameterManager.displayParameterBindings}"/>
+ <h:form rendered="#{!empty parameterManager.displayParameterBindings}">
+ <h:dataTable var="binding" value="#{parameterManager.displayParameterBindings}"
+ rendered="true" styleClass="objectList datatable full-width"
+ rowClasses="portlet-section-body,portlet-section-alternate-blue"
+ columnClasses="ten-percent-width,half-width,quarter-width"
+ headerClass="portlet-section-header">
+ <h:column>
+ <f:facet name="header">#{bundle.COORDINATION_PARAMETER_EXISTING_NAME}</f:facet>
+ <h4>#{binding.name}</h4>
+ </h:column>
+ <h:column>
+ <f:facet name="header">#{bundle.COORDINATION_PARAMETER_EXISTING_PAIRS}</f:facet>
+ <div class="full-width">
+ <ui:repeat var="pair" value="#{binding.parameterWindowPairs}">
+ <div class="float-left pad5">
+ <div class="paramList-header">#{pair.window.name}</div>
+ <ul class="paramList">
+ <c:set var="pairname" value="#{fn:split(pair.name, ';')}" />
+ <ui:repeat var="name" value="#{pairname}">
+ <li>#{name}</li>
+ </ui:repeat>
+ </ul>
+ </div>
+ </ui:repeat>
+ </div>
- </h:column>
- <h:column>
- <f:facet name="header">#{bundle.COORDINATION_PARAMETER_EXISTING_ACTIONS}</f:facet>
- <h:panelGrid columns="2" cellpadding="0" cellspacing="0" border="0">
- <h:commandLink action="renameCoordination" actionListener="#{coordinationManager.select}">
- <h:outputText styleClass="actionRename" value="#{bundle.RENAME}"/>
- <f:param name="name" value="#{binding.name}"/>
- <f:param name="type" value="parameter"/>
- </h:commandLink>
- <h:commandLink action="confirmCoordinationDeletion" actionListener="#{coordinationManager.select}">
- <h:outputText styleClass="actionDelete" value="#{bundle.COMMON_DELETE}"/>
- <f:param name="name" value="#{binding.name}"/>
- <f:param name="type" value="parameter"/>
- </h:commandLink>
- </h:panelGrid>
- </h:column>
- </h:dataTable>
- </h:form>
- </div>
- </h:panelGroup>
+ </h:column>
+ <h:column>
+ <f:facet name="header">#{bundle.COORDINATION_PARAMETER_EXISTING_ACTIONS}</f:facet>
+ <h:panelGrid columns="2" cellpadding="0" cellspacing="0" border="0">
+ <h:commandLink action="renameCoordination" actionListener="#{coordinationManager.select}">
+ <h:outputText styleClass="actionRename" value="#{bundle.RENAME}"/>
+ <f:param name="name" value="#{binding.name}"/>
+ <f:param name="type" value="parameter"/>
+ </h:commandLink>
+ <h:commandLink action="confirmCoordinationDeletion" actionListener="#{coordinationManager.select}">
+ <h:outputText styleClass="actionDelete" value="#{bundle.COMMON_DELETE}"/>
+ <f:param name="name" value="#{binding.name}"/>
+ <f:param name="type" value="parameter"/>
+ </h:commandLink>
+ </h:panelGrid>
+ </h:column>
+ </h:dataTable>
+ </h:form>
+ </div>
<br class="clear"/>
</div>
</div>
<!-- Event wirings -->
-
<h2 class="portlet-area-header" onclick="toggle_visibility('eventWirings');" style="cursor: pointer"><a name="#{bundle.COORDINATION_EVENT_WIRINGS}"/>#{bundle.COORDINATION_EVENT_WIRINGS}</h2>
<div id="eventWirings">
<h:form>
@@ -219,189 +211,188 @@
onchange="this.form.submit()" immediate="true"/>#{bundle.COORDINATION_EVENT_EXPLICIT_MODE}
</h:form>
- <h:panelGroup rendered="#{coordinationManager.explicitEventsUsed || !empty eventManager.displayEventWirings}">
- <hr/>
- <!-- Create new event wiring -->
- <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_EVENT_CREATE}</h3>
- <h:outputText value="#{bundle.COORDINATION_EVENT_CREATE_NO_EVENTS}" rendered="#{empty eventManager.sourceEvents}"/>
- <h:form rendered="#{!empty eventManager.sourceEvents}">
- <div class="half-width float-left">
+ <hr/>
+
+ <!-- Create new event wiring -->
+ <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_EVENT_CREATE}</h3>
+ <h:outputText value="#{bundle.COORDINATION_EVENT_CREATE_NO_EVENTS}" rendered="#{empty eventManager.sourceEvents}"/>
+ <h:form rendered="#{!empty eventManager.sourceEvents}">
+ <div class="half-width float-left">
+ <div class="full-width pad5">
+ <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP1}</h4>
+ <h:selectOneListbox id="sourceEvent" size="5" value="#{eventManager.selectedSourceEvent}" immediate="true"
+ onchange="this.form.submit()">
+ <f:selectItems value="#{eventManager.sourceEvents}"/>
+ </h:selectOneListbox>
+ </div>
+
+ <f:subview id="COORDINATION_EVENT_CREATE_STEP2" rendered="#{!empty eventManager.selectedSourceEvent}">
<div class="full-width pad5">
- <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP1}</h4>
- <h:selectOneListbox id="sourceEvent" size="5" value="#{eventManager.selectedSourceEvent}" immediate="true"
+ <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP2}</h4>
+ <div class="pad5"><h:graphicImage url="/img/jbp-icon-set/event_source.gif"/> #{eventManager.selectedSourceEvent}</div>
+ <h:selectManyListbox id="sourceWindows" size="5" value="#{eventManager.selectedSourceWindows}" immediate="true"
+ onchange="this.form.submit()">
+ <f:selectItems value="#{eventManager.sourceWindows}"/>
+ </h:selectManyListbox>
+ </div>
+ </f:subview>
+
+ <f:subview id="COORDINATION_EVENT_CREATE_STEP3" rendered="#{!empty eventManager.selectedSourceWindows}">
+ <div class="full-width pad5">
+ <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP3}</h4>
+ <h:selectOneListbox id="destEvent" size="5" value="#{eventManager.selectedDestinationEvent}" immediate="true"
onchange="this.form.submit()">
- <f:selectItems value="#{eventManager.sourceEvents}"/>
+ <f:selectItems value="#{eventManager.destinationEvents}"/>
</h:selectOneListbox>
</div>
+ </f:subview>
- <f:subview id="COORDINATION_EVENT_CREATE_STEP2" rendered="#{!empty eventManager.selectedSourceEvent}">
- <div class="full-width pad5">
- <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP2}</h4>
- <div class="pad5"><h:graphicImage url="/img/jbp-icon-set/event_source.gif"/> #{eventManager.selectedSourceEvent}</div>
- <h:selectManyListbox id="sourceWindows" size="5" value="#{eventManager.selectedSourceWindows}" immediate="true"
- onchange="this.form.submit()">
- <f:selectItems value="#{eventManager.sourceWindows}"/>
- </h:selectManyListbox>
- </div>
- </f:subview>
+ <f:subview id="COORDINATION_EVENT_CREATE_STEP4" rendered="#{!empty eventManager.selectedDestinationEvent}">
+ <div class="full-width pad5">
+ <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP4}</h4>
+ <div class="pad5"><h:graphicImage url="/img/jbp-icon-set/event_dest.gif"/>#{eventManager.selectedDestinationEvent}</div>
+ <h:selectManyListbox id="destWindows" size="5" value="#{eventManager.selectedDestinationWindows}" immediate="true"
+ onchange="this.form.submit()">
+ <f:selectItems value="#{eventManager.destinationWindows}"/>
+ </h:selectManyListbox>
+ </div>
+ </f:subview>
- <f:subview id="COORDINATION_EVENT_CREATE_STEP3" rendered="#{!empty eventManager.selectedSourceWindows}">
- <div class="full-width pad5">
- <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP3}</h4>
- <h:selectOneListbox id="destEvent" size="5" value="#{eventManager.selectedDestinationEvent}" immediate="true"
- onchange="this.form.submit()">
- <f:selectItems value="#{eventManager.destinationEvents}"/>
- </h:selectOneListbox>
- </div>
- </f:subview>
+ <br class="clear"/>
+ </div>
- <f:subview id="COORDINATION_EVENT_CREATE_STEP4" rendered="#{!empty eventManager.selectedDestinationEvent}">
- <div class="full-width pad5">
- <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP4}</h4>
- <div class="pad5"><h:graphicImage url="/img/jbp-icon-set/event_dest.gif"/>#{eventManager.selectedDestinationEvent}</div>
- <h:selectManyListbox id="destWindows" size="5" value="#{eventManager.selectedDestinationWindows}" immediate="true"
- onchange="this.form.submit()">
- <f:selectItems value="#{eventManager.destinationWindows}"/>
- </h:selectManyListbox>
- </div>
- </f:subview>
+ <div class="half-width float-left event-wiring-preview">
+ <f:subview id="sourceEventUI" rendered="#{!empty eventManager.selectedSourceEvent}">
+ <h4>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW}</h4>
+ <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP1}</p>
+ <ul class="sourceEventList">
+ <li>#{eventManager.selectedSourceEvent}</li>
+ </ul>
+ </f:subview>
+ <f:subview id="sourceWindowUI" rendered="#{!empty eventManager.selectedSourceWindows}" >
+ <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP2}</p>
+ <ul class="sourceWindowList">
+ <ui:repeat var="window" value="#{eventManager.selectedSourceWindows}">
+ <li>#{window}</li>
+ </ui:repeat>
+ </ul>
+ </f:subview>
+ <f:subview id="destEventUI" rendered="#{!empty eventManager.selectedDestinationEvent}">
+ <hr/>
+ <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP3}</p>
+ <ul class="destEventList">
+ <li>#{eventManager.selectedDestinationEvent}</li>
+ </ul>
+ </f:subview>
+ <f:subview id="destWindowUI" rendered="#{!empty eventManager.selectedDestinationWindows}">
+ <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP4}</p>
+ <ul class="destWindowList">
+ <ui:repeat var="window" value="#{eventManager.selectedDestinationWindows}">
+ <li>#{window}</li>
+ </ui:repeat>
+ </ul>
+ </f:subview>
- <br class="clear"/>
- </div>
-
- <div class="half-width float-left event-wiring-preview">
- <f:subview id="sourceEventUI" rendered="#{!empty eventManager.selectedSourceEvent}">
- <h4>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW}</h4>
- <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP1}</p>
- <ul class="sourceEventList">
- <li>#{eventManager.selectedSourceEvent}</li>
- </ul>
- </f:subview>
- <f:subview id="sourceWindowUI" rendered="#{!empty eventManager.selectedSourceWindows}" >
- <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP2}</p>
- <ul class="sourceWindowList">
- <ui:repeat var="window" value="#{eventManager.selectedSourceWindows}">
- <li>#{window}</li>
- </ui:repeat>
- </ul>
- </f:subview>
- <f:subview id="destEventUI" rendered="#{!empty eventManager.selectedDestinationEvent}">
- <hr/>
- <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP3}</p>
- <ul class="destEventList">
- <li>#{eventManager.selectedDestinationEvent}</li>
- </ul>
- </f:subview>
- <f:subview id="destWindowUI" rendered="#{!empty eventManager.selectedDestinationWindows}">
- <p>#{bundle.COORDINATION_EVENT_CREATE_PREVIEW_STEP4}</p>
- <ul class="destWindowList">
- <ui:repeat var="window" value="#{eventManager.selectedDestinationWindows}">
- <li>#{window}</li>
- </ui:repeat>
- </ul>
- </f:subview>
-
- <f:subview id="COORDINATION_EVENT_CREATE_STEP5" rendered="#{!empty eventManager.selectedDestinationWindows}">
- <div class="full-width createwiring-box">
- <div class="margin10">
- <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP5}</h4>
- <h:inputText id="wiringName" value="#{eventManager.wiringName}"/>
- <h:commandButton value="#{bundle.COORDINATION_EVENT_CREATE_CREATE}" action="#{eventManager.create}"
- styleClass="portlet-form-button"/>
- <h:commandButton value="#{bundle.COMMON_CANCEL}" action="#{eventManager.cancel}"
- styleClass="portlet-form-button"/>
- </div>
+ <f:subview id="COORDINATION_EVENT_CREATE_STEP5" rendered="#{!empty eventManager.selectedDestinationWindows}">
+ <div class="full-width createwiring-box">
+ <div class="margin10">
+ <h4>#{bundle.COORDINATION_EVENT_CREATE_STEP5}</h4>
+ <h:inputText id="wiringName" value="#{eventManager.wiringName}"/>
+ <h:commandButton value="#{bundle.COORDINATION_EVENT_CREATE_CREATE}" action="#{eventManager.create}"
+ styleClass="portlet-form-button"/>
+ <h:commandButton value="#{bundle.COMMON_CANCEL}" action="#{eventManager.cancel}"
+ styleClass="portlet-form-button"/>
</div>
- </f:subview>
+ </div>
+ </f:subview>
- <br class="clear"/>
- </div>
+ <br class="clear"/>
+ </div>
- </h:form>
+ </h:form>
- <br class="clear"/>
+ <br class="clear"/>
- <!-- Manage existing wirings -->
- <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_EVENT_MANAGE_EXISTING}</h3>
- <h:outputText value="#{bundle.COORDINATION_EVENT_EXISTING_NONE}" rendered="#{empty eventManager.displayEventWirings}"/>
- <h:form rendered="#{!empty eventManager.displayEventWirings}">
- <h:dataTable var="wiring" value="#{eventManager.displayEventWirings}"
- styleClass="objectList datatable"
- rowClasses="portlet-section-body,portlet-section-alternate-blue"
- columnClasses="ten-percent-width,quarter-width,quarter-width,ten-percent-width"
- headerClass="portlet-section-header">
- <h:column>
- <f:facet name="header">
- #{bundle.COORDINATION_EVENT_EXISTING_NAME}
- </f:facet>
- #{wiring.name}
- </h:column>
+ <!-- Manage existing wirings -->
+ <h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_EVENT_MANAGE_EXISTING}</h3>
+ <h:outputText value="#{bundle.COORDINATION_EVENT_EXISTING_NONE}" rendered="#{empty eventManager.displayEventWirings}"/>
+ <h:form rendered="#{!empty eventManager.displayEventWirings}">
+ <h:dataTable var="wiring" value="#{eventManager.displayEventWirings}"
+ styleClass="objectList datatable"
+ rowClasses="portlet-section-body,portlet-section-alternate-blue"
+ columnClasses="ten-percent-width,quarter-width,quarter-width,ten-percent-width"
+ headerClass="portlet-section-header">
+ <h:column>
+ <f:facet name="header">
+ #{bundle.COORDINATION_EVENT_EXISTING_NAME}
+ </f:facet>
+ #{wiring.name}
+ </h:column>
- <h:column>
- <f:facet name="header">
- #{bundle.COORDINATION_EVENT_EXISTING_SOURCE_WINDOWS} ⇒ #{bundle.COORDINATION_EVENT_EXISTING_SOURCE_EVENTS}
- </f:facet>
- <ul class="sourceWindowList">
- <ui:repeat var="window" value="#{wiring.sourceWindows}">
- <li>
- <h:commandLink action="#{portalobjectmgr.selectObject}" styleClass="objectName">
- <f:param name="id" value="#{window.id}"/>
- #{window.name}
- </h:commandLink>
- </li>
- </ui:repeat>
- </ul>
- <span style="display: block; text-align:center;">⇓</span>
- <ul class="sourceEventList">
- <ui:repeat var="event" value="#{wiring.sourceEvents}">
- <li>#{event}</li>
- </ui:repeat>
- </ul>
- </h:column>
- <h:column>
- <f:facet name="header">
- #{bundle.COORDINATION_EVENT_EXISTING_DESTINATION_WINDOWS} ⇐ #{bundle.COORDINATION_EVENT_EXISTING_DESTINATION_EVENTS}
- </f:facet>
+ <h:column>
+ <f:facet name="header">
+ #{bundle.COORDINATION_EVENT_EXISTING_SOURCE_WINDOWS} ⇒ #{bundle.COORDINATION_EVENT_EXISTING_SOURCE_EVENTS}
+ </f:facet>
+ <ul class="sourceWindowList">
+ <ui:repeat var="window" value="#{wiring.sourceWindows}">
+ <li>
+ <h:commandLink action="#{portalobjectmgr.selectObject}" styleClass="objectName">
+ <f:param name="id" value="#{window.id}"/>
+ #{window.name}
+ </h:commandLink>
+ </li>
+ </ui:repeat>
+ </ul>
+ <span style="display: block; text-align:center;">⇓</span>
+ <ul class="sourceEventList">
+ <ui:repeat var="event" value="#{wiring.sourceEvents}">
+ <li>#{event}</li>
+ </ui:repeat>
+ </ul>
+ </h:column>
+ <h:column>
+ <f:facet name="header">
+ #{bundle.COORDINATION_EVENT_EXISTING_DESTINATION_WINDOWS} ⇐ #{bundle.COORDINATION_EVENT_EXISTING_DESTINATION_EVENTS}
+ </f:facet>
- <ul class="destWindowList">
- <ui:repeat var="window" value="#{wiring.destinationWindows}">
- <li>
- <h:commandLink action="#{portalobjectmgr.selectObject}" styleClass="objectName">
- <f:param name="id" value="#{window.id}"/>
- #{window.name}
- </h:commandLink>
- </li>
- </ui:repeat>
- </ul>
- <span style="display: block; text-align:center;">⇑</span>
- <ul class="destEventList">
- <ui:repeat var="event" value="#{wiring.destinationEvents}">
- <li>#{event}</li>
- </ui:repeat>
- </ul>
+ <ul class="destWindowList">
+ <ui:repeat var="window" value="#{wiring.destinationWindows}">
+ <li>
+ <h:commandLink action="#{portalobjectmgr.selectObject}" styleClass="objectName">
+ <f:param name="id" value="#{window.id}"/>
+ #{window.name}
+ </h:commandLink>
+ </li>
+ </ui:repeat>
+ </ul>
+ <span style="display: block; text-align:center;">⇑</span>
+ <ul class="destEventList">
+ <ui:repeat var="event" value="#{wiring.destinationEvents}">
+ <li>#{event}</li>
+ </ui:repeat>
+ </ul>
- </h:column>
- <h:column>
- <f:facet name="header">
- #{bundle.COORDINATION_EVENT_EXISTING_ACTIONS}
- </f:facet>
- <h:panelGrid columns="2" cellpadding="0" cellspacing="0" border="0">
- <h:commandLink action="renameCoordination" actionListener="#{coordinationManager.select}">
- <h:outputText styleClass="actionRename" value="#{bundle.RENAME}"/>
- <f:param name="name" value="#{wiring.name}"/>
- <f:param name="type" value="wiring"/>
- </h:commandLink>
- <h:commandLink action="confirmCoordinationDeletion" actionListener="#{coordinationManager.select}">
- <h:outputText styleClass="actionDelete" value="#{bundle.COMMON_DELETE}"/>
- <f:param name="name" value="#{wiring.name}"/>
- <f:param name="type" value="wiring"/>
- </h:commandLink>
- </h:panelGrid>
- </h:column>
- </h:dataTable>
- </h:form>
- </h:panelGroup>
+ </h:column>
+ <h:column>
+ <f:facet name="header">
+ #{bundle.COORDINATION_EVENT_EXISTING_ACTIONS}
+ </f:facet>
+ <h:panelGrid columns="2" cellpadding="0" cellspacing="0" border="0">
+ <h:commandLink action="renameCoordination" actionListener="#{coordinationManager.select}">
+ <h:outputText styleClass="actionRename" value="#{bundle.RENAME}"/>
+ <f:param name="name" value="#{wiring.name}"/>
+ <f:param name="type" value="wiring"/>
+ </h:commandLink>
+ <h:commandLink action="confirmCoordinationDeletion" actionListener="#{coordinationManager.select}">
+ <h:outputText styleClass="actionDelete" value="#{bundle.COMMON_DELETE}"/>
+ <f:param name="name" value="#{wiring.name}"/>
+ <f:param name="type" value="wiring"/>
+ </h:commandLink>
+ </h:panelGrid>
+ </h:column>
+ </h:dataTable>
+ </h:form>
</div>
</ui:define>
17 years, 6 months
JBoss Portal SVN: r12187 - in tags/JBoss_Portal_2_7_0: core-admin/src/resources/portal-admin-war/jsf and 3 other directories.
by portal-commits@lists.jboss.org
Author: thomas.heute(a)jboss.com
Date: 2008-10-27 12:46:16 -0400 (Mon, 27 Oct 2008)
New Revision: 12187
Modified:
tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java
tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java
tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java
tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
tags/JBoss_Portal_2_7_0/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml
tags/JBoss_Portal_2_7_0/testsuite/ui-tests/selenium-rc-server/user-extensions.js
tags/JBoss_Portal_2_7_0/testsuite/ui-tests/src/org/jboss/portal/test/selenium/DashboardTestCase.java
tags/JBoss_Portal_2_7_0/testsuite/ui-tests/src/org/jboss/portal/test/selenium/IdentityAdminTestCase.java
tags/JBoss_Portal_2_7_0/testsuite/ui-tests/src/org/jboss/portal/test/selenium/portal/DashboardsTestCase.java
Log:
- identity admin testcase fix
- dashboardtestcase fixed, extensions added
- JBPORTAL-2213: fix support for fallback handling of coordination i.e. implicit handling at page level but with some explicit elements.
Modified: tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java
===================================================================
--- tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java 2008-10-27 16:40:24 UTC (rev 12186)
+++ tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java 2008-10-27 16:46:16 UTC (rev 12187)
@@ -83,7 +83,7 @@
this.originalQNames = originalQNames;
}
- public void loadInfoFrom(Page page)
+ public boolean loadInfoFrom(Page page)
{
Collection<? extends AliasBindingInfo> bindings = managerBean.getCoordinationService().getAliasBindings(page);
if (!bindings.isEmpty())
@@ -93,16 +93,18 @@
{
displayAliasBindings.put(binding.getName(), new DisplayAliasBinding(binding));
}
+ return true;
}
else
{
displayAliasBindings = Collections.emptyMap();
+ return false;
}
}
public List<DisplayAliasBinding> getDisplayAliasBindings()
{
- if (displayAliasBindings == null)
+ if (displayAliasBindings == null || displayAliasBindings.isEmpty())
{
return Collections.emptyList();
}
Modified: tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java
===================================================================
--- tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java 2008-10-27 16:40:24 UTC (rev 12186)
+++ tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java 2008-10-27 16:46:16 UTC (rev 12187)
@@ -69,23 +69,23 @@
private enum CoordinationType
{
wiring()
- {
- String localizationKey()
- {
- return "COORDINATION_WIRING";
- }},
+ {
+ String localizationKey()
+ {
+ return "COORDINATION_WIRING";
+ }},
parameter()
- {
- String localizationKey()
- {
- return "COORDINATION_PARAMETER";
- }},
+ {
+ String localizationKey()
+ {
+ return "COORDINATION_PARAMETER";
+ }},
alias()
- {
- String localizationKey()
- {
- return "COORDINATION_ALIAS";
- }};
+ {
+ String localizationKey()
+ {
+ return "COORDINATION_ALIAS";
+ }};
private CoordinationBean bean;
@@ -125,7 +125,13 @@
this.managerBean = managerBean;
}
- public abstract void loadInfoFrom(Page page);
+ /**
+ * Loads the specific coordination information from the specified page data.
+ *
+ * @param page the page from which coordination information is to be loaded
+ * @return <code>true</code> if specific information existed and was loaded, <code>false</code> otherwise
+ */
+ public abstract boolean loadInfoFrom(Page page);
public abstract String delete(String name) throws IllegalCoordinationException;
@@ -286,18 +292,11 @@
Page selectedPage = getSelectedPage();
- boolean explicitEventsUsed = isExplicitEventsUsed();
- boolean explicitParametersUsed = isExplicitParametersUsed();
-
+ // always load information since we might be in a fallback situation i.e. explicit handling is disabled
+ // for the page but some explicit elements are still defined (possible in XML)
aliasManager.loadInfoFrom(selectedPage);
- if (explicitEventsUsed)
- {
- eventManager.loadInfoFrom(selectedPage);
- }
- if (explicitParametersUsed)
- {
- parameterManager.loadInfoFrom(selectedPage);
- }
+ boolean explicitEventsUsed = eventManager.loadInfoFrom(selectedPage);
+ boolean explicitParametersUsed = parameterManager.loadInfoFrom(selectedPage);
Collection<PortalObject> children = selectedPage.getChildren(PortalObject.WINDOW_MASK);
if (!children.isEmpty())
Modified: tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java
===================================================================
--- tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java 2008-10-27 16:40:24 UTC (rev 12186)
+++ tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java 2008-10-27 16:46:16 UTC (rev 12187)
@@ -37,12 +37,12 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;
-import java.util.HashSet;
/**
* @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
@@ -69,7 +69,7 @@
super(managerBean);
}
- public void loadInfoFrom(Page page)
+ public boolean loadInfoFrom(Page page)
{
Collection<EventWiringInfo> wiringInfos = managerBean.getCoordinationService().getEventWirings(page);
if (!wiringInfos.isEmpty())
@@ -79,10 +79,13 @@
{
displayEventWirings.put(ewInfo.getName(), new DisplayEventWiring(ewInfo));
}
+
+ return true;
}
else
{
displayEventWirings = Collections.emptyMap();
+ return false;
}
}
@@ -122,7 +125,7 @@
public Collection<DisplayEventWiring> getDisplayEventWirings()
{
- if (displayEventWirings == null)
+ if (displayEventWirings == null || displayEventWirings.isEmpty())
{
return Collections.emptyList();
}
Modified: tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
===================================================================
--- tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java 2008-10-27 16:40:24 UTC (rev 12186)
+++ tags/JBoss_Portal_2_7_0/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java 2008-10-27 16:46:16 UTC (rev 12187)
@@ -119,7 +119,7 @@
public Collection<DisplayParameterBinding> getDisplayParameterBindings()
{
- if (displayParameterBindings == null)
+ if (displayParameterBindings == null || displayParameterBindings.isEmpty())
{
return Collections.emptyList();
}
@@ -135,7 +135,7 @@
availableParameterWindowPairs = new HashMap<Window, WindowSelectItemGroup>(children.size());
}
- public void loadInfoFrom(Page page)
+ public boolean loadInfoFrom(Page page)
{
Collection<? extends ParameterBindingInfo> windowBindingInfos = managerBean.getCoordinationService().getParameterBindings(page);
if (windowBindingInfos != null && !windowBindingInfos.isEmpty())
@@ -145,10 +145,13 @@
{
displayParameterBindings.put(wbInfo.getName(), new DisplayParameterBinding(wbInfo));
}
+
+ return true;
}
else
{
displayParameterBindings = Collections.emptyMap();
+ return false;
}
}
Modified: tags/JBoss_Portal_2_7_0/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml
===================================================================
--- tags/JBoss_Portal_2_7_0/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml 2008-10-27 16:40:24 UTC (rev 12186)
+++ tags/JBoss_Portal_2_7_0/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml 2008-10-27 16:46:16 UTC (rev 12187)
@@ -25,6 +25,7 @@
<br/>
+ <!-- Alias bindings -->
<div class="tenpx-top-bottom">
<h2 class="portlet-area-header" onclick="toggle_visibility('aliasBindings');" style="cursor: pointer"><a name="#{bundle.COORDINATION_ALIAS_BINDINGS}"/>#{bundle.COORDINATION_ALIAS_BINDINGS}</h2>
@@ -112,6 +113,7 @@
</div>
</div>
+ <!-- Parameter bindings -->
<div class="tenpx-top-bottom">
<h2 class="portlet-area-header" onclick="toggle_visibility('parameterBindings');" style="cursor: pointer"><a name="#{bundle.COORDINATION_PARAMETER_BINDINGS}"/>#{bundle.COORDINATION_PARAMETER_BINDINGS}</h2>
<div id="parameterBindings">
@@ -121,7 +123,7 @@
#{bundle.COORDINATION_PARAMETER_EXPLICIT_MODE}
</h:form>
- <h:panelGroup rendered="#{coordinationManager.explicitParametersUsed}">
+ <h:panelGroup rendered="#{coordinationManager.explicitParametersUsed || !empty parameterManager.displayParameterBindings}">
<hr/>
<!-- Create parameter binding -->
@@ -217,7 +219,7 @@
onchange="this.form.submit()" immediate="true"/>#{bundle.COORDINATION_EVENT_EXPLICIT_MODE}
</h:form>
- <h:panelGroup rendered="#{coordinationManager.explicitEventsUsed}">
+ <h:panelGroup rendered="#{coordinationManager.explicitEventsUsed || !empty eventManager.displayEventWirings}">
<hr/>
<!-- Create new event wiring -->
<h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_EVENT_CREATE}</h3>
Modified: tags/JBoss_Portal_2_7_0/testsuite/ui-tests/selenium-rc-server/user-extensions.js
===================================================================
--- tags/JBoss_Portal_2_7_0/testsuite/ui-tests/selenium-rc-server/user-extensions.js 2008-10-27 16:40:24 UTC (rev 12186)
+++ tags/JBoss_Portal_2_7_0/testsuite/ui-tests/selenium-rc-server/user-extensions.js 2008-10-27 16:46:16 UTC (rev 12187)
@@ -39,4 +39,29 @@
Selenium.prototype.fillInEditor = function(locator, content){
var iframe = this.browserbot.findElement(locator);
iframe.contentDocument.body.innerHTML= content;
-}
\ No newline at end of file
+}
+
+Selenium.prototype.assertTextOrder = function(textValues) {
+
+ var allText = this.page().bodyText();
+ var expectedTextValues = textValues.split(";");
+
+ for (var i = 0; i < expectedTextValues.length - 1; i++) {
+ var index = allText.indexOf(expectedTextValues[i]);
+ var nextIndex = allText.indexOf(expectedTextValues[i+1]);
+ if (index == -1) {
+ return false;
+ //assert.fail("'" + expectedTextValues[i] + "' not found.");
+ }
+ if (nextIndex == -1) {
+ return false;
+ //assert.fail("'" + expectedTextValues[i+1] + "' not found.");
+ }
+
+ if (index > nextIndex) {
+ return false;
+ //assert.fail("'" + expectedTextValues[i+1] + "' found before '" + expectedTextValues[i] + "'");
+ }
+ }
+ return true;
+}
Modified: tags/JBoss_Portal_2_7_0/testsuite/ui-tests/src/org/jboss/portal/test/selenium/DashboardTestCase.java
===================================================================
--- tags/JBoss_Portal_2_7_0/testsuite/ui-tests/src/org/jboss/portal/test/selenium/DashboardTestCase.java 2008-10-27 16:40:24 UTC (rev 12186)
+++ tags/JBoss_Portal_2_7_0/testsuite/ui-tests/src/org/jboss/portal/test/selenium/DashboardTestCase.java 2008-10-27 16:46:16 UTC (rev 12187)
@@ -11,6 +11,9 @@
@Test(groups = { "cms_dashboard" }, enabled = true, description = "Dashboard issues test case.")
public class DashboardTestCase extends JBossPortalSeleniumTestCase {
+ private static final String SEL_CONTENT_TYPE = "//select[contains(@id,'contentTypesForm:instanceId')]";
+ private static final String SUB_DEL_FROM_CENTER_REGION = "//input[contains(@id,'layoutForm:l_center')]";
+ private static final String SEL_CENTER_REGION = "//select[contains(@id,'layoutForm:selectMany_center')]";
private static final String SUBMIT_ADDCENTER = "//input[contains(@id,'layoutForm:a_center')]";
private static final String SUBMIT_ADDLEFT = "//input[contains(@id,'layoutForm:a_left')]";
private static final String LINK_CONFIGURE_DASHBOARD = "link=Configure dashboard";
@@ -119,7 +122,7 @@
selenium.waitForPageToLoad(PAGE_LOAD);
Assert.assertTrue(selenium.isTextPresent("Current users"));
- Assert.assertTrue(selenium.isTextPresent("Whose 1 is logged-in:"));
+ Assert.assertTrue(selenium.isTextPresent("Among them: * logged-in"));
Assert.assertTrue(selenium.isTextPresent("[admin]"));
}
@@ -174,8 +177,8 @@
selectIfNotSelected(SELECT_PAGE,"DashTestPage");
- selenium.addSelection("layoutForm:selectMany_center", "label=CurrentUsersPortletWindow");
- selenium.click("layoutForm:l_center");
+ selenium.addSelection(SEL_CENTER_REGION, "label=CurrentUsersPortletWindow");
+ selenium.click(SUB_DEL_FROM_CENTER_REGION);
selenium.waitForPageToLoad(PAGE_LOAD);
selenium.click(LINK_DASHBOARD);
@@ -195,9 +198,9 @@
selenium.click(LINK_CONFIGURE_DASHBOARD);
selenium.waitForPageToLoad(PAGE_LOAD);
selectIfNotSelected(SELECT_PAGE,"DashTestPage");
- selenium.select("abc:instanceId", "label=widget/google");
+ selenium.select(SEL_CONTENT_TYPE, "label=widget/google");
selenium.waitForPageToLoad(PAGE_LOAD);
- selenium.click("link=Hindu God of the Week");
+ selenium.click("link=Band Culinaria");
selenium.waitForPageToLoad(PAGE_LOAD);
selenium.click(SUBMIT_ADDCENTER);
selenium.waitForPageToLoad(PAGE_LOAD);
@@ -206,7 +209,8 @@
selenium.click("link=DashTestPage");
selenium.waitForPageToLoad(PAGE_LOAD);
- Assert.assertTrue(selenium.isTextPresent("Hindu God of the Week"));
+ Assert.assertTrue(selenium.isTextPresent("Band Culinaria"));
+ Assert.assertTrue(selenium.isTextPresent("Gadgets powered by Google"));
}
// http://www.jboss.com/index.html?module=bb&op=viewtopic&t=143023
Modified: tags/JBoss_Portal_2_7_0/testsuite/ui-tests/src/org/jboss/portal/test/selenium/IdentityAdminTestCase.java
===================================================================
--- tags/JBoss_Portal_2_7_0/testsuite/ui-tests/src/org/jboss/portal/test/selenium/IdentityAdminTestCase.java 2008-10-27 16:40:24 UTC (rev 12186)
+++ tags/JBoss_Portal_2_7_0/testsuite/ui-tests/src/org/jboss/portal/test/selenium/IdentityAdminTestCase.java 2008-10-27 16:46:16 UTC (rev 12187)
@@ -19,12 +19,12 @@
private static final String SUB_EDIT_PROF = "//input[contains(@id,'profile-form:submit')]";
private static final String SUB_EDIT_USER_EMAIL_CANCEL = "//input[contains(@id,'profile-form:cancel')]";
private static final String INP_EDIT_USER_EMAIL = "//input[contains(@id,'profile-form:email')]";
- private static final String SUB_ROLE_SEARCH_USER = "//input[contains(@id,'search-user-form:search')]";
+ private static final String SUB_ROLE_SEARCH_USER = "//input[contains(@id,'search-user-form:search') and @type='submit']";
private static final String INP_ROLE_SEARCH_USER = "//input[contains(@id,'search-user-form:searchString')]";
private static final String SUB_EDIT_ROLE_SUBMIT = "//input[contains(@id,'edit-role-link:submit')]";
private static final String SUB_EDIT_ROLE_CANCEL = "//input[contains(@id,'edit-role-link:cancel')]";
private static final String INP_EDIT_ROLE_NAME = "//input[contains(@id,'edit-role-link:display-name')]";
- private static final String SUB_PASS_CHANGE_SUBMIT = "//input[contains(@id,'change-pwd-form:j_id31')]";
+ private static final String SUB_PASS_CHANGE_SUBMIT = "//input[contains(@name,'change-pwd-form:j_id31')]";
private static final String SUB_PASS_CHANGE_CANCEL = "//input[contains(@id,'change-pwd-form:cancel')]";
private static final String INPUT_PASS_CHANGE_P2 = "//input[contains(@id,':change-pwd-form:passwordCheck')]";
private static final String INPUT_PASS_CHANGE_P1 = "//input[contains(@id,':change-pwd-form:password')]";
@@ -253,7 +253,6 @@
selenium.waitForPageToLoad(PAGE_LOAD);
Assert.assertTrue(selenium.isTextPresent("editMe2(a)redhat.com"));
Assert.assertTrue(selenium.isTextPresent("Edit"));
- Assert.assertTrue(selenium.isTextPresent("Meme"));
deleteUser("editMe", "editMe2(a)redhat.com");
@@ -274,6 +273,7 @@
searchUser("changePass", "changePass(a)redhat.com");
+
int r = findTableRow(TABLE_USERLIST, "changePass", 0);
selenium.click(MessageFormat.format(LINK_T_USRLIST_EDIT, r - 1));
selenium.waitForPageToLoad(PAGE_LOAD);
@@ -691,7 +691,7 @@
}
- public void waitBlock(){
+ protected void waitBlock(){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
Modified: tags/JBoss_Portal_2_7_0/testsuite/ui-tests/src/org/jboss/portal/test/selenium/portal/DashboardsTestCase.java
===================================================================
--- tags/JBoss_Portal_2_7_0/testsuite/ui-tests/src/org/jboss/portal/test/selenium/portal/DashboardsTestCase.java 2008-10-27 16:40:24 UTC (rev 12186)
+++ tags/JBoss_Portal_2_7_0/testsuite/ui-tests/src/org/jboss/portal/test/selenium/portal/DashboardsTestCase.java 2008-10-27 16:46:16 UTC (rev 12187)
@@ -77,7 +77,6 @@
selenium.type(MessageFormat.format(T_PROPS_INPUT_VALUE, r-1),value);
selenium.click(SUBMIT_UPDATE_VALUE);
selenium.waitForPageToLoad(PAGE_LOAD);
-
Assert.assertEquals(selenium.getValue(MessageFormat.format(T_PROPS_INPUT_VALUE, r-1)),value,"Updated value not found.");
}
@@ -136,11 +135,11 @@
safeSelect(T_DH_SEL_LAYOUT, "1column");
- safeSelect(T_DH_SEL_THEME, "nphalanx");
+
safeSelect(T_DH_SEL_RENDERSET, "default");
-
+ safeSelect(T_DH_SEL_THEME, "nphalanx");
clickAndWait(T_DH_SUB_UPDATE);
}
17 years, 6 months
JBoss Portal SVN: r12186 - in branches/JBoss_Portal_Branch_2_7/core-admin/src: resources/portal-admin-war/jsf and 1 other directory.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2008-10-27 12:40:24 -0400 (Mon, 27 Oct 2008)
New Revision: 12186
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml
Log:
- JBPORTAL-2213: fix support for fallback handling of coordination i.e. implicit handling at page level but with some explicit elements.
Modified: branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java 2008-10-27 15:06:26 UTC (rev 12185)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java 2008-10-27 16:40:24 UTC (rev 12186)
@@ -83,7 +83,7 @@
this.originalQNames = originalQNames;
}
- public void loadInfoFrom(Page page)
+ public boolean loadInfoFrom(Page page)
{
Collection<? extends AliasBindingInfo> bindings = managerBean.getCoordinationService().getAliasBindings(page);
if (!bindings.isEmpty())
@@ -93,16 +93,18 @@
{
displayAliasBindings.put(binding.getName(), new DisplayAliasBinding(binding));
}
+ return true;
}
else
{
displayAliasBindings = Collections.emptyMap();
+ return false;
}
}
public List<DisplayAliasBinding> getDisplayAliasBindings()
{
- if (displayAliasBindings == null)
+ if (displayAliasBindings == null || displayAliasBindings.isEmpty())
{
return Collections.emptyList();
}
Modified: branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java 2008-10-27 15:06:26 UTC (rev 12185)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java 2008-10-27 16:40:24 UTC (rev 12186)
@@ -69,23 +69,23 @@
private enum CoordinationType
{
wiring()
- {
- String localizationKey()
- {
- return "COORDINATION_WIRING";
- }},
+ {
+ String localizationKey()
+ {
+ return "COORDINATION_WIRING";
+ }},
parameter()
- {
- String localizationKey()
- {
- return "COORDINATION_PARAMETER";
- }},
+ {
+ String localizationKey()
+ {
+ return "COORDINATION_PARAMETER";
+ }},
alias()
- {
- String localizationKey()
- {
- return "COORDINATION_ALIAS";
- }};
+ {
+ String localizationKey()
+ {
+ return "COORDINATION_ALIAS";
+ }};
private CoordinationBean bean;
@@ -125,7 +125,13 @@
this.managerBean = managerBean;
}
- public abstract void loadInfoFrom(Page page);
+ /**
+ * Loads the specific coordination information from the specified page data.
+ *
+ * @param page the page from which coordination information is to be loaded
+ * @return <code>true</code> if specific information existed and was loaded, <code>false</code> otherwise
+ */
+ public abstract boolean loadInfoFrom(Page page);
public abstract String delete(String name) throws IllegalCoordinationException;
@@ -286,18 +292,11 @@
Page selectedPage = getSelectedPage();
- boolean explicitEventsUsed = isExplicitEventsUsed();
- boolean explicitParametersUsed = isExplicitParametersUsed();
-
+ // always load information since we might be in a fallback situation i.e. explicit handling is disabled
+ // for the page but some explicit elements are still defined (possible in XML)
aliasManager.loadInfoFrom(selectedPage);
- if (explicitEventsUsed)
- {
- eventManager.loadInfoFrom(selectedPage);
- }
- if (explicitParametersUsed)
- {
- parameterManager.loadInfoFrom(selectedPage);
- }
+ boolean explicitEventsUsed = eventManager.loadInfoFrom(selectedPage);
+ boolean explicitParametersUsed = parameterManager.loadInfoFrom(selectedPage);
Collection<PortalObject> children = selectedPage.getChildren(PortalObject.WINDOW_MASK);
if (!children.isEmpty())
Modified: branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java 2008-10-27 15:06:26 UTC (rev 12185)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java 2008-10-27 16:40:24 UTC (rev 12186)
@@ -37,12 +37,12 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;
-import java.util.HashSet;
/**
* @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
@@ -69,7 +69,7 @@
super(managerBean);
}
- public void loadInfoFrom(Page page)
+ public boolean loadInfoFrom(Page page)
{
Collection<EventWiringInfo> wiringInfos = managerBean.getCoordinationService().getEventWirings(page);
if (!wiringInfos.isEmpty())
@@ -79,10 +79,13 @@
{
displayEventWirings.put(ewInfo.getName(), new DisplayEventWiring(ewInfo));
}
+
+ return true;
}
else
{
displayEventWirings = Collections.emptyMap();
+ return false;
}
}
@@ -122,7 +125,7 @@
public Collection<DisplayEventWiring> getDisplayEventWirings()
{
- if (displayEventWirings == null)
+ if (displayEventWirings == null || displayEventWirings.isEmpty())
{
return Collections.emptyList();
}
Modified: branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java 2008-10-27 15:06:26 UTC (rev 12185)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java 2008-10-27 16:40:24 UTC (rev 12186)
@@ -119,7 +119,7 @@
public Collection<DisplayParameterBinding> getDisplayParameterBindings()
{
- if (displayParameterBindings == null)
+ if (displayParameterBindings == null || displayParameterBindings.isEmpty())
{
return Collections.emptyList();
}
@@ -135,7 +135,7 @@
availableParameterWindowPairs = new HashMap<Window, WindowSelectItemGroup>(children.size());
}
- public void loadInfoFrom(Page page)
+ public boolean loadInfoFrom(Page page)
{
Collection<? extends ParameterBindingInfo> windowBindingInfos = managerBean.getCoordinationService().getParameterBindings(page);
if (windowBindingInfos != null && !windowBindingInfos.isEmpty())
@@ -145,10 +145,13 @@
{
displayParameterBindings.put(wbInfo.getName(), new DisplayParameterBinding(wbInfo));
}
+
+ return true;
}
else
{
displayParameterBindings = Collections.emptyMap();
+ return false;
}
}
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-10-27 15:06:26 UTC (rev 12185)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml 2008-10-27 16:40:24 UTC (rev 12186)
@@ -25,6 +25,7 @@
<br/>
+ <!-- Alias bindings -->
<div class="tenpx-top-bottom">
<h2 class="portlet-area-header" onclick="toggle_visibility('aliasBindings');" style="cursor: pointer"><a name="#{bundle.COORDINATION_ALIAS_BINDINGS}"/>#{bundle.COORDINATION_ALIAS_BINDINGS}</h2>
@@ -112,6 +113,7 @@
</div>
</div>
+ <!-- Parameter bindings -->
<div class="tenpx-top-bottom">
<h2 class="portlet-area-header" onclick="toggle_visibility('parameterBindings');" style="cursor: pointer"><a name="#{bundle.COORDINATION_PARAMETER_BINDINGS}"/>#{bundle.COORDINATION_PARAMETER_BINDINGS}</h2>
<div id="parameterBindings">
@@ -121,7 +123,7 @@
#{bundle.COORDINATION_PARAMETER_EXPLICIT_MODE}
</h:form>
- <h:panelGroup rendered="#{coordinationManager.explicitParametersUsed}">
+ <h:panelGroup rendered="#{coordinationManager.explicitParametersUsed || !empty parameterManager.displayParameterBindings}">
<hr/>
<!-- Create parameter binding -->
@@ -217,7 +219,7 @@
onchange="this.form.submit()" immediate="true"/>#{bundle.COORDINATION_EVENT_EXPLICIT_MODE}
</h:form>
- <h:panelGroup rendered="#{coordinationManager.explicitEventsUsed}">
+ <h:panelGroup rendered="#{coordinationManager.explicitEventsUsed || !empty eventManager.displayEventWirings}">
<hr/>
<!-- Create new event wiring -->
<h3 class="sectionTitle tenpx-top-bottom">#{bundle.COORDINATION_EVENT_CREATE}</h3>
17 years, 6 months
JBoss Portal SVN: r12185 - in branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests: src/org/jboss/portal/test/selenium and 1 other directory.
by portal-commits@lists.jboss.org
Author: vrockai
Date: 2008-10-27 11:06:26 -0400 (Mon, 27 Oct 2008)
New Revision: 12185
Modified:
branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/selenium-rc-server/user-extensions.js
branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/src/org/jboss/portal/test/selenium/DashboardTestCase.java
Log:
dashboardtestcase fixed, extensions added
Modified: branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/selenium-rc-server/user-extensions.js
===================================================================
--- branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/selenium-rc-server/user-extensions.js 2008-10-27 14:00:56 UTC (rev 12184)
+++ branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/selenium-rc-server/user-extensions.js 2008-10-27 15:06:26 UTC (rev 12185)
@@ -39,4 +39,29 @@
Selenium.prototype.fillInEditor = function(locator, content){
var iframe = this.browserbot.findElement(locator);
iframe.contentDocument.body.innerHTML= content;
-}
\ No newline at end of file
+}
+
+Selenium.prototype.assertTextOrder = function(textValues) {
+
+ var allText = this.page().bodyText();
+ var expectedTextValues = textValues.split(";");
+
+ for (var i = 0; i < expectedTextValues.length - 1; i++) {
+ var index = allText.indexOf(expectedTextValues[i]);
+ var nextIndex = allText.indexOf(expectedTextValues[i+1]);
+ if (index == -1) {
+ return false;
+ //assert.fail("'" + expectedTextValues[i] + "' not found.");
+ }
+ if (nextIndex == -1) {
+ return false;
+ //assert.fail("'" + expectedTextValues[i+1] + "' not found.");
+ }
+
+ if (index > nextIndex) {
+ return false;
+ //assert.fail("'" + expectedTextValues[i+1] + "' found before '" + expectedTextValues[i] + "'");
+ }
+ }
+ return true;
+}
Modified: branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/src/org/jboss/portal/test/selenium/DashboardTestCase.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/src/org/jboss/portal/test/selenium/DashboardTestCase.java 2008-10-27 14:00:56 UTC (rev 12184)
+++ branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/src/org/jboss/portal/test/selenium/DashboardTestCase.java 2008-10-27 15:06:26 UTC (rev 12185)
@@ -11,6 +11,9 @@
@Test(groups = { "cms_dashboard" }, enabled = true, description = "Dashboard issues test case.")
public class DashboardTestCase extends JBossPortalSeleniumTestCase {
+ private static final String SEL_CONTENT_TYPE = "//select[contains(@id,'contentTypesForm:instanceId')]";
+ private static final String SUB_DEL_FROM_CENTER_REGION = "//input[contains(@id,'layoutForm:l_center')]";
+ private static final String SEL_CENTER_REGION = "//select[contains(@id,'layoutForm:selectMany_center')]";
private static final String SUBMIT_ADDCENTER = "//input[contains(@id,'layoutForm:a_center')]";
private static final String SUBMIT_ADDLEFT = "//input[contains(@id,'layoutForm:a_left')]";
private static final String LINK_CONFIGURE_DASHBOARD = "link=Configure dashboard";
@@ -119,7 +122,7 @@
selenium.waitForPageToLoad(PAGE_LOAD);
Assert.assertTrue(selenium.isTextPresent("Current users"));
- Assert.assertTrue(selenium.isTextPresent("Whose 1 is logged-in:"));
+ Assert.assertTrue(selenium.isTextPresent("Among them: * logged-in"));
Assert.assertTrue(selenium.isTextPresent("[admin]"));
}
@@ -174,8 +177,8 @@
selectIfNotSelected(SELECT_PAGE,"DashTestPage");
- selenium.addSelection("layoutForm:selectMany_center", "label=CurrentUsersPortletWindow");
- selenium.click("layoutForm:l_center");
+ selenium.addSelection(SEL_CENTER_REGION, "label=CurrentUsersPortletWindow");
+ selenium.click(SUB_DEL_FROM_CENTER_REGION);
selenium.waitForPageToLoad(PAGE_LOAD);
selenium.click(LINK_DASHBOARD);
@@ -195,9 +198,9 @@
selenium.click(LINK_CONFIGURE_DASHBOARD);
selenium.waitForPageToLoad(PAGE_LOAD);
selectIfNotSelected(SELECT_PAGE,"DashTestPage");
- selenium.select("abc:instanceId", "label=widget/google");
+ selenium.select(SEL_CONTENT_TYPE, "label=widget/google");
selenium.waitForPageToLoad(PAGE_LOAD);
- selenium.click("link=Hindu God of the Week");
+ selenium.click("link=Band Culinaria");
selenium.waitForPageToLoad(PAGE_LOAD);
selenium.click(SUBMIT_ADDCENTER);
selenium.waitForPageToLoad(PAGE_LOAD);
@@ -206,7 +209,8 @@
selenium.click("link=DashTestPage");
selenium.waitForPageToLoad(PAGE_LOAD);
- Assert.assertTrue(selenium.isTextPresent("Hindu God of the Week"));
+ Assert.assertTrue(selenium.isTextPresent("Band Culinaria"));
+ Assert.assertTrue(selenium.isTextPresent("Gadgets powered by Google"));
}
// http://www.jboss.com/index.html?module=bb&op=viewtopic&t=143023
17 years, 6 months
JBoss Portal SVN: r12184 - in branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/src/org/jboss/portal/test/selenium: portal and 1 other directory.
by portal-commits@lists.jboss.org
Author: vrockai
Date: 2008-10-27 10:00:56 -0400 (Mon, 27 Oct 2008)
New Revision: 12184
Modified:
branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/src/org/jboss/portal/test/selenium/IdentityAdminTestCase.java
branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/src/org/jboss/portal/test/selenium/portal/DashboardsTestCase.java
Log:
indentity admin testcase fix
Modified: branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/src/org/jboss/portal/test/selenium/IdentityAdminTestCase.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/src/org/jboss/portal/test/selenium/IdentityAdminTestCase.java 2008-10-27 13:52:34 UTC (rev 12183)
+++ branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/src/org/jboss/portal/test/selenium/IdentityAdminTestCase.java 2008-10-27 14:00:56 UTC (rev 12184)
@@ -19,12 +19,12 @@
private static final String SUB_EDIT_PROF = "//input[contains(@id,'profile-form:submit')]";
private static final String SUB_EDIT_USER_EMAIL_CANCEL = "//input[contains(@id,'profile-form:cancel')]";
private static final String INP_EDIT_USER_EMAIL = "//input[contains(@id,'profile-form:email')]";
- private static final String SUB_ROLE_SEARCH_USER = "//input[contains(@id,'search-user-form:search')]";
+ private static final String SUB_ROLE_SEARCH_USER = "//input[contains(@id,'search-user-form:search') and @type='submit']";
private static final String INP_ROLE_SEARCH_USER = "//input[contains(@id,'search-user-form:searchString')]";
private static final String SUB_EDIT_ROLE_SUBMIT = "//input[contains(@id,'edit-role-link:submit')]";
private static final String SUB_EDIT_ROLE_CANCEL = "//input[contains(@id,'edit-role-link:cancel')]";
private static final String INP_EDIT_ROLE_NAME = "//input[contains(@id,'edit-role-link:display-name')]";
- private static final String SUB_PASS_CHANGE_SUBMIT = "//input[contains(@id,'change-pwd-form:j_id31')]";
+ private static final String SUB_PASS_CHANGE_SUBMIT = "//input[contains(@name,'change-pwd-form:j_id31')]";
private static final String SUB_PASS_CHANGE_CANCEL = "//input[contains(@id,'change-pwd-form:cancel')]";
private static final String INPUT_PASS_CHANGE_P2 = "//input[contains(@id,':change-pwd-form:passwordCheck')]";
private static final String INPUT_PASS_CHANGE_P1 = "//input[contains(@id,':change-pwd-form:password')]";
@@ -253,7 +253,6 @@
selenium.waitForPageToLoad(PAGE_LOAD);
Assert.assertTrue(selenium.isTextPresent("editMe2(a)redhat.com"));
Assert.assertTrue(selenium.isTextPresent("Edit"));
- Assert.assertTrue(selenium.isTextPresent("Meme"));
deleteUser("editMe", "editMe2(a)redhat.com");
@@ -274,6 +273,7 @@
searchUser("changePass", "changePass(a)redhat.com");
+
int r = findTableRow(TABLE_USERLIST, "changePass", 0);
selenium.click(MessageFormat.format(LINK_T_USRLIST_EDIT, r - 1));
selenium.waitForPageToLoad(PAGE_LOAD);
@@ -691,7 +691,7 @@
}
- public void waitBlock(){
+ protected void waitBlock(){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
Modified: branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/src/org/jboss/portal/test/selenium/portal/DashboardsTestCase.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/src/org/jboss/portal/test/selenium/portal/DashboardsTestCase.java 2008-10-27 13:52:34 UTC (rev 12183)
+++ branches/JBoss_Portal_Branch_2_7/testsuite/ui-tests/src/org/jboss/portal/test/selenium/portal/DashboardsTestCase.java 2008-10-27 14:00:56 UTC (rev 12184)
@@ -77,7 +77,6 @@
selenium.type(MessageFormat.format(T_PROPS_INPUT_VALUE, r-1),value);
selenium.click(SUBMIT_UPDATE_VALUE);
selenium.waitForPageToLoad(PAGE_LOAD);
-
Assert.assertEquals(selenium.getValue(MessageFormat.format(T_PROPS_INPUT_VALUE, r-1)),value,"Updated value not found.");
}
@@ -136,11 +135,11 @@
safeSelect(T_DH_SEL_LAYOUT, "1column");
- safeSelect(T_DH_SEL_THEME, "nphalanx");
+
safeSelect(T_DH_SEL_RENDERSET, "default");
-
+ safeSelect(T_DH_SEL_THEME, "nphalanx");
clickAndWait(T_DH_SUB_UPDATE);
}
17 years, 6 months