📄 htmltreecellrenderer.java
字号:
// HTMLParser Library $Name: v1_6_20060319 $ - A java-based parser for HTML// http://sourceforge.org/projects/htmlparser// Copyright (C) 2005 Derrick Oswald//// Revision Control Information//// $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/HtmlTreeCellRenderer.java,v $// $Author: derrickoswald $// $Date: 2005/04/12 11:27:42 $// $Revision: 1.2 $//// This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.//// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA// package org.htmlparser.parserapplications.filterbuilder;import java.awt.Component;import java.util.Vector;import javax.swing.JTree;import javax.swing.tree.DefaultTreeCellRenderer;import javax.swing.tree.TreeCellRenderer;import org.htmlparser.Attribute;import org.htmlparser.Node;import org.htmlparser.lexer.Cursor;import org.htmlparser.nodes.TagNode;import org.htmlparser.nodes.TextNode;import org.htmlparser.util.ParserException;import org.htmlparser.util.Translate;/** * Renderer for tree view of a NodeList. */public class HtmlTreeCellRenderer extends DefaultTreeCellRenderer implements TreeCellRenderer{ /** * Create a new tree cell renderer for Nodes. */ public HtmlTreeCellRenderer () { setLeafIcon (null); setClosedIcon (null); setOpenIcon (null); } /** * Render the tag as HTML. * This is different from the tag's normal toHtml() method in that it * doesn't process children or end tags, just the initial tag, and * it also wraps the tag in html a label would expect. * @see org.htmlparser.Node#toHtml() * @param tag The tag to convert to HTML. * @return A string suitable for rendering the tag. */ public String toHtml (TagNode tag) { int length; int size; Vector attributes; Attribute attribute; String s; boolean children; StringBuffer ret; length = 2; attributes = tag.getAttributesEx (); size = attributes.size (); for (int i = 0; i < size; i++) { attribute = (Attribute)attributes.elementAt (i); length += attribute.getLength (); } ret = new StringBuffer (length); ret.append ("<"); for (int i = 0; i < size; i++) { attribute = (Attribute)attributes.elementAt (i); attribute.toString (ret); } ret.append (">"); s = Translate.encode (ret.toString ()); children = null != tag.getChildren (); ret = new StringBuffer (s.length () + 13 + (children ? 16 : 0)); ret.append ("<html>"); if (children) ret.append ("<font color=\"blue\">"); ret.append (s); if (children) ret.append ("</font>"); ret.append ("</html>"); return (ret.toString ()); } /** * Express this string node as a printable string * This is suitable for display in a debugger or output to a printout. * Control characters are replaced by their equivalent escape * sequence and contents is truncated to 80 characters. * @param node The node to render. * @return A string representation of the string node. */ public String toText (TextNode node) { int startpos; int endpos; String s; char c; StringBuffer ret; startpos = node.getStartPosition (); endpos = node.getEndPosition (); ret = new StringBuffer (endpos - startpos + 20); s = node.toHtml (); for (int i = 0; i < s.length (); i++) { c = s.charAt (i); switch (c) { case '\t': ret.append ("\\t"); break; case '\n': ret.append ("\\n"); break; case '\r': ret.append ("\\r"); break; default: ret.append (c); } if (77 <= ret.length ()) { ret.append ("..."); break; } } return (ret.toString ()); } /** * Render the node for the tree cell. * @see TreeCellRenderer#getTreeCellRendererComponent(JTree, Object, boolean, boolean, boolean, int, boolean) * @param tree {@inheritDoc} * @param value {@inheritDoc} * @param selected {@inheritDoc} * @param expanded {@inheritDoc} * @param leaf {@inheritDoc} * @param row {@inheritDoc} * @param hasFocus {@inheritDoc} * @return {@inheritDoc} */ public Component getTreeCellRendererComponent (JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { Node node; super.getTreeCellRendererComponent (tree, value, selected, expanded, leaf, row, hasFocus); node = (Node)value; if (node instanceof TagNode) setText (toHtml ((TagNode)node)); else if (node instanceof TextNode) setText (toText ((TextNode)node)); else setText (node.toHtml ()); return (this); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -