home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text.html;
-
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.io.Serializable;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.StringTokenizer;
- import javax.swing.Icon;
- import javax.swing.ImageIcon;
- import javax.swing.text.AttributeSet;
- import javax.swing.text.View;
- import javax.swing.text.html.CSS.Attribute;
- import javax.swing.text.html.HTML.Tag;
-
- public class StyleSheet$ListPainter implements Serializable {
- static final char[][] romanChars = new char[][]{{'i', 'v'}, {'x', 'l'}, {'c', 'd'}, {'m', '?'}};
- private String type;
- private int start = 1;
- URL imageurl;
- Icon img = null;
- private int bulletgap = 5;
-
- StyleSheet$ListPainter(AttributeSet var1) {
- String var2 = (String)var1.getAttribute(Attribute.LIST_STYLE_IMAGE);
- if (var2 == null) {
- var2 = (String)var1.getAttribute(Attribute.LIST_STYLE);
- }
-
- if (var2 == null) {
- this.type = null;
- } else if (var2.equalsIgnoreCase("none")) {
- this.type = new String("none");
- } else {
- try {
- String var3 = null;
- StringTokenizer var4 = new StringTokenizer(var2, "()");
- if (var4.hasMoreTokens()) {
- var3 = var4.nextToken();
- }
-
- if (var4.hasMoreTokens()) {
- var3 = var4.nextToken();
- }
-
- URL var5 = new URL(var3);
- this.img = new ImageIcon(var5);
- this.type = new String("html-image");
- } catch (MalformedURLException var6) {
- this.type = null;
- }
- }
-
- String var7 = (String)var1.getAttribute(Attribute.LIST_STYLE_TYPE);
- if (var7 == null) {
- new String("disc");
- }
-
- }
-
- void drawIcon(Graphics var1, int var2, int var3, int var4, float var5, Component var6) {
- var1.setColor(Color.black);
- int var7 = var2 - this.img.getIconWidth() - this.bulletgap;
- int var8 = var3 + (int)((float)var4 * var5) - 3;
- this.img.paintIcon(var6, var1, var7, var8);
- }
-
- void drawLetter(Graphics var1, char var2, int var3, int var4, int var5, int var6) {
- var1.setColor(Color.black);
- String var7 = this.formatItemNum(var6 + this.start, var2) + ".";
- FontMetrics var8 = var1.getFontMetrics();
- int var9 = var8.stringWidth(var7);
- int var10 = var3 - var9 - this.bulletgap;
- int var11 = var4 + var8.getAscent() + var8.getLeading();
- var1.drawString(var7, var10, var11);
- }
-
- void drawShape(Graphics var1, String var2, int var3, int var4, int var5, float var6) {
- var1.setColor(Color.black);
- int var7 = var3 - this.bulletgap - 7;
- int var8 = var4 + (int)((float)var5 * var6) - 3;
- if (var2.equalsIgnoreCase("square")) {
- var1.drawRect(var7, var8, 7, 7);
- } else if (var2.equalsIgnoreCase("circle")) {
- var1.drawOval(var7, var8, 7, 7);
- } else {
- var1.fillOval(var7, var8, 7, 7);
- }
-
- }
-
- String formatAlphaNumerals(int var1) {
- String var2 = "";
- if (var1 > 26) {
- var2 = this.formatAlphaNumerals(var1 / 26) + this.formatAlphaNumerals(var1 % 26);
- } else {
- var2 = String.valueOf((char)(97 + var1 - 1));
- }
-
- return var2;
- }
-
- String formatItemNum(int var1, char var2) {
- String var3 = "1";
- boolean var4 = false;
- String var5;
- switch (var2) {
- case '1':
- default:
- var5 = String.valueOf(var1);
- break;
- case 'A':
- var4 = true;
- case 'a':
- var5 = this.formatAlphaNumerals(var1);
- break;
- case 'I':
- var4 = true;
- case 'i':
- var5 = this.formatRomanNumerals(var1);
- }
-
- if (var4) {
- var5 = var5.toUpperCase();
- }
-
- return var5;
- }
-
- String formatRomanDigit(int var1, int var2) {
- String var3 = "";
- if (var2 == 9) {
- var3 = var3 + romanChars[var1][0];
- var3 = var3 + romanChars[var1 + 1][0];
- return var3;
- } else if (var2 == 4) {
- var3 = var3 + romanChars[var1][0];
- var3 = var3 + romanChars[var1][1];
- return var3;
- } else {
- if (var2 >= 5) {
- var3 = var3 + romanChars[var1][1];
- var2 -= 5;
- }
-
- for(int var4 = 0; var4 < var2; ++var4) {
- var3 = var3 + romanChars[var1][0];
- }
-
- return var3;
- }
- }
-
- String formatRomanNumerals(int var1) {
- return this.formatRomanNumerals(0, var1);
- }
-
- String formatRomanNumerals(int var1, int var2) {
- return var2 < 10 ? this.formatRomanDigit(var1, var2) : this.formatRomanNumerals(var1 + 1, var2 / 10) + this.formatRomanDigit(var1, var2 % 10);
- }
-
- private String getChildType(View var1) {
- View var2 = var1.getParent();
- AttributeSet var3 = var2.getElement().getAttributes();
- String var4 = (String)var3.getAttribute(javax.swing.text.html.HTML.Attribute.TYPE);
- if (var4 == null) {
- if (this.type == null) {
- HTMLDocument var5 = (HTMLDocument)var2.getDocument();
- if (var5.matchNameAttribute(var2.getElement().getAttributes(), Tag.OL)) {
- var4 = "decimal";
- } else {
- var4 = "disc";
- }
- } else {
- var4 = this.type;
- }
- }
-
- return var4;
- }
-
- public void paint(Graphics var1, float var2, float var3, float var4, float var5, View var6, int var7) {
- View var8 = var6.getView(var7);
- String var9 = this.getChildType(var8);
- float var10 = var8.getAlignment(1);
- if (var9.equalsIgnoreCase("square")) {
- this.drawShape(var1, var9, (int)var2, (int)var3, (int)var5, var10);
- } else if (var9.equalsIgnoreCase("circle")) {
- this.drawShape(var1, var9, (int)var2, (int)var3, (int)var5, var10);
- } else if (!var9.equalsIgnoreCase("1") && !var9.equalsIgnoreCase("decimal")) {
- if (!var9.equals("a") && !var9.equalsIgnoreCase("lower-alpha")) {
- if (!var9.equals("A") && !var9.equalsIgnoreCase("upper-alpha")) {
- if (!var9.equals("i") && !var9.equalsIgnoreCase("lower-roman")) {
- if (!var9.equals("I") && !var9.equalsIgnoreCase("upper-roman")) {
- if (var9.equalsIgnoreCase("html-image")) {
- this.drawIcon(var1, (int)var2, (int)var3, (int)var5, var10, var6.getContainer());
- } else if (!var9.equals("none")) {
- this.drawShape(var1, var9, (int)var2, (int)var3, (int)var5, var10);
- }
- } else {
- this.drawLetter(var1, 'I', (int)var2, (int)var3, (int)var5, var7);
- }
- } else {
- this.drawLetter(var1, 'i', (int)var2, (int)var3, (int)var5, var7);
- }
- } else {
- this.drawLetter(var1, 'A', (int)var2, (int)var3, (int)var5, var7);
- }
- } else {
- this.drawLetter(var1, 'a', (int)var2, (int)var3, (int)var5, var7);
- }
- } else {
- this.drawLetter(var1, '1', (int)var2, (int)var3, (int)var5, var7);
- }
-
- }
- }
-