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

📄 xhistoryfinder.java

📁 XBrowser是一个完全免费并且开源的Web浏览器
💻 JAVA
字号:
/****************************************************************
*              XBrowser  -  eXtended web Browser                *
*                                                               *
*           Copyright (c) 2000-2001  Armond Avanes              *
*     Refer to ReadMe & License files for more information      *
*                                                               *
*                                                               *
*                      By: Armond Avanes                        *
*       Armond555@yahoo.com     &    Armond333@yahoo.com        *
*                http://xbrowser.sourceforge.net/               *
*****************************************************************/
package xbrowser.history;

import java.util.*;

import xbrowser.*;
import xbrowser.history.event.*;

public class XHistoryFinder implements XHistoryListener
{
	public XHistoryFinder()
	{
		XRepository.getHistoryManager().addHistoryListener(this);
	}

	public void historyAdded(XHistoryData history_data)
	{
		checkHistoryData(history_data);
	}

	public void historyRemoved(XHistoryData history_data)
	{
		if( doesFitInCriteria(history_data) )
		{
		Iterator it = historyListeners.iterator();

			while( it.hasNext() )
				((XHistoryListener)it.next()).historyRemoved(history_data);
		}
	}

	public void historyCleaned()
	{
	Iterator it = historyListeners.iterator();

		while( it.hasNext() )
			((XHistoryListener)it.next()).historyCleaned();
	}

	public void setFindPhrase(String find_phrase)
	{
		findPhrase = find_phrase;
	}

	public void setSearchUrls(boolean search_urls)
	{
		searchUrls = search_urls;
	}

	public void setSearchTitles(boolean search_titles)
	{
		searchTitles = search_titles;
	}

	public void setMatchCase(boolean match_case)
	{
		matchCase = match_case;
	}

	public void setSearchVisitDate(boolean search_visit_date)
	{
		searchVisitDate = search_visit_date;
	}

	public void setVisitDate1(Date visit_date)
	{
		visitDate1 = visit_date;
	}

	public void setVisitDate2(Date visit_date)
	{
		visitDate2 = visit_date;
	}

	public void setVisitDateRange(int visit_date_range)
	{
		visitDateRange = visit_date_range;
	}

	public void find()
	{
	Iterator it = historyListeners.iterator();

		while( it.hasNext() )
			((XHistoryListener)it.next()).historyCleaned();

		it = XRepository.getHistoryManager().getHistory();

		while( it.hasNext() )
			checkHistoryData( (XHistoryData)it.next() );
	}

	private boolean doesFitInCriteria(XHistoryData hd)
	{
		if( findPhrase==null )
			return false;

		if( !searchUrls && !searchTitles )
			return false;

		if( searchVisitDate )
		{
			if( visitDateRange==AFTER_DATE && visitDate1!=null )
			{
				if( !hd.getLastVisited().after(visitDate1) )
					return false;
			}
			else if( visitDateRange==BEFORE_DATE && visitDate1!=null )
			{
				if( !hd.getLastVisited().before(visitDate1) )
					return false;
			}
			else if( visitDateRange==BETWEEN_DATES && visitDate1!=null && visitDate2!=null )
			{
				if( !hd.getLastVisited().after(visitDate1) || !hd.getLastVisited().before(visitDate2) )
					return false;
			}
		}

	boolean found = false;

		if( findPhrase.trim().equals("") )
			return true;

		if( searchUrls )
		{
			if( matchCase )
			{
				if( hd.getLocation().indexOf(findPhrase)!=-1 )
					found = true;
			}
			else
			{
				if( hd.getLocation().toLowerCase().indexOf(findPhrase.toLowerCase())!=-1 )
					found = true;
			}
		}

		if( searchTitles && !found )
		{
			if( matchCase )
			{
				if( hd.getTitle().indexOf(findPhrase)!=-1 )
					found = true;
			}
			else
			{
				if( hd.getTitle().toLowerCase().indexOf(findPhrase.toLowerCase())!=-1 )
					found = true;
			}
		}

		return found;
	}

	private void checkHistoryData(XHistoryData hd)
	{
		if( doesFitInCriteria(hd) )
		{
		Iterator it = historyListeners.iterator();

			while( it.hasNext() )
				((XHistoryListener)it.next()).historyAdded(hd);
		}
	}

	public void addHistoryListener(XHistoryListener listener)
	{
		if( !historyListeners.contains(listener) )
			historyListeners.add(listener);
	}

	public void removeHistoryListener(XHistoryListener listener)
	{
		historyListeners.remove(listener);
	}

// Attributes:
    private LinkedList historyListeners = new LinkedList();

	public static final int AFTER_DATE = 20;
	public static final int BEFORE_DATE = 21;
	public static final int BETWEEN_DATES = 22;

    private String findPhrase = null;
    private boolean searchUrls = false;
    private boolean searchTitles = false;
    private boolean matchCase = false;

    private boolean searchVisitDate = false;
    private Date visitDate1 = null;
    private Date visitDate2 = null;
    private int visitDateRange = BEFORE_DATE;
}

⌨️ 快捷键说明

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