KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > htmlparser > parserapplications > filterbuilder > wrappers > TagNameFilterWrapper


1 // HTMLParser Library $Name: v1_5_20050313 $ - A java-based parser for HTML
2
// http://sourceforge.org/projects/htmlparser
3
// Copyright (C) 2005 Derrick Oswald
4
//
5
// Revision Control Information
6
//
7
// $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/wrappers/TagNameFilterWrapper.java,v $
8
// $Author: derrickoswald $
9
// $Date: 2005/02/13 20:43:06 $
10
// $Revision: 1.1 $
11
//
12
// This library is free software; you can redistribute it and/or
13
// modify it under the terms of the GNU Lesser General Public
14
// License as published by the Free Software Foundation; either
15
// version 2.1 of the License, or (at your option) any later version.
16
//
17
// This library is distributed in the hope that it will be useful,
18
// but WITHOUT ANY WARRANTY; without even the implied warranty of
19
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
// Lesser General Public License for more details.
21
//
22
// You should have received a copy of the GNU Lesser General Public
23
// License along with this library; if not, write to the Free Software
24
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25
//
26

27 package org.htmlparser.parserapplications.filterbuilder.wrappers;
28
29 import java.awt.event.ActionEvent JavaDoc;
30 import java.awt.event.ActionListener JavaDoc;
31 import java.util.HashSet JavaDoc;
32 import java.util.Iterator JavaDoc;
33 import java.util.Set JavaDoc;
34
35 import javax.swing.JComboBox JavaDoc;
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 /**
49  * Wrapper for TagNameFilters.
50  */

51 public class TagNameFilterWrapper
52     extends
53         Filter
54     implements
55         ActionListener JavaDoc
56 {
57     /**
58      * The underlying filter.
59      */

60     protected TagNameFilter mFilter;
61
62     /**
63      * Combo box for tag name.
64      */

65     protected JComboBox JavaDoc mName;
66
67     /**
68      * Create a wrapper over a new TagNameFilter.
69      */

70     public TagNameFilterWrapper ()
71     {
72         mFilter = new TagNameFilter ();
73
74         // add the tag name choice
75
mName = new JComboBox JavaDoc ();
76         mName.setEditable (true);
77         add (mName);
78         mName.addItem (mFilter.getName ());
79         mName.addActionListener (this);
80     }
81
82     //
83
// Filter overrides and concrete implementations
84
//
85

86     public String JavaDoc getDescription ()
87     {
88         return ("Tag named");
89     }
90
91     public String JavaDoc 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 JavaDoc set;
109
110         mFilter = (TagNameFilter)filter;
111         set = new HashSet JavaDoc ();
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             // oh well, we tried
121
}
122         for (Iterator JavaDoc 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         // should we complain?
135
}
136
137     public String JavaDoc toJavaCode (StringBuffer JavaDoc out, int[] context)
138     {
139         String JavaDoc 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 JavaDoc 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     //
174
// NodeFilter interface
175
//
176

177     public boolean accept (Node node)
178     {
179         return (mFilter.accept (node));
180     }
181
182     //
183
// ActionListener interface
184
//
185

186     /**
187      * Invoked when an action occurs on the combo box.
188      */

189     public void actionPerformed (ActionEvent JavaDoc event)
190     {
191         Object JavaDoc source;
192         Object JavaDoc[] 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 JavaDoc)selection[0]);
200         }
201     }
202 }
203
Popular Tags