亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产农村妇女毛片精品久久麻豆 | 99精品热视频| 亚洲少妇屁股交4| 国产欧美一区视频| wwwwxxxxx欧美| 26uuu国产一区二区三区| 日韩欧美国产小视频| 欧美一区二区精品在线| 欧美成人国产一区二区| 精品欧美一区二区在线观看| 精品电影一区二区| 国产午夜精品久久久久久免费视 | 91免费看`日韩一区二区| 成人免费视频视频| 色噜噜狠狠色综合欧洲selulu| 波多野结衣在线aⅴ中文字幕不卡| 不卡的电影网站| 欧美熟乱第一页| 日韩欧美亚洲一区二区| 2023国产精华国产精品| 欧美国产禁国产网站cc| 一区二区三区四区亚洲| 视频一区中文字幕| 国产99久久久国产精品潘金 | 日韩一级完整毛片| 精品区一区二区| 亚洲色图视频网站| 久久精品国产99久久6| 国产一区二区三区精品视频| 99在线精品一区二区三区| 在线成人免费观看| 欧美激情综合五月色丁香小说| 亚洲视频一区二区在线| 蜜臀av性久久久久蜜臀aⅴ流畅 | www.色精品| 欧美亚洲动漫另类| 日韩欧美激情一区| 亚洲天天做日日做天天谢日日欢| 日本欧美一区二区三区| 99久久99久久久精品齐齐| 91精品婷婷国产综合久久 | 三级影片在线观看欧美日韩一区二区 | 国产精品久99| 麻豆精品久久精品色综合| 99精品国产99久久久久久白柏| 欧美一区二区精品| 亚洲高清中文字幕| 91女厕偷拍女厕偷拍高清| 精品国产一区二区精华| 亚洲国产精品天堂| 91在线视频在线| 久久精品综合网| 久久综合综合久久综合| 欧美午夜影院一区| 自拍偷拍国产精品| 国产麻豆欧美日韩一区| 欧美一区二区三区在线看| 一级精品视频在线观看宜春院| 丁香婷婷综合网| 精品精品国产高清a毛片牛牛| 亚洲国产一区二区视频| 99久久er热在这里只有精品66| 国产欧美日韩中文久久| 麻豆91在线观看| 91精品国产综合久久久久久久| 一区二区成人在线视频| 91首页免费视频| 亚洲欧美一区二区三区极速播放 | 奇米综合一区二区三区精品视频| 色综合久久综合网| 亚洲图片激情小说| 色国产综合视频| 亚洲乱码国产乱码精品精小说| 成人av手机在线观看| 国产亲近乱来精品视频| 成人av影视在线观看| 国产精品麻豆久久久| 成人黄色大片在线观看| 中文字幕一区二区在线播放| 不卡av在线免费观看| 国产精品你懂的| 色婷婷国产精品| 亚洲一区免费在线观看| 欧美猛男gaygay网站| 天天操天天干天天综合网| 欧美精品久久久久久久多人混战| 五月天久久比比资源色| 日韩欧美另类在线| 国产乱码字幕精品高清av| 久久久激情视频| 不卡一二三区首页| 一区二区三区小说| 欧美xxx久久| 成人国产一区二区三区精品| 亚洲美女免费视频| 欧美日韩国产首页| 韩国一区二区三区| 日韩美女视频19| 欧美精品99久久久**| 精品夜夜嗨av一区二区三区| 国产片一区二区| 欧美日韩国产电影| 国产在线播放一区| 亚洲人一二三区| 日韩无一区二区| av男人天堂一区| 秋霞国产午夜精品免费视频| 欧美国产精品中文字幕| 欧美高清激情brazzers| 国产成人av电影在线| 性做久久久久久久免费看| xnxx国产精品| 欧美日韩激情一区二区三区| 国产精品一区二区久激情瑜伽 | 成人午夜视频福利| 日韩精品亚洲专区| 自拍偷自拍亚洲精品播放| 欧美xxxx在线观看| 欧美日韩国产首页| 91色.com| 国产高清不卡一区二区| 午夜欧美电影在线观看| 亚洲日本青草视频在线怡红院| 久久人人97超碰com| 欧美高清激情brazzers| 色综合久久99| 不卡一区在线观看| 国产一区视频导航| 日韩精品1区2区3区| 亚洲一区二区视频| 最近中文字幕一区二区三区| 2020国产精品| www国产亚洲精品久久麻豆| 欧美精品成人一区二区三区四区| 成人动漫一区二区三区| 久久精品国产精品亚洲精品| 婷婷久久综合九色综合绿巨人| 国产女同互慰高潮91漫画| 这里是久久伊人| 色呦呦一区二区三区| 99这里只有久久精品视频| 久草中文综合在线| 亚洲大片精品永久免费| 中文字幕不卡在线| 中文字幕免费在线观看视频一区| 欧美二区乱c少妇| 一本大道av伊人久久综合| 国产精品资源站在线| 国产剧情一区二区三区| 五月天激情小说综合| 亚洲精品中文在线观看| 国产精品伦理一区二区| 亚洲天堂久久久久久久| 欧美激情一区在线观看| 精品播放一区二区| 91精品久久久久久久91蜜桃| 欧美一区二区三区影视| 在线视频一区二区三| 成人av手机在线观看| 国产美女视频91| 麻豆精品久久精品色综合| 首页国产丝袜综合| 亚洲午夜精品网| 亚洲国产视频网站| 亚洲国产日韩a在线播放性色| 一级精品视频在线观看宜春院 | 色噜噜狠狠色综合中国| 成人精品小蝌蚪| 99久久免费精品| 一本久道中文字幕精品亚洲嫩| 欧美日韩国产美女| 欧美日本在线一区| 7777精品伊人久久久大香线蕉| 欧美日本视频在线| 欧美年轻男男videosbes| 欧美日韩成人综合天天影院| 欧美电影影音先锋| 久久影院午夜论| 亚洲精品国产无天堂网2021| 一区二区三区久久| 午夜精品久久久| 精品在线播放免费| 日本电影欧美片| 欧美高清视频不卡网| 精品国产免费视频| 综合电影一区二区三区 | 欧美一区二区福利视频| 日韩精品一区二| 亚洲精品免费看| 亚洲成av人片一区二区梦乃| 日本欧美一区二区三区乱码 | 欧美一卡二卡三卡四卡| 精品免费国产一区二区三区四区| 欧美日韩www| 国产欧美综合色| 手机精品视频在线观看| 国产老肥熟一区二区三区| 4hu四虎永久在线影院成人| 26uuu欧美| 国产一区二区三区免费看|