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

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

?? basicdirectorymodel.java

?? JAVA的一些源碼 JAVA2 STANDARD EDITION DEVELOPMENT KIT 5.0
?? JAVA
字號:
/* * @(#)BasicDirectoryModel.java	1.32 07/01/18 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package javax.swing.plaf.basic;import java.io.File;import java.util.*;import javax.swing.*;import javax.swing.filechooser.*;import javax.swing.event.*;import java.beans.*;import sun.awt.shell.ShellFolder;/** * Basic implementation of a file list. * * @version %i% %g% * @author Jeff Dinkins */public class BasicDirectoryModel extends AbstractListModel implements PropertyChangeListener {    private JFileChooser filechooser = null;    // PENDING(jeff) pick the size more sensibly    private Vector fileCache = new Vector(50);    private LoadFilesThread loadThread = null;    private Vector files = null;    private Vector directories = null;    private int fetchID = 0;    public BasicDirectoryModel(JFileChooser filechooser) {	this.filechooser = filechooser;	validateFileCache();    }    public void propertyChange(PropertyChangeEvent e) {	String prop = e.getPropertyName();	if(prop == JFileChooser.DIRECTORY_CHANGED_PROPERTY ||	   prop == JFileChooser.FILE_VIEW_CHANGED_PROPERTY ||	   prop == JFileChooser.FILE_FILTER_CHANGED_PROPERTY ||	   prop == JFileChooser.FILE_HIDING_CHANGED_PROPERTY ||	   prop == JFileChooser.FILE_SELECTION_MODE_CHANGED_PROPERTY) {	    validateFileCache();	} else if ("UI".equals(prop)) {	    Object old = e.getOldValue();	    if (old instanceof BasicFileChooserUI) {		BasicFileChooserUI ui = (BasicFileChooserUI) old;		BasicDirectoryModel model = ui.getModel();		if (model != null) {		    model.invalidateFileCache();		}	    }	} else if ("JFileChooserDialogIsClosingProperty".equals(prop)) {	    invalidateFileCache();	}    }    /**     * This method is used to interrupt file loading thread.     */    public void invalidateFileCache() {	if (loadThread != null) {	    loadThread.interrupt();	    loadThread.cancelRunnables();	    loadThread = null;	}    }    public Vector<File> getDirectories() {	synchronized(fileCache) {	    if (directories != null) {		return directories;	    }	    Vector fls = getFiles();	    return directories;	}    }    public Vector<File> getFiles() {	synchronized(fileCache) {	    if (files != null) {		return files;	    }	    files = new Vector();	    directories = new Vector();	    directories.addElement(filechooser.getFileSystemView().createFileObject(		filechooser.getCurrentDirectory(), "..")	    );	    for (int i = 0; i < getSize(); i++) {		File f = (File)fileCache.get(i);		if (filechooser.isTraversable(f)) {		    directories.add(f);		} else {		    files.add(f);		}	    }	    return files;	}    }    public void validateFileCache() {	File currentDirectory = filechooser.getCurrentDirectory();	if (currentDirectory == null) {	    return;	}	if (loadThread != null) {	    loadThread.interrupt();            loadThread.cancelRunnables();	}	fetchID++;	loadThread = new LoadFilesThread(currentDirectory, fetchID);	loadThread.start();    }    /**     * Renames a file in the underlying file system.     *     * @param oldFile a <code>File</code> object representing     *        the existing file     * @param newFile a <code>File</code> object representing     *        the desired new file name     * @return <code>true</code> if rename succeeded,     *        otherwise <code>false</code>     * @since 1.4     */    public boolean renameFile(File oldFile, File newFile) {	synchronized(fileCache) {	    if (oldFile.renameTo(newFile)) {		validateFileCache();		return true;	    }	    return false;	}    }    public void fireContentsChanged() {	// System.out.println("BasicDirectoryModel: firecontentschanged");	fireContentsChanged(this, 0, getSize()-1);    }    public int getSize() {	return fileCache.size();    }    public boolean contains(Object o) {	return fileCache.contains(o);    }    public int indexOf(Object o) {	return fileCache.indexOf(o);    }    public Object getElementAt(int index) {	return fileCache.get(index);    }    /**     * Obsolete - not used.     */    public void intervalAdded(ListDataEvent e) {    }    /**     * Obsolete - not used.     */    public void intervalRemoved(ListDataEvent e) {    }    protected void sort(Vector<? extends File> v){	ShellFolder.sortFiles(v);    }    // Obsolete - not used    protected boolean lt(File a, File b) {	// First ignore case when comparing	int diff = a.getName().toLowerCase().compareTo(b.getName().toLowerCase());	if (diff != 0) {	    return diff < 0;	} else {	    // May differ in case (e.g. "mail" vs. "Mail")	    return a.getName().compareTo(b.getName()) < 0;	}    }    class LoadFilesThread extends Thread {	File currentDirectory = null;	int fid;	Vector runnables = new Vector(10);		public LoadFilesThread(File currentDirectory, int fid) {	    super("Basic L&F File Loading Thread");	    this.currentDirectory = currentDirectory;	    this.fid = fid;	}		private void invokeLater(Runnable runnable) {	    runnables.addElement(runnable);	    SwingUtilities.invokeLater(runnable);	}	public void run() {	    FileSystemView fileSystem = filechooser.getFileSystemView();	    File[] list = fileSystem.getFiles(currentDirectory, filechooser.isFileHidingEnabled());	    Vector<File> acceptsList = new Vector<File>();	    if (isInterrupted()) {		return;	    }	    // run through the file list, add directories and selectable files to fileCache	    for (int i = 0; i < list.length; i++) {		if(filechooser.accept(list[i])) {		    acceptsList.addElement(list[i]);		}	    }	    if (isInterrupted()) {		return;	    }	    // First sort alphabetically by filename	    sort(acceptsList);	    Vector newDirectories = new Vector(50);	    Vector newFiles = new Vector();	    // run through list grabbing directories in chunks of ten	    for(int i = 0; i < acceptsList.size(); i++) {		File f = (File) acceptsList.elementAt(i);		boolean isTraversable = filechooser.isTraversable(f);		if (isTraversable) {		    newDirectories.addElement(f);		} else if (!isTraversable && filechooser.isFileSelectionEnabled()) {		    newFiles.addElement(f);		}		if(isInterrupted()) {		    return;		}	    }	    Vector newFileCache = new Vector(newDirectories);	    newFileCache.addAll(newFiles);	    int newSize = newFileCache.size();	    int oldSize = fileCache.size();	    if (newSize > oldSize) {		//see if interval is added		int start = oldSize;		int end = newSize;		for (int i = 0; i < oldSize; i++) {		    if (!newFileCache.get(i).equals(fileCache.get(i))) {			start = i;			for (int j = i; j < newSize; j++) {			    if (newFileCache.get(j).equals(fileCache.get(i))) {				end = j;				break;			    }			}			break;		    }		}		if (start >= 0 && end > start		    && newFileCache.subList(end, newSize).equals(fileCache.subList(start, oldSize))) {		    if(isInterrupted()) {		        return;		    }		    invokeLater(new DoChangeContents(newFileCache.subList(start, end), start, null, 0, fid));		    newFileCache = null;		}	    } else if (newSize < oldSize) {		//see if interval is removed		int start = -1;		int end = -1;		for (int i = 0; i < newSize; i++) {		    if (!newFileCache.get(i).equals(fileCache.get(i))) {			start = i;			end = i + oldSize - newSize;			break;		    }		}		if (start >= 0 && end > start		    && fileCache.subList(end, oldSize).equals(newFileCache.subList(start, newSize))) {		    if(isInterrupted()) {		        return;		    }		    invokeLater(new DoChangeContents(null, 0, new Vector(fileCache.subList(start, end)),						     start, fid));		    newFileCache = null;		}	    }	    if (newFileCache != null && !fileCache.equals(newFileCache)) {	        if (isInterrupted()) {		    cancelRunnables(runnables);	        }		invokeLater(new DoChangeContents(newFileCache, 0, fileCache, 0, fid));	    }	}	public void cancelRunnables(Vector runnables) {	    for(int i = 0; i < runnables.size(); i++) {		((DoChangeContents)runnables.elementAt(i)).cancel();	    }	} 	public void cancelRunnables() {            cancelRunnables(runnables);	}   }    class DoChangeContents implements Runnable {	private List addFiles;	private List remFiles;	private boolean doFire = true;	private int fid;	private int addStart = 0;	private int remStart = 0;	private int change;		public DoChangeContents(List addFiles, int addStart, List remFiles, int remStart, int fid) {	    this.addFiles = addFiles;	    this.addStart = addStart;	    this.remFiles = remFiles;	    this.remStart = remStart;	    this.fid = fid;	}	synchronized void cancel() {		doFire = false;	}		public synchronized void run() {	    if (fetchID == fid && doFire) {		int remSize = (remFiles == null) ? 0 : remFiles.size();		int addSize = (addFiles == null) ? 0 : addFiles.size();		synchronized(fileCache) {		    if (remSize > 0) {			fileCache.removeAll(remFiles);		    }		    if (addSize > 0) {			fileCache.addAll(addStart, addFiles);		    }		    files = null;		    directories = null;		}		if (remSize > 0 && addSize == 0) {		    fireIntervalRemoved(BasicDirectoryModel.this, remStart, remStart + remSize - 1);		} else if (addSize > 0 && remSize == 0 && fileCache.size() > addSize) {		    fireIntervalAdded(BasicDirectoryModel.this, addStart, addStart + addSize - 1);		} else {		    fireContentsChanged();		}	    }	}    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区91精品张津瑜| 在线影院国内精品| 亚洲精品国产精华液| 日本一区二区在线不卡| 久久一区二区三区国产精品| 日韩欧美中文字幕精品| 欧美一区二区三区系列电影| 欧美一区二区福利在线| 18欧美乱大交hd1984| 亚洲美女免费在线| 亚洲第一电影网| 日韩高清电影一区| 久草精品在线观看| 国产激情91久久精品导航| 国产成人av电影| 日本精品视频一区二区| 国产欧美日本一区视频| 免费观看久久久4p| 成人h精品动漫一区二区三区| 成人久久久精品乱码一区二区三区 | 国产成人在线影院| 在线成人av网站| 精品福利一区二区三区 | 久久精品免费观看| 国产成人在线免费| 欧美精品一区二| 久久99精品一区二区三区三区| 欧美美女视频在线观看| 洋洋成人永久网站入口| 六月丁香婷婷久久| 欧美一区二区网站| 亚洲va韩国va欧美va精品| 91丝袜美腿高跟国产极品老师 | 中文字幕制服丝袜成人av| 亚洲自拍偷拍综合| 精品一区免费av| 精品日韩一区二区| 亚洲精品第一国产综合野| 国产精品一级在线| 欧美久久一二区| 丝袜国产日韩另类美女| 国产suv精品一区二区883| 久久久亚洲国产美女国产盗摄| 伊人婷婷欧美激情| 欧美性受xxxx| 国产亚洲精品超碰| 日韩精品一卡二卡三卡四卡无卡| 欧美日韩另类一区| 综合久久综合久久| 国产精品中文欧美| 中文一区二区完整视频在线观看| 日韩av不卡在线观看| 精品欧美乱码久久久久久 | 国产91对白在线观看九色| 国产亚洲精品aa午夜观看| 99re视频这里只有精品| 精品成人私密视频| 国产成人一区在线| 亚洲尤物视频在线| 3atv在线一区二区三区| 亚洲最色的网站| 日韩一区二区三区视频在线| 国产精品亚洲人在线观看| 国产精品传媒在线| 337p亚洲精品色噜噜| 国产在线不卡一区| 亚洲免费在线观看| 欧美xxxx老人做受| 色呦呦日韩精品| 亚洲欧美色综合| 日韩精品一区国产麻豆| 日韩av电影免费观看高清完整版| 久久亚洲综合av| 在线精品视频一区二区三四| 亚洲三级在线看| 日韩一卡二卡三卡四卡| 99久久精品一区| 麻豆国产欧美日韩综合精品二区 | 欧美久久久久久久久| 国产精品亚洲成人| 婷婷中文字幕一区三区| 欧美综合在线视频| 国产一区二区三区日韩| 婷婷综合另类小说色区| 亚洲女子a中天字幕| 久久婷婷成人综合色| 欧美精品一二三| 99久久亚洲一区二区三区青草 | 国内精品免费在线观看| 精品免费国产一区二区三区四区| 91丝袜呻吟高潮美腿白嫩在线观看| 久久国产夜色精品鲁鲁99| 亚洲一区二区欧美日韩 | 日韩视频永久免费| 欧美在线高清视频| 91麻豆视频网站| 国产成人丝袜美腿| 久久99热狠狠色一区二区| 午夜欧美2019年伦理| 日韩美女视频一区| 欧美国产亚洲另类动漫| 精品国产123| 精品乱码亚洲一区二区不卡| 欧美日韩国产123区| 色域天天综合网| 99视频有精品| 日韩专区欧美专区| 亚洲国产精品综合小说图片区| 欧美色图一区二区三区| 亚洲国产一区二区在线播放| 中文字幕一区二区三区在线观看| 久久久久久久久久久久久久久99 | 久久综合色综合88| 欧美mv和日韩mv国产网站| 欧美日韩综合色| 欧美体内she精高潮| 欧美在线|欧美| 欧洲亚洲国产日韩| 欧美影院精品一区| 欧美视频完全免费看| 欧美吻胸吃奶大尺度电影| 欧美影院精品一区| 91精品视频网| 日韩精品一区二区三区视频在线观看| 7777精品伊人久久久大香线蕉 | 日日摸夜夜添夜夜添国产精品 | 亚洲欧洲精品一区二区精品久久久| 国产欧美一二三区| 国产精品美女www爽爽爽| 欧美日韩另类一区| 欧美一区二区三区四区在线观看 | 欧美色精品在线视频| 欧美日韩在线播放三区四区| 欧美精品在线观看一区二区| 这里只有精品免费| 久久免费午夜影院| 中文字幕人成不卡一区| 亚洲国产精品久久一线不卡| 日韩精彩视频在线观看| 国产一区二区在线免费观看| 成人精品国产福利| 日本乱人伦一区| 日韩欧美三级在线| 久久看人人爽人人| 亚洲免费色视频| 蜜臀av一级做a爰片久久| 国产69精品久久久久777| 91久久久免费一区二区| 日韩欧美激情四射| 国产精品萝li| 日本系列欧美系列| 成人av午夜电影| 欧美日韩成人综合天天影院| 精品国产污污免费网站入口| 国产精品久久久久aaaa| 天堂午夜影视日韩欧美一区二区| 国产在线精品视频| 欧亚洲嫩模精品一区三区| 日韩精品一区二区三区三区免费| 午夜影院久久久| 国产在线精品一区二区三区不卡| jizz一区二区| 日韩精品一区二区三区在线播放 | 亚洲精品大片www| 狠狠色丁香九九婷婷综合五月| 99精品偷自拍| 欧美成人高清电影在线| 亚洲日本丝袜连裤袜办公室| 久久精品国产免费| 欧美三级午夜理伦三级中视频| 中文字幕第一区| 久久精品国产99久久6| 色婷婷av一区二区三区软件| 久久久精品国产99久久精品芒果 | 免费看日韩a级影片| 91亚洲国产成人精品一区二区三 | 欧美日韩一级二级| 中文成人综合网| 狠狠色狠狠色综合系列| 欧美日韩色综合| 亚洲男同1069视频| 成人精品在线视频观看| 26uuu精品一区二区| 日av在线不卡| 欧美麻豆精品久久久久久| 亚洲男女一区二区三区| 成人免费毛片片v| 国产片一区二区三区| 久久99精品久久只有精品| 欧美剧情片在线观看| 午夜在线电影亚洲一区| 在线观看国产日韩| 亚洲精品水蜜桃| 91丝袜呻吟高潮美腿白嫩在线观看| 久久久精品免费网站| 国产自产高清不卡| 精品国产一区二区三区不卡| 久久爱另类一区二区小说| 日韩欧美久久久| 国产精品一二三在|