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

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

?? jsapplet.java

?? jSearch - turns search Engines into FIND engines - Programming in JAVA Copyright (C) 1999-2009 Hun
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 *   JSearch - turns search Engines into FIND engines - Programming in JAVA
 *   Copyright (C) 1999-2002  Hunt Lin
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *   This program 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 General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 *   Also add information on how to contact you by electronic and paper mail.
 */

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

import java.io.*;
import java.net.*;

import java.util.Hashtable;
import java.util.Vector;
import java.util.Enumeration;

//搜索引擎詳細信息
class EnginesDetails {
	String name;		//搜索引擎名稱
	String category;	//搜索引擎類別
	String srchChain;	//搜索串
	String srchBlkB;  	//信息塊開始
	String srchBlkE;  	//信息塊結束
}

//搜索結果詳細信息
class ResultsDetails {
	String	title;		//主題		
	String	preview;	//預覽
}

public class JSApplet extends Applet {
	
	//公共全局量定義/JSApplet對外的接口
	static Hashtable resultTable	= new Hashtable();	//結果集,包括網址、{主題、預覽},通過網址進行定位
	static Vector    resultIndex	= new Vector();		//結果集,僅包括網址,但可以快速使用elementAt(int)進行定位,并確定網址
	static boolean	 _stop			= false;			//用標志讓線程結束,而不是用stop()!
	static int actualSearchAllowed	= 0;				//實際應打開的線程數,并用于SearchThread的計數器

	//SEARCH
	static TextField containingTf  	= new TextField("");
	static Button findNowBu        	= new Button("");
	static Button stopBu           	= new Button("");
	static Button newSearchBu      	= new Button("");
	//RESULTS
	static List resultLi      		= new List();
	static Label totalNumLa			= new Label("0");
	//PSM
	static TextArea previewTe		= new TextArea("",0,0,TextArea.SCROLLBARS_VERTICAL_ONLY);
	static List statusLi			= new List();
	static TextArea messageTe		= new TextArea();
	//OPTIONS
	static Choice smcCh				= new Choice();
	static Choice smlCh 			= new Choice();
	static Choice smsCh				= new Choice();
	static Choice valurlCh 			= new Choice();
	static Choice languageCh 		= new Choice();
	static Choice webBrowCh 		= new Choice();
	static TextField webBrowPTf		= new TextField();
	
	//定義字體
	Font tabStyleFo			= new Font("Tab Style Font",Font.BOLD,14);
	Font littleFo			= new Font("Little Font",Font.PLAIN,10);
	Font commonFo			= new Font("Common Font",Font.PLAIN,12);

	/*****定義控件*****/
	
	//定義SEARCH區域
	Panel searchPa          = new Panel();
	Label searchTLa         = new Label("");
	Label keyLogicLa        = new Label("");
	Label containingLa      = new Label("");

	//定義RESULTS區域
	Label resultTLa			= new Label("");
	Label titleLa			= new Label("");
	Label urlLa				= new Label("");
	Label totalLa			= new Label("");

	//定義PREVIEW-STATUS-MESSAGES區域
	//PREVIEW
	Label previewTLa		= new Label("");
	//STATUS
	Label statusTLa			= new Label("");
	//MESSAGES
	Label messageTLa		= new Label("");

	//定義ENGINES&OPTIONS&ABOUT區域
	CheckboxGroup eoaCbg 	= new CheckboxGroup(); //ENGINES&OPTIONS&ABOUT
	Panel eoaCards   		= new Panel();
	CardLayout eoaCl 		= new CardLayout();
	//ENGINES
	Checkbox enginesCb 		= new Checkbox("", eoaCbg, true);
	Panel enginesPa  		= new Panel();
	Label categoryLa 		= new Label("");
	List  categoryLi 		= new List();
	Label searchEnginesLa 	= new Label("");
	List  searchEnginesLi 	= new List();
	//OPTIONS
	Checkbox optionsCb 		= new Checkbox("", eoaCbg, false);
	Panel optionsPa  		= new Panel();
	Label smcLa 			= new Label("");
	Label smlLa 			= new Label("");
	Label smsLa				= new Label("");
	Label valurlLa 			= new Label("");
	Label languageLa 		= new Label("");
	Label webBrowLa 		= new Label("");
	Label webBrowPLa 		= new Label("");
	//ABOUT
	Checkbox aboutCb   		= new Checkbox("", eoaCbg, false);
	Panel aboutPa    		= new Panel();
	Label copyingLa 		= new Label("");
	TextArea copyingTe		= new TextArea();
	Label creditsLa 		= new Label("");
	TextArea creditsTe 		= new TextArea();
	
	//存放搜索引擎的信息
	Hashtable		engDataTable;	//搜索引擎信息
	Vector			engDataCateg;	//搜索引擎類別信息
	
	/*****初始化*****/
	
	//JSApplet初始化
	public void init() {
		//取得搜索引擎信息
		engDataTable = getEngData();
		engDataCateg = getEngCateg(engDataTable);

		//設置控件
		controlSetting();
		
		//加入事件監聽器
		//SEARCH
		containingTf.addKeyListener(new ContainingTfKL());
		findNowBu.addActionListener(new FindNowBuAL());
		stopBu.addActionListener(new StopBuAL());
		newSearchBu.addActionListener(new NewSearchBuAL());
		
		//RESULTS
		resultLi.addItemListener(new ResultLiIL());
		resultLi.addActionListener(new ResultLiAL());

		//PREVIEW-STATUS-MESSAGES
		previewTLa.addMouseListener(new PreviewTLaML());
		statusTLa.addMouseListener(new StatusTLaML());
		messageTLa.addMouseListener(new MessageTLaML());
		
		//ENGINES&OPTIONS&ABOUT
		enginesCb.addItemListener(new EnginesCbIL());
		optionsCb.addItemListener(new OptionsCbIL());
		aboutCb.addItemListener(new AboutCbIL());
		//ENGINES
		categoryLi.addItemListener(new CategoryLiIL());   
		//OPTIONS   
		languageCh.addItemListener(new LanguageChIL());
		webBrowCh.addItemListener(new WebBrowChIL());
	}
	
	/*****事件處理*****/
	
	/****SEARCH****/
	
	//containing Textbox Return
	class ContainingTfKL implements KeyListener {
		public void keyTyped(KeyEvent e) {}
		public void keyPressed(KeyEvent e) {
			//按下回車鍵的反應
			if (e.getKeyCode() == e.VK_ENTER) {
				startSearch();
			}
		}
		public void keyReleased(KeyEvent e) {}
	}
	
	//FindNow
	class FindNowBuAL implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			startSearch();
		}
	}
	
	//Stop
	class StopBuAL implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			stopSearch();
		}
	}
	
	//New Search
	class NewSearchBuAL implements ActionListener {	
		public void actionPerformed(ActionEvent e) {
			newSearch();
		}
	}
	
	/****RESULTS****/
	
	//選中ResultLi中的結果條目時的處理,主要是將預覽在PREVIEW中顯示,這是最有可能發生死鎖的地方!
	class ResultLiIL implements ItemListener {
		public void itemStateChanged(ItemEvent e) {
			switchPSM(true, false, false);
			previewTe.setText(((ResultsDetails)(resultTable.get((String)(resultIndex.elementAt(resultLi.getSelectedIndex()))))).preview);
		}
	}
	
	//將ResultLi中的結果條目在瀏覽器中顯示
	class ResultLiAL implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			try {
				Runtime.getRuntime().exec(webBrowPTf.getText().trim() + " " + (String)(resultIndex.elementAt(resultLi.getSelectedIndex())));
			} catch(Exception ex) {
				messageTe.append("Exception: '" + ex.toString() + "' in JSApplet.ResultLiAL.actionPerformed().\n");
			}
		}
	}
	
	/****PREVIEW-STATUS-MESSAGES****/
	
	//當鼠標移過PREVIEW選項卡時
	class PreviewTLaML implements MouseListener {
		public void mouseEntered(MouseEvent e) {
			switchPSM(true, false, false);
		}
		public void mouseExited(MouseEvent e) {}
		public void mouseClicked(MouseEvent e) {}
		public void mousePressed(MouseEvent e) {}
		public void mouseReleased(MouseEvent e) {}
	}
	
	//當鼠標移過STATUS選項卡時
	class StatusTLaML implements MouseListener {
		public void mouseEntered(MouseEvent e) {
			switchPSM(false, true, false);
		}
		public void mouseExited(MouseEvent e) {}
		public void mouseClicked(MouseEvent e) {}
		public void mousePressed(MouseEvent e) {}
		public void mouseReleased(MouseEvent e) {}
	}
	
	//當鼠標移過MESSAGES選項卡時
	class MessageTLaML implements MouseListener {
		public void mouseEntered(MouseEvent e) {
			switchPSM(false, false, true);
		}
		public void mouseExited(MouseEvent e) {}
		public void mouseClicked(MouseEvent e) {}
		public void mousePressed(MouseEvent e) {}
		public void mouseReleased(MouseEvent e) {}
	}
	
	/****ENGINES&OPTIONS&ABOUT****/
	
	//當選擇ENGINES選項卡時
	class EnginesCbIL implements ItemListener {
		public void itemStateChanged(ItemEvent e) {
			if (enginesCb.getState()) {
				eoaCl.show(eoaCards,"engines");
				switchEOA(true, false, false);
			}
		}
	}
	
	//當選擇OPTIONS選項卡時
	class OptionsCbIL implements ItemListener {
		public void itemStateChanged(ItemEvent e) {
			if (optionsCb.getState()) {
				eoaCl.show(eoaCards,"options");
				switchEOA(false, true, false);
			}
		}
	}
	
	//當選擇ABOUT選項卡時
	class AboutCbIL implements ItemListener {
		public void itemStateChanged(ItemEvent e) {
			if (aboutCb.getState()) {
				eoaCl.show(eoaCards,"about");
				switchEOA(false, false, true);
			}
		}
	}

	/***ENGINES***/
	
	//選擇搜索引擎類別
	class CategoryLiIL implements ItemListener {
		public void itemStateChanged(ItemEvent e) {
			categorySelect();
		}
	}
	
	/***OPTIONS***/
	
	//改變語言
	class LanguageChIL implements ItemListener {
		public void itemStateChanged(ItemEvent e) {
			changeLanguage(languageCh.getSelectedIndex());
		}
	}
	
	//改變瀏覽器
	class WebBrowChIL implements ItemListener {
		public void itemStateChanged(ItemEvent e) {
			switch(webBrowCh.getSelectedIndex()) {
			case 0:
				webBrowPTf.setText("c:\\progra~1\\intern~1\\iexplore.exe");
				webBrowPTf.setEditable(false);
				break;
			case 1:
				webBrowPTf.setText("c:\\progra~1\\netscape\\commun~1\\program\\netscape.exe");
				webBrowPTf.setEditable(false);
				break;
			case 2:
				webBrowPTf.setText("/usr/bin/netscape-communicator");
				webBrowPTf.setEditable(false);
				break;
			case 3:
				webBrowPTf.setText("");
				webBrowPTf.setEditable(true);
				break;
			}
		}
	}

	/*****公共方法*****/
	
	//設置按鈕狀態,在init()中使用。
	void controlSetting() {
		
		//設置背景
		setBackground(new Color(6724095));
			
		/*****設置控件*****/
		
		//設置SEARCH區域
		searchTLa.setBounds(6,6,80,20);
		searchTLa.setAlignment(Label.CENTER);
		searchTLa.setFont(tabStyleFo);
		searchTLa.setForeground(Color.yellow);
		searchTLa.setBackground(new Color(3355647));
		searchPa.setBounds(6,26,350,80);
		searchPa.setBackground(Color.cyan);
		containingLa.setBounds(5,6,70,20);
		containingLa.setAlignment(Label.RIGHT);
		containingTf.setBounds(81,6,260,20);
		containingTf.setBackground(Color.white);
		keyLogicLa.setBounds(5,31,335,20);
		keyLogicLa.setAlignment(Label.CENTER);
		keyLogicLa.setForeground(new Color(25600));
		findNowBu.setBounds(6,56,105,20);
		findNowBu.setBackground(new Color(6724095));
		stopBu.setBounds(121,56,105,20);
		stopBu.setBackground(new Color(6724095));
		newSearchBu.setBounds(236,56,105,20);
		newSearchBu.setBackground(new Color(6724095));
			
		//設置RESULTS區域
		resultTLa.setBounds(6,116,80,20);
		resultTLa.setAlignment(Label.CENTER);
		resultTLa.setFont(tabStyleFo);
		resultTLa.setForeground(Color.yellow);
		resultTLa.setBackground(new Color(3355647));
		titleLa.setBounds(6,136,265,20);
		titleLa.setBackground(Color.cyan);
		urlLa.setBounds(272,136,259,20);
		urlLa.setBackground(Color.cyan);
		resultLi.setBounds(6,156,525,240);
		resultLi.setMultipleMode(false);
		totalLa.setBounds(451,116,40,20);
		totalLa.setForeground(new Color(25600));
		totalNumLa.setBounds(491,116,40,20);
		totalNumLa.setForeground(new Color(25600));

		//設置PREVIEW-STATUS-MESSAGES區域
		//PREVIEW
		previewTLa.setBounds(361,6,81,20);
		previewTLa.setAlignment(Label.CENTER);
		previewTLa.setFont(tabStyleFo);
		previewTLa.setForeground(Color.yellow);
		previewTLa.setBackground(new Color(25600));
		previewTe.setBounds(361,26,390,80);
		previewTe.setBackground(Color.white);
		previewTe.setEditable(false);
		//STATUS
		statusTLa.setBounds(449,6,80,20);
		statusTLa.setAlignment(Label.CENTER);
		statusTLa.setFont(tabStyleFo);
		statusTLa.setForeground(Color.yellow);
		statusTLa.setBackground(new Color(25600));
		statusLi.setBounds(361,26,390,80);
		statusLi.setFont(littleFo);
		statusLi.setMultipleMode(false);
		//MESSAGES
		messageTLa.setBounds(536,6,80,20);
		messageTLa.setAlignment(Label.CENTER);
		messageTLa.setFont(tabStyleFo);
		messageTLa.setForeground(Color.yellow);
		messageTLa.setBackground(new Color(3355647));
		messageTe.setBounds(361,26,390,80);
		messageTe.setFont(littleFo);
		messageTe.setBackground(Color.white);
		messageTe.setEditable(false);
			
		//設置ENGINES&OPTIONS&ABOUT區域
		eoaCards.setBounds(536,136,215,260);
		eoaCards.setLayout(eoaCl);
		//ENGINES
		enginesCb.setBounds(536,116,74,20);
		enginesCb.setFont(tabStyleFo);
		enginesCb.setForeground(Color.yellow);
		enginesCb.setBackground(new Color(3355647));
		enginesPa.setBackground(Color.cyan);
		categoryLa.setBounds(8,4,60,15);
		categoryLa.setAlignment(Label.CENTER);
		categoryLa.setBackground(new Color(6724095));
		categoryLi.setBounds(8,19,200,85);
		categoryLi.setMultipleMode(false);
		searchEnginesLa.setBounds(8,108,100,15);
		searchEnginesLa.setAlignment(Label.CENTER);
		searchEnginesLa.setBackground(new Color(6724095));
		searchEnginesLi.setBounds(8,123,200,132);
		searchEnginesLi.setMultipleMode(true);
		//OPTIONS
		optionsCb.setBounds(611,116,74,20);
		optionsCb.setFont(tabStyleFo);
		optionsCb.setForeground(Color.yellow);
		optionsCb.setBackground(new Color(25600));
		optionsPa.setBackground(Color.cyan);
		smcLa.setBounds(8,26,140,20);
		smcCh.setBounds(158,26,50,20);
		for (int c=1;c<=16;c++) smcCh.addItem(String.valueOf(c));
		smcCh.select(getParameter("smcCh"));
		smlLa.setBounds(8,46,140,20);
		smlCh.setBounds(158,46,50,20);
		for (int c=1;c<=10;c++) smlCh.addItem(String.valueOf(c));
		smlCh.select(getParameter("smlCh"));
		smsLa.setBounds(8,66,140,20);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区高清| 亚洲国产高清aⅴ视频| 国产成人免费在线观看不卡| 中文字幕在线不卡一区二区三区| 欧美日产在线观看| 成人sese在线| 美女尤物国产一区| 亚洲国产另类av| 亚洲欧洲国产日韩| 久久久久久久综合日本| 欧美日韩成人一区二区| 色婷婷亚洲综合| 丁香婷婷深情五月亚洲| 久久国产三级精品| 亚洲福利一区二区三区| 一区二区三区中文字幕精品精品 | 日韩欧美国产一区二区在线播放| 91在线无精精品入口| 国产一区二区三区四区在线观看| 天天综合天天综合色| 亚洲裸体在线观看| 国产精品乱人伦中文| 久久久99免费| 久久婷婷综合激情| 欧美一级高清片| 777午夜精品免费视频| 欧美综合亚洲图片综合区| 99v久久综合狠狠综合久久| 国产不卡视频在线观看| 国产永久精品大片wwwapp | 日韩av网站免费在线| 亚洲影院久久精品| 亚洲午夜激情网站| 亚洲综合激情小说| 亚洲最大的成人av| 亚洲国产你懂的| 丝袜亚洲精品中文字幕一区| 亚洲成av人片在www色猫咪| 亚洲精品福利视频网站| 亚洲欧美另类综合偷拍| 亚洲欧美激情小说另类| 亚洲图片欧美色图| 亚洲高清在线视频| 蜜桃视频免费观看一区| 久久精品国产秦先生| 韩国av一区二区| 国产激情一区二区三区| 成人av网站免费观看| 99精品久久99久久久久| 91在线精品一区二区| 色噜噜久久综合| 欧美日韩成人高清| 欧美va亚洲va香蕉在线| 亚洲国产精品av| 亚洲三级在线免费观看| 一区二区免费视频| 青椒成人免费视频| 国精产品一区一区三区mba视频| 国产一区二区三区四区在线观看| 风流少妇一区二区| 91久久香蕉国产日韩欧美9色| 色天使色偷偷av一区二区| 欧美日韩国产天堂| 久久午夜色播影院免费高清| 国产精品亲子伦对白| 亚洲精品乱码久久久久久久久| 亚洲综合在线免费观看| 久久精品国产久精国产| 粉嫩aⅴ一区二区三区四区| 福利91精品一区二区三区| 91在线看国产| 日韩视频一区二区三区 | 国产精品家庭影院| 午夜精品久久久| 国产精品一级在线| 91色porny在线视频| 91超碰这里只有精品国产| 国产亚洲一区二区三区| 亚洲精品中文字幕乱码三区 | 成人伦理片在线| 在线亚洲一区二区| 欧美精品一区二区三区在线播放 | 美日韩一区二区三区| 成人成人成人在线视频| 8x福利精品第一导航| 国产精品久久毛片| 日本欧美一区二区三区乱码| 不卡av免费在线观看| 日韩一区二区在线观看视频| 最新日韩在线视频| 裸体一区二区三区| 色欧美片视频在线观看| 精品国产乱码久久久久久闺蜜| 亚洲男人的天堂在线观看| 蜜桃视频一区二区三区| 色999日韩国产欧美一区二区| 精品国产一区二区三区久久影院| 亚洲免费av观看| 国产精品自拍一区| 欧美日韩激情一区| 亚洲精品午夜久久久| 国产另类ts人妖一区二区| 欧美日韩国产电影| 夜夜夜精品看看| 成人免费的视频| 欧美zozozo| 秋霞电影一区二区| 在线观看一区不卡| 亚洲欧洲三级电影| 高清不卡一区二区| 国产亚洲精品精华液| 午夜成人免费电影| 91精彩视频在线观看| 国产欧美精品在线观看| 伦理电影国产精品| 制服丝袜亚洲色图| 亚洲福利视频一区| 色成年激情久久综合| 中文字幕亚洲在| 成人av电影免费观看| 久久精品男人天堂av| 精品综合久久久久久8888| 欧美精品自拍偷拍动漫精品| 一区二区三区久久| 色婷婷精品久久二区二区蜜臀av| 欧美激情一区二区三区全黄| 国产一区二区三区不卡在线观看| 日韩欧美国产小视频| 日韩黄色免费网站| 欧美高清激情brazzers| 亚洲h动漫在线| 欧美一区二区三区免费观看视频 | 国产尤物一区二区| 久久久久久久久久久久久久久99 | 丁香天五香天堂综合| 久久精品免费在线观看| 国产成人av电影在线观看| 精品美女一区二区| 韩日av一区二区| 久久久国产精品不卡| 国产成人精品免费视频网站| 国产女同性恋一区二区| 成人小视频免费观看| 自拍偷拍亚洲欧美日韩| 一本在线高清不卡dvd| 亚洲午夜精品17c| 91精品欧美综合在线观看最新| 偷拍日韩校园综合在线| 日韩欧美专区在线| 国产成人综合网| 中文字幕制服丝袜一区二区三区| 99国产精品一区| 婷婷中文字幕综合| 精品福利二区三区| 国产 日韩 欧美大片| 亚洲激情网站免费观看| 欧美日本国产一区| 精品一区二区三区香蕉蜜桃| 久久久国际精品| 色八戒一区二区三区| 日韩在线卡一卡二| 2023国产精华国产精品| 99视频有精品| 亚洲福中文字幕伊人影院| 精品日韩在线一区| 99久久国产综合精品麻豆| 亚洲国产一区二区a毛片| 日韩欧美亚洲另类制服综合在线| 高清在线成人网| 亚洲6080在线| 久久久久九九视频| 色婷婷综合视频在线观看| 麻豆国产精品777777在线| 中文字幕第一区第二区| 91成人在线免费观看| 精品亚洲免费视频| 亚洲激情五月婷婷| 久久综合中文字幕| 91蜜桃在线观看| 久久9热精品视频| 亚洲免费色视频| 精品电影一区二区| 在线免费一区三区| 国产剧情在线观看一区二区| 亚洲精品国产a久久久久久 | 国产片一区二区| 欧美日韩亚洲综合在线| 国产激情一区二区三区四区 | 日本中文字幕一区二区视频 | 成人97人人超碰人人99| 日韩电影一区二区三区四区| 国产欧美日韩精品一区| 宅男在线国产精品| 91亚洲男人天堂| 国产一区二区不卡| 天天综合色天天| 亚洲视频香蕉人妖| 国产亚洲精久久久久久| 69精品人人人人| 99在线热播精品免费|