home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 139 / dpcs0999.iso / Web / CFserver / data1.cab / Java / CFJava.cab / CFJavaRuntime.cab / netscape / application / TextViewHTMLContainerImp.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-10-01  |  7.3 KB  |  300 lines

  1. package netscape.application;
  2.  
  3. import netscape.util.Enumeration;
  4. import netscape.util.Hashtable;
  5. import netscape.util.Vector;
  6.  
  7. public class TextViewHTMLContainerImp extends TextViewHTMLContainer {
  8.    static String[] markersStartingWithDoubleCarriageReturn = new String[]{"H1", "H2", "H3", "H4", "H5", "H6", "BLOCKQUOTE", "DL"};
  9.    static String[] markersEndingWithDoubleCarriageReturn = new String[]{"H1", "H2", "H3", "H4", "H5", "H6", "BLOCKQUOTE", "DL"};
  10.    static String[] markersStartingWithCarriageReturn = new String[]{"CENTER", "PRE", "OL", "UL", "MENU", "DIR", "ADDRESS", "P"};
  11.    static String[] markersEndingWithCarriageReturn = new String[]{"CENTER", "PRE", "ADDRESS", "LI", "P"};
  12.    static String[] markersStartingWithCarriageReturnOptionaly = new String[]{"DT", "DD"};
  13.    static final String LIST_CONTEXT = "listctxt";
  14.  
  15.    private String currentListMarker(Hashtable var1) {
  16.       Vector var2 = (Vector)var1.get("listctxt");
  17.       if (var2 == null) {
  18.          return null;
  19.       } else {
  20.          Vector var3 = (Vector)var2.lastElement();
  21.          return var3 != null && var3.count() == 2 ? (String)var3.elementAt(0) : null;
  22.       }
  23.    }
  24.  
  25.    private int levelOfCurrentListMarker(Hashtable var1) {
  26.       Vector var2 = (Vector)var1.get("listctxt");
  27.       return var2 == null ? 1 : var2.count();
  28.    }
  29.  
  30.    private void addListInContext(String var1, Hashtable var2) {
  31.       Vector var3 = (Vector)var2.get("listctxt");
  32.       Vector var4 = new Vector();
  33.       var4.addElement(var1);
  34.       var4.addElement("0");
  35.       if (var3 != null) {
  36.          var3.addElement(var4);
  37.       } else {
  38.          var3 = new Vector();
  39.          var3.addElement(var4);
  40.          var2.put("listctxt", var3);
  41.       }
  42.    }
  43.  
  44.    private void removeLastListFromContext(Hashtable var1) {
  45.       Vector var2 = (Vector)var1.get("listctxt");
  46.       if (var2 != null && (Vector)var2.lastElement() != null) {
  47.          var2.removeLastElement();
  48.       }
  49.  
  50.    }
  51.  
  52.    private void bumpNumberOfListItemProcessed(Hashtable var1) {
  53.       Vector var2 = (Vector)var1.get("listctxt");
  54.       Vector var3;
  55.       if (var2 != null && (var3 = (Vector)var2.lastElement()) != null) {
  56.          String var4 = (String)var3.elementAt(1);
  57.          var4 = "" + (Integer.parseInt((String)var3.elementAt(1)) + 1);
  58.          var3.removeLastElement();
  59.          var3.addElement(var4);
  60.       }
  61.  
  62.    }
  63.  
  64.    private int numberOfListItemProcessed(Hashtable var1) {
  65.       Vector var2 = (Vector)var1.get("listctxt");
  66.       Vector var3;
  67.       return var2 != null && (var3 = (Vector)var2.lastElement()) != null ? Integer.parseInt((String)var3.elementAt(1)) : 0;
  68.    }
  69.  
  70.    public String prefix(Hashtable var1, char var2) {
  71.       if (super.marker.equals("LI")) {
  72.          String var5 = this.currentListMarker(var1);
  73.          if (var5 == null) {
  74.             return null;
  75.          } else {
  76.             FastStringBuffer var7 = new FastStringBuffer();
  77.             int var6 = this.levelOfCurrentListMarker(var1);
  78.  
  79.             for(int var10 = 0; var10 < var6; ++var10) {
  80.                var7.append("\t");
  81.             }
  82.  
  83.             return var5.equals("OL") ? var7.toString() + (this.numberOfListItemProcessed(var1) + 1) + ". " : var7.toString() + "┬╖ ";
  84.          }
  85.       } else {
  86.          int var3 = 0;
  87.  
  88.          for(int var4 = markersStartingWithDoubleCarriageReturn.length; var3 < var4; ++var3) {
  89.             if (markersStartingWithDoubleCarriageReturn[var3].equals(super.marker)) {
  90.                if (var2 != '\n') {
  91.                   return "\n\n";
  92.                }
  93.  
  94.                return "\n";
  95.             }
  96.          }
  97.  
  98.          var3 = 0;
  99.  
  100.          for(int var11 = markersStartingWithCarriageReturn.length; var3 < var11; ++var3) {
  101.             if (markersStartingWithCarriageReturn[var3].equals(super.marker)) {
  102.                return "\n";
  103.             }
  104.          }
  105.  
  106.          if (var2 != '\n') {
  107.             var3 = 0;
  108.  
  109.             for(int var12 = markersStartingWithCarriageReturnOptionaly.length; var3 < var12; ++var3) {
  110.                if (markersStartingWithCarriageReturnOptionaly[var3].equals(super.marker)) {
  111.                   return "\n";
  112.                }
  113.             }
  114.          }
  115.  
  116.          return "";
  117.       }
  118.    }
  119.  
  120.    public String suffix(Hashtable var1, char var2) {
  121.       int var3 = 0;
  122.  
  123.       for(int var4 = markersEndingWithDoubleCarriageReturn.length; var3 < var4; ++var3) {
  124.          if (markersEndingWithDoubleCarriageReturn[var3].equals(super.marker)) {
  125.             if (var2 != '\n') {
  126.                return "\n\n";
  127.             }
  128.  
  129.             return "\n";
  130.          }
  131.       }
  132.  
  133.       var3 = 0;
  134.  
  135.       for(int var6 = markersEndingWithCarriageReturn.length; var3 < var6; ++var3) {
  136.          if (markersEndingWithCarriageReturn[var3].equals(super.marker)) {
  137.             return "\n";
  138.          }
  139.       }
  140.  
  141.       return "";
  142.    }
  143.  
  144.    public void setupContext(Hashtable var1) {
  145.       if (!super.marker.equals("OL") && !super.marker.equals("UL") && !super.marker.equals("DIR") && !super.marker.equals("MENU")) {
  146.          if (super.marker.equals("LI") && this.currentListMarker(var1) != null) {
  147.             this.bumpNumberOfListItemProcessed(var1);
  148.          }
  149.  
  150.       } else {
  151.          this.addListInContext(super.marker, var1);
  152.       }
  153.    }
  154.  
  155.    public void cleanupContext(Hashtable var1) {
  156.       if (super.marker.equals("OL") || super.marker.equals("UL") || super.marker.equals("DIR") || super.marker.equals("MENU")) {
  157.          this.removeLastListFromContext(var1);
  158.       }
  159.  
  160.    }
  161.  
  162.    public String string(Hashtable var1) {
  163.       return super.marker.equals("TITLE") ? "" : super.string(var1);
  164.    }
  165.  
  166.    public Hashtable attributesForContents(Hashtable var1, Hashtable var2, TextView var3) {
  167.       Font var5 = Font.defaultFont();
  168.       Hashtable var4;
  169.       if (var2 != null && var2.count() > 0) {
  170.          var4 = (Hashtable)TextView.hashtablePool.allocateObject();
  171.          Enumeration var6 = var2.keys();
  172.  
  173.          while(var6.hasMoreElements()) {
  174.             Object var7 = var6.nextElement();
  175.             var4.put(var7, var2.get(var7));
  176.          }
  177.       } else {
  178.          var4 = (Hashtable)TextView.hashtablePool.allocateObject();
  179.       }
  180.  
  181.       if (super.marker.equals("H1")) {
  182.          var4.put("FontKey", Font.fontNamed(var5.name(), 1, 24));
  183.       } else if (super.marker.equals("H2")) {
  184.          var4.put("FontKey", Font.fontNamed(var5.name(), 1, 18));
  185.       } else if (super.marker.equals("H3")) {
  186.          var4.put("FontKey", Font.fontNamed(var5.name(), 1, 16));
  187.       } else if (super.marker.equals("H4")) {
  188.          var4.put("FontKey", Font.fontNamed(var5.name(), 1, 12));
  189.       } else if (super.marker.equals("H5")) {
  190.          var4.put("FontKey", Font.fontNamed(var5.name(), 1, 10));
  191.       } else if (super.marker.equals("H6")) {
  192.          var4.put("FontKey", Font.fontNamed(var5.name(), 1, 8));
  193.       } else if (!super.marker.equals("B") && !super.marker.equals("STRONG")) {
  194.          if (super.marker.equals("CENTER")) {
  195.             TextParagraphFormat var10 = (TextParagraphFormat)var4.get("ParagraphFormatKey");
  196.             TextParagraphFormat var18;
  197.             if (var10 != null) {
  198.                var18 = (TextParagraphFormat)var10.clone();
  199.             } else {
  200.                var18 = (TextParagraphFormat)((TextParagraphFormat)var2.get("ParagraphFormatKey")).clone();
  201.             }
  202.  
  203.             var18.setJustification(1);
  204.             var4.put("ParagraphFormatKey", var18);
  205.          } else if (!super.marker.equals("BLOCKQUOTE") && !super.marker.equals("DD")) {
  206.             if (!super.marker.equals("EM") && !super.marker.equals("I") && !super.marker.equals("ADDRESS") && !super.marker.equals("VAR") && !super.marker.equals("CITE")) {
  207.                if (super.marker.equals("PRE")) {
  208.                   Font var13 = (Font)var4.get("FontKey");
  209.                   TextParagraphFormat var20 = (TextParagraphFormat)((TextParagraphFormat)var2.get("ParagraphFormatKey")).clone();
  210.                   if (var13 == null) {
  211.                      var13 = Font.defaultFont();
  212.                   }
  213.  
  214.                   var4.put("FontKey", Font.fontNamed("Courier", var13.style(), var13.size()));
  215.                   var4.put("ParagraphFormatKey", var20);
  216.                } else if (!super.marker.equals("TT") && !super.marker.equals("CODE") && !super.marker.equals("SAMP") && !super.marker.equals("KBD")) {
  217.                   if (super.marker.equals("A")) {
  218.                      Hashtable var15 = ((TextViewHTMLElement)this).hashtableForHTMLAttributes(super.attributes);
  219.                      if (var15 != null) {
  220.                         String var21;
  221.                         if ((var21 = (String)var15.get("HREF")) != null) {
  222.                            var4.put("LinkKey", var21);
  223.                         }
  224.  
  225.                         String var8;
  226.                         if ((var8 = (String)var15.get("NAME")) != null) {
  227.                            var4.put("LinkDestinationKey", var8);
  228.                         }
  229.                      }
  230.                   } else if (super.marker.equals("LI")) {
  231.                      TextParagraphFormat var16 = (TextParagraphFormat)var4.get("ParagraphFormatKey");
  232.                      if (var16 == null) {
  233.                         var16 = (TextParagraphFormat)((TextParagraphFormat)var2.get("ParagraphFormatKey")).clone();
  234.                      }
  235.  
  236.                      var16.setWrapsUnderFirstCharacter(true);
  237.                      var4.put("ParagraphFormatKey", var16);
  238.                   } else if (super.marker.equals("P")) {
  239.                      Hashtable var17 = ((TextViewHTMLElement)this).hashtableForHTMLAttributes(super.attributes);
  240.                      String var22;
  241.                      if ((var22 = (String)var17.get("ALIGN")) != null) {
  242.                         TextParagraphFormat var24 = (TextParagraphFormat)var2.get("ParagraphFormatKey");
  243.                         var24 = (TextParagraphFormat)var24.clone();
  244.                         var22 = var22.toUpperCase();
  245.                         if (var22.equals("LEFT")) {
  246.                            var24.setJustification(0);
  247.                         } else if (var22.equals("CENTER")) {
  248.                            var24.setJustification(1);
  249.                         } else if (var22.equals("RIGHT")) {
  250.                            var24.setJustification(2);
  251.                         }
  252.  
  253.                         var4.put("ParagraphFormatKey", var24);
  254.                      }
  255.                   }
  256.                } else {
  257.                   Font var14 = (Font)var4.get("FontKey");
  258.                   if (var14 == null) {
  259.                      var14 = Font.defaultFont();
  260.                   }
  261.  
  262.                   var4.put("FontKey", Font.fontNamed("Courier", var14.style(), var14.size()));
  263.                }
  264.             } else {
  265.                Font var12 = (Font)var4.get("FontKey");
  266.                if (var12 != null) {
  267.                   if (!var12.isItalic()) {
  268.                      var4.put("FontKey", Font.fontNamed(var12.name(), var12.style() | 2, var12.size()));
  269.                   }
  270.                } else {
  271.                   var4.put("FontKey", Font.fontNamed(var5.name(), 2, var5.size()));
  272.                }
  273.             }
  274.          } else {
  275.             TextParagraphFormat var11 = (TextParagraphFormat)var4.get("ParagraphFormatKey");
  276.             TextParagraphFormat var19;
  277.             if (var11 != null) {
  278.                var19 = (TextParagraphFormat)var11.clone();
  279.             } else {
  280.                var19 = (TextParagraphFormat)((TextParagraphFormat)var2.get("ParagraphFormatKey")).clone();
  281.             }
  282.  
  283.             var19.setLeftMargin(50);
  284.             var4.put("ParagraphFormatKey", var19);
  285.          }
  286.       } else {
  287.          Font var9 = (Font)var4.get("FontKey");
  288.          if (var9 != null) {
  289.             if (!var9.isBold()) {
  290.                var4.put("FontKey", Font.fontNamed(var9.name(), var9.style() | 1, var9.size()));
  291.             }
  292.          } else {
  293.             var4.put("FontKey", Font.fontNamed(var5.name(), 1, var5.size()));
  294.          }
  295.       }
  296.  
  297.       return var4;
  298.    }
  299. }
  300.