1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 | package Torello.HTML;
import java.util.Comparator;
/**
* Represents document text, and is one of only three HTML Element Classes provided by the Java
* HTML Library Tool, and also oneof the three classes that can be generated by the HTML Parser.
*
* <EMBED CLASS='external-html' DATA-FILE-ID=TEXT_NODE>
*
* <EMBED CLASS='external-html' DATA-FILE-ID=HTML_NODE_SUB_IMG>
*
* @see HTMLNode
* @see TagNode
* @see CommentNode
*/
@Torello.JavaDoc.JDHeaderBackgroundImg(EmbedTagFileID="HTML_NODE_SUBCLASS")
public final class TextNode
extends HTMLNode
implements CharSequence, java.io.Serializable, Cloneable, Comparable<TextNode>
{
/** <EMBED CLASS='external-html' DATA-FILE-ID=SVUID> */
public static final long serialVersionUID = 1;
/**
* Constructs a new {@code TextNode} with internal field {@code String str} equal to parameter
* {@code 's'}
*
* @param s Any valid Java {@code String} may be passed here.
*/
public TextNode(String s) { super(s); }
/**
* This method identifies that {@code 'this'} instance of (abstract parent-class)
* {@link HTMLNode} is, indeed, an instance of sub-class {@code TextNode}.
*
* <BR /><BR /><B CLASS=JDDescLabel>Final Method:</B>
*
* <BR />This method is final, and cannot be modified by sub-classes.
*
* @return This method shall always return {@code TRUE} It overrides the parent-class
* {@code HTMLNode} method {@link #isTextNode()}, which always returns {@code FALSE}.
*/
@Override
public final boolean isTextNode() { return true; }
/**
* This method identifies that {@code 'this'} instance of (abstract parent-class)
* {@link HTMLNode} is, indeed, an instance of sub-class {@code TextNode}.
*
* <BR /><BR /><B CLASS=JDDescLabel>Final Method:</B>
*
* <BR />This method is final, and cannot be modified by sub-classes.
*
* @return {@code 'this'} reference. This method can be used inside loops for improving
* the readability of loop-condition expressions. See example below:
*
* <DIV CLASS=EXAMPLE>{@code
* TextNode t;
*
* for (HTMLNode n : myHTMLVector)
* if ((t = n.ifTextNode()) != null)
* System.out.println("Text-Node Contains: " + t.str);
* }</div>
*
* <BR /><BR />This method-version overrides the parent-class-version, which always returns
* null. This method is <I>not overriden by other {@code HTMLNode} sub-classes.</I>
*/
@Override
public final TextNode ifTextNode() { return this; }
/**
* Java's {@code interface Cloneable} requirements. This instantiates a new {@code TextNode}
* with identical {@code String str} fields.
*
* @return A new {@code TextNode} whose internal fields are identical to this one.
*/
public TextNode clone() { return new TextNode(str); }
/**
* Java's {@code interface Comparable<T>} requirements. This does a very simple comparison
* using the underlying field {@code final String str} that all Text's contain.
*
* @param tn Any other {@code TextNode} to be compared to {@code 'this' TextNode}
*
* @return An integer that fulfils Java's {@code interface Comparable<T> public boolean
* compareTo(T t)} method requirements.
*/
public int compareTo(TextNode tn)
{ return this.str.compareTo(tn.str); }
/**
* This is an "alternative Comparitor" that can be used for sorting instances of this class.
* It should work with the {@code Collections.sort(List, Comparator)} method in the standard
* JDK package {@code java.util.*;}
*
* <BR /><BR /><B>NOTE:</B> This version utilizes the standard JDK
* {@code String.compareToIgnoreCase(String)} method.
*
* @see HTMLNode#str
*/
public static final Comparator<TextNode> comp2 =
(TextNode txn1, TextNode txn2) -> txn1.str.compareToIgnoreCase(txn2.str);
}
|