You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2011/09/30 20:15:50 UTC
svn commit: r1177763 - in /tapestry/tapestry5/trunk/tapestry-core/src/main:
java/org/apache/tapestry5/corelib/pages/
resources/org/apache/tapestry5/corelib/pages/
resources/org/apache/tapestry5/internal/t5internal/components/
Author: hlship
Date: Fri Sep 30 18:15:50 2011
New Revision: 1177763
URL: http://svn.apache.org/viewvc?rev=1177763&view=rev
Log:
TAP5-1678: Add support for loading just a single page
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java
tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PageCatalog.tml
tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/internal/t5internal/components/internal-layout.css
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java?rev=1177763&r1=1177762&r2=1177763&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java Fri Sep 30 18:15:50 2011
@@ -20,7 +20,10 @@ import org.apache.tapestry5.annotations.
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.beaneditor.Validate;
import org.apache.tapestry5.corelib.components.Zone;
+import org.apache.tapestry5.func.F;
+import org.apache.tapestry5.func.Predicate;
import org.apache.tapestry5.internal.services.PageSource;
import org.apache.tapestry5.internal.structure.Page;
import org.apache.tapestry5.ioc.annotations.Inject;
@@ -30,6 +33,7 @@ import org.apache.tapestry5.services.Com
import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
import java.util.Collection;
+import java.util.List;
import java.util.Set;
/**
@@ -65,11 +69,51 @@ public class PageCatalog
@Persist
private Set<String> failures;
+ @Property
+ @Validate("required")
+ private String pageName;
+
+ public List<String> getPageNames()
+ {
+ return resolver.getPageNames();
+ }
+
public Collection<Page> getPages()
{
return pageSource.getAllPages();
}
+ Object onSuccessFromSinglePageLoad()
+ {
+ boolean found = !F.flow(getPages()).filter(new Predicate<Page>()
+ {
+ public boolean accept(Page element)
+ {
+ return element.getName().equals(pageName) && element.getSelector().equals(selector);
+ }
+ }).isEmpty();
+
+ if (found)
+ {
+ alertManager.warn(String.format("Page %s has already been loaded for '%s'.",
+ pageName, selector.toShortString()));
+ return null;
+ }
+
+ long startTime = System.currentTimeMillis();
+
+
+ // Load the page now (may cause an exception).
+
+ pageSource.getPage(pageName);
+
+
+ alertManager.info(String.format("Loaded page %s for selector '%s' (in %,d ms).", pageName,
+ selector.toShortString(), System.currentTimeMillis() - startTime));
+
+ return pagesZone.getBody();
+ }
+
Object onActionFromForceLoad()
{
if (failures == null)
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PageCatalog.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PageCatalog.tml?rev=1177763&r1=1177762&r2=1177763&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PageCatalog.tml (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PageCatalog.tml Fri Sep 30 18:15:50 2011
@@ -43,4 +43,16 @@
</t:zone>
+
+ <div class="t-space-vertically">
+
+ <t:form t:id="singlePageLoad" zone="pages">
+
+ <t:label for="pageName">Load single page</t:label>
+ <t:select t:id="pageName" model="pageNames"/>
+ <input type="submit" value="Load Page"/>
+
+ </t:form>
+ </div>
+
</i:internallayout>
\ No newline at end of file
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/internal/t5internal/components/internal-layout.css
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/internal/t5internal/components/internal-layout.css?rev=1177763&r1=1177762&r2=1177763&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/internal/t5internal/components/internal-layout.css (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/internal/t5internal/components/internal-layout.css Fri Sep 30 18:15:50 2011
@@ -23,4 +23,12 @@ UL.t-menu A {
UL.t-menu A:hover {
text-decoration: underline;
+}
+
+DIV.t-space-vertically {
+ margin-top: 20px;
+}
+
+LABEL:after {
+ content: ":"
}
\ No newline at end of file