亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? viewmanager.java

?? 用來為垂直搜索引擎抓取數據的采集系統
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * *****************************************************
 * Copyright (c) 2005 IIM Lab. All  Rights Reserved.
 * Created by xuehao at 2005-10-12
 * Contact: zxuehao@mail.ustc.edu.cn
 * *****************************************************
 */

package org.indigo.gui;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.table.DefaultTableModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeSelectionModel;

import org.indigo.commands.CompositeCommand;
import org.indigo.commands.RawCommand;
import org.indigo.gui.actions.AddressKeyAction;
import org.indigo.gui.actions.TabPopupAction;
import org.indigo.gui.actions.TableAction;
import org.indigo.gui.actions.TreePopupAction;
import org.indigo.gui.actions.RunAction;
import org.indigo.gui.actions.WebBrowserButtonAction;
import org.indigo.util.TaskProperties;
import org.jdesktop.jdic.browser.WebBrowser;
import org.jdesktop.jdic.browser.WebBrowserEvent;
import org.jdesktop.jdic.browser.WebBrowserListener;

/**
 * 負責整個可視化界面的
 * 管理工作,如一個標簽的插入,另一個標簽的刪除等。
 * @author wbz
 *
 */
public class ViewManager
{
    private static ViewManager itsInstance=new ViewManager();
    
    private JPanel itsMainPanel=null;
    private JTabbedPane itsTabbedPane=null;

    private HashMap itsTableMap=null;
    private JTable itsTable=null;
    
//    private HashMap itsTableModelMap=null;
//    private DefaultTableModel itsTableModel=null;

    private JTree itsTree=null;
  
//    private DefaultTreeModel itsTreeModel=null;
    private DefaultMutableTreeNode itsRoot=null;
    
    private  WebBrowser itsWebBrowser=null;

    private HashMap itsProcessMap=null;
    /**
     * 構造函數,負責初始化
     * 如一個JTabbedPane實例的初始化。
     *
     */
    private ViewManager()
    {
        itsTableMap = new HashMap();
        itsProcessMap = new HashMap();
        itsTabbedPane = new JTabbedPane();
//        itsRoot = new DefaultMutableTreeNode("抓取規則集合");
//        itsTreeModel = new DefaultTreeModel( itsRoot );
    }
    /**
     * 利用了單例模式,使整個采集程序運行期間
     * 只有一個ViewManager實例存在。
     * @return
     */
    public static ViewManager getInstance()
    {
        return itsInstance;
    }
    /**
     * itsProcessMap存放標簽的顯示記錄,
     * 如果該標簽在界面中顯示時則在itsProcessMap中存放
     *  itsProcessMap.put( key, new Boolean(val) );
     *  通過getProcessMap可以獲得,標簽的顯示記錄。
     * @return
     */
    public HashMap getProcessMap()
    {
        return itsProcessMap;
    }
    /**
     * 通過key值檢驗指定名的標簽是否已經存在
     * 如果存在返回true
     * 否則false
     * @param key
     * @return
     */
    public boolean checkInTab( String key )
    {
        int i;
        i = key.lastIndexOf( "/" );
        if( i!=-1 )
            key = key.substring( i+1 ); 
        Boolean val=null;
        val = (Boolean) itsProcessMap.get( key );
        if( val==null )
            return false;
        else
            return true;
    }
    /**
     * 把指定的標簽送入主界面中顯示,
     * @param key
     * @param val
     */
    public void putInTab( String key, boolean val )
    {
//        System.out.println( "macro_put key="+key );
        
        String file = "./taskconfig/" + key + ".task";
        
        TaskProperties props = new TaskProperties();
        props.open( file );
        boolean bComp=false;
        String str = props.getProperty( "Nested" );
        if( str==null )
            bComp = false;
        else
        if(  str.equalsIgnoreCase("true")  )
            bComp = true;
        else
            bComp = false;
        
        if( !bComp )
        {
            int i1,j1;
            i1 = file.lastIndexOf( "/" );
            j1 = file.lastIndexOf( "." );
            if( !(i1==-1) && !(j1==-1) )
                key = file.substring( i1+1, j1 );
            
            itsProcessMap.put( key, new Boolean(val) );
//            System.out.println( " real_put1 key="+key );
        }else
        {
            String taskName;
            int taskCount,i;
            taskCount = Integer.parseInt( props.getProperty( "TaskCount" ) );
            for( i=0; i<taskCount; i++ )
            {
                taskName = props.getProperty( "Task"+(i+1) );
                TaskProperties props2 = new TaskProperties();
                props2.open( taskName );
                bComp = props2.getProperty( "Nested" ).equalsIgnoreCase("true");
                if( !bComp )
                {
                    int i1,j1;
                    i1 = taskName.lastIndexOf( "/" );
                    j1 = taskName.lastIndexOf( "." );
                    key = taskName.substring( i1+1, j1 );
                    itsProcessMap.put( key, new Boolean(val) );
//                    System.out.println( " real_put2 key="+key );
                }else
                {
                    String subTaskName;
                    boolean bComp3=false;
                    TaskProperties props3 = new TaskProperties();
                    props3.open( taskName );
                    int count=0;
                    count = Integer.parseInt( props.getProperty( "TaskCount" ) );
                    for( int j=0; j<count; j++ )
                    {
                        subTaskName = props.getProperty( "Task"+(i+1) );
//                        System.out.println( "here1>>>"+subTaskName );
                        int subi,subj;
                        String str3="taskconfig/";
                        subi = subTaskName.indexOf( str3 );
                        subj = subTaskName.lastIndexOf( "." );
                        subTaskName = subTaskName.substring( subi+str3.length(), subj );
//                        System.out.println( "here2>>>"+subTaskName );
                        putInTab( subTaskName, val );
                    }
                }
            }        
        }
    }
    /**
     * 根據標簽名,移除指定標簽。
     * @param key
     */
    public void removeInTab( String key )
    {
        System.out.println( " real_remove key="+key );
        itsProcessMap.remove( key );
    }
    /**
     * 獲取放置標簽的面板。
     * @return
     */
    public JTabbedPane getTabbedPane()
    {
        return itsTabbedPane;
    }
    /**
     * 獲取在主界面左側的結構樹。
     * @return
     */
    public JTree getTree()
    {
        return itsTree;
    }
    /**
     * 獲取含有指定標題的表格。
     * @param title
     * @return
     */
    public JTable getTable( String title )
    {
//        System.out.println( "will get="+title );
      
        itsTable = (JTable) itsTableMap.get( title );
        return itsTable;
    }
    /**
     * 獲取樹的根目錄。
     * @return
     */
    public DefaultMutableTreeNode getTreeRoot()
    {
        return itsRoot;
    }
    /**
     * 獲取選定的結點
     * @return
     */
    public String getTreeSelectNode()
    {
        String file=null;

        return file;
    }
    /**
     * 獲取指定索引的標簽。
     * @param index
     */
    public void removeTabbedPane( int index )
    {
        if( index< ViewManager.getInstance().getTabbedPane().getTabCount() )
            ViewManager.getInstance().getTabbedPane().remove( index );
    }
    private TableAction itsTableAction=new TableAction();
    /**
     * 當啟動一個任務時,此函數用于根據指定的任務名,生成一個用于顯示此任務所采集到數據的
     * 表格,然后添加到主界面中。
     * @param tabName
     */
    public void addTabbedPane( String tabName )
    {
        JTable table=null;
        table = new JTable();
        
        table.addMouseListener( itsTableAction );
        
        DefaultTableModel model = new DefaultTableModel();
//        System.out.println( "will put="+tabName );
        itsTableMap.put( tabName, table );
        table.setModel( model );
        table.setPreferredScrollableViewportSize(new Dimension(500, 70));

        JScrollPane scrollPane = new JScrollPane( table );
        scrollPane.setBounds( 0, 0, 400, 400 );
        
        ViewManager.getInstance().getTabbedPane().add( tabName, scrollPane );
    }
    /**
     * 獲取table指定的表格的指定的行和列的數據。
     * @param table
     * @param row
     * @param col
     * @return
     */
    public String getTableDetail( JTable table, int row, int col )
    {
        int rowCnt, colCnt;
        rowCnt = table.getRowCount();
        colCnt = table.getColumnCount();
        
        if( row>rowCnt || col>colCnt || row<0 || col<0 )
            return null;
        
        String str;
        str = table.getModel().getValueAt( row, col ).toString();
        return str;
    }
    public JButton getGoButton()
    {
        return itsGo;
    }
    public JButton getBackButton()
    {
        return itsBack;
    }
    public JButton getForwardButton()
    {
        return itsForward;
    }
    public JButton getStopButton()
    {
        return itsStop;
    }
    public JButton getSourceButton()
    {
        return itsSource;
    }
    public JButton getHomeButton()
    {
        return itsHome;
    }
    public JTextField getWebAddressField()
    {
        return itsField;
    }
    private JButton itsGo=null,itsBack=null,itsForward=null,itsStop=null,itsSource=null;
    private JButton itsHome=null;
    private JTextField itsField=null;

    public void addDefaultPane( String tabName )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天堂av在线一区| 亚洲综合一区二区三区| 欧美一区二区三区在线看| 在线一区二区三区做爰视频网站| 成人性视频免费网站| 成人精品高清在线| av激情成人网| 欧美最猛性xxxxx直播| 欧美午夜精品久久久久久超碰| 色综合久久综合网| 欧美主播一区二区三区美女| 欧洲精品一区二区| 5566中文字幕一区二区电影| 欧美一区二区三区精品| 日韩精品一区二区三区蜜臀| 久久久久久久久蜜桃| 亚洲国产岛国毛片在线| 成人免费视频在线观看| 亚洲国产综合色| 久久国产尿小便嘘嘘| 国产白丝精品91爽爽久久| aaa欧美日韩| 欧美群妇大交群的观看方式| 欧美成人女星排名| 国产精品污网站| 日韩精品福利网| 国产风韵犹存在线视精品| 91欧美一区二区| 日韩一级片在线观看| 亚洲第一精品在线| 韩国av一区二区三区在线观看| 国产精品小仙女| 精品视频免费在线| 久久久精品免费免费| 一区二区三区免费在线观看| 秋霞电影一区二区| 99久久精品国产一区二区三区| 欧美日韩国产中文| 中文一区一区三区高中清不卡| 亚洲国产精品自拍| 国产成人av自拍| 9191久久久久久久久久久| 国产精品伦一区二区三级视频| 亚洲综合小说图片| 国产不卡高清在线观看视频| 欧美日韩激情在线| 亚洲视频资源在线| 国产精品18久久久久久久网站| 日本韩国一区二区| 亚洲国产精品二十页| 日韩福利电影在线观看| 91麻豆免费看片| 欧美国产禁国产网站cc| 麻豆精品视频在线观看免费| 91成人在线免费观看| 欧美韩日一区二区三区| 精品一区二区三区免费观看| 欧美日韩电影在线| 一区二区三区四区在线| 成人av资源站| 亚洲国产精品99久久久久久久久 | 蜜桃精品视频在线| 欧美蜜桃一区二区三区| 亚洲精品视频观看| 不卡一区中文字幕| 国产精品国产精品国产专区不片| 捆绑紧缚一区二区三区视频| 欧美日韩视频在线第一区 | 欧美国产精品专区| 国产在线不卡视频| 精品88久久久久88久久久| 免费看欧美女人艹b| 337p亚洲精品色噜噜狠狠| 亚洲国产精品麻豆| 欧美日韩视频一区二区| 亚洲综合色区另类av| 色88888久久久久久影院按摩 | 欧美精品三级在线观看| 亚洲高清不卡在线| 911国产精品| 另类小说视频一区二区| 久久亚洲综合色一区二区三区| 麻豆91小视频| 久久综合九色综合欧美98| 国产精品一卡二卡| 国产精品不卡一区| 欧美性色欧美a在线播放| 午夜婷婷国产麻豆精品| 日韩午夜激情视频| 粉嫩欧美一区二区三区高清影视| 久久先锋影音av鲁色资源网| 国产91综合一区在线观看| 亚洲人午夜精品天堂一二香蕉| 9l国产精品久久久久麻豆| 亚洲国产成人精品视频| 欧美一级夜夜爽| 国产成人a级片| 亚洲精品免费播放| 欧美白人最猛性xxxxx69交| 国产高清不卡一区| 亚洲一区二区三区四区五区黄| 777午夜精品视频在线播放| 国产一区二区福利视频| 亚洲精品高清视频在线观看| 91精品国产入口在线| 国产精品资源站在线| 夜夜精品视频一区二区| 精品国免费一区二区三区| 不卡av电影在线播放| 日韩精品电影在线| 中文字幕在线观看不卡视频| 欧美高清性hdvideosex| 粉嫩在线一区二区三区视频| 亚洲1区2区3区视频| 国产女人水真多18毛片18精品视频| 99国产精品99久久久久久| 美脚の诱脚舐め脚责91| 亚洲色图欧美在线| 久久精品人人爽人人爽| 欧美猛男超大videosgay| 成人午夜碰碰视频| 麻豆91精品91久久久的内涵| 亚洲精品一卡二卡| 久久影院电视剧免费观看| 欧美性感一类影片在线播放| 成人免费观看av| 久久精品国产77777蜜臀| 亚洲卡通欧美制服中文| 欧美韩日一区二区三区四区| 日韩一二三区视频| 欧美亚洲综合在线| 91无套直看片红桃| 国产成人av一区| 久久99国产精品尤物| 日本不卡一区二区三区高清视频| 亚洲精品老司机| 日韩一区在线看| 亚洲少妇中出一区| 国产精品国产精品国产专区不蜜| 久久久五月婷婷| 久久品道一品道久久精品| 日韩欧美资源站| 欧美一级国产精品| 日韩精品中午字幕| 精品国产电影一区二区| 午夜成人免费电影| 欧美巨大另类极品videosbest | 亚洲美女精品一区| 亚洲同性gay激情无套| 欧美激情综合网| 欧美国产综合一区二区| 国产午夜亚洲精品不卡| 久久久久综合网| 久久精品一区二区三区不卡 | 亚洲免费三区一区二区| 国产精品毛片a∨一区二区三区| 久久一区二区三区四区| 久久亚洲二区三区| 国产精品视频yy9299一区| 国产精品毛片久久久久久| 亚洲天堂av老司机| 一区二区高清视频在线观看| 一区二区不卡在线播放| 亚洲成人av一区| 蜜臀av在线播放一区二区三区| 久99久精品视频免费观看| 黄色日韩三级电影| 成人免费视频视频在线观看免费| 成人丝袜18视频在线观看| 91影院在线观看| 在线观看91视频| 精品剧情v国产在线观看在线| 精品欧美一区二区三区精品久久| 精品国产不卡一区二区三区| 国产人久久人人人人爽| 亚洲免费在线观看视频| 免费观看久久久4p| 成人国产电影网| 欧美日韩不卡一区| 国产欧美一区二区精品婷婷| 亚洲精品国产精华液| 视频一区中文字幕国产| 国产v日产∨综合v精品视频| 欧美专区日韩专区| 国产日产精品1区| 亚洲成人www| 99国产一区二区三精品乱码| 欧美日韩卡一卡二| 国产精品第一页第二页第三页| 亚洲午夜久久久久中文字幕久| 麻豆freexxxx性91精品| 91美女福利视频| 日韩欧美一二三区| 亚洲午夜精品17c| 成人在线视频一区| 精品久久五月天| 一区二区三区国产精品| 国产a区久久久| 日韩女同互慰一区二区| 亚洲国产综合91精品麻豆|