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