/** * Create a wrapper over a new TagNameFilter. */ public TagNameFilterWrapper () { mFilter = new TagNameFilter (); // add the tag name choice mName = new JComboBox (); mName.setEditable (true); add (mName); mName.addItem (mFilter.getName ()); mName.addActionListener (this); }
/** * Get the underlying node filter object. * @return The node filter object suitable for serialization. */ public NodeFilter getNodeFilter () { TagNameFilter ret; ret = new TagNameFilter (); ret.setName (mFilter.getName ()); return (ret); }
/** * Convert this filter into Java code. * Output whatever text necessary and return the variable name. * @param out The output buffer. * @param context Three integers as follows: * <li>indent level - the number of spaces to insert at the beginning of each line</li> * <li>filter number - the next available filter number</li> * <li>filter array number - the next available array of filters number</li> * @return The variable name to use when referencing this filter (usually "filter" + context[1]++) */ public String toJavaCode (StringBuilder out, int[] context) { String ret; ret = "filter" + context[1]++; spaces (out, context[0]); out.append ("TagNameFilter "); out.append (ret); out.append (" = new TagNameFilter ();"); newline (out); spaces (out, context[0]); out.append (ret); out.append (".setName (\""); out.append (mFilter.getName ()); out.append ("\");"); newline (out); return (ret); }
/** * Assign the underlying node filter for this wrapper. * @param filter The filter to wrap. * @param context The parser to use for conditioning this filter. * Some filters need contextual information to provide to the user, * i.e. for tag names or attribute names or values, * so the Parser context is provided. */ public void setNodeFilter (NodeFilter filter, Parser context) { Set set; mFilter = (TagNameFilter)filter; set = new HashSet (); context.reset (); try { for (NodeIterator iterator = context.elements (); iterator.hasMoreNodes (); ) addName (set, iterator.nextNode ()); } catch (ParserException pe) { // oh well, we tried } for (Iterator iterator = set.iterator (); iterator.hasNext (); ) mName.addItem (iterator.next ()); mName.setSelectedItem (mFilter.getName ()); }