home *** CD-ROM | disk | FTP | other *** search
- package netscape.application;
-
- import netscape.util.Enumeration;
- import netscape.util.Hashtable;
- import netscape.util.Vector;
-
- public class TextViewHTMLContainerImp extends TextViewHTMLContainer {
- static String[] markersStartingWithDoubleCarriageReturn = new String[]{"H1", "H2", "H3", "H4", "H5", "H6", "BLOCKQUOTE", "DL"};
- static String[] markersEndingWithDoubleCarriageReturn = new String[]{"H1", "H2", "H3", "H4", "H5", "H6", "BLOCKQUOTE", "DL"};
- static String[] markersStartingWithCarriageReturn = new String[]{"CENTER", "PRE", "OL", "UL", "MENU", "DIR", "ADDRESS", "P"};
- static String[] markersEndingWithCarriageReturn = new String[]{"CENTER", "PRE", "ADDRESS", "LI", "P"};
- static String[] markersStartingWithCarriageReturnOptionaly = new String[]{"DT", "DD"};
- static final String LIST_CONTEXT = "listctxt";
-
- private String currentListMarker(Hashtable var1) {
- Vector var2 = (Vector)var1.get("listctxt");
- if (var2 == null) {
- return null;
- } else {
- Vector var3 = (Vector)var2.lastElement();
- return var3 != null && var3.count() == 2 ? (String)var3.elementAt(0) : null;
- }
- }
-
- private int levelOfCurrentListMarker(Hashtable var1) {
- Vector var2 = (Vector)var1.get("listctxt");
- return var2 == null ? 1 : var2.count();
- }
-
- private void addListInContext(String var1, Hashtable var2) {
- Vector var3 = (Vector)var2.get("listctxt");
- Vector var4 = new Vector();
- var4.addElement(var1);
- var4.addElement("0");
- if (var3 != null) {
- var3.addElement(var4);
- } else {
- var3 = new Vector();
- var3.addElement(var4);
- var2.put("listctxt", var3);
- }
- }
-
- private void removeLastListFromContext(Hashtable var1) {
- Vector var2 = (Vector)var1.get("listctxt");
- if (var2 != null && (Vector)var2.lastElement() != null) {
- var2.removeLastElement();
- }
-
- }
-
- private void bumpNumberOfListItemProcessed(Hashtable var1) {
- Vector var2 = (Vector)var1.get("listctxt");
- Vector var3;
- if (var2 != null && (var3 = (Vector)var2.lastElement()) != null) {
- String var4 = (String)var3.elementAt(1);
- var4 = "" + (Integer.parseInt((String)var3.elementAt(1)) + 1);
- var3.removeLastElement();
- var3.addElement(var4);
- }
-
- }
-
- private int numberOfListItemProcessed(Hashtable var1) {
- Vector var2 = (Vector)var1.get("listctxt");
- Vector var3;
- return var2 != null && (var3 = (Vector)var2.lastElement()) != null ? Integer.parseInt((String)var3.elementAt(1)) : 0;
- }
-
- public String prefix(Hashtable var1, char var2) {
- if (super.marker.equals("LI")) {
- String var5 = this.currentListMarker(var1);
- if (var5 == null) {
- return null;
- } else {
- FastStringBuffer var7 = new FastStringBuffer();
- int var6 = this.levelOfCurrentListMarker(var1);
-
- for(int var10 = 0; var10 < var6; ++var10) {
- var7.append("\t");
- }
-
- return var5.equals("OL") ? var7.toString() + (this.numberOfListItemProcessed(var1) + 1) + ". " : var7.toString() + "┬╖ ";
- }
- } else {
- int var3 = 0;
-
- for(int var4 = markersStartingWithDoubleCarriageReturn.length; var3 < var4; ++var3) {
- if (markersStartingWithDoubleCarriageReturn[var3].equals(super.marker)) {
- if (var2 != '\n') {
- return "\n\n";
- }
-
- return "\n";
- }
- }
-
- var3 = 0;
-
- for(int var11 = markersStartingWithCarriageReturn.length; var3 < var11; ++var3) {
- if (markersStartingWithCarriageReturn[var3].equals(super.marker)) {
- return "\n";
- }
- }
-
- if (var2 != '\n') {
- var3 = 0;
-
- for(int var12 = markersStartingWithCarriageReturnOptionaly.length; var3 < var12; ++var3) {
- if (markersStartingWithCarriageReturnOptionaly[var3].equals(super.marker)) {
- return "\n";
- }
- }
- }
-
- return "";
- }
- }
-
- public String suffix(Hashtable var1, char var2) {
- int var3 = 0;
-
- for(int var4 = markersEndingWithDoubleCarriageReturn.length; var3 < var4; ++var3) {
- if (markersEndingWithDoubleCarriageReturn[var3].equals(super.marker)) {
- if (var2 != '\n') {
- return "\n\n";
- }
-
- return "\n";
- }
- }
-
- var3 = 0;
-
- for(int var6 = markersEndingWithCarriageReturn.length; var3 < var6; ++var3) {
- if (markersEndingWithCarriageReturn[var3].equals(super.marker)) {
- return "\n";
- }
- }
-
- return "";
- }
-
- public void setupContext(Hashtable var1) {
- if (!super.marker.equals("OL") && !super.marker.equals("UL") && !super.marker.equals("DIR") && !super.marker.equals("MENU")) {
- if (super.marker.equals("LI") && this.currentListMarker(var1) != null) {
- this.bumpNumberOfListItemProcessed(var1);
- }
-
- } else {
- this.addListInContext(super.marker, var1);
- }
- }
-
- public void cleanupContext(Hashtable var1) {
- if (super.marker.equals("OL") || super.marker.equals("UL") || super.marker.equals("DIR") || super.marker.equals("MENU")) {
- this.removeLastListFromContext(var1);
- }
-
- }
-
- public String string(Hashtable var1) {
- return super.marker.equals("TITLE") ? "" : super.string(var1);
- }
-
- public Hashtable attributesForContents(Hashtable var1, Hashtable var2, TextView var3) {
- Font var5 = Font.defaultFont();
- Hashtable var4;
- if (var2 != null && var2.count() > 0) {
- var4 = (Hashtable)TextView.hashtablePool.allocateObject();
- Enumeration var6 = var2.keys();
-
- while(var6.hasMoreElements()) {
- Object var7 = var6.nextElement();
- var4.put(var7, var2.get(var7));
- }
- } else {
- var4 = (Hashtable)TextView.hashtablePool.allocateObject();
- }
-
- if (super.marker.equals("H1")) {
- var4.put("FontKey", Font.fontNamed(var5.name(), 1, 24));
- } else if (super.marker.equals("H2")) {
- var4.put("FontKey", Font.fontNamed(var5.name(), 1, 18));
- } else if (super.marker.equals("H3")) {
- var4.put("FontKey", Font.fontNamed(var5.name(), 1, 16));
- } else if (super.marker.equals("H4")) {
- var4.put("FontKey", Font.fontNamed(var5.name(), 1, 12));
- } else if (super.marker.equals("H5")) {
- var4.put("FontKey", Font.fontNamed(var5.name(), 1, 10));
- } else if (super.marker.equals("H6")) {
- var4.put("FontKey", Font.fontNamed(var5.name(), 1, 8));
- } else if (!super.marker.equals("B") && !super.marker.equals("STRONG")) {
- if (super.marker.equals("CENTER")) {
- TextParagraphFormat var10 = (TextParagraphFormat)var4.get("ParagraphFormatKey");
- TextParagraphFormat var18;
- if (var10 != null) {
- var18 = (TextParagraphFormat)var10.clone();
- } else {
- var18 = (TextParagraphFormat)((TextParagraphFormat)var2.get("ParagraphFormatKey")).clone();
- }
-
- var18.setJustification(1);
- var4.put("ParagraphFormatKey", var18);
- } else if (!super.marker.equals("BLOCKQUOTE") && !super.marker.equals("DD")) {
- if (!super.marker.equals("EM") && !super.marker.equals("I") && !super.marker.equals("ADDRESS") && !super.marker.equals("VAR") && !super.marker.equals("CITE")) {
- if (super.marker.equals("PRE")) {
- Font var13 = (Font)var4.get("FontKey");
- TextParagraphFormat var20 = (TextParagraphFormat)((TextParagraphFormat)var2.get("ParagraphFormatKey")).clone();
- if (var13 == null) {
- var13 = Font.defaultFont();
- }
-
- var4.put("FontKey", Font.fontNamed("Courier", var13.style(), var13.size()));
- var4.put("ParagraphFormatKey", var20);
- } else if (!super.marker.equals("TT") && !super.marker.equals("CODE") && !super.marker.equals("SAMP") && !super.marker.equals("KBD")) {
- if (super.marker.equals("A")) {
- Hashtable var15 = ((TextViewHTMLElement)this).hashtableForHTMLAttributes(super.attributes);
- if (var15 != null) {
- String var21;
- if ((var21 = (String)var15.get("HREF")) != null) {
- var4.put("LinkKey", var21);
- }
-
- String var8;
- if ((var8 = (String)var15.get("NAME")) != null) {
- var4.put("LinkDestinationKey", var8);
- }
- }
- } else if (super.marker.equals("LI")) {
- TextParagraphFormat var16 = (TextParagraphFormat)var4.get("ParagraphFormatKey");
- if (var16 == null) {
- var16 = (TextParagraphFormat)((TextParagraphFormat)var2.get("ParagraphFormatKey")).clone();
- }
-
- var16.setWrapsUnderFirstCharacter(true);
- var4.put("ParagraphFormatKey", var16);
- } else if (super.marker.equals("P")) {
- Hashtable var17 = ((TextViewHTMLElement)this).hashtableForHTMLAttributes(super.attributes);
- String var22;
- if ((var22 = (String)var17.get("ALIGN")) != null) {
- TextParagraphFormat var24 = (TextParagraphFormat)var2.get("ParagraphFormatKey");
- var24 = (TextParagraphFormat)var24.clone();
- var22 = var22.toUpperCase();
- if (var22.equals("LEFT")) {
- var24.setJustification(0);
- } else if (var22.equals("CENTER")) {
- var24.setJustification(1);
- } else if (var22.equals("RIGHT")) {
- var24.setJustification(2);
- }
-
- var4.put("ParagraphFormatKey", var24);
- }
- }
- } else {
- Font var14 = (Font)var4.get("FontKey");
- if (var14 == null) {
- var14 = Font.defaultFont();
- }
-
- var4.put("FontKey", Font.fontNamed("Courier", var14.style(), var14.size()));
- }
- } else {
- Font var12 = (Font)var4.get("FontKey");
- if (var12 != null) {
- if (!var12.isItalic()) {
- var4.put("FontKey", Font.fontNamed(var12.name(), var12.style() | 2, var12.size()));
- }
- } else {
- var4.put("FontKey", Font.fontNamed(var5.name(), 2, var5.size()));
- }
- }
- } else {
- TextParagraphFormat var11 = (TextParagraphFormat)var4.get("ParagraphFormatKey");
- TextParagraphFormat var19;
- if (var11 != null) {
- var19 = (TextParagraphFormat)var11.clone();
- } else {
- var19 = (TextParagraphFormat)((TextParagraphFormat)var2.get("ParagraphFormatKey")).clone();
- }
-
- var19.setLeftMargin(50);
- var4.put("ParagraphFormatKey", var19);
- }
- } else {
- Font var9 = (Font)var4.get("FontKey");
- if (var9 != null) {
- if (!var9.isBold()) {
- var4.put("FontKey", Font.fontNamed(var9.name(), var9.style() | 1, var9.size()));
- }
- } else {
- var4.put("FontKey", Font.fontNamed(var5.name(), 1, var5.size()));
- }
- }
-
- return var4;
- }
- }
-