Author: tchemit Date: 2009-10-03 20:17:23 +0200 (Sat, 03 Oct 2009) New Revision: 1547 Modified: trunk/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeCellRenderer.java Log: improve api + add javadoc Modified: trunk/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeCellRenderer.java =================================================================== --- trunk/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeCellRenderer.java 2009-10-03 08:45:25 UTC (rev 1546) +++ trunk/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeCellRenderer.java 2009-10-03 18:17:23 UTC (rev 1547) @@ -16,38 +16,55 @@ import java.awt.Dimension; /** - * A simple cell renderer which use the {@link NavigationTreeNode#renderer} to display node. + * A simple cell renderer which use the {@link NavigationTreeNode#renderer} + * to display node. * * @author chemit */ public class NavigationTreeCellRenderer implements TreeCellRenderer { - /** to use log facility, just put in your code: log.info(\"...\"); */ + /** + * Logger + */ static private final Log log = LogFactory.getLog(NavigationTreeCellRenderer.class); - + /** + * underlying context where to seek datas + */ protected JAXXContext context; - + /** + * delegate renderer which really render the node + */ protected DefaultTreeCellRenderer delegate; - protected static long t = 0; - + /** + * If set, will check to have a this minimum width on render component + * to fix some display issues of nodes (too much cache in TreeUI). + */ protected Integer minWidth = null; public NavigationTreeCellRenderer(JAXXContext context) { - this.context = context; - UIManager.put("Tree.rendererFillBackground", false); - delegate = new DefaultTreeCellRenderer(); + this(context, null, null); } + public NavigationTreeCellRenderer(JAXXContext context, Integer minWidth) { + this(context, null, minWidth); + } + public NavigationTreeCellRenderer(JAXXContext context, DefaultTreeCellRenderer delegate) { + this(context, delegate, null); + } + + public NavigationTreeCellRenderer(JAXXContext context, DefaultTreeCellRenderer delegate, Integer minWidth) { this.context = context; - this.delegate = delegate; + this.delegate = delegate == null ? new DefaultTreeCellRenderer() : delegate; + this.minWidth = minWidth; + UIManager.put("Tree.rendererFillBackground", false); } @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { Component result = delegate; - + TreePath path = tree.getPathForRow(row); if (path != null) { @@ -66,10 +83,9 @@ result = delegate.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); } - if (minWidth != null){ + if (minWidth != null) { if (delegate.getPreferredSize().getWidth() < minWidth) { - delegate.setPreferredSize(new Dimension(minWidth, (int) delegate - .getPreferredSize().getHeight())); + delegate.setPreferredSize(new Dimension(minWidth, (int) delegate.getPreferredSize().getHeight())); } } @@ -113,7 +129,7 @@ * This hack remove the ... from the node. For not use this, MinWidth can be null (by default). * bugfix from http://forums.sun.com/thread.jspa?forumID=256&threadID=277338 * hack from : http://forums.sun.com/thread.jspa?threadID=542069&tstart=824 - * @param min width to decorate nodes + * @param minWidth minimum width to decorate nodes */ public void setMinWidth(Integer minWidth) { this.minWidth = minWidth;
participants (1)
-
tchemit@users.nuiton.org