You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2003/12/08 14:47:51 UTC
cvs commit: cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl DefaultLinkService.java
cziegeler 2003/12/08 05:47:51
Modified: src/blocks/portal/java/org/apache/cocoon/portal
LinkService.java
src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl
FullScreenCopletAspect.java
src/blocks/portal/java/org/apache/cocoon/portal/impl
DefaultLinkService.java
Log:
Fixing event handling with full screen layout
Revision Changes Path
1.3 +24 -1 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/LinkService.java
Index: LinkService.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/LinkService.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- LinkService.java 7 May 2003 20:24:02 -0000 1.2
+++ LinkService.java 8 Dec 2003 13:47:50 -0000 1.3
@@ -68,13 +68,36 @@
String DEFAULT_REQUEST_EVENT_PARAMETER_NAME = "cocoon-portal-event";
+ /**
+ * Get the uri for this coplet containing the additional event
+ * @param event The event to add
+ * @return A URI
+ */
String getLinkURI(Event event);
+ /**
+ * Get the uri for this coplet containing the additional events
+ * @param events The events to add
+ * @return A URI
+ */
String getLinkURI(List events);
+ /**
+ * Add this event to the list of events contained in the uri
+ * @param event Event to add
+ */
void addEventToLink(Event event);
+ /**
+ * Add this parameter to every link
+ * @param name The request parameter name
+ * @param value The value for the parameter
+ */
void addParameterToLink(String name, String value);
+ /**
+ * Get a link that simply refreshs the portal
+ * @return A URI
+ */
String getRefreshLinkURI();
}
1.5 +3 -2 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/FullScreenCopletAspect.java
Index: FullScreenCopletAspect.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/FullScreenCopletAspect.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FullScreenCopletAspect.java 24 Sep 2003 21:22:33 -0000 1.4
+++ FullScreenCopletAspect.java 8 Dec 2003 13:47:51 -0000 1.5
@@ -82,7 +82,8 @@
final Layout fullScreenLayout = service.getComponentManager().getProfileManager().getEntryLayout();
if ( fullScreenLayout != null && fullScreenLayout.equals( layout )) {
- XMLUtils.createElement(handler, "fullscreen-uri", service.getComponentManager().getLinkService().getRefreshLinkURI());
+ FullScreenCopletEvent event = new FullScreenCopletEvent( cid, null );
+ XMLUtils.createElement(handler, "fullscreen-uri", service.getComponentManager().getLinkService().getLinkURI(event));
} else {
FullScreenCopletEvent event = new FullScreenCopletEvent( cid, layout );
XMLUtils.createElement(handler, "fullscreen-uri", service.getComponentManager().getLinkService().getLinkURI(event));
1.8 +77 -20 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java
Index: DefaultLinkService.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- DefaultLinkService.java 20 Oct 2003 13:36:56 -0000 1.7
+++ DefaultLinkService.java 8 Dec 2003 13:47:51 -0000 1.8
@@ -83,16 +83,20 @@
extends AbstractLogEnabled
implements ThreadSafe, LinkService, Serviceable, Disposable, Contextualizable {
-
+ /**
+ * Helper class containing the information about the request uri
+ */
class Info {
StringBuffer linkBase = new StringBuffer();
boolean hasParameters = false;
ArrayList comparableEvents = new ArrayList(5);
}
-
+ /** The converter used to convert an event into a request parameter */
protected EventConverter converter;
+ /** The service manager */
protected ServiceManager manager;
+ /** The cocoon context */
protected Context context;
/* (non-Javadoc)
@@ -103,6 +107,10 @@
this.converter = (EventConverter)this.manager.lookup(EventConverter.ROLE);
}
+ /**
+ * Return the current info for the request
+ * @return An Info object
+ */
protected Info getInfo() {
final Request request = ContextHelper.getRequest( this.context );
Info info = (Info)request.getAttribute(DefaultLinkService.class.getName());
@@ -124,19 +132,28 @@
return info;
}
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.portal.LinkService#getLinkURI(org.apache.cocoon.portal.event.Event)
+ */
public String getLinkURI(Event event) {
final Info info = this.getInfo();
final StringBuffer buffer = new StringBuffer(info.linkBase.toString());
boolean hasParams = info.hasParameters;
// add comparable events
+ final boolean comparableEvent = event instanceof ComparableEvent;
Iterator iter = info.comparableEvents.iterator();
while (iter.hasNext()) {
- ComparableEvent current = (ComparableEvent)iter.next();
- if (!(event instanceof ComparableEvent)
- || ( !current.equalsEvent((ComparableEvent)event))) {
-
- hasParams = this.addEvent(buffer, current, hasParams);
+ Object[] objects = (Object[])iter.next();
+ ComparableEvent current = (ComparableEvent)objects[0];
+ if ( !comparableEvent || !current.equalsEvent((ComparableEvent)event)) {
+ if ( hasParams ) {
+ buffer.append('&');
+ } else {
+ buffer.append('?');
+ }
+ buffer.append((String)objects[1]).append('=').append(SourceUtil.encode((String)objects[2]));
+ hasParams = true;
}
}
@@ -146,6 +163,10 @@
return buffer.toString();
}
+ /**
+ * Add one event to the buffer
+ * @return Returns true, if the link contains a parameter
+ */
protected boolean addEvent(StringBuffer buffer, Event event, boolean hasParams) {
if ( hasParams ) {
buffer.append('&');
@@ -164,6 +185,9 @@
return true;
}
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.portal.LinkService#getLinkURI(java.util.List)
+ */
public String getLinkURI(List events) {
final Info info = this.getInfo();
boolean hasParams = info.hasParameters;
@@ -172,7 +196,8 @@
// add comparable events
Iterator iter = info.comparableEvents.iterator();
while (iter.hasNext()) {
- ComparableEvent current = (ComparableEvent)iter.next();
+ Object[] objects = (Object[])iter.next();
+ ComparableEvent current = (ComparableEvent)objects[0];
Iterator eventIterator = events.iterator();
boolean found = false;
@@ -184,7 +209,13 @@
}
}
if (!found) {
- hasParams = this.addEvent(buffer, current, hasParams);
+ if ( hasParams ) {
+ buffer.append('&');
+ } else {
+ buffer.append('?');
+ }
+ buffer.append((String)objects[1]).append('=').append(SourceUtil.encode((String)objects[2]));
+ hasParams = true;
}
}
@@ -197,23 +228,30 @@
return buffer.toString();
}
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.portal.LinkService#addEventToLink(org.apache.cocoon.portal.event.Event)
+ */
public void addEventToLink(Event event) {
+ String parameterName = DEFAULT_REQUEST_EVENT_PARAMETER_NAME;
+ if (event instanceof RequestEvent ) {
+ final String eventParName = ((RequestEvent)event).getRequestParameterName();
+ if ( eventParName != null ) {
+ parameterName = eventParName;
+ }
+ }
+ final String value = this.converter.encode( event );
+
final Info info = this.getInfo();
if ( event instanceof ComparableEvent) {
- info.comparableEvents.add( event );
+ info.comparableEvents.add( new Object[] {event, parameterName, value} );
} else {
- final String value = converter.encode(event);
- String parameterName = LinkService.DEFAULT_REQUEST_EVENT_PARAMETER_NAME;
- if (event instanceof RequestEvent) {
- final String eventParName = ((RequestEvent)event).getRequestParameterName();
- if ( eventParName != null ) {
- parameterName = eventParName;
- }
- }
this.addParameterToLink(parameterName, value);
}
}
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.portal.LinkService#addParameterToLink(java.lang.String, java.lang.String)
+ */
public void addParameterToLink(String name, String value) {
final Info info = this.getInfo();
if ( info.hasParameters ) {
@@ -225,9 +263,28 @@
info.hasParameters = true;
}
+ /* (non-Javadoc)
+ * @see org.apache.cocoon.portal.LinkService#getRefreshLinkURI()
+ */
public String getRefreshLinkURI() {
final Info info = this.getInfo();
- return info.linkBase.toString();
+
+ final StringBuffer buffer = new StringBuffer(info.linkBase.toString());
+
+ // add comparable events
+ Iterator iter = info.comparableEvents.iterator();
+ boolean hasParams = info.hasParameters;
+ while (iter.hasNext()) {
+ Object[] objects = (Object[])iter.next();
+ if ( hasParams ) {
+ buffer.append('&');
+ } else {
+ buffer.append('?');
+ }
+ buffer.append((String)objects[1]).append('=').append(SourceUtil.encode((String)objects[2]));
+ hasParams = true;
+ }
+ return buffer.toString();
}
/* (non-Javadoc)