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

  1. package javax.swing.text.html;
  2.  
  3. import java.io.IOException;
  4. import java.io.Reader;
  5. import java.io.Serializable;
  6. import java.io.StreamTokenizer;
  7. import java.util.Vector;
  8. import javax.swing.text.MutableAttributeSet;
  9. import javax.swing.text.SimpleAttributeSet;
  10.  
  11. class StyleSheet$CssParser implements Serializable {
  12.    // $FF: synthetic field
  13.    private final StyleSheet this$0;
  14.    Vector selectors;
  15.    Vector selectorTokens;
  16.    String key;
  17.    Vector ruleTokens;
  18.    MutableAttributeSet declaration;
  19.  
  20.    StyleSheet$CssParser(StyleSheet var1) {
  21.       this.this$0 = var1;
  22.       this.selectors = new Vector();
  23.       this.selectorTokens = new Vector();
  24.       this.ruleTokens = new Vector();
  25.       this.declaration = new SimpleAttributeSet();
  26.    }
  27.  
  28.    void addKeyValueToDeclaration() {
  29.       CSS.Attribute var1 = CSS.getAttribute(this.key);
  30.       if (var1 != null) {
  31.          Object var2 = this.getValue(var1);
  32.          if (var2 != null) {
  33.             this.declaration.addAttribute(var1, var2);
  34.          }
  35.       }
  36.  
  37.       this.ruleTokens.removeAllElements();
  38.    }
  39.  
  40.    void addRule() {
  41.       int var1 = this.selectors.size();
  42.  
  43.       for(int var2 = 0; var2 < var1; ++var2) {
  44.          String[] var3 = (String[])this.selectors.elementAt(var2);
  45.          if (var3.length > 0) {
  46.             this.this$0.addRule(var3, this.declaration);
  47.          }
  48.       }
  49.  
  50.       this.declaration.removeAttributes(this.declaration);
  51.       this.selectors.removeAllElements();
  52.    }
  53.  
  54.    void addSelector() {
  55.       String[] var1 = new String[this.selectorTokens.size()];
  56.       this.selectorTokens.copyInto(var1);
  57.       this.selectors.addElement(var1);
  58.       this.selectorTokens.removeAllElements();
  59.    }
  60.  
  61.    String getDeclarationString() {
  62.       String var1 = "";
  63.       int var2 = this.ruleTokens.size();
  64.  
  65.       for(int var3 = 0; var3 < var2; ++var3) {
  66.          var1 = var1 + this.ruleTokens.elementAt(var3);
  67.       }
  68.  
  69.       this.ruleTokens.removeAllElements();
  70.       return var1;
  71.    }
  72.  
  73.    Object getValue(CSS.Attribute var1) {
  74.       StyleSheet.CssValue var2 = (StyleSheet.CssValue)StyleSheet.access$1(this.this$0).get(var1);
  75.       String var3 = this.getDeclarationString();
  76.       return var2.parseCssValue(var3);
  77.    }
  78.  
  79.    void parse(Reader var1) throws IOException {
  80.       StreamTokenizer var2 = new StreamTokenizer(var1);
  81.       var2.ordinaryChar(47);
  82.       var2.slashStarComments(true);
  83.       boolean var3 = false;
  84.  
  85.       for(int var4 = var2.nextToken(); var4 != -1; var4 = var2.nextToken()) {
  86.          switch (var4) {
  87.             case -3:
  88.                if (var3) {
  89.                   this.ruleTokens.addElement(var2.sval);
  90.                } else {
  91.                   this.selectorTokens.addElement(var2.sval);
  92.                }
  93.                break;
  94.             case -2:
  95.                if (var3) {
  96.                   this.ruleTokens.addElement(new Integer((int)var2.nval));
  97.                } else {
  98.                   String var5 = (String)this.selectorTokens.lastElement();
  99.                   var5 = var5 + (int)var2.nval;
  100.                   this.selectorTokens.setElementAt(var5, this.selectorTokens.size() - 1);
  101.                }
  102.             case 10:
  103.                break;
  104.             default:
  105.                switch (var2.ttype) {
  106.                   case 44:
  107.                      if (var3) {
  108.                         this.ruleTokens.addElement(new Character(','));
  109.                      } else {
  110.                         this.addSelector();
  111.                      }
  112.                      break;
  113.                   case 58:
  114.                      this.key = this.getDeclarationString();
  115.                      break;
  116.                   case 59:
  117.                      this.addKeyValueToDeclaration();
  118.                      break;
  119.                   case 123:
  120.                      this.addSelector();
  121.                      var3 = true;
  122.                      break;
  123.                   case 125:
  124.                      this.addKeyValueToDeclaration();
  125.                      this.addRule();
  126.                      var3 = false;
  127.                      break;
  128.                   default:
  129.                      if (var3) {
  130.                         this.ruleTokens.addElement(new Character(','));
  131.                      } else {
  132.                         String var7 = (String)this.selectorTokens.lastElement();
  133.                         var7 = var7 + (char)var2.ttype;
  134.                         this.selectorTokens.setElementAt(var7, this.selectorTokens.size() - 1);
  135.                      }
  136.                }
  137.          }
  138.       }
  139.  
  140.    }
  141. }
  142.