home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 144 / DPCS0200.iso / Internet / Supanet / system / swing.jar / javax / swing / text / html / StyleSheet$ListPainter.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-05  |  5.9 KB  |  220 lines

  1. package javax.swing.text.html;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.FontMetrics;
  6. import java.awt.Graphics;
  7. import java.io.Serializable;
  8. import java.net.MalformedURLException;
  9. import java.net.URL;
  10. import java.util.StringTokenizer;
  11. import javax.swing.Icon;
  12. import javax.swing.ImageIcon;
  13. import javax.swing.text.AttributeSet;
  14. import javax.swing.text.View;
  15. import javax.swing.text.html.CSS.Attribute;
  16. import javax.swing.text.html.HTML.Tag;
  17.  
  18. public class StyleSheet$ListPainter implements Serializable {
  19.    static final char[][] romanChars = new char[][]{{'i', 'v'}, {'x', 'l'}, {'c', 'd'}, {'m', '?'}};
  20.    private String type;
  21.    private int start = 1;
  22.    URL imageurl;
  23.    Icon img = null;
  24.    private int bulletgap = 5;
  25.  
  26.    StyleSheet$ListPainter(AttributeSet var1) {
  27.       String var2 = (String)var1.getAttribute(Attribute.LIST_STYLE_IMAGE);
  28.       if (var2 == null) {
  29.          var2 = (String)var1.getAttribute(Attribute.LIST_STYLE);
  30.       }
  31.  
  32.       if (var2 == null) {
  33.          this.type = null;
  34.       } else if (var2.equalsIgnoreCase("none")) {
  35.          this.type = new String("none");
  36.       } else {
  37.          try {
  38.             String var3 = null;
  39.             StringTokenizer var4 = new StringTokenizer(var2, "()");
  40.             if (var4.hasMoreTokens()) {
  41.                var3 = var4.nextToken();
  42.             }
  43.  
  44.             if (var4.hasMoreTokens()) {
  45.                var3 = var4.nextToken();
  46.             }
  47.  
  48.             URL var5 = new URL(var3);
  49.             this.img = new ImageIcon(var5);
  50.             this.type = new String("html-image");
  51.          } catch (MalformedURLException var6) {
  52.             this.type = null;
  53.          }
  54.       }
  55.  
  56.       String var7 = (String)var1.getAttribute(Attribute.LIST_STYLE_TYPE);
  57.       if (var7 == null) {
  58.          new String("disc");
  59.       }
  60.  
  61.    }
  62.  
  63.    void drawIcon(Graphics var1, int var2, int var3, int var4, float var5, Component var6) {
  64.       var1.setColor(Color.black);
  65.       int var7 = var2 - this.img.getIconWidth() - this.bulletgap;
  66.       int var8 = var3 + (int)((float)var4 * var5) - 3;
  67.       this.img.paintIcon(var6, var1, var7, var8);
  68.    }
  69.  
  70.    void drawLetter(Graphics var1, char var2, int var3, int var4, int var5, int var6) {
  71.       var1.setColor(Color.black);
  72.       String var7 = this.formatItemNum(var6 + this.start, var2) + ".";
  73.       FontMetrics var8 = var1.getFontMetrics();
  74.       int var9 = var8.stringWidth(var7);
  75.       int var10 = var3 - var9 - this.bulletgap;
  76.       int var11 = var4 + var8.getAscent() + var8.getLeading();
  77.       var1.drawString(var7, var10, var11);
  78.    }
  79.  
  80.    void drawShape(Graphics var1, String var2, int var3, int var4, int var5, float var6) {
  81.       var1.setColor(Color.black);
  82.       int var7 = var3 - this.bulletgap - 7;
  83.       int var8 = var4 + (int)((float)var5 * var6) - 3;
  84.       if (var2.equalsIgnoreCase("square")) {
  85.          var1.drawRect(var7, var8, 7, 7);
  86.       } else if (var2.equalsIgnoreCase("circle")) {
  87.          var1.drawOval(var7, var8, 7, 7);
  88.       } else {
  89.          var1.fillOval(var7, var8, 7, 7);
  90.       }
  91.  
  92.    }
  93.  
  94.    String formatAlphaNumerals(int var1) {
  95.       String var2 = "";
  96.       if (var1 > 26) {
  97.          var2 = this.formatAlphaNumerals(var1 / 26) + this.formatAlphaNumerals(var1 % 26);
  98.       } else {
  99.          var2 = String.valueOf((char)(97 + var1 - 1));
  100.       }
  101.  
  102.       return var2;
  103.    }
  104.  
  105.    String formatItemNum(int var1, char var2) {
  106.       String var3 = "1";
  107.       boolean var4 = false;
  108.       String var5;
  109.       switch (var2) {
  110.          case '1':
  111.          default:
  112.             var5 = String.valueOf(var1);
  113.             break;
  114.          case 'A':
  115.             var4 = true;
  116.          case 'a':
  117.             var5 = this.formatAlphaNumerals(var1);
  118.             break;
  119.          case 'I':
  120.             var4 = true;
  121.          case 'i':
  122.             var5 = this.formatRomanNumerals(var1);
  123.       }
  124.  
  125.       if (var4) {
  126.          var5 = var5.toUpperCase();
  127.       }
  128.  
  129.       return var5;
  130.    }
  131.  
  132.    String formatRomanDigit(int var1, int var2) {
  133.       String var3 = "";
  134.       if (var2 == 9) {
  135.          var3 = var3 + romanChars[var1][0];
  136.          var3 = var3 + romanChars[var1 + 1][0];
  137.          return var3;
  138.       } else if (var2 == 4) {
  139.          var3 = var3 + romanChars[var1][0];
  140.          var3 = var3 + romanChars[var1][1];
  141.          return var3;
  142.       } else {
  143.          if (var2 >= 5) {
  144.             var3 = var3 + romanChars[var1][1];
  145.             var2 -= 5;
  146.          }
  147.  
  148.          for(int var4 = 0; var4 < var2; ++var4) {
  149.             var3 = var3 + romanChars[var1][0];
  150.          }
  151.  
  152.          return var3;
  153.       }
  154.    }
  155.  
  156.    String formatRomanNumerals(int var1) {
  157.       return this.formatRomanNumerals(0, var1);
  158.    }
  159.  
  160.    String formatRomanNumerals(int var1, int var2) {
  161.       return var2 < 10 ? this.formatRomanDigit(var1, var2) : this.formatRomanNumerals(var1 + 1, var2 / 10) + this.formatRomanDigit(var1, var2 % 10);
  162.    }
  163.  
  164.    private String getChildType(View var1) {
  165.       View var2 = var1.getParent();
  166.       AttributeSet var3 = var2.getElement().getAttributes();
  167.       String var4 = (String)var3.getAttribute(javax.swing.text.html.HTML.Attribute.TYPE);
  168.       if (var4 == null) {
  169.          if (this.type == null) {
  170.             HTMLDocument var5 = (HTMLDocument)var2.getDocument();
  171.             if (var5.matchNameAttribute(var2.getElement().getAttributes(), Tag.OL)) {
  172.                var4 = "decimal";
  173.             } else {
  174.                var4 = "disc";
  175.             }
  176.          } else {
  177.             var4 = this.type;
  178.          }
  179.       }
  180.  
  181.       return var4;
  182.    }
  183.  
  184.    public void paint(Graphics var1, float var2, float var3, float var4, float var5, View var6, int var7) {
  185.       View var8 = var6.getView(var7);
  186.       String var9 = this.getChildType(var8);
  187.       float var10 = var8.getAlignment(1);
  188.       if (var9.equalsIgnoreCase("square")) {
  189.          this.drawShape(var1, var9, (int)var2, (int)var3, (int)var5, var10);
  190.       } else if (var9.equalsIgnoreCase("circle")) {
  191.          this.drawShape(var1, var9, (int)var2, (int)var3, (int)var5, var10);
  192.       } else if (!var9.equalsIgnoreCase("1") && !var9.equalsIgnoreCase("decimal")) {
  193.          if (!var9.equals("a") && !var9.equalsIgnoreCase("lower-alpha")) {
  194.             if (!var9.equals("A") && !var9.equalsIgnoreCase("upper-alpha")) {
  195.                if (!var9.equals("i") && !var9.equalsIgnoreCase("lower-roman")) {
  196.                   if (!var9.equals("I") && !var9.equalsIgnoreCase("upper-roman")) {
  197.                      if (var9.equalsIgnoreCase("html-image")) {
  198.                         this.drawIcon(var1, (int)var2, (int)var3, (int)var5, var10, var6.getContainer());
  199.                      } else if (!var9.equals("none")) {
  200.                         this.drawShape(var1, var9, (int)var2, (int)var3, (int)var5, var10);
  201.                      }
  202.                   } else {
  203.                      this.drawLetter(var1, 'I', (int)var2, (int)var3, (int)var5, var7);
  204.                   }
  205.                } else {
  206.                   this.drawLetter(var1, 'i', (int)var2, (int)var3, (int)var5, var7);
  207.                }
  208.             } else {
  209.                this.drawLetter(var1, 'A', (int)var2, (int)var3, (int)var5, var7);
  210.             }
  211.          } else {
  212.             this.drawLetter(var1, 'a', (int)var2, (int)var3, (int)var5, var7);
  213.          }
  214.       } else {
  215.          this.drawLetter(var1, '1', (int)var2, (int)var3, (int)var5, var7);
  216.       }
  217.  
  218.    }
  219. }
  220.