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

📄 filterbuilder.java

📁 本程序用于对页面信息进行提取并分析
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
// 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/FilterBuilder.java,v $// $Author: derrickoswald $// $Date: 2005/04/12 11:27:42 $// $Revision: 1.5 $//// 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.BorderLayout;import java.awt.Component;import java.awt.Container;import java.awt.Dimension;import java.awt.Event;import java.awt.FileDialog;import java.awt.FlowLayout;import java.awt.Insets;import java.awt.Point;import java.awt.Toolkit;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.ClipboardOwner;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.StringSelection;import java.awt.datatransfer.Transferable;import java.awt.datatransfer.UnsupportedFlavorException;import java.awt.dnd.DnDConstants;import java.awt.dnd.DragGestureEvent;import java.awt.dnd.DragGestureListener;import java.awt.dnd.DragSource;import java.awt.dnd.DragSourceDragEvent;import java.awt.dnd.DragSourceDropEvent;import java.awt.dnd.DragSourceEvent;import java.awt.dnd.DragSourceListener;import java.awt.dnd.DropTarget;import java.awt.dnd.DropTargetContext;import java.awt.dnd.DropTargetDragEvent;import java.awt.dnd.DropTargetDropEvent;import java.awt.dnd.DropTargetEvent;import java.awt.dnd.DropTargetListener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import java.beans.PropertyVetoException;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.LineNumberReader;import java.io.PrintWriter;import java.io.StringWriter;import java.lang.reflect.Method;import java.net.MalformedURLException;import java.net.URL;import java.util.Vector;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JDesktopPane;import javax.swing.JFrame;import javax.swing.JInternalFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPopupMenu;import javax.swing.JScrollPane;import javax.swing.JSeparator;import javax.swing.JSplitPane;import javax.swing.JTextField;//import javax.swing.JTextPane;import javax.swing.JToolBar;import javax.swing.JTree;import javax.swing.KeyStroke;import javax.swing.ScrollPaneConstants;import javax.swing.WindowConstants;import org.htmlparser.Parser;import org.htmlparser.beans.FilterBean;import org.htmlparser.parserapplications.filterbuilder.layouts.NullLayoutManager;import org.htmlparser.util.EncodingChangeException;import org.htmlparser.util.NodeIterator;import org.htmlparser.util.NodeList;import org.htmlparser.util.ParserException;/** * The main program for the FilterBuilder programming system. * <p>ToDo: * <ul> * <li>thread the attribute fetching</li> * <li>CSS selector filter</li> * <li>table row filter</li> * <li>table column filter</li> * <li>trigger filter</li> * <li>undo</li> * <li>handle bad URLs</li> * <li>StringBean type secondary text output</li> * <li>context sensitive menus</li> * </ul> */public class FilterBuilder    extends        JFrame    implements        WindowListener,        ActionListener,        MouseListener,        MouseMotionListener,        DragGestureListener,        DragSourceListener,        DropTargetListener,        ClipboardOwner{    static final String TITLE = "HTML Parser FilterBuilder";    static final URL mDocumentBase;        static    {                String p;        char ps;        URL base;        p = System.getProperty ("user.dir");        // if the system file separator isn't the URL file separator convert it.        try        {            ps = (System.getProperty ("file.separator")).charAt(0);            if ('/' != ps)                p.replace (ps, '/');        }        catch (StringIndexOutOfBoundsException e)        {        }        try        {            base = new URL ("file:///" + p + "/");        }        catch (MalformedURLException murle)        {            base = null;        }        mDocumentBase = base;    }    static String mHomeDir;        static    {        String dir;        File file;        dir = System.getProperty ("user.home")            + System.getProperty ("file.separator")            + ".htmlparser";        file = new File (dir);        if (!file.exists ())            if (!file.mkdirs ()) // make the directory if it doesn't exist                throw new RuntimeException (                    "cannot create directory "                    + file.getAbsolutePath ());        mHomeDir = file.getAbsolutePath ();    }        /**     * The relative position of the mouse while dragging.     */    protected Point mBasePoint;    /**     * Selected commands.     */    protected Vector mSelection;    /**     * If true selection moved.     */    protected boolean mMoved;    /**     * This component is a drop target.     */    protected DropTarget mDropTarget;        /**     * Enables this component to be a Drag Source.     */    protected DragSource mDragSource;    /**     * Kludge: Used by actionPerformed/filterAction to remember the filter menu item.     */    protected Component mCurrentComponent;    /**     * The main panel GUI component.     */    protected JPanel mMainPanel;    /**     * The main panel scrolling GUI component.     */    protected JScrollPane mMainScroller;    /**     * The URL input GUI component.     */    protected JTextField mURLField;    /**     * The output panel GUI component.     */    protected JDesktopPane mOutput;    /**     * Create an FilterBuilder programming environment.     */    public FilterBuilder ()    {        JMenuBar menubar;        JToolBar toolbar;        JMenu menu;        JPanel panel;        JScrollPane pane;        JSplitPane split;        JMenuItem item;        // drag and drop support        mMainPanel = new JPanel ();        mDropTarget = new DropTarget (mMainPanel, this);        mDragSource = new DragSource ();        // menu and toolbar        menubar = new JMenuBar();        toolbar = new JToolBar ();        toolbar.setAlignmentY (0.222222F);        // file menu        menu = new JMenu ();        menu.setText ("File");        menu.setActionCommand ("File");        menu.setMnemonic ((int)'F');        makeMenuButton ("New", "Create a new document", "New", 'N', KeyStroke.getKeyStroke (KeyEvent.VK_N, Event.CTRL_MASK), toolbar, menu);        makeMenuButton ("Open", "Open an existing document", "Open...", 'O', KeyStroke.getKeyStroke (KeyEvent.VK_O, Event.CTRL_MASK), toolbar, menu);        makeMenuButton ("Save", "Save the active document", "Save...", 'S', KeyStroke.getKeyStroke (KeyEvent.VK_S, Event.CTRL_MASK), toolbar, menu);        makeMenuButton ("SaveAs", "Save the active document", "Save As...", 'A', KeyStroke.getKeyStroke (KeyEvent.VK_A, Event.CTRL_MASK), null, menu);        menu.add (new JSeparator ());        makeMenuButton ("Exit", "Exit the program", "Exit", 'E', KeyStroke.getKeyStroke (KeyEvent.VK_E, Event.CTRL_MASK), null, menu);        menubar.add (menu);                toolbar.add(new JToolBar.Separator());        // edit menu        menu = new JMenu ();        menu.setText ("Edit");        menu.setActionCommand ("Edit");        menu.setMnemonic ((int)'E');        makeMenuButton ("Cut", "Cut the selection and put it on the Clipboard", "Cut", 'T', KeyStroke.getKeyStroke (KeyEvent.VK_X, Event.CTRL_MASK), toolbar, menu);        makeMenuButton ("Copy", "Copy the selection and put it on the Clipboard", "Copy", 'C', KeyStroke.getKeyStroke (KeyEvent.VK_C, Event.CTRL_MASK), toolbar, menu);        makeMenuButton ("Paste", "Insert Clipboard contents", "Paste", 'P', KeyStroke.getKeyStroke (KeyEvent.VK_V, Event.CTRL_MASK), toolbar, menu);        makeMenuButton ("Delete", "Delete the selection", "Delete", 'D', KeyStroke.getKeyStroke (KeyEvent.VK_DELETE, 0), toolbar, menu);        menubar.add (menu);        // filter menu        menu = new JMenu ();        menu.setText ("Filter");        menu.setActionCommand ("Filter");        menu.setMnemonic ((int)'F');        menubar.add (menu);        toolbar.add (new JToolBar.Separator());        // filters menu and filters toolbar        addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.AndFilterWrapper");        addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.OrFilterWrapper");        addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.NotFilterWrapper");        menu.addSeparator ();        toolbar.add (new JToolBar.Separator ());        addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.StringFilterWrapper");        addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.RegexFilterWrapper");        addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.TagNameFilterWrapper");        addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.NodeClassFilterWrapper");        addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.HasAttributeFilterWrapper");        menu.addSeparator ();        toolbar.add (new JToolBar.Separator ());        addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.HasParentFilterWrapper");        addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.HasChildFilterWrapper");        addFilter (menu, toolbar, "org.htmlparser.parserapplications.filterbuilder.wrappers.HasSiblingFilterWrapper");        menu.addSeparator ();        toolbar.add (new JToolBar.Separator ());        // operation menu        menu = new JMenu ();        menu.setText ("Operation");        menu.setActionCommand ("Operation");        menu.setMnemonic ((int)'r');        item = new JMenuItem ();        item.setText ("Expand");        item.setActionCommand ("expandAction");        item.addActionListener (this);        menu.add (item);        item = new JMenuItem ();        item.setText ("Collapse");        item.setActionCommand ("collapseAction");        item.addActionListener (this);        menu.add (item);        menu.addSeparator ();        item = new JMenuItem ();        item.setText ("Expand All");        item.setActionCommand ("expandAllAction");        item.addActionListener (this);        menu.add (item);        item = new JMenuItem ();        item.setText ("Collapse All");        item.setActionCommand ("collapseAllAction");        item.addActionListener (this);        menu.add (item);        menu.addSeparator ();        item = new JMenuItem ("Fetch Page");        item.setActionCommand ("fetchAction");        item.addActionListener (this);        menu.add (item);        item = new JMenuItem ("Execute Filter");        item.setActionCommand ("executeAction");        item.addActionListener (this);        menu.add (item);        menubar.add (menu);        // help menu        menu = new JMenu ();        menu.setText ("Help");        menu.setActionCommand ("Help");        menu.setMnemonic ((int)'H');        item = new JMenuItem ("Filtering");        item.setActionCommand ("filteringAction");        item.addActionListener (this);        menu.add (item);        item = new JMenuItem ("Instructions");        item.setActionCommand ("instructionsAction");        item.addActionListener (this);        menu.add (item);        item = new JMenuItem ("Tutorial");        item.setActionCommand ("tutorialAction");        item.addActionListener (this);        menu.add (item);        item = new JMenuItem ("Hints");        item.setActionCommand ("hintsAction");        item.addActionListener (this);        menu.add (item);        makeMenuButton ("About", "Display program information, version number and copyright", "About", 'B', KeyStroke.getKeyStroke (KeyEvent.VK_H, Event.CTRL_MASK), toolbar, menu);        menubar.add (menu);        setJMenuBar (menubar);        // toolbar panel        panel = new JPanel ();        panel.setLayout (new FlowLayout (FlowLayout.LEFT,0,0));

⌨️ 快捷键说明

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