You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2017/03/23 13:34:10 UTC
svn commit: r1788239 - in /myfaces/tobago/trunk:
tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/
tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/
tobago-core/src/main/resources/scss/ tobago-example/tob...
Author: lofwyr
Date: Thu Mar 23 13:34:10 2017
New Revision: 1788239
URL: http://svn.apache.org/viewvc?rev=1788239&view=rev
Log:
TOBAGO-1726: Tree icons from <tc:treeIndent> are not toggled correctly.
* implementing the toggle for icons (font awesome)
Added:
myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/image/feather-closed.png
- copied unchanged from r1788181, myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/image/feather.png
Removed:
myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/image/feather.png
Modified:
myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TreeIconRenderer.java
myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TreeIndentRenderer.java
myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/FontAwesomeIconEncoder.java
myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/IconEncoder.java
myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java
myfaces/tobago/trunk/tobago-core/src/main/resources/scss/_tobago.scss
myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/tree.xhtml
myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago-tree.js
Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TreeIconRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TreeIconRenderer.java?rev=1788239&r1=1788238&r2=1788239&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TreeIconRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TreeIconRenderer.java Thu Mar 23 13:34:10 2017
@@ -21,13 +21,12 @@ package org.apache.myfaces.tobago.intern
import org.apache.myfaces.tobago.component.UITreeIcon;
import org.apache.myfaces.tobago.component.UITreeNode;
-import org.apache.myfaces.tobago.context.Markup;
import org.apache.myfaces.tobago.internal.component.AbstractUIData;
import org.apache.myfaces.tobago.internal.util.HtmlRendererUtils;
import org.apache.myfaces.tobago.internal.util.StringUtils;
import org.apache.myfaces.tobago.renderkit.RendererBase;
-import org.apache.myfaces.tobago.renderkit.css.Classes;
import org.apache.myfaces.tobago.renderkit.css.FontAwesomeIconEncoder;
+import org.apache.myfaces.tobago.renderkit.css.TobagoClass;
import org.apache.myfaces.tobago.renderkit.html.DataAttributes;
import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
@@ -40,8 +39,20 @@ import java.io.IOException;
public class TreeIconRenderer extends RendererBase {
+ /**
+ * @deprecated since Tobago 3.0.0
+ */
+ @Deprecated
protected static final String OPEN_FOLDER = "image/treeNode-icon-open";
+ /**
+ * @deprecated since Tobago 3.0.0
+ */
+ @Deprecated
protected static final String CLOSED_FOLDER = "image/treeNode-icon";
+ /**
+ * @deprecated since Tobago 3.0.0
+ */
+ @Deprecated
protected static final String LEAF = "image/treeNode-icon-leaf";
@Override
@@ -53,10 +64,18 @@ public class TreeIconRenderer extends Re
final boolean folder = node.isFolder();
final boolean expanded = folder && data.getExpandedState().isExpanded(node.getPath());
- String value = (String) image.getValue();
+ final String value = (String) image.getValue();
String closed = image.getClosed();
String open = image.getOpen();
+ if (closed == null) {
+ closed = value;
+ }
+
+ if (open == null) {
+ open = closed;
+ }
+
final String source;
if (folder) {
if (expanded) {
@@ -70,11 +89,21 @@ public class TreeIconRenderer extends Re
final TobagoResponseWriter writer = getResponseWriter(facesContext);
+ writer.startElement(HtmlElements.SPAN);
+ writer.writeIdAttribute(image.getClientId());
+ writer.writeClassAttribute(TobagoClass.TREE_NODE__TOGGLE);
+
if (StringUtils.startsWith(source, "fa-")) {
- writer.writeIcon(null, image.getStyle(), FontAwesomeIconEncoder.generateClass(source));
+ writer.startElement(HtmlElements.I);
+ writer.writeStyleAttribute(image.getStyle());
+ writer.writeClassAttribute(FontAwesomeIconEncoder.FA, FontAwesomeIconEncoder.generateClass(source));
+ if (folder) {
+ writer.writeAttribute(DataAttributes.SRC_OPEN, open, true);
+ writer.writeAttribute(DataAttributes.SRC_CLOSED, closed, true);
+ }
+ writer.endElement(HtmlElements.I);
} else {
writer.startElement(HtmlElements.IMG);
- writer.writeClassAttribute(Classes.create(node, "toggle", Markup.NULL));
HtmlRendererUtils.writeDataAttributes(facesContext, writer, image);
writer.writeAttribute(HtmlAttributes.SRC, source, true);
if (folder) {
@@ -84,5 +113,7 @@ public class TreeIconRenderer extends Re
writer.writeAttribute(HtmlAttributes.ALT, "", false);
writer.endElement(HtmlElements.IMG);
}
+
+ writer.endElement(HtmlElements.SPAN);
}
}
Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TreeIndentRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TreeIndentRenderer.java?rev=1788239&r1=1788238&r2=1788239&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TreeIndentRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TreeIndentRenderer.java Thu Mar 23 13:34:10 2017
@@ -21,14 +21,15 @@ package org.apache.myfaces.tobago.intern
import org.apache.myfaces.tobago.component.UITree;
import org.apache.myfaces.tobago.component.UITreeIndent;
-import org.apache.myfaces.tobago.context.Markup;
import org.apache.myfaces.tobago.internal.component.AbstractUIData;
import org.apache.myfaces.tobago.internal.component.AbstractUITreeNodeBase;
import org.apache.myfaces.tobago.internal.util.HtmlRendererUtils;
import org.apache.myfaces.tobago.renderkit.RendererBase;
import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
-import org.apache.myfaces.tobago.renderkit.css.Classes;
+import org.apache.myfaces.tobago.renderkit.css.FontAwesomeIconEncoder;
import org.apache.myfaces.tobago.renderkit.css.Icons;
+import org.apache.myfaces.tobago.renderkit.css.TobagoClass;
+import org.apache.myfaces.tobago.renderkit.html.DataAttributes;
import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
import org.apache.myfaces.tobago.util.ComponentUtils;
import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
@@ -63,7 +64,7 @@ public class TreeIndentRenderer extends
writer.startElement(HtmlElements.SPAN);
writer.writeIdAttribute(indent.getClientId(facesContext));
HtmlRendererUtils.writeDataAttributes(facesContext, writer, indent);
- writer.writeClassAttribute(Classes.create(node, "toggle", Markup.NULL));
+ writer.writeClassAttribute(TobagoClass.TREE_NODE__TOGGLE);
// encode indent
final boolean dropFirst = !showRoot || !showRootJunction && (showLines || showIcons);
@@ -75,7 +76,16 @@ public class TreeIndentRenderer extends
if (!showIcons || !showRootJunction && level == 0) {
return;
}
- writer.writeIcon(folder ? expanded ? Icons.MINUS_SQUARE_O : Icons.PLUS_SQUARE_O : Icons.SQUARE_O);
+ final Icons icon = folder ? expanded ? Icons.MINUS_SQUARE_O : Icons.PLUS_SQUARE_O : Icons.SQUARE_O;
+ writer.startElement(HtmlElements.I);
+ writer.writeClassAttribute(FontAwesomeIconEncoder.FA, FontAwesomeIconEncoder.generateClass(icon));
+ if (folder) {
+ writer.writeAttribute(
+ DataAttributes.SRC_OPEN, FontAwesomeIconEncoder.generateClass(Icons.MINUS_SQUARE_O).getName(), false);
+ writer.writeAttribute(
+ DataAttributes.SRC_CLOSED, FontAwesomeIconEncoder.generateClass(Icons.PLUS_SQUARE_O).getName(), false);
+ }
+ writer.endElement(HtmlElements.I);
}
@Override
Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/FontAwesomeIconEncoder.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/FontAwesomeIconEncoder.java?rev=1788239&r1=1788238&r2=1788239&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/FontAwesomeIconEncoder.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/FontAwesomeIconEncoder.java Thu Mar 23 13:34:10 2017
@@ -28,22 +28,25 @@ import java.io.IOException;
import java.util.EnumMap;
import java.util.regex.Pattern;
+/**
+ * @deprecated since Tobago 3.1.0. May be subject of change in later versions!
+ */
+@Deprecated
public class FontAwesomeIconEncoder implements IconEncoder {
private static final Logger LOG = LoggerFactory.getLogger(FontAwesomeIconEncoder.class);
- private static final CssItem FA = new FontAwesomeCssItem("fa");
+ public static final CssItem FA = new FontAwesomeCssItem("fa");
private static final Pattern PATTERN = Pattern.compile("^(fa(-[a-z]+)+)$");
- private EnumMap<Icons, CssItem> icons;
+ private static final EnumMap<Icons, CssItem> ICONS;
-
- public FontAwesomeIconEncoder() {
- icons = new EnumMap<Icons, CssItem>(Icons.class);
+ static {
+ ICONS = new EnumMap<Icons, CssItem>(Icons.class);
for (Icons icon : Icons.values()) {
- icons.put(icon, new FontAwesomeCssItem("fa-" + icon.name().toLowerCase().replaceAll("_", "-")));
+ ICONS.put(icon, new FontAwesomeCssItem("fa-" + icon.name().toLowerCase().replaceAll("_", "-")));
}
}
@@ -56,11 +59,11 @@ public class FontAwesomeIconEncoder impl
writer.endElement(HtmlElements.I);
}
- private CssItem generateClass(final Icons icon) {
+ public static CssItem generateClass(final Icons icon) {
if (icon == null) {
return null;
}
- CssItem result = icons.get(icon);
+ CssItem result = ICONS.get(icon);
if (result == null) {
LOG.warn("Missing icon: '" + icon + "'");
}
@@ -73,8 +76,6 @@ public class FontAwesomeIconEncoder impl
@Override
public String getName() {
- // XXX cleanup, should be resolved with the ResourceManager... ? TBD
- // todo: regexp check
if (PATTERN.matcher(name).matches()) {
return name;
} else {
Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/IconEncoder.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/IconEncoder.java?rev=1788239&r1=1788238&r2=1788239&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/IconEncoder.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/IconEncoder.java Thu Mar 23 13:34:10 2017
@@ -23,6 +23,10 @@ import org.apache.myfaces.tobago.webapp.
import java.io.IOException;
+/**
+ * @deprecated since Tobago 3.1.0. May be subject of change in later versions!
+ */
+@Deprecated
public interface IconEncoder {
void encode(TobagoResponseWriter writer, Icons icon, Style style, final CssItem... cssItems) throws IOException;
Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java?rev=1788239&r1=1788238&r2=1788239&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java Thu Mar 23 13:34:10 2017
@@ -89,7 +89,8 @@ public enum TobagoClass implements CssIt
SHEET__CELL__MARKUP__RIGHT("tobago-sheet-cell-markup-right"),
SHEET__CELL__MARKUP__CENTER("tobago-sheet-cell-markup-center"),
SHEET__CELL__MARKUP__JUSTIFY("tobago-sheet-cell-markup-justify"),
- SUGGEST("tobago-suggest");
+ SUGGEST("tobago-suggest"),
+ TREE_NODE__TOGGLE("tobago-treeNode-toggle");
private static final Logger LOG = LoggerFactory.getLogger(TobagoClass.class);
Modified: myfaces/tobago/trunk/tobago-core/src/main/resources/scss/_tobago.scss
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/resources/scss/_tobago.scss?rev=1788239&r1=1788238&r2=1788239&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/resources/scss/_tobago.scss (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/resources/scss/_tobago.scss Thu Mar 23 13:34:10 2017
@@ -32,6 +32,10 @@ Todo: check, if this is needed? (It does
*/
/*
+.tobago-treeNode-toggle // XXX dummy: only occurs in JavaScript, is here to satisfy the Test
+ */
+
+/*
* theme: standard
* agent: standard
*/
Modified: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/tree.xhtml
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/tree.xhtml?rev=1788239&r1=1788238&r2=1788239&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/tree.xhtml (original)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/tree.xhtml Thu Mar 23 13:34:10 2017
@@ -63,17 +63,19 @@
<tc:section label="Icon">
<p>An icon can be added to a node with
- <code class="language-markup"><tc:treeIcon value="image/feather.png"/></code>.
- In this case, the targeted image is 'feather.png'. It is displayed for closed nodes.
- For opened nodes, an image with a '-open'-suffix is used, here it's 'feather-open.png'.
- For the leafs of the tree, an image with a '-leaf'-suffix is used. Therefor 'feather-leaf.png' is the displayed
- image.</p>
+ <code class="language-markup"><tc:treeIcon value="image/feather-leaf.png" closed="image/feather-closed.png" open="image/feather-open.png"/></code>.
+ In this case, the targeted image is 'feather-leaf.png'. It is displayed for leaf nodes.
+ For open or closed folder there are explicit attributes.
+ If these attributes are not used, defaults are used.</p>
<tc:tree value="#{treeController.sample}" var="node">
<tc:treeNode>
<tc:treeIndent/>
- <tc:treeIcon value="#{request.contextPath}/image/feather.png" />
+ <tc:treeIcon value="#{request.contextPath}/image/feather-leaf.png"
+ closed="#{request.contextPath}/image/feather-closed.png"
+ open="#{request.contextPath}/image/feather-open.png" />
<tc:treeIcon value="fa-file-o"
- closed="fa-folder-o" open="fa-folder-open-o" />
+ closed="fa-folder-o"
+ open="fa-folder-open-o" />
<tc:treeLabel value="#{node.userObject.name}" />
</tc:treeNode>
</tc:tree>
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago-tree.js
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago-tree.js?rev=1788239&r1=1788238&r2=1788239&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago-tree.js (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago-tree.js Thu Mar 23 13:34:10 2017
@@ -26,7 +26,13 @@ Tobago.Tree.toggleNode = function($eleme
var rowIndex = Tobago.Tree.rowIndex($node);
if (Tobago.Tree.isExpanded($node, $expanded)) {
Tobago.Tree.hideChildren($node);
- $toggle.each(function() {
+ $toggle.find("i").each(function() {
+ var $t = jQuery(this);
+ var o = $t.data("tobago-src-open");
+ var c = $t.data("tobago-src-closed");
+ $t.removeClass(o).addClass(c);
+ });
+ $toggle.find("img").each(function() {
var $t = jQuery(this);
src = $t.data("tobago-src-closed");
if (src === undefined) { // use the open icon if there is no close icon
@@ -50,7 +56,13 @@ Tobago.Tree.toggleNode = function($eleme
render: $data.attr("id")
});
} else {
- $toggle.each(function() {
+ $toggle.find("i").each(function() {
+ var $t = jQuery(this);
+ var c = $t.data("tobago-src-closed");
+ var o = $t.data("tobago-src-open");
+ $t.removeClass(c).addClass(o);
+ });
+ $toggle.find("img").each(function() {
var $t = jQuery(this);
src = $t.data("tobago-src-open");
if (src === undefined) { // use the close icon if there is no open icon