You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by eh...@apache.org on 2007/06/04 18:29:16 UTC
svn commit: r544178 -
/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/WebPage.java
Author: ehillenius
Date: Mon Jun 4 09:29:15 2007
New Revision: 544178
URL: http://svn.apache.org/viewvc?view=rev&rev=544178
Log:
sorted members
Modified:
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/WebPage.java
Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/WebPage.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/WebPage.java?view=diff&rev=544178&r1=544177&r2=544178
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/WebPage.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/WebPage.java Mon Jun 4 09:29:15 2007
@@ -70,7 +70,105 @@
*/
public class WebPage extends Page implements INewBrowserWindowListener
{
- private static final long serialVersionUID = 1L;
+ /**
+ * Tries to determine whether this page was opened in a new window or tab.
+ * If it is (and this checker were able to recognize that), a new page map
+ * is created for this page instance, so that it will start using it's own
+ * history in sync with the browser window or tab.
+ */
+ private static final class PageMapChecker extends AbstractBehavior
+ implements
+ IHeaderContributor
+ {
+ private static final long serialVersionUID = 1L;
+
+ /** The unload model for deleting the pagemap cookie */
+ private Model onUnLoadModel;
+
+ private final WebPage webPage;
+
+ /**
+ * Construct.
+ *
+ * @param webPage
+ */
+ PageMapChecker(WebPage webPage)
+ {
+ this.webPage = webPage;
+ }
+
+ /**
+ * @see org.apache.wicket.markup.html.IHeaderContributor#renderHead(org.apache.wicket.Response)
+ */
+ public final void renderHead(final IHeaderResponse headResponse)
+ {
+ Response response = headResponse.getResponse();
+ final WebRequestCycle cycle = (WebRequestCycle)RequestCycle.get();
+ final IRequestTarget target = cycle.getRequestTarget();
+
+ IPageMap pageMap = webPage.getPageMap();
+ String name = pageMap.getName();
+ if (name == null)
+ {
+ name = "wicket:default";
+ }
+ else
+ {
+ name = name.replace('"', '_');
+ }
+
+ Session session = Session.get();
+
+ Session.PageMapAccessMetaData meta = (Session.PageMapAccessMetaData)session
+ .getMetaData(Session.PAGEMAP_ACCESS_MDK);
+ if (meta == null)
+ {
+ meta = new Session.PageMapAccessMetaData();
+ session.setMetaData(Session.PAGEMAP_ACCESS_MDK, meta);
+ }
+ boolean firstAccess = meta.add(pageMap);
+
+ if (firstAccess)
+ {
+ // this is the first access to the pagemap, set window.name
+ JavascriptUtils.writeOpenTag(response);
+ response
+ .write("if (window.name=='' || window.name.indexOf('wicket') > -1) { window.name=\"");
+ response.write(name);
+ response.write("\"; }");
+ JavascriptUtils.writeCloseTag(response);
+ }
+ else
+ {
+ // Here is our trickery to detect whether the current request
+ // was
+ // made in a new window/ tab, in which case it should go in a
+ // different page map so that we don't intermangle the history
+ // of
+ // those windows
+ CharSequence url = null;
+ if (target instanceof IBookmarkablePageRequestTarget)
+ {
+ IBookmarkablePageRequestTarget current = (IBookmarkablePageRequestTarget)target;
+ BookmarkablePageRequestTarget redirect = new BookmarkablePageRequestTarget(
+ session.createAutoPageMapName(), current.getPageClass(), current
+ .getPageParameters());
+ url = cycle.urlFor(redirect);
+ }
+ else
+ {
+ url = webPage.urlFor(INewBrowserWindowListener.INTERFACE);
+ }
+ JavascriptUtils.writeOpenTag(response);
+ response
+ .write("if (window.name=='' || (window.name.indexOf('wicket') > -1 && window.name!='"
+ + name + "')) { window.location=\"");
+ response.write(url);
+ response.write("\"; }");
+ JavascriptUtils.writeCloseTag(response);
+ }
+ }
+ }
/** log. */
private static final Logger _log = LoggerFactory.getLogger(WebPage.class);
@@ -79,11 +177,7 @@
private static ResourceReference cookiesResource = new ResourceReference(WebPage.class,
"cookies.js");
- /**
- * The url compressor that will compress the urls by collapsing the
- * component path and listener interface
- */
- private UrlCompressor compressor;
+ private static final long serialVersionUID = 1L;
/**
* Boolean flag that represents whether or not we have already added a
@@ -92,6 +186,12 @@
private boolean bodyContainerAdded = false;
/**
+ * The url compressor that will compress the urls by collapsing the
+ * component path and listener interface
+ */
+ private UrlCompressor compressor;
+
+ /**
* Constructor. Having this constructor public means that your page is
* 'bookmarkable' and hence can be called/ created from anywhere.
*/
@@ -161,6 +261,65 @@
}
/**
+ * This method is called when the compressing coding and response stategies
+ * are configured in your Application object like this:
+ *
+ * <pre>
+ * protected IRequestCycleProcessor newRequestCycleProcessor()
+ * {
+ * return new UrlCompressingWebRequestProcessor();
+ * }
+ * </pre>
+ *
+ * @return The URLCompressor for this webpage.
+ *
+ * @since 1.2
+ *
+ * @see UrlCompressingWebRequestProcessor
+ * @see UrlCompressor
+ */
+ public final UrlCompressor getUrlCompressor()
+ {
+ if (compressor == null)
+ {
+ compressor = new UrlCompressor();
+ }
+ return compressor;
+ }
+
+ /**
+ * @see org.apache.wicket.markup.html.INewBrowserWindowListener#onNewBrowserWindow()
+ */
+ public void onNewBrowserWindow()
+ {
+ // if the browser reports a history of 0 then make a new webpage
+ WebPage clonedPage = this;
+ try
+ {
+ clonedPage = (WebPage)Objects.cloneObject(this);
+ }
+ catch (Exception e)
+ {
+ _log.error("Page " + clonedPage + " couldn't be cloned to move to another pagemap", e);
+ }
+ final IPageMap map = getSession().createAutoPageMap();
+ clonedPage.moveToPageMap(map);
+ setResponsePage(clonedPage);
+ }
+
+ /**
+ * Common code executed by constructors.
+ */
+ private void commonInit()
+ {
+ // if automatic multi window support is on, add a page checker instance
+ if (getApplication().getPageSettings().getAutomaticMultiWindowSupport())
+ {
+ add(new PageMapChecker(this));
+ }
+ }
+
+ /**
* @see org.apache.wicket.Page#configureResponse()
*/
protected void configureResponse()
@@ -180,6 +339,7 @@
return (WebRequestCycle)getRequestCycle();
}
+
/**
* Creates and returns a bookmarkable link to this application's home page.
*
@@ -192,45 +352,6 @@
return new BookmarkablePageLink(id, getApplication().getHomePage());
}
- /**
- * Common code executed by constructors.
- */
- private void commonInit()
- {
- // if automatic multi window support is on, add a page checker instance
- if (getApplication().getPageSettings().getAutomaticMultiWindowSupport())
- {
- add(new PageMapChecker(this));
- }
- }
-
- /**
- * This method is called when the compressing coding and response stategies
- * are configured in your Application object like this:
- *
- * <pre>
- * protected IRequestCycleProcessor newRequestCycleProcessor()
- * {
- * return new UrlCompressingWebRequestProcessor();
- * }
- * </pre>
- *
- * @return The URLCompressor for this webpage.
- *
- * @since 1.2
- *
- * @see UrlCompressingWebRequestProcessor
- * @see UrlCompressor
- */
- public final UrlCompressor getUrlCompressor()
- {
- if (compressor == null)
- {
- compressor = new UrlCompressor();
- }
- return compressor;
- }
-
protected void onBeforeRender()
{
super.onBeforeRender();
@@ -270,7 +391,6 @@
}
-
/**
*
* @see org.apache.wicket.Component#onDetach()
@@ -289,125 +409,5 @@
this.remove(header);
}
super.onDetach();
- }
-
- /**
- * @see org.apache.wicket.markup.html.INewBrowserWindowListener#onNewBrowserWindow()
- */
- public void onNewBrowserWindow()
- {
- // if the browser reports a history of 0 then make a new webpage
- WebPage clonedPage = this;
- try
- {
- clonedPage = (WebPage)Objects.cloneObject(this);
- }
- catch (Exception e)
- {
- _log.error("Page " + clonedPage + " couldn't be cloned to move to another pagemap", e);
- }
- final IPageMap map = getSession().createAutoPageMap();
- clonedPage.moveToPageMap(map);
- setResponsePage(clonedPage);
- }
-
- /**
- * Tries to determine whether this page was opened in a new window or tab.
- * If it is (and this checker were able to recognize that), a new page map
- * is created for this page instance, so that it will start using it's own
- * history in sync with the browser window or tab.
- */
- private static final class PageMapChecker extends AbstractBehavior
- implements
- IHeaderContributor
- {
- private static final long serialVersionUID = 1L;
-
- /** The unload model for deleting the pagemap cookie */
- private Model onUnLoadModel;
-
- private final WebPage webPage;
-
- /**
- * Construct.
- *
- * @param webPage
- */
- PageMapChecker(WebPage webPage)
- {
- this.webPage = webPage;
- }
-
- /**
- * @see org.apache.wicket.markup.html.IHeaderContributor#renderHead(org.apache.wicket.Response)
- */
- public final void renderHead(final IHeaderResponse headResponse)
- {
- Response response = headResponse.getResponse();
- final WebRequestCycle cycle = (WebRequestCycle)RequestCycle.get();
- final IRequestTarget target = cycle.getRequestTarget();
-
- IPageMap pageMap = webPage.getPageMap();
- String name = pageMap.getName();
- if (name == null)
- {
- name = "wicket:default";
- }
- else
- {
- name = name.replace('"', '_');
- }
-
- Session session = Session.get();
-
- Session.PageMapAccessMetaData meta = (Session.PageMapAccessMetaData)session
- .getMetaData(Session.PAGEMAP_ACCESS_MDK);
- if (meta == null)
- {
- meta = new Session.PageMapAccessMetaData();
- session.setMetaData(Session.PAGEMAP_ACCESS_MDK, meta);
- }
- boolean firstAccess = meta.add(pageMap);
-
- if (firstAccess)
- {
- // this is the first access to the pagemap, set window.name
- JavascriptUtils.writeOpenTag(response);
- response
- .write("if (window.name=='' || window.name.indexOf('wicket') > -1) { window.name=\"");
- response.write(name);
- response.write("\"; }");
- JavascriptUtils.writeCloseTag(response);
- }
- else
- {
- // Here is our trickery to detect whether the current request
- // was
- // made in a new window/ tab, in which case it should go in a
- // different page map so that we don't intermangle the history
- // of
- // those windows
- CharSequence url = null;
- if (target instanceof IBookmarkablePageRequestTarget)
- {
- IBookmarkablePageRequestTarget current = (IBookmarkablePageRequestTarget)target;
- BookmarkablePageRequestTarget redirect = new BookmarkablePageRequestTarget(
- session.createAutoPageMapName(), current.getPageClass(), current
- .getPageParameters());
- url = cycle.urlFor(redirect);
- }
- else
- {
- url = webPage.urlFor(INewBrowserWindowListener.INTERFACE);
- }
- JavascriptUtils.writeOpenTag(response);
- response
- .write("if (window.name=='' || (window.name.indexOf('wicket') > -1 && window.name!='"
- + name + "')) { window.location=\"");
- response.write(url);
- response.write("\"; }");
- JavascriptUtils.writeCloseTag(response);
- }
- }
}
}