1 19 package org.netbeans.bluej.ui.window; 20 21 import java.awt.Component ; 22 import java.awt.Container ; 23 import java.awt.Image ; 24 import java.beans.BeanInfo ; 25 import javax.swing.Icon ; 26 import javax.swing.ImageIcon ; 27 import javax.swing.JList ; 28 import org.openide.awt.HtmlRenderer; 29 import org.openide.explorer.view.NodeRenderer; 30 import org.openide.explorer.view.Visualizer; 31 import org.openide.nodes.Node; 32 33 37 public class HackedNodeRenderer extends NodeRenderer { 38 39 private HtmlRenderer.Renderer renderer = HtmlRenderer.createRenderer(); 40 41 42 public HackedNodeRenderer() { 43 } 44 45 48 public Component getListCellRendererComponent( 49 JList list, Object value, int index, boolean sel, boolean cellHasFocus 50 ) { 51 Node vis = findVisualizerNode(value); 52 53 String text = vis.getHtmlDisplayName(); 54 boolean isHtml = text != null; 55 56 if (!isHtml) { 57 text = vis.getDisplayName(); 58 } 59 60 Component result = renderer.getListCellRendererComponent( 63 list, text, index, sel, cellHasFocus 64 ); 65 renderer.setHtml(isHtml); 66 result.setEnabled(list.isEnabled()); 67 68 configureFrom(renderer, list, false, sel, vis); 71 81 return result; 82 } 83 84 89 private int configureFrom( 90 HtmlRenderer.Renderer ren, Container target, boolean useOpenedIcon, boolean sel, Node vis 91 ) { int iconType = BeanInfo.ICON_COLOR_16x16; 94 Image image = useOpenedIcon ? vis.getOpenedIcon(iconType) : vis.getIcon(iconType); 95 Icon icon = new ImageIcon (image); 96 if (icon.getIconWidth() == 55) { 97 ren.setIconTextGap(4); 98 } else if (icon.getIconWidth() > 0) { 99 ren.setIconTextGap(55 - icon.getIconWidth() + 4); 103 } else { 104 ren.setIndent(55 + 4); 109 } 110 111 ren.setIcon(icon); 112 113 return (icon.getIconWidth() == 0) ? 55 : icon.getIconWidth(); 114 } 115 116 118 private static final Node findVisualizerNode(Object value) { 119 return Visualizer.findNode(value); 120 } 121 122 } 123 | Popular Tags |