1 30 package browser; 31 32 import javax.swing.tree.*; 33 import org.w3c.dom.*; 34 import org.w3c.dom.stylesheets.*; 35 import org.w3c.dom.css.*; 36 37 41 class StyleBrowserTreeBuilder { 42 43 private static DefaultMutableTreeNode createNode(String name) { 44 return new DefaultMutableTreeNode(new StyleData(name)); 45 } 46 47 private static void addStyleDeclaration( 48 DefaultMutableTreeNode parent, 49 CSSStyleDeclaration decl) { 50 51 DefaultMutableTreeNode node = createNode("CSSStyleDeclaration"); 52 parent.add(node); 53 54 for (int i = 0; i < decl.getLength(); i++) { 56 String name = decl.item(i); 57 String value = decl.getPropertyValue(name); 58 String prio = decl.getPropertyPriority(name); 59 60 if (prio.equals("")) 61 node.add(createNode(name + " : " + value)); 62 else 63 node.add(createNode(name + " : " + value + " ! " + prio)); 64 } 65 } 66 67 private static void addMediaList( 68 DefaultMutableTreeNode parent, 69 MediaList mediaList) { 70 71 if (mediaList == null) 75 return; 76 77 DefaultMutableTreeNode node = createNode("MediaList"); 78 parent.add(node); 79 80 for (int i = 0; i < mediaList.getLength(); i++) 82 node.add(createNode(mediaList.item(i))); 83 } 84 85 private static void addUnknownRule( 86 DefaultMutableTreeNode parent, 87 CSSUnknownRule rule) { 88 89 DefaultMutableTreeNode node = createNode("CSSUnknownRule"); 90 parent.add(node); 91 92 node.add(createNode(rule.getCssText())); 94 } 95 96 private static void addStyleRule( 97 DefaultMutableTreeNode parent, 98 CSSStyleRule rule) { 99 100 DefaultMutableTreeNode node = createNode("CSSStyleRule"); 101 parent.add(node); 102 103 node.add(createNode(rule.getSelectorText())); 105 106 addStyleDeclaration(node, rule.getStyle()); 107 } 108 109 private static void addCharsetRule( 110 DefaultMutableTreeNode parent, 111 CSSCharsetRule rule) { 112 113 DefaultMutableTreeNode node = createNode("CSSCharsetRule"); 114 parent.add(node); 115 116 node.add(createNode(rule.getEncoding())); 118 } 119 120 private static void addImportRule( 121 DefaultMutableTreeNode parent, 122 CSSImportRule rule) { 123 124 DefaultMutableTreeNode node = createNode("CSSImportRule"); 125 parent.add(node); 126 127 node.add(createNode(rule.getHref())); 129 130 addMediaList(node, rule.getMedia()); 131 } 132 133 private static void addMediaRule( 134 DefaultMutableTreeNode parent, 135 CSSMediaRule rule) { 136 137 DefaultMutableTreeNode node = createNode("CSSMediaRule"); 138 parent.add(node); 139 140 addMediaList(node, rule.getMedia()); 141 addRuleList(node, rule.getCssRules()); 142 } 143 144 private static void addFontFaceRule( 145 DefaultMutableTreeNode parent, 146 CSSFontFaceRule rule) { 147 148 DefaultMutableTreeNode node = createNode("CSSFontFaceRule"); 149 parent.add(node); 150 151 addStyleDeclaration(node, rule.getStyle()); 152 } 153 154 private static void addPageRule( 155 DefaultMutableTreeNode parent, 156 CSSPageRule rule) { 157 158 DefaultMutableTreeNode node = createNode("CSSPageRule"); 159 parent.add(node); 160 161 node.add(createNode(rule.getSelectorText())); 163 164 addStyleDeclaration(node, rule.getStyle()); 165 } 166 167 private static void addRuleList( 168 DefaultMutableTreeNode parent, 169 CSSRuleList rules) { 170 171 DefaultMutableTreeNode node = createNode("CSSRuleList"); 172 parent.add(node); 173 174 for (int i = 0; i < rules.getLength(); i++) { 175 CSSRule rule = rules.item(i); 176 177 switch (rule.getType()) { 178 case CSSRule.UNKNOWN_RULE: 179 addUnknownRule(node, (CSSUnknownRule) rule); 180 break; 181 case CSSRule.STYLE_RULE: 182 addStyleRule(node, (CSSStyleRule) rule); 183 break; 184 case CSSRule.CHARSET_RULE: 185 addCharsetRule(node, (CSSCharsetRule) rule); 186 break; 187 case CSSRule.IMPORT_RULE: 188 addImportRule(node, (CSSImportRule) rule); 189 break; 190 case CSSRule.MEDIA_RULE: 191 addMediaRule(node, (CSSMediaRule) rule); 192 break; 193 case CSSRule.FONT_FACE_RULE: 194 addFontFaceRule(node, (CSSFontFaceRule) rule); 195 break; 196 case CSSRule.PAGE_RULE: 197 addPageRule(node, (CSSPageRule) rule); 198 break; 199 } 200 } 201 } 202 203 public static TreeModel createStyleSheetTree(CSSStyleSheet stylesheet) { 204 DefaultMutableTreeNode node = createNode("CSSStyleSheet"); 205 TreeModel treeModel = new DefaultTreeModel(node); 206 207 addRuleList(node, stylesheet.getCssRules()); 208 209 return treeModel; 210 } 211 } 212 | Popular Tags |