Now with patch.
On 10/25/05, Eelco Hillenius <[EMAIL PROTECTED]> wrote:
> 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
> > [email protected]
> > 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;
}
/**