I have checked it against head, but am not able to reproduce your
error. The atteched path works fine for me. You should consider using
packaged resources btw, drawing lot's of images seperately for the
tree component is inefficient, and as the urls to those images are
dynamic, the browser won't be able to cache them.
Eelco
On 10/25/05, Ibo Vanjer <[EMAIL PROTECTED]> wrote:
I would like to create a dynamic tree node icons.
What I've done is to override get*Image methods from the Tree (code
snipper shown).
Alas, I always end up with the the exception shown bellow.
Can anyone provide any hints on this?
---CODE---
protected Image getNodeImage(DefaultMutableTreeNode node) {
Image temp = = new Image(Tree.NODE_IMAGE_NAME, new
RenderedDynamicImageResource(
100, 100) {
protected boolean render(Graphics2D graphics) {
drawCircle(graphics);
return true;
}
});
return temp;
}
---ERROR---
wicket.markup.MarkupException: Component junctionImage must be applied to a tag of type 'img', not
'<span class="wicket-indent-tree-node" wicket:id="node">' (line 0, column 0)
[markup =
jar:file:/L:/jcode/eclipse/workspace-misc/wicket-examples-1.1-rc2/lib/wicket-1.1-rc2.jar!/wicket/markup/html/tree/Tree.html,
index = 16, current = '<span wicket:id="node"
class="wicket-indent-tree-node">' (line 12, column 4)]
at wicket.markup.MarkupStream.throwMarkupException(MarkupStream.java:277)
at wicket.Component.checkComponentTag(Component.java:1537)
at wicket.markup.html.image.Image.onComponentTag(Image.java:182)
at wicket.Component.renderComponent(Component.java:1863)
at wicket.markup.html.WebComponent.onRender(WebComponent.java:80)
at wicket.Component.render(Component.java:1160)
at wicket.MarkupContainer.renderNext(MarkupContainer.java:1129)
at wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:804)
at wicket.markup.html.link.Link.onComponentTagBody(Link.java:417)
at wicket.Component.renderComponent(Component.java:1886)
at wicket.markup.html.WebMarkupContainer.onRender(WebMarkupContainer.java:77)
at wicket.Component.render(Component.java:1160)
at wicket.MarkupContainer.renderNext(MarkupContainer.java:1129)
at wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:804)
at wicket.MarkupContainer.renderAssociatedMarkup(MarkupContainer.java:473)
at wicket.markup.html.panel.Panel.onRender(Panel.java:95)
at wicket.Component.render(Component.java:1160)
at wicket.MarkupContainer.renderNext(MarkupContainer.java:1129)
at wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:804)
at wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:746)
at wicket.Component.renderComponent(Component.java:1886)
at wicket.markup.html.WebMarkupContainer.onRender(WebMarkupContainer.java:77)
at wicket.Component.render(Component.java:1160)
at wicket.markup.html.list.ListView.renderItem(ListView.java:575)
at wicket.markup.html.list.ListView.onRender(ListView.java:541)
at wicket.Component.render(Component.java:1160)
at wicket.MarkupContainer.renderNext(MarkupContainer.java:1129)
at wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:804)
at wicket.MarkupContainer.renderAssociatedMarkup(MarkupContainer.java:473)
at wicket.markup.html.panel.Panel.onRender(Panel.java:95)
at wicket.Component.render(Component.java:1160)
at
wicket.markup.html.BodyOnLoadContainer.resolve(BodyOnLoadContainer.java:106)
at wicket.MarkupContainer.renderNext(MarkupContainer.java:1152)
at wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:804)
at wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:746)
at wicket.Component.renderComponent(Component.java:1886)
at wicket.markup.html.WebMarkupContainer.onRender(WebMarkupContainer.java:77)
at wicket.Component.render(Component.java:1160)
at wicket.MarkupContainer.autoAdd(MarkupContainer.java:168)
at wicket.markup.html.BodyOnLoadResolver.resolve(BodyOnLoadResolver.java:67)
at wicket.MarkupContainer.renderNext(MarkupContainer.java:1139)
at wicket.MarkupContainer.renderAll(MarkupContainer.java:772)
at wicket.Page.onRender(Page.java:788)
at wicket.Component.render(Component.java:1160)
at wicket.Page.doRender(Page.java:251)
at wicket.protocol.http.WebRequestCycle.redirectTo(WebRequestCycle.java:218)
at wicket.RequestCycle.respond(RequestCycle.java:869)
at wicket.RequestCycle.request(RequestCycle.java:421)
at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:197)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:358)
...
-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.
Get Certified Today * Register for a JBoss Training Course
Free Certification Exam for All Training Attendees Through End of 2005
Visit http://www.jboss.com/services/certification for more information
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user
------------------------------------------------------------------------
Index: jetty-examples.launch
===================================================================
RCS file: jetty-examples.launch
diff -N jetty-examples.launch
--- jetty-examples.launch 9 Oct 2005 23:07:14 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE"
value="org.mortbay.jetty.Server"/>
-<booleanAttribute key="org.eclipse.jdt.debug.ui.INCLUDE_EXTERNAL_JARS"
value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS"
value="src/etc/jetty-config.xml"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR"
value="wicket-examples"/>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
-<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
-</listAttribute>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables"
value="true"/>
-</launchConfiguration>
Index: src/java/wicket/examples/nested/MyTree.java
===================================================================
RCS file:
/cvsroot/wicket/wicket-examples/src/java/wicket/examples/nested/MyTree.java,v
retrieving revision 1.31
diff -u -r1.31 MyTree.java
--- src/java/wicket/examples/nested/MyTree.java 1 Oct 2005 23:12:35 -0000
1.31
+++ src/java/wicket/examples/nested/MyTree.java 25 Oct 2005 16:55:47 -0000
@@ -17,7 +17,10 @@
*/
package wicket.examples.nested;
+import java.awt.BasicStroke;
+import java.awt.Graphics2D;
import java.util.List;
+import java.util.Random;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeModel;
@@ -29,19 +32,23 @@
import wicket.ResourceReference;
import wicket.markup.html.PackageResourceReference;
import wicket.markup.html.image.Image;
+import wicket.markup.html.image.resource.RenderedDynamicImageResource;
import wicket.markup.html.tree.Tree;
/**
* tree implementation.
- *
+ *
* @author Eelco Hillenius
*/
public class MyTree extends Tree
{
- private final ResourceReference folderOpen = new
PackageResourceReference(Application.get(), MyTree.class, "folderopen.gif");
- private final ResourceReference folder = new
PackageResourceReference(Application.get(), MyTree.class, "folder.gif");
- private final ResourceReference nodeImage = new
PackageResourceReference(Application.get(), MyTree.class, "node.gif");
-
+ private final ResourceReference folderOpen = new
PackageResourceReference(Application.get(),
+ MyTree.class, "folderopen.gif");
+ private final ResourceReference folder = new
PackageResourceReference(Application.get(),
+ MyTree.class, "folder.gif");
+ private final ResourceReference nodeImage = new
PackageResourceReference(Application.get(),
+ MyTree.class, "node.gif");
+
/** Log. */
private static Log log = LogFactory.getLog(MyTree.class);
@@ -81,29 +88,31 @@
*/
protected Image getNodeImage(final DefaultMutableTreeNode node)
{
- if (node.isLeaf())
- {
- Image img = new Image(NODE_IMAGE_NAME, nodeImage);
- return img;
- }
- else
+ Image temp = new Image(Tree.NODE_IMAGE_NAME, new
RenderedDynamicImageResource(100, 100)
{
- // we want the image to be dynamic, yet resolve to a
static image.
- return new Image(NODE_IMAGE_NAME)
+ private static final long serialVersionUID = 1L;
+
+ protected boolean render(Graphics2D graphics)
{
- protected ResourceReference
getImageResourceReference()
- {
- if (isExpanded(node))
- {
- return folderOpen;
- }
- else
- {
- return folder;
- }
- }
- };
- }
+ drawCircle(graphics);
+ return true;
+ }
+
+ void drawCircle(Graphics2D graphics)
+ {
+ // Compute random size for circle
+ final Random random = new Random();
+ int dx = Math.abs(10 + random.nextInt(80));
+ int dy = Math.abs(10 + random.nextInt(80));
+ int x = Math.abs(random.nextInt(100 - dx));
+ int y = Math.abs(random.nextInt(100 - dy));
+
+ // Draw circle with thick stroke width
+ graphics.setStroke(new BasicStroke(5));
+ graphics.drawOval(x, y, dx, dy);
+ }
+ });
+ return temp;
}
/**