home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / text / html / StyleXlater.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  6.4 KB  |  202 lines

  1. package com.sun.java.swing.text.html;
  2.  
  3. import com.sun.java.swing.text.AttributeSet;
  4. import com.sun.java.swing.text.Style;
  5. import com.sun.java.swing.text.StyleConstants;
  6. import java.awt.Color;
  7. import java.util.StringTokenizer;
  8.  
  9. class StyleXlater implements HTMLDefs, StyleDefs {
  10.    public StyleXlater() {
  11.    }
  12.  
  13.    public static void translateProperty(StyleSheet var0, Style var1, String var2, String var3) {
  14.       HTMLDebug.println("StyleXlater:translateProperty - name = " + var2 + "    value = " + var3);
  15.       String var4 = HTMLUtils.removeSurroundingQuotes(var3);
  16.       if (var2.equalsIgnoreCase("font-family")) {
  17.          if (!var4.equalsIgnoreCase("monospace") && !var4.equalsIgnoreCase("monospaced") && !var4.equalsIgnoreCase("typewriter")) {
  18.             StyleConstants.setFontFamily(var1, var4);
  19.          } else {
  20.             StyleConstants.setFontFamily(var1, "Monospaced");
  21.          }
  22.       } else if (var2.equalsIgnoreCase("font-size")) {
  23.          setFontSize(var4, var1, var0);
  24.       } else if (var2.equalsIgnoreCase("font-weight")) {
  25.          setFontStyle(var4, var1);
  26.       } else if (var2.equalsIgnoreCase("font-style")) {
  27.          setFontStyle(var4, var1);
  28.       } else if (var2.equalsIgnoreCase("margin-top")) {
  29.          StyleConstants.setSpaceAbove(var1, (float)Integer.valueOf(var4));
  30.       } else if (var2.equalsIgnoreCase("margin-bottom")) {
  31.          StyleConstants.setSpaceBelow(var1, (float)Integer.valueOf(var4));
  32.       } else if (var2.equalsIgnoreCase("margin-left")) {
  33.          StyleConstants.setLeftIndent(var1, (float)Integer.valueOf(var4));
  34.       } else if (var2.equalsIgnoreCase("margin-right")) {
  35.          StyleConstants.setRightIndent(var1, (float)Integer.valueOf(var4));
  36.       } else if (var2.equalsIgnoreCase("text-decoration")) {
  37.          setTextDecoration(var4, var1);
  38.       } else if (var2.equalsIgnoreCase("text-align")) {
  39.          setTextAlignment(var4, var1);
  40.       } else if (var2.equalsIgnoreCase("color")) {
  41.          setForegroundColor(var4, var1);
  42.       } else if (!var2.equalsIgnoreCase("list-style-type") && !var2.equalsIgnoreCase("list-style-image")) {
  43.          if (var2.equalsIgnoreCase("font-sizes")) {
  44.             var0.setFontSizes(var4);
  45.          } else {
  46.             var1.addAttribute(var2.toLowerCase(), var4);
  47.             HTMLDebug.println("StyleXlater - Warning! Unimplemented attribute: " + var2);
  48.          }
  49.       } else {
  50.          var1.addAttribute(var2.toLowerCase(), var4);
  51.       }
  52.    }
  53.  
  54.    static String convertFontSizeString(String var0) {
  55.       if (!var0.equalsIgnoreCase("xx-small") && !var0.equalsIgnoreCase("xxsmall")) {
  56.          if (!var0.equalsIgnoreCase("x-small") && !var0.equalsIgnoreCase("xsmall")) {
  57.             if (var0.equalsIgnoreCase("small")) {
  58.                return "-1";
  59.             } else if (var0.equalsIgnoreCase("medium")) {
  60.                return "+0";
  61.             } else if (var0.equalsIgnoreCase("large")) {
  62.                return "+1";
  63.             } else if (!var0.equalsIgnoreCase("x-large") && !var0.equalsIgnoreCase("xlarge")) {
  64.                if (!var0.equalsIgnoreCase("xx-large") && !var0.equalsIgnoreCase("xxlarge")) {
  65.                   System.out.println("StyleXlater.convertFontSizeString - Warning!  Unimplemented font size value: " + var0);
  66.                   return "0";
  67.                } else {
  68.                   return "+3";
  69.                }
  70.             } else {
  71.                return "+2";
  72.             }
  73.          } else {
  74.             return "-2";
  75.          }
  76.       } else {
  77.          return "-3";
  78.       }
  79.    }
  80.  
  81.    static void setFontStyle(String var0, Style var1) {
  82.       if (var0 != null) {
  83.          if (!var0.equalsIgnoreCase("bold") && !var0.equals("bolder")) {
  84.             if (var0.equalsIgnoreCase("italic")) {
  85.                StyleConstants.setItalic(var1, true);
  86.             } else if (!var0.equalsIgnoreCase("typewriter") && !var0.equalsIgnoreCase("monospace") && !var0.equalsIgnoreCase("monospaced")) {
  87.                if (var0.equalsIgnoreCase("bolditalic")) {
  88.                   StyleConstants.setBold(var1, true);
  89.                   StyleConstants.setItalic(var1, true);
  90.                } else {
  91.                   if (!var0.equalsIgnoreCase("normal")) {
  92.                      if (var0.equalsIgnoreCase("light") || var0.equals("lighter") || var0.equalsIgnoreCase("oblique")) {
  93.                         HTMLDebug.println("StyleXlater.setFontStyle: Unsupported font style:" + var0);
  94.                         return;
  95.                      }
  96.  
  97.                      HTMLDebug.println("StyleXlater.setFontStyle: Unimplemented font style:" + var0);
  98.                   }
  99.  
  100.                }
  101.             } else {
  102.                StyleConstants.setFontFamily(var1, "Monospaced");
  103.             }
  104.          } else {
  105.             StyleConstants.setBold(var1, true);
  106.          }
  107.       }
  108.    }
  109.  
  110.    static void setTextDecoration(String var0, Style var1) {
  111.       if (var0.equalsIgnoreCase("underline")) {
  112.          StyleConstants.setUnderline(var1, true);
  113.       }
  114.  
  115.    }
  116.  
  117.    static void setTextAlignment(String var0, Style var1) {
  118.       if (var0.equalsIgnoreCase("left")) {
  119.          StyleConstants.setAlignment(var1, 0);
  120.       } else if (var0.equalsIgnoreCase("center")) {
  121.          StyleConstants.setAlignment(var1, 1);
  122.       } else if (var0.equalsIgnoreCase("right")) {
  123.          StyleConstants.setAlignment(var1, 2);
  124.       } else if (var0.equalsIgnoreCase("justify")) {
  125.          StyleConstants.setAlignment(var1, 3);
  126.       } else {
  127.          System.out.println("HTMXlater.translateProperty:  Unsupported property value: " + var0);
  128.       }
  129.    }
  130.  
  131.    static void setForegroundColor(String var0, Style var1) {
  132.       if (var0.startsWith("#")) {
  133.          Color var11;
  134.          try {
  135.             var11 = HTMLUtils.stringToColor(var0);
  136.          } catch (HTMLException var8) {
  137.             System.out.println("StyleXlater.translateProperty: " + var0 + " " + var8);
  138.             return;
  139.          }
  140.  
  141.          StyleConstants.setForeground(var1, var11);
  142.       } else {
  143.          if (!var0.startsWith("rgb") && !var0.startsWith("RGB")) {
  144.             Color var10;
  145.             try {
  146.                var10 = HTMLUtils.stringToColor(var0);
  147.             } catch (HTMLException var9) {
  148.                System.out.println("StyleXlater.translateProperty: " + var0 + " " + var9);
  149.                return;
  150.             }
  151.  
  152.             StyleConstants.setForeground(var1, var10);
  153.          } else {
  154.             int var3 = var0.indexOf("(");
  155.             StringTokenizer var4 = new StringTokenizer(var0.substring(var3 + 1, var0.length() - 1), ", \t \n");
  156.             int var5 = 0;
  157.  
  158.             int[] var6;
  159.             for(var6 = new int[3]; var5 < var6.length && var4.hasMoreTokens(); ++var5) {
  160.                String var7 = var4.nextToken();
  161.                if (var7.endsWith("%")) {
  162.                   var6[var5] = Integer.valueOf(var7.substring(0, var7.length() - 1)) * 255 / 100;
  163.                } else {
  164.                   var6[var5] = Integer.valueOf(var7);
  165.                }
  166.             }
  167.  
  168.             if (var5 == 3) {
  169.                Color var2 = new Color(var6[0], var6[1], var6[2]);
  170.                StyleConstants.setForeground(var1, var2);
  171.                return;
  172.             }
  173.          }
  174.  
  175.       }
  176.    }
  177.  
  178.    static void setFontSize(String var0, Style var1, StyleSheet var2) {
  179.       int var3 = 0;
  180.       StringTokenizer var4 = new StringTokenizer(var0, "0123456789");
  181.       if (var4.countTokens() == 0) {
  182.          var3 = Integer.valueOf(var0);
  183.          StyleConstants.setFontSize(var1, var3);
  184.       } else if ((var0.startsWith("+") || var0.startsWith("-")) && var0.endsWith("pt")) {
  185.          System.out.println("StyleXlater.translateAttribute: Unimplemented font-size value " + var0);
  186.       } else if (var0.toLowerCase().endsWith("pt")) {
  187.          var3 = Integer.valueOf(var0.substring(0, var0.length() - 2));
  188.          StyleConstants.setFontSize(var1, var3);
  189.       } else {
  190.          String var5 = convertFontSizeString(var0);
  191.          var3 = var2.getPtSize(var5);
  192.          StyleConstants.setFontSize(var1, var3);
  193.       }
  194.  
  195.       String var6 = (String)var1.getAttribute(AttributeSet.NameAttribute);
  196.       if (var3 != 0 && var6 != null && (var6.equals("body") || var6.equals("default"))) {
  197.          var2.setPtSize(var3);
  198.       }
  199.  
  200.    }
  201. }
  202.