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 2013/06/29 20:14:38 UTC
git commit: TAP5-2137: Tree component renders empty nodes as
expandable, AssertionError when expanded
Updated Branches:
refs/heads/master b8e15bfc3 -> 75eaf6a5e
TAP5-2137: Tree component renders empty nodes as expandable, AssertionError when expanded
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/75eaf6a5
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/75eaf6a5
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/75eaf6a5
Branch: refs/heads/master
Commit: 75eaf6a5ecba47b5ba9bd498aae57c51b73facba
Parents: b8e15bf
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Sat Jun 29 11:14:32 2013 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Sat Jun 29 11:14:32 2013 -0700
----------------------------------------------------------------------
build.gradle | 19 ++++++++++++-------
.../META-INF/modules/t5/core/tree.coffee | 17 +++++++++--------
.../resources/META-INF/assets/tapestry5/tree.css | 4 ++--
.../apache/tapestry5/integration/app1/Stuff.java | 4 ++++
.../integration/app1/StuffTreeModelAdapter.java | 7 +++++++
5 files changed, 34 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/75eaf6a5/build.gradle
----------------------------------------------------------------------
diff --git a/build.gradle b/build.gradle
index 7c70f31..417dcf4 100755
--- a/build.gradle
+++ b/build.gradle
@@ -34,7 +34,7 @@ project.version = tapestryVersion()
def tapestryVersion() {
def major = "5.4"
- def minor = "-alpha-10 "
+ def minor = "-alpha-10"
// When building on the CI server, make sure -SNAPSHOT is appended, as it is a nightly build.
// When building normally, or for a release, no suffix is desired.
@@ -96,7 +96,9 @@ allprojects {
project {
// Leave at 1.5 to make sure that IDEA doesn't break the build for non-IDEA users by inserting
// @Override on implementations all over the place.
- jdkName = "1.5"
+ languageLevel = "1.5"
+ // But this is what most (all?) of the devs are actually using:
+ jdkName = "1.7"
}
}
@@ -320,6 +322,7 @@ task aggregateJavadoc(type: Javadoc) {
task coffeeScriptDocs(type: Exec) {
group "Documentation"
description "Build docco documentation for all CoffeeScript sources"
+ dependsOn project(":tapestry-core").tasks.preprocessCoffeeScript
def outputDir = file("$buildDir/documentation/coffeescript")
@@ -328,16 +331,19 @@ task coffeeScriptDocs(type: Exec) {
def sources = files()
subprojects.each { sub ->
- // When I figure out how to get the preprocessed CoffeeScript included, this can change to src/main/coffeescript
- sources += sub.fileTree("src/main", { include "**/*.coffee" })
+ sources += sub.fileTree("src/main/coffeescript", { include "**/*.coffee" })
}
+ sources += project(":tapestry-core").tasks.preprocessCoffeeScript.outputs.files.asFileTree
+
+ logger.error "sources=$sources"
+
// Needs to be installed via "npm install -g docco"
executable isWindows() ? "docco.cmd" : "docco"
args "--output", outputDir
args sources.files.sort({ a,b -> a.name.compareTo b.name })
- inputs.files sources
+ inputs.files { sources }
outputs.dir outputDir
}
@@ -348,8 +354,7 @@ dependencies {
}
task continuousIntegration {
- // Temporarily removed aggregateJavadoc as there's an issue w.r.t JDK on the CI server
- dependsOn subprojects.build, subprojects.uploadPublished
+ dependsOn subprojects.build, aggregateJavadoc, subprojects.uploadPublished
description "Task executed on Jenkins CI server after SVN commits"
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/75eaf6a5/tapestry-core/src/main/coffeescript/META-INF/modules/t5/core/tree.coffee
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/coffeescript/META-INF/modules/t5/core/tree.coffee b/tapestry-core/src/main/coffeescript/META-INF/modules/t5/core/tree.coffee
index e8ef4f4..5d89663 100644
--- a/tapestry-core/src/main/coffeescript/META-INF/modules/t5/core/tree.coffee
+++ b/tapestry-core/src/main/coffeescript/META-INF/modules/t5/core/tree.coffee
@@ -58,6 +58,8 @@ define ["./dom", "./ajax", "./zone"],
node.meta LOADING, false
node.meta LOADED, true
+ # toggles a folder in the tree between expanded and collapsed (once data for the folder
+ # has been loaded).
toggle = (node) ->
sublist = node.findParent("li").findFirst("ul")
@@ -71,19 +73,18 @@ define ["./dom", "./ajax", "./zone"],
sublist.show()
send node, "markExpanded"
+ # The handler is triggered on the `<span data-node-id=''>` directly inside the `<li>`.
clickHandler = ->
- # First case is dynamically loaded due to user action; second case
- # is rendered with overall page due to server-side expansion model.
- loaded = (@meta LOADED) or (@hasClass EXPANDED)
-
- if (not loaded) and (not @hasClass "t-empty-node")
- loadChildren this
+ # Ignore clicks on leaf nodes, and on folders that are known to be empty.
+ if (@parent().hasClass "leaf-node") or (@hasClass "empty-node")
return false
- unless @hasClass "leaf-node"
+ # If not already loaded then fire off the Ajax request to load the content.
+ if (@meta LOADED) or (@hasClass EXPANDED)
toggle this
- return false
+ else
+ loadChildren this
return false
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/75eaf6a5/tapestry-core/src/main/resources/META-INF/assets/tapestry5/tree.css
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/resources/META-INF/assets/tapestry5/tree.css b/tapestry-core/src/main/resources/META-INF/assets/tapestry5/tree.css
index bfe38c2..431bf75 100644
--- a/tapestry-core/src/main/resources/META-INF/assets/tapestry5/tree.css
+++ b/tapestry-core/src/main/resources/META-INF/assets/tapestry5/tree.css
@@ -66,9 +66,9 @@ DIV[data-tree-node-selection-enabled] LI.leaf-node > .tree-label.selected-leaf-n
background-position: -64px -16px;
}
-SPAN.tree-icon-empty-node {
+SPAN.tree-icon.empty-node {
cursor: default;
- background-position: -64px 0px !important;
+ background-position: -32px 0px;
}
SPAN.tree-expanded {
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/75eaf6a5/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/Stuff.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/Stuff.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/Stuff.java
index 23d7cec..05ded5a 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/Stuff.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/Stuff.java
@@ -90,6 +90,10 @@ public class Stuff
}
ROOT.addChild(numbers);
+
+ ROOT.addChild(new Stuff("Empty"));
+ // Special case: appears as a folder, even with no children:
+ ROOT.addChild(new Stuff("Empty Folder"));
}
public static TreeModel<Stuff> createTreeModel()
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/75eaf6a5/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/StuffTreeModelAdapter.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/StuffTreeModelAdapter.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/StuffTreeModelAdapter.java
index e5fd893..d97364e 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/StuffTreeModelAdapter.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/StuffTreeModelAdapter.java
@@ -22,6 +22,13 @@ public class StuffTreeModelAdapter implements TreeModelAdapter<Stuff>
{
public boolean isLeaf(Stuff value)
{
+ // Special case:
+
+ if (value.name.equals("Empty Folder"))
+ {
+ return false;
+ }
+
return !hasChildren(value);
}