Thank you very much. This helped a lot. The problem was that I was using Tree.NODE_IMAGE_NAME
for both getNodeImage and getJunctionImage.

And, yes I understand this is not too efficient and a better approach would be to use packaged resources, but
I had to punt on efficiency for the sake of the feature I am working on.

Cheers, Ivan.

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

        /**



-------------------------------------------------------
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

Reply via email to