Author: ate
Date: Tue Sep 4 07:47:41 2007
New Revision: 572694
URL: http://svn.apache.org/viewvc?rev=572694&view=rev
Log:
WICKET-926: New Wicket Portlet support: Support for detached/popup pages
See: https://issues.apache.org/jira/browse/WICKET-926
- Implementing a somewhat "hacky" solution which involves setting a temporary
flag in RequestCycle to indicate the next urlFor call is targetted at a popup
page
- Hooking this solution in the Link and ModalWindow as example
There are maybe more locations in the codebase requesting page urls for popup
usage, but this should already cover most cases.
Modified:
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/Link.java
Modified:
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java?rev=572694&r1=572693&r2=572694&view=diff
==============================================================================
---
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
(original)
+++
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
Tue Sep 4 07:47:41 2007
@@ -927,6 +927,7 @@
{
throw new WicketRuntimeException("Error
creating page for modal dialog.");
}
+ RequestCycle.get().setNextUrlForNewWindow();
buffer.append("settings.src=\"" +
RequestCycle.get().urlFor(page) + "\";\n");
if (getPageMapName() != null)
Modified:
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java?rev=572694&r1=572693&r2=572694&view=diff
==============================================================================
---
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
(original)
+++
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
Tue Sep 4 07:47:41 2007
@@ -267,6 +267,13 @@
/** The current response. */
protected Response response;
+
+ /**
+ * Boolean if the next urlFor call is intended for a new window
(ModalWindow, popup, tab).
+ * This temporary flag is specifically needed for portlet-support as
then such a page needs a special target (Resource) url.
+ * After each urlFor call, this flag is reset to false.
+ */
+ private transient boolean nextUrlForNewWindow;
/**
* Constructor. This instance will be set as the current one for this
@@ -687,6 +694,30 @@
}
/**
+ * @return true if the page is intended to be displayed in a new window
(ModalWindow, popup, tab).
+ */
+ public final boolean isNextUrlForNewWindow()
+ {
+ return nextUrlForNewWindow;
+ }
+
+ /**
+ * Indicate if the next urlFor call is intended for a new window
(ModalWindow, popup, tab).
+ * This temporary flag is specifically needed for portlet-support as
then such a page needs a special target (Resource) url.
+ * After each urlFor call, this flag is reset to false.
+ */
+ public final void setNextUrlForNewWindow()
+ {
+ nextUrlForNewWindow = true;
+ }
+
+ private final CharSequence resetNextUrlForNewWindow(CharSequence url)
+ {
+ nextUrlForNewWindow = false;
+ return url;
+ }
+
+ /**
* Returns a bookmarkable URL that references a given page class using a
* given set of page parameters. Since the URL which is returned
contains
* all information necessary to instantiate and render the page, it can
be
@@ -745,7 +776,7 @@
listener, params);
final IRequestCodingStrategy requestCodingStrategy =
getProcessor()
.getRequestCodingStrategy();
- return requestCodingStrategy.encode(this, target);
+ return
resetNextUrlForNewWindow(requestCodingStrategy.encode(this, target));
}
/**
@@ -788,7 +819,7 @@
}
final IRequestCodingStrategy requestCodingStrategy =
getProcessor()
.getRequestCodingStrategy();
- return requestCodingStrategy.encode(this, target);
+ return
resetNextUrlForNewWindow(requestCodingStrategy.encode(this, target));
}
/**
@@ -814,7 +845,7 @@
: pageMap.getName(), pageClass, parameters);
final IRequestCodingStrategy requestCodingStrategy =
getProcessor()
.getRequestCodingStrategy();
- return requestCodingStrategy.encode(this, target);
+ return
resetNextUrlForNewWindow(requestCodingStrategy.encode(this, target));
}
/**
@@ -827,7 +858,7 @@
public final CharSequence urlFor(final IRequestTarget requestTarget)
{
IRequestCodingStrategy requestCodingStrategy =
getProcessor().getRequestCodingStrategy();
- return requestCodingStrategy.encode(this, requestTarget);
+ return
resetNextUrlForNewWindow(requestCodingStrategy.encode(this, requestTarget));
}
/**
@@ -877,7 +908,7 @@
requestParameters.setParameters(parameters);
CharSequence url =
getProcessor().getRequestCodingStrategy().encode(this,
new
SharedResourceRequestTarget(requestParameters));
- return url;
+ return resetNextUrlForNewWindow(url);
}
/**
Modified:
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/Link.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/Link.java?rev=572694&r1=572693&r2=572694&view=diff
==============================================================================
---
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/Link.java
(original)
+++
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/Link.java
Tue Sep 4 07:47:41 2007
@@ -402,6 +402,10 @@
// Default handling for tag
super.onComponentTag(tag);
+ if (popupSettings != null)
+ {
+ RequestCycle.get().setNextUrlForNewWindow();
+ }
// Set href to link to this link's linkClicked method
CharSequence url = getURL();