⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subfilterlist.java

📁 本程序用于对页面信息进行提取并分析
💻 JAVA
字号:
// HTMLParser Library $Name: v1_6_20060319 $ - A java-based parser for HTML// http://sourceforge.org/projects/htmlparser// Copyright (C) 2005 Derrick Oswald//// Revision Control Information//// $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/SubFilterList.java,v $// $Author: derrickoswald $// $Date: 2005/04/12 11:27:42 $// $Revision: 1.3 $//// This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.//// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA//package org.htmlparser.parserapplications.filterbuilder;import java.awt.*;import javax.swing.*;import javax.swing.border.*;import org.htmlparser.NodeFilter;import org.htmlparser.parserapplications.filterbuilder.layouts.VerticalLayoutManager;/** * A helper class for lists of filters within filters. */public class SubFilterList    extends        JPanel{    /**     * Padding for the drop target.     */    protected int mExtra = 25; // for now    /**     * The drop target spacer at the bottom of the list.     */    protected Component mSpacer;    /**     * The parent filter wrapper.     */    protected Filter mHome;    /**     * The textual title for the list.     */    protected String mTitle;    /**     * The number of filters limit.     */    protected int mMax;    /**     * Creates a container panel.     * Set the panel minimum size to the same width as the container     * but with a bit of extra length.     * @param home The filter we belong to.     * @param title The border title.     * @param max The maximum number of filters in the list (0 for no limit).     */    public SubFilterList (Filter home, String title, int max)    {        mHome = home;        mTitle = title;        mMax = max;        // not quite:        // new BoxLayout (this, BoxLayout.Y_AXIS));        setLayout (new VerticalLayoutManager ());	    addSpacer ();	    setSelected (false);    }    /**     * Set the 'selected look' for the component.     * @param selected If <code>true</code>, 'select' this component,     * otherwise 'deselect' it.     */    public void setSelected (boolean selected)    {        if (selected)    	    setBorder (    		        new CompoundBorder (    		            new TitledBorder (    		                null,    		                mTitle,    	                    TitledBorder.LEFT,    	                    TitledBorder.TOP),    	                    new CompoundBorder (	                            new LineBorder (Color.green, 2),	                            new EmptyBorder (1, 1, 1, 1))));        else    	    setBorder (    		        new CompoundBorder (    		            new TitledBorder (    		                null,    		                mTitle,    	                    TitledBorder.LEFT,    	                    TitledBorder.TOP),    	                new EmptyBorder (3,3,3,3)));    }    /**     * Stuff a spacer component at the end of the list.     */    protected void addSpacer ()    {        Dimension dimension;        Insets insets;                // set the command area size by adding a rigid area        dimension = mHome.getSize ();        insets = mHome.getInsets ();        // todo: this should resize with the container        dimension.setSize (dimension.width - insets.left - insets.right, mExtra);        mSpacer = Box.createRigidArea (dimension);        add (mSpacer);    }    /**     * Remove the spacer component at the end of the list.     */    protected void removeSpacer ()    {        remove (mSpacer);        mSpacer = null;    }    /**     * Get the components in which to drop commands.     * @return The component to act as a drop target.     */    public Component[] getDropTargets ()    {        return (new Component[] { this });    }    /**     * Add a filter to the container contents.     * @param filter The command to add to the container.     */    public void addFilter (Filter filter)    {        int count;                count = getComponentCount ();        if (null != mSpacer)            count--; // insert before the spacer        addFilter (filter, count);    }    /**     * Add a filter to the container at a specific position.     * @param filter The filter to add to the container.     * @param index The index at which to add it.     */    public void addFilter (Filter filter, int index)    {        NodeFilter[] before;        NodeFilter[] after;        int offset;        add (filter, index);        before = mHome.getSubNodeFilters ();        after = new NodeFilter[before.length + 1];        offset = 0;        for (int i = 0; i < after.length; i++)            after[i] = (i == index) ? filter : before[offset++];        mHome.setSubNodeFilters (after);        if ((null != mSpacer) && (0 != mMax) && (after.length >= mMax))            removeSpacer ();    }            /**     * Remove a filter from the container.     * @param filter The filter to remove from the container.     */    public void removeFilter (Filter filter)    {        Filter[] filters;        int index;                filters = getFilters ();        index = -1;        for (int i = 0; ((-1 == index) && (i < filters.length)); i++)            if (filter == filters[i])                index = i;        if (-1 != index)            removeFilter (index);    }    /**     * Remove a filter from the container.     * @param index The index of the filter to remove from the container.     */    public void removeFilter (int index)    {        NodeFilter[] before;        NodeFilter[] after;        int offset;        remove (index);        before = mHome.getSubNodeFilters ();        if (0 != before.length)        {	        after = new NodeFilter[before.length - 1];	        offset = 0;	        for (int i = 0; i < before.length; i++)	            if (i != index)	                after[offset++] = before[i];	        mHome.setSubNodeFilters (after);	        if ((null == mSpacer) && (0 != mMax) && (after.length < mMax))	            addSpacer ();        }    }    /**     * Return the list of filters in this container.     * @return The list of contained filters.     */    public Filter[] getFilters ()    {        NodeFilter[] list;        Filter[] ret;        list = mHome.getSubNodeFilters ();        ret = new Filter[list.length];        System.arraycopy (list, 0, ret, 0, list.length);        return (ret);    }    /**     * Check if our maximum number of filters limit has been reached.     * @return <code>true</code> if the sublist can accept one more filter,     * <code>false</code> otherwise.     */    public boolean canAccept ()    {        int count;        boolean ret;        if (0 == mMax)            ret = true;        else        {	        count = getComponentCount ();	        if (null != mSpacer)	            count--;	        ret = count < mMax;        }        return (ret);    }    /**     * Get the bytes for this command as a String.     * @param indent The number of spaces to indent a block.     * @param level The current indentation level.     * The first non-whitespace character should be at     * indented <code>indent</code> * <code>level</code> spaces.     * @return The string representing this command.     */    public String toString (int indent, int level)    {        Filter[] filters;        StringBuffer ret;                ret = new StringBuffer ();        filters = getFilters ();        for (int i = 0; i < filters.length; i++)        {            ret.append (filters[i].toString ());            if (i + 1 != filters.length)                ret.append ("\n");        }                return (ret.toString ());    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -