home *** CD-ROM | disk | FTP | other *** search
- package netscape.application;
-
- import netscape.util.Hashtable;
- import netscape.util.Vector;
-
- public abstract class TextViewHTMLContainer extends TextViewHTMLElement {
- String marker;
- String attributes;
- Object[] children = new Object[0];
- String prefix;
- String suffix;
- int[] lengths;
-
- public String prefix(Hashtable var1, char var2) {
- return "";
- }
-
- public String suffix(Hashtable var1, char var2) {
- return "";
- }
-
- public void setupContext(Hashtable var1) {
- }
-
- public void cleanupContext(Hashtable var1) {
- }
-
- public Hashtable attributesForPrefix(Hashtable var1, Hashtable var2, TextView var3) {
- return var2;
- }
-
- public Hashtable attributesForContents(Hashtable var1, Hashtable var2, TextView var3) {
- return var2;
- }
-
- public Hashtable attributesForSuffix(Hashtable var1, Hashtable var2, TextView var3) {
- return var2;
- }
-
- public String string(Hashtable var1) {
- FastStringBuffer var2 = new FastStringBuffer();
- int var5 = 0;
- if (this.children.length > 0) {
- this.lengths = new int[this.children.length];
- }
-
- int var3 = 0;
-
- for(int var4 = this.children.length; var3 < var4; ++var3) {
- ((TextViewHTMLElement)this.children[var3]).appendString(var1, var2);
- if (var3 == 0) {
- this.lengths[var3] = var2.length();
- var5 = this.lengths[var3];
- } else {
- this.lengths[var3] = var2.length() - var5;
- var5 += this.lengths[var3];
- }
- }
-
- return var2.toString();
- }
-
- public Object[] children() {
- return this.children;
- }
-
- public Vector childrenVector() {
- Vector var1 = new Vector();
-
- for(int var2 = 0; var2 < this.children.length; ++var2) {
- var1.addElement(this.children[var2]);
- }
-
- return var1;
- }
-
- public String marker() {
- return this.marker;
- }
-
- public Hashtable attributes() {
- return ((TextViewHTMLElement)this).hashtableForHTMLAttributes(this.attributes);
- }
-
- public void setMarker(String var1) {
- this.marker = var1;
- }
-
- public void setAttributes(String var1) {
- this.attributes = var1;
- }
-
- public void setChildren(Object[] var1) {
- if (var1 == null) {
- this.children = new Object[0];
- } else {
- this.children = var1;
- }
- }
-
- void appendString(Hashtable var1, FastStringBuffer var2) {
- char var3 = 0;
- if (var2.length() > 0) {
- var3 = var2.charAt(var2.length() - 1);
- }
-
- this.prefix = this.prefix(var1, var3);
- if (this.prefix != null && this.prefix.length() > 0) {
- var2.append(this.prefix);
- }
-
- if (this.children != null) {
- this.setupContext(var1);
- var2.append(this.string(var1));
- this.cleanupContext(var1);
- }
-
- if (var2.length() > 0) {
- var3 = var2.charAt(var2.length() - 1);
- }
-
- this.suffix = this.suffix(var1, var3);
- if (this.suffix != null && this.suffix.length() > 0) {
- var2.append(this.suffix);
- }
-
- }
-
- void setAttributesStartingAt(int var1, Hashtable var2, TextView var3, Hashtable var4) {
- int var7 = 0;
- Object var8 = null;
- if (this.prefix != null && this.prefix.length() > 0) {
- Hashtable var10 = this.attributesForPrefix(var4, var2, var3);
- if (var10 != var2) {
- var3.addAttributesForRange(var10, new Range(var1, this.prefix.length()));
- }
-
- var7 += this.prefix.length();
- }
-
- if (this.appliesAttributesToChildren()) {
- if (this.children != null && this.children.length > 0 && this.lengths != null) {
- Hashtable var12 = this.attributesForContents(var4, var2, var3);
- this.setupContext(var4);
- int var5 = 0;
-
- for(int var6 = this.children.length; var5 < var6; ++var5) {
- ((TextViewHTMLElement)this.children[var5]).setAttributesStartingAt(var1 + var7, var12, var3, var4);
- if (this.lengths != null) {
- var7 += this.lengths[var5];
- } else {
- var7 += ((TextViewHTMLElement)this.children[var5]).string(var4).length();
- }
- }
-
- this.cleanupContext(var4);
- } else {
- Range var9 = TextView.allocateRange(var1 + var7, 0);
- Hashtable var11 = this.attributesForContents(var4, var2, var3);
- var3.addAttributesForRange(var11, var9);
- TextView.recycleRange(var9);
- }
- } else {
- Hashtable var13 = this.attributesForContents(var4, var2, var3);
- if (var13 != var2) {
- var3.addAttributesForRange(var13, new Range(var1 + var7, this.string(var4).length()));
- }
- }
-
- if (this.suffix != null && this.suffix.length() > 0) {
- Hashtable var14 = this.attributesForPrefix(var4, var2, var3);
- if (var14 != var2) {
- var3.addAttributesForRange(var14, new Range(var1 + var7, this.suffix.length()));
- }
-
- int var10000 = var7 + this.suffix.length();
- }
-
- }
-
- public boolean appliesAttributesToChildren() {
- return true;
- }
-
- public void setString(String var1) {
- }
-
- public String toString() {
- StringBuffer var1 = new StringBuffer();
- var1.append(this.marker + this.attributes);
-
- for(int var2 = 0; var2 < this.children.length; ++var2) {
- var1.append(this.children[var2].toString());
- }
-
- return var1.toString();
- }
- }
-