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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fileviewimpl.java

?? Java資源管理器
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:

package mvc;

import gui.*;
import basic.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Color;
import java.io.File;
import java.util.Collection;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.border.*;
import javax.swing.JPopupMenu;
import javax.swing.BorderFactory;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.event.TreeWillExpandListener;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.tree.DefaultTreeCellRenderer;
import java.util.*;
/*
 * Created on 2005-5-6
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author Administrator
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class FileViewImpl extends JFrame implements FileView,ActionListener {
    private FileModel model;
    private FileControllerImpl control;
    private JTable table;
    private JTree tree;
    private FileTBModel tableModel;
    private Collection roots;
    private DefaultTreeModel treeModel;
    private JLabel addressLabel;
    private JTextField addressTextField;
    private JButton upBtn;
    private JButton addFolderBtn;
    private JButton addFileBtn;
    private JButton deleteBtn;    
    private JButton exitBtn;
    private File currentFile;
    private TNode currentNode;
    private TreePath curPath;
    private boolean isTable = false;
    private JPopupMenu popMenu;
    private JMenuItem addFolderMenu;
    private JMenuItem addFileMenu;
    private JMenuItem deleteMenu;
    
    /**
     * The tree mouse selection event processor
     * @author George Wen
     *
     * TODO To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    private class TreeSelectionProcesser implements TreeSelectionListener{
		public void valueChanged(TreeSelectionEvent e){
			try{
			    curPath = tree.getSelectionPath();
			    currentNode = (TNode)e.getPath().getLastPathComponent();		        
			    currentFile = currentNode.getFile();
				tree.scrollPathToVisible(curPath);
			    addressTextField.setText(currentFile.getAbsolutePath());
			    isTable = false;

			    if(!currentFile.getName().equals("My Computer")){
			        Collection files = control.handleGetAll(currentNode.getFile());
			        tableModel.addAllFiles(files);
			        upBtn.setEnabled(true);
			        addFolderBtn.setEnabled(true);
			        addFileBtn.setEnabled(true);
			        addFolderMenu.setEnabled(true);
			        addFileMenu.setEnabled(true);
			        if(!((TNode)currentNode.getParent()).isRoot()){
			            deleteBtn.setEnabled(true);
			            deleteMenu.setEnabled(true);
			        }
			        else{
			            deleteBtn.setEnabled(false);
			            deleteMenu.setEnabled(false);
			        }
			    }
			    else{
			        upBtn.setEnabled(false);
			        addFolderBtn.setEnabled(false);
			        addFileBtn.setEnabled(false);
			        deleteBtn.setEnabled(false);
			        addFolderMenu.setEnabled(false);
			        addFileMenu.setEnabled(false);
			        deleteMenu.setEnabled(false);
			        currentNode = (TNode)treeModel.getRoot();
			        tableModel.addAllFiles(control.handleGetRootFiles());
			    }
			}
			catch(Exception ee){
	            JOptionPane.showMessageDialog(null,"Read file error!","Error",JOptionPane.ERROR_MESSAGE);
			    ee.printStackTrace();
			}
		}
	}
    
    /**
     * The tree will be expand event processor
     * @author George Wen
     *
     * TODO To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
	private class TreeWillExpandProcessor implements TreeWillExpandListener{		
	    public void treeWillExpand(TreeExpansionEvent e){
			try{
			    currentNode = (TNode)e.getPath().getLastPathComponent();
			    if(!currentNode.getName().equals("My Computer")){
				    Collection directories = control.handleGetAllDirectories(currentNode.getFile());
				    appendNodes(currentNode,directories);
				    treeModel.nodeStructureChanged(currentNode);
			    }
			}
			catch(Exception ee){
	            JOptionPane.showMessageDialog(null,"Read file error!","Error",JOptionPane.ERROR_MESSAGE);
	            ee.printStackTrace();
			}
		}
		
		public void treeWillCollapse(TreeExpansionEvent ec){
		} 
	}
    
	/**
	 * This is the table mouse click event processor
	 * @author George Wen
	 *
	 * TODO To change the template for this generated type comment go to
	 * Window - Preferences - Java - Code Style - Code Templates
	 */
    private class mouseClickedProcessor extends MouseAdapter {
        public void mouseClicked(MouseEvent e){  
            int clickedIndex = table.getSelectedRow();
            if(clickedIndex >=0){
                isTable = true;
                currentFile = tableModel.getFile(clickedIndex);
                addressTextField.setText(currentFile.getAbsolutePath()); 
                if(!currentNode.getFile().getName().equals("My Computer")){
                    deleteBtn.setEnabled(true);
                    deleteMenu.setEnabled(true);
                }
            }
            if(e.getClickCount()>=2){
                if(currentFile.isDirectory()){
                    try{
    			        upBtn.setEnabled(true);
    			        if(!tree.isExpanded(curPath))
    			            tree.expandPath(curPath);
    			        if(currentNode.getChildCount()>0){
    			            for(int i=0;i<currentNode.getChildCount();i++){
    			                TNode temp = (TNode)currentNode.getChildAt(i);
    			                if(temp.getFile().getPath().equalsIgnoreCase(currentFile.getPath())){
    			                    TreeNode[] nodes = treeModel.getPathToRoot(temp);
    			        			curPath = new TreePath(nodes);
    			        			tree.setSelectionPath(curPath);
    			                    break;
    			                }
    			            }
    			        }
                    }
                    catch(Exception ee){
                        ee.printStackTrace();
                    }
                }
            }
            else if(e.getButton() == e.BUTTON3){
                popMenu.show(table,e.getX(),e.getY());
            }
        }
    }    
    
    public FileViewImpl(FileModel model){
        super("Resources Explore...");
        this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
        upBtn = new JButton(new ImageIcon("icons\\up.png"));upBtn.setEnabled(false);
        upBtn.setPreferredSize(new Dimension(20,18));
        addressLabel = new JLabel("Address: ");
        addressTextField = new JTextField();
        addressTextField.setForeground(Color.BLUE);
        addFolderBtn = new JButton("Add Folder");addFolderBtn.setEnabled(false);
        addFileBtn = new JButton("Add File");addFileBtn.setEnabled(false);
        deleteBtn = new JButton("Delete Me");deleteBtn.setEnabled(false);
        exitBtn = new JButton("Exit");
        popMenu = new JPopupMenu("PopMenu");
        addFolderMenu = new JMenuItem("AddFolder");addFolderMenu.setEnabled(false);popMenu.add(addFolderMenu);
        addFileMenu = new JMenuItem("AddFile");addFileMenu.setEnabled(false);popMenu.add(addFileMenu);
        deleteMenu = new JMenuItem("Delete");deleteMenu.setEnabled(false);popMenu.add(deleteMenu);
        
        try{
            this.model = model;
            model.addViews(this);
            control = new FileControllerImpl(this,model);
            roots = control.handleGetRootNodes();//獲得要加到根節(jié)點(diǎn)的磁盤盤符數(shù)組
        }
        catch(Exception e){
            e.printStackTrace();
        }
        
        /**
         * Tree的初始化和相關(guān)配置,TNode為樹的Node類,根節(jié)點(diǎn)為root,roots為要加到根節(jié)點(diǎn)上的磁盤盤符
         * appendNodes為添加節(jié)點(diǎn)的方法,調(diào)用時傳入父節(jié)點(diǎn)node,和要添加到該節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)組Collection 類形
         */
        TNode root = new TNode("My Computer");
        currentNode = root;
        Vector tn = (Vector)roots;
        if(tn.size()>0){
            for(int i=0;i<tn.size();i++){
                TNode tmp = (TNode)tn.get(i);
                tmp.add(new DefaultMutableTreeNode(""));
                root.add(tmp);
            }
        }

        treeModel = new DefaultTreeModel(root);
        tree = new JTree(treeModel);
        tree.setRowHeight(20);
        TreeSelectionModel sm = tree.getSelectionModel();
        sm.setSelectionMode(1);
        tree.setSelectionModel(sm);
        DefaultTreeCellRenderer treeRender = (DefaultTreeCellRenderer)tree.getCellRenderer();
        treeRender.setLeafIcon(new ImageIcon("icons\\foldercolse.png"));
        treeRender.setClosedIcon(new ImageIcon("icons\\foldercolse.png"));
        treeRender.setOpenIcon(new ImageIcon("icons\\folderopen.png"));
        treeRender.setBackgroundNonSelectionColor(Color.white);
        treeRender.setBackgroundSelectionColor(Color.ORANGE);
        treeRender.setBorderSelectionColor(Color.pink);
        treeRender.setTextNonSelectionColor(Color.black);
        treeRender.setTextSelectionColor(Color.blue);
		tree.putClientProperty("JTree.lineStyle","Horizontal");
        
		/**
		 * Table的相關(guān)初始化配置,初始化的時候Table中都初始化與TREE一樣的內(nèi)容,調(diào)用tableModel的addAll方法
		 * 把盤符信息顯示在Table中,同時調(diào)用setColumnWidth方法來設(shè)置第0例和第4例的優(yōu)先例寬,然后調(diào)用table.getColumnModel()
		 * 方法獲得Table的例模型從而獲得指定例名,最后調(diào)用setCellRenderer方法給獲得的該例指定一個TblCellRenderer這樣就可以在
		 * 給指定的例畫上圖標(biāo)什么的
		 */
        tableModel = new FileTBModel();
        try{
            tableModel.addAllFiles(control.handleGetRootFiles());
        }
        catch(Exception e){
            e.printStackTrace();
        }
        table = new JTable(tableModel);
        table.setShowGrid(false);
        setColumnWidth(0,300);
        setColumnWidth(3,150);
        table.setSelectionBackground(Color.ORANGE);
        table.setSelectionForeground(Color.blue);
        table.setRowHeight(20);
		TableColumnModel columnModel = table.getColumnModel();
		TableColumn columnName = columnModel.getColumn(0);
		columnName.setCellRenderer(new TblCellRenderer());
        
		/**

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜av电影一区| 亚洲欧洲国产专区| 日韩电影在线一区二区三区| 91久久人澡人人添人人爽欧美| 欧美国产亚洲另类动漫| 黄网站免费久久| 国产女主播视频一区二区| 国产一区二区美女| 精品嫩草影院久久| 国产毛片精品视频| 日韩三级.com| 成人国产精品免费网站| 国产欧美日韩在线| 成人福利视频网站| 亚洲丝袜精品丝袜在线| 在线视频一区二区三区| 日日夜夜一区二区| 日韩欧美国产午夜精品| 久久精品二区亚洲w码| 欧美一区二区三区的| 一区二区三区在线视频免费| 欧美亚洲综合在线| 欧美aaaaa成人免费观看视频| 337p亚洲精品色噜噜噜| 理论电影国产精品| 国产精品无码永久免费888| 99久久99久久精品免费看蜜桃| 亚洲人成亚洲人成在线观看图片| 欧美在线观看一区二区| 美腿丝袜一区二区三区| 91精品一区二区三区久久久久久| 国产成人精品免费在线| 亚洲精品福利视频网站| 制服丝袜亚洲网站| 国产精品91xxx| 夜夜嗨av一区二区三区四季av| 日韩美一区二区三区| voyeur盗摄精品| 亚洲国产日韩一级| 精品日韩在线观看| 91在线观看一区二区| 亚洲国产精品久久一线不卡| 欧美精品一区视频| 色呦呦网站一区| 裸体一区二区三区| 国产精品久久久久aaaa樱花 | 日韩精品中文字幕一区二区三区 | 毛片av中文字幕一区二区| 久久久久高清精品| 99综合影院在线| 日本在线不卡一区| 国产精品嫩草影院com| 成人免费高清在线观看| 久久久精品人体av艺术| 欧美精品一二三| 色狠狠一区二区| 成人app软件下载大全免费| 蜜臀久久99精品久久久画质超高清 | 亚洲日本va在线观看| 久久久亚洲综合| 欧美电影影音先锋| 欧美午夜电影一区| 欧亚一区二区三区| 色综合咪咪久久| 成年人国产精品| 国产一区二区网址| 国产在线视频一区二区三区| 蜜桃一区二区三区在线观看| 亚洲va欧美va人人爽午夜| 亚洲综合区在线| 中文字幕永久在线不卡| 国产精品日韩精品欧美在线| 中文字幕电影一区| 国产亚洲精品bt天堂精选| 久久久三级国产网站| 精品成人免费观看| 精品久久国产字幕高潮| 精品国产污网站| 久久久精品天堂| 国产喷白浆一区二区三区| 国产日韩欧美精品一区| 亚洲国产高清不卡| 亚洲欧洲99久久| 亚洲欧美日韩一区| 亚洲一区二区三区四区在线| 亚洲美女精品一区| 亚洲午夜免费视频| 天堂在线亚洲视频| 老司机午夜精品| 国产福利精品导航| 99re这里只有精品视频首页| 色88888久久久久久影院按摩| 91精品1区2区| 日韩三级中文字幕| 国产视频一区二区三区在线观看 | 精品欧美乱码久久久久久1区2区| 欧美成人高清电影在线| 久久精品亚洲国产奇米99| 国产精品视频第一区| 综合电影一区二区三区 | 久久亚洲欧美国产精品乐播| 久久夜色精品国产欧美乱极品| 久久精品亚洲精品国产欧美| 亚洲九九爱视频| 天天色综合成人网| 国产一区二区h| 91无套直看片红桃| 91麻豆精品国产91久久久使用方法 | 国产日韩av一区二区| 亚洲欧美激情一区二区| 日日摸夜夜添夜夜添亚洲女人| 国产一区二区看久久| 在线免费观看日本欧美| 精品美女一区二区| 亚洲婷婷国产精品电影人久久| 五月天亚洲婷婷| 成人自拍视频在线观看| 欧美色国产精品| 日本一区二区视频在线| 性做久久久久久| 成人免费av网站| 91精品国产综合久久久久久久久久| 久久久久国产精品厨房| 亚洲午夜一区二区三区| 国产精品18久久久久久久网站| 在线亚洲+欧美+日本专区| 国产亚洲综合在线| 五月天婷婷综合| 99在线热播精品免费| 精品欧美一区二区三区精品久久 | 亚洲免费观看高清| 极品瑜伽女神91| 欧美日本一区二区三区四区| 国产区在线观看成人精品 | 色婷婷综合久久久中文字幕| 337p日本欧洲亚洲大胆精品| 亚洲国产欧美日韩另类综合| 成人永久aaa| 亚洲精品一区二区三区福利| 香蕉久久一区二区不卡无毒影院| av在线不卡免费看| 久久噜噜亚洲综合| 美女www一区二区| 欧美日韩高清影院| 亚洲色图欧美激情| 成人开心网精品视频| 久久综合久久综合久久| 蜜臀a∨国产成人精品| 欧美乱妇15p| 亚洲高清免费观看高清完整版在线观看| 成人动漫一区二区在线| 久久精品一二三| 国产电影精品久久禁18| 日韩一区二区三区免费观看| 亚洲一区二区三区在线| 97se亚洲国产综合自在线| 国产丝袜在线精品| 国产麻豆成人精品| 精品粉嫩超白一线天av| 青青草成人在线观看| 在线播放国产精品二区一二区四区| 亚洲视频在线一区观看| 99久久精品免费看| 亚洲欧洲制服丝袜| 97久久人人超碰| 中文字幕字幕中文在线中不卡视频| 国产福利一区在线观看| 久久久不卡网国产精品一区| 国产老肥熟一区二区三区| 亚洲精品在线一区二区| 国产在线一区观看| 久久久久久久免费视频了| 国产不卡在线播放| 国产精品美女一区二区三区 | 精品国精品自拍自在线| 久久99精品国产| 久久你懂得1024| 国产91富婆露脸刺激对白| 国产精品网站在线观看| 99国产精品99久久久久久| 成人免费在线视频| 日本精品一级二级| 午夜精品在线视频一区| 91精品黄色片免费大全| 狠狠色狠狠色综合| 国产精品每日更新| 欧美在线观看一区| 美女一区二区在线观看| 久久久久久久久伊人| 99精品视频在线播放观看| 亚洲综合一区在线| 欧美肥妇bbw| 国产成人av电影在线| 亚洲精品欧美综合四区| 欧美精品久久久久久久多人混战 | 亚洲免费在线视频一区 二区| 欧美色图第一页| 国产一区二区美女诱惑| 亚洲精品乱码久久久久久| 欧美一区二区三区四区高清|