1 27 package org.htmlparser.parserapplications.filterbuilder.wrappers; 28 29 import java.awt.event.ActionEvent ; 30 import java.awt.event.ActionListener ; 31 import java.util.HashSet ; 32 import java.util.Iterator ; 33 import java.util.Set ; 34 35 import javax.swing.JComboBox ; 36 37 import org.htmlparser.Node; 38 import org.htmlparser.NodeFilter; 39 import org.htmlparser.Parser; 40 import org.htmlparser.Tag; 41 import org.htmlparser.filters.TagNameFilter; 42 import org.htmlparser.parserapplications.filterbuilder.Filter; 43 import org.htmlparser.tags.CompositeTag; 44 import org.htmlparser.util.NodeIterator; 45 import org.htmlparser.util.NodeList; 46 import org.htmlparser.util.ParserException; 47 48 51 public class TagNameFilterWrapper 52 extends 53 Filter 54 implements 55 ActionListener 56 { 57 60 protected TagNameFilter mFilter; 61 62 65 protected JComboBox mName; 66 67 70 public TagNameFilterWrapper () 71 { 72 mFilter = new TagNameFilter (); 73 74 mName = new JComboBox (); 76 mName.setEditable (true); 77 add (mName); 78 mName.addItem (mFilter.getName ()); 79 mName.addActionListener (this); 80 } 81 82 86 public String getDescription () 87 { 88 return ("Tag named"); 89 } 90 91 public String getIconSpec () 92 { 93 return ("images/TagNameFilter.gif"); 94 } 95 96 public NodeFilter getNodeFilter () 97 { 98 TagNameFilter ret; 99 100 ret = new TagNameFilter (); 101 ret.setName (mFilter.getName ()); 102 103 return (ret); 104 } 105 106 public void setNodeFilter (NodeFilter filter, Parser context) 107 { 108 Set set; 109 110 mFilter = (TagNameFilter)filter; 111 set = new HashSet (); 112 context.reset (); 113 try 114 { 115 for (NodeIterator iterator = context.elements (); iterator.hasMoreNodes (); ) 116 addName (set, iterator.nextNode ()); 117 } 118 catch (ParserException pe) 119 { 120 } 122 for (Iterator iterator = set.iterator (); iterator.hasNext (); ) 123 mName.addItem (iterator.next ()); 124 mName.setSelectedItem (mFilter.getName ()); 125 } 126 127 public NodeFilter[] getSubNodeFilters () 128 { 129 return (new NodeFilter[0]); 130 } 131 132 public void setSubNodeFilters (NodeFilter[] filters) 133 { 134 } 136 137 public String toJavaCode (StringBuffer out, int[] context) 138 { 139 String ret; 140 141 ret = "filter" + context[1]++; 142 spaces (out, context[0]); 143 out.append ("TagNameFilter "); 144 out.append (ret); 145 out.append (" = new TagNameFilter ();"); 146 newline (out); 147 spaces (out, context[0]); 148 out.append (ret); 149 out.append (".setName (\""); 150 out.append (mFilter.getName ()); 151 out.append ("\");"); 152 newline (out); 153 154 return (ret); 155 } 156 157 protected void addName (Set set, Node node) 158 { 159 NodeList children; 160 161 if (node instanceof Tag) 162 { 163 set.add (((Tag)node).getTagName ()); 164 if (node instanceof CompositeTag) 165 { 166 children = ((CompositeTag)node).getChildren (); 167 if (null != children) 168 for (int i = 0; i < children.size (); i++) 169 addName (set, children.elementAt (i)); 170 } 171 } 172 } 173 177 public boolean accept (Node node) 178 { 179 return (mFilter.accept (node)); 180 } 181 182 186 189 public void actionPerformed (ActionEvent event) 190 { 191 Object source; 192 Object [] selection; 193 194 source = event.getSource (); 195 if (source == mName) 196 { 197 selection = mName.getSelectedObjects (); 198 if ((null != selection) && (0 != selection.length)) 199 mFilter.setName ((String )selection[0]); 200 } 201 } 202 } 203 | Popular Tags |