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;
        }
 
        /**

Reply via email to