KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > java > swing > plaf > gtk > BluecurveEngineParser


1 /*
2  * @(#)BluecurveEngineParser.java 1.5 03/12/19
3  *
4  * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
5  * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
6  */

7
8 package com.sun.java.swing.plaf.gtk;
9
10 import java.io.IOException JavaDoc;
11 import java.util.ArrayList JavaDoc;
12 import java.awt.Font JavaDoc;
13 import java.awt.Insets JavaDoc;
14
15 /**
16  * A parser for the "bluecurve" engine sections in GTK rc theme files.
17  *
18  * @author Shannon Hickey
19  * @version 1.5 12/19/03
20  */

21 class BluecurveEngineParser extends GTKEngineParser {
22
23     private static final int SYM_CONTRAST = GTKScanner.TOKEN_LAST + 1;
24     private static final int SYM_WIDE = SYM_CONTRAST + 1;
25     private static final int SYM_TRUE = SYM_WIDE + 1;
26     private static final int SYM_FALSE = SYM_TRUE + 1;
27
28     private static final int[] symbolVals = {
29         SYM_CONTRAST, SYM_WIDE, SYM_TRUE, SYM_FALSE
30     };
31
32     private static final String JavaDoc[] symbolNames = {
33         "contrast", // SYM_CONTRAST
34
"wide", // SYM_WIDE
35
"TRUE", // SYM_TRUE
36
"FALSE" // SYM_FALSE
37
};
38
39     private static class BluecurveEngineInfo extends GTKParser.EngineInfo {
40         GTKStyle constructGTKStyle(GTKStyle.GTKStateInfo[] infoArray,
41                                    CircularIdentityList props,
42                                    Font JavaDoc font,
43                                    int xThickness,
44                                    int yThickness,
45                                    GTKStyle.GTKStockIconInfo[] stockArray) {
46             return new BluecurveStyle(infoArray,
47                                       props,
48                                       font,
49                                       xThickness,
50                                       yThickness,
51                                       stockArray);
52         }
53     }
54
55     private GTKScanner scanner;
56     private GTKParser parser;
57     private BluecurveEngineInfo engineInfo;
58
59     private void registerSymbolsIfNecessary() {
60         if (scanner.containsSymbol(symbolNames[0])) {
61             return;
62         }
63
64         for (int i = 0; i < symbolNames.length; i++) {
65             scanner.addSymbol(symbolNames[i], symbolVals[i]);
66         }
67     }
68
69     int parse(GTKScanner scanner,
70               GTKParser parser,
71               GTKParser.EngineInfo[] retVal) throws IOException JavaDoc {
72
73         this.scanner = scanner;
74         this.parser = parser;
75
76         if (retVal[0] == null) {
77             engineInfo = new BluecurveEngineInfo();
78         } else {
79             engineInfo = (BluecurveEngineInfo)retVal[0];
80         }
81
82         int oldScope = scanner.setScope(uniqueScopeID);
83         registerSymbolsIfNecessary();
84
85         // At this time we don't know how bluecurve allows
86
// itself to be customized, so we'll just skip over
87
// the block.
88
int token;
89         int curlys = 1;
90
91         while (curlys > 0) {
92             token = scanner.getToken();
93             switch(token) {
94                 case GTKScanner.TOKEN_EOF:
95                 case GTKScanner.TOKEN_ERROR:
96                     return GTKScanner.TOKEN_RIGHT_CURLY;
97                 case GTKScanner.TOKEN_LEFT_CURLY:
98                     curlys++;
99                     break;
100                 case GTKScanner.TOKEN_RIGHT_CURLY:
101                     curlys--;
102                     break;
103                 default:
104                     // ignore
105
}
106         }
107
108         retVal[0] = engineInfo;
109
110         scanner.setScope(oldScope);
111         return GTKScanner.TOKEN_NONE;
112     }
113
114 }
115
Popular Tags