r1538 - trunk/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation
Author: sletellier Date: 2009-09-30 14:20:05 +0200 (Wed, 30 Sep 2009) New Revision: 1538 Modified: trunk/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeCellRenderer.java Log: Hack for remove ... of node's label 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-09-29 14:39:02 UTC (rev 1537) +++ trunk/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeCellRenderer.java 2009-09-30 12:20:05 UTC (rev 1538) @@ -13,6 +13,7 @@ import javax.swing.tree.TreeCellRenderer; import javax.swing.tree.TreePath; import java.awt.Component; +import java.awt.Dimension; /** * A simple cell renderer which use the {@link NavigationTreeNode#renderer} to display node. @@ -30,6 +31,8 @@ protected static long t = 0; + protected Integer minWidth = null; + public NavigationTreeCellRenderer(JAXXContext context) { this.context = context; UIManager.put("Tree.rendererFillBackground", false); @@ -43,25 +46,35 @@ @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) { - return delegate; - } + if (path != null) { - if (value != null) { - long t0 = System.nanoTime(); - NodeRenderer renderer = getNodeRenderer(value); - long t1 = System.nanoTime(); - if (renderer != null) { - value = renderer.toString(context); - long t2 = System.nanoTime(); - if (log.isDebugEnabled()) { - log.debug("use renderer [" + (t++) + "]<" + row + ">" + renderer.decorator + " <" + StringUtil.convertTime(t0, t1) + "/" + StringUtil.convertTime(t1, t2) + ">"); + if (value != null) { + long t0 = System.nanoTime(); + NodeRenderer renderer = getNodeRenderer(value); + long t1 = System.nanoTime(); + if (renderer != null) { + value = renderer.toString(context); + long t2 = System.nanoTime(); + if (log.isDebugEnabled()) { + log.debug("use renderer [" + (t++) + "]<" + row + ">" + renderer.decorator + " <" + StringUtil.convertTime(t0, t1) + "/" + StringUtil.convertTime(t1, t2) + ">"); + } } } + result = delegate.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); } - return delegate.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); + if (minWidth != null){ + if (delegate.getPreferredSize().getWidth() < minWidth) { + log.info(minWidth); + delegate.setPreferredSize(new Dimension(minWidth, (int) delegate + .getPreferredSize().getHeight())); + } + } + + return result; } /** @@ -90,4 +103,20 @@ return value instanceof NavigationTreeNode ? (NavigationTreeNode) value : null; } + /** + * @return max width to decorate nodes + */ + public Integer getMinWidth() { + return minWidth; + } + + /** + * 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 + */ + public void setMinWidth(Integer minWidth) { + this.minWidth = minWidth; + } }
participants (1)
-
sletellier@users.nuiton.org