1 19 20 package org.netbeans.modules.junit.output; 21 22 import java.awt.Component ; 23 import java.awt.EventQueue ; 24 import javax.accessibility.AccessibleContext ; 25 import javax.swing.JTree ; 26 import javax.swing.tree.TreeCellRenderer ; 27 import javax.swing.tree.TreeNode ; 28 import org.openide.awt.HtmlRenderer; 29 import org.openide.explorer.view.BeanTreeView; 30 import org.openide.nodes.Node; 31 import org.openide.util.NbBundle; 32 33 34 38 final class ResultTreeView extends BeanTreeView implements Runnable { 39 40 41 private final TreeCellRenderer defaultTreeCellRenderer; 42 43 private final TreeCellRenderer noIconTreeCellRenderer; 44 45 46 ResultTreeView() { 47 super(); 48 defaultTreeCellRenderer = tree.getCellRenderer(); 49 noIconTreeCellRenderer = createNoIconTreeCellRenderer(); 50 tree.setCellRenderer(new DelegatingTreeCellRenderer()); 51 52 initAccessibility(); 53 } 54 55 57 private void initAccessibility() { 58 AccessibleContext accessibleContext = tree.getAccessibleContext(); 59 accessibleContext.setAccessibleName( 60 NbBundle.getMessage(getClass(), "ACSN_ResultPanelTree")); accessibleContext.setAccessibleDescription( 62 NbBundle.getMessage(getClass(), "ACSD_ResultPanelTree")); } 64 65 68 private final class DelegatingTreeCellRenderer implements TreeCellRenderer { 69 70 public Component getTreeCellRendererComponent(JTree tree, 71 Object value, 72 boolean selected, 73 boolean expanded, 74 boolean leaf, 75 int row, 76 boolean hasFocus) { 77 boolean isResultRootNode = 78 (value instanceof TreeNode ) 79 && (((TreeNode ) value).getParent() == null); 80 TreeCellRenderer renderer = isResultRootNode 81 ? noIconTreeCellRenderer 82 : defaultTreeCellRenderer; 83 return renderer.getTreeCellRendererComponent( 84 tree, value, selected, expanded, leaf, row, hasFocus); 85 } 86 87 } 88 89 91 private TreeCellRenderer createNoIconTreeCellRenderer() { 92 HtmlRenderer.Renderer renderer = HtmlRenderer.createRenderer(); 93 renderer.setHtml(false); 94 renderer.setIcon(null); 95 renderer.setIconTextGap(0); 96 renderer.setIndent(2); 97 return renderer; 98 } 99 100 102 void expandReportNode(TestsuiteNode node) { 103 final boolean wasScrollsOnExpand = tree.getScrollsOnExpand(); 104 105 tree.setScrollsOnExpand(false); 106 try { 107 expandNode(node); 108 } finally { 109 if (wasScrollsOnExpand) { 110 111 115 EventQueue.invokeLater(this); 116 } 117 } 118 } 119 120 122 public void run() { 123 tree.setScrollsOnExpand(true); 124 } 125 126 } 127 | Popular Tags |