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

📄 filelistview.java

📁 java写的图片浏览器,类似acds
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package org.net9.oops.jsee;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
//import java.util.*;

public class FileListView extends JScrollPane /*implements TableModelListener */{
    public File[] file_list,
                  drive_list,
                  full_file_list;
    public JTable fileListTable;
    File parentDir;
    Object[][] data;
    String  currentDir = "\0";
    Jsee parentFrame;
    int selectedRow;
    //Added by Neoya
    TypedImages typedImages;
    TableSorter sorter;

    ImageIcon view_fullscreen = new ImageIcon(getClass().getResource("/org/net9/oops/jsee/image/view.gif"));
    ImageIcon delete_icon = new ImageIcon(getClass().getResource("/org/net9/oops/jsee/image/delete.gif"));
    ImageIcon rename_icon = new ImageIcon(getClass().getResource("/org/net9/oops/jsee/image/rename.gif"));
    ImageIcon play_icon = new ImageIcon(getClass().getResource("/org/net9/oops/jsee/image/play.gif"));
    ImageIcon convert_icon = new ImageIcon(getClass().getResource("/org/net9/oops/jsee/image/convert.gif"));

    JPopupMenu popupMenu = new JPopupMenu();
    JMenuItem rename_item = new JMenuItem("Rename", rename_icon);
    JMenuItem delete_item = new JMenuItem("Delete", delete_icon);
    JMenuItem view_item = new JMenuItem("View", view_fullscreen);
    JMenuItem convert_item = new JMenuItem("Convert...", convert_icon);

    JPopupMenu dirPopupMenu = new JPopupMenu();
    JMenuItem rename_dir_item = new JMenuItem("Rename", rename_icon);
    JMenuItem delete_dir_item = new JMenuItem("Delete", delete_icon);
    JMenuItem slide_item = new JMenuItem("Slide show",  play_icon);
    JMenuItem browse_item = new JMenuItem("Browse");

    JPopupMenu linkPopupMenu = new JPopupMenu();
    JMenuItem browse_link_item = new JMenuItem("Browse");
    JMenuItem slide_link_item = new JMenuItem("Slide show",  play_icon);
    /**
     * Table model used in table
     */
    public class FileListDataModel extends AbstractTableModel {
        /*
        Object[][] dataArray;
        public FileListDataModel(Object[][] data) {dataArray = data;}
        public int getColumnCount() { return 2; }
        public int getRowCount() {
            if (file_list!=null)
                return file_list.length;
            else
                return 0;
        }
        public Object getValueAt(int row, int col) {return dataArray[col][row];}
        public Class getColumnClass(int c) {return getValueAt(0, c).getClass();}
        //public void setValueAt(Object aValue, int row, int column) { dataArray[column][row] = aValue; }
        //public boolean isCellEditable(int row, int col) { return(col == 0)?false:true; }
        public String getColumnName(int column) {return(column == 0)?"":"Filename";}
        public void RefreshFileList(Object[][] data) {dataArray = data; fireTableDataChanged();}
        */
        Object[][] dataArray;
        public FileListDataModel(Object[][] data) {dataArray = data;}
        public int getColumnCount() { return 6; }
        public int getRowCount() {
            if (file_list!=null)
                return file_list.length;
            else
                return 0;
        }
        public Object getValueAt(int row, int col) {return dataArray[col][row];}
        public Class getColumnClass(int c) {return getValueAt(0, c).getClass();}
        //public void setValueAt(Object aValue, int row, int column) { dataArray[column][row] = aValue; }
        //public boolean isCellEditable(int row, int col) { return(col == 0)?false:true; }
        public String getColumnName(int column) {
            switch (column){
                case 0:
                    return "";
                case 1:
                    return "Filename";
                case 2:
                    return "Size";
                case 3:
                    return "Modified";
                case 4:
                    return "Type";
                case 5:
                    return "Properties";
                default:
                    return "";
            }
        }
        public void RefreshFileList(Object[][] data) {dataArray = data; fireTableDataChanged();}
    };

    FileListDataModel dataModel;
    /* Commented by Neoya
    final ImageIcon jpgIcon = new ImageIcon(getClass().getResource("/image/jpgIcon.gif"));
    final ImageIcon gifIcon = new ImageIcon(getClass().getResource("/image/gifIcon.gif"));
    final ImageIcon bmpIcon = new ImageIcon(getClass().getResource("/image/bmpIcon.gif"));
    final ImageIcon pngIcon = new ImageIcon(getClass().getResource("/image/pngIcon.gif"));
    final ImageIcon pcxIcon = new ImageIcon(getClass().getResource("/image/pcxIcon.gif"));
    final ImageIcon tifIcon = new ImageIcon(getClass().getResource("/image/tifIcon.jpg"));
    final ImageIcon pnmIcon = new ImageIcon(getClass().getResource("/image/pnmIcon.jpg"));
    final ImageIcon xpmIcon = new ImageIcon(getClass().getResource("/image/xpmIcon.jpg"));
    */
    final ImageIcon diskIcon = new ImageIcon(getClass().getResource("/org/net9/oops/jsee/image/diskIcon.gif"));
    final ImageIcon dirIcon = new ImageIcon(getClass().getResource("/org/net9/oops/jsee/image/dirIcon.gif"));
    final ImageIcon ukIcon = new ImageIcon(getClass().getResource("/org/net9/oops/jsee/image/ukIcon.gif"));

    public FileListView(File directory, Jsee parent) {
        typedImages=new TypedImages();
        parentFrame = parent;
        file_list = makeFileList(directory);
        currentDir = directory.toString();

        data = makeFileListData();

        dataModel = new FileListDataModel(data);
        //Modified by Neoya to enable table sort
        //Sort method is from
        //http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#sorting
        //fileListTable = new JTable(dataModel);
        sorter = new TableSorter(dataModel,this);
        fileListTable=new JTable(sorter);
        sorter.addMouseListenerToHeaderInTable(fileListTable);
        //End of modified by Neoya
        TableColumn column = null;
        for (int i = 0; i < 2; i++) {
            column = fileListTable.getColumnModel().getColumn(i);
            if (i == 0) {
                column.setPreferredWidth(18); //icon column
                column.setMaxWidth(18);
                column.setMinWidth(18);
            } else {
                column.setPreferredWidth(110); // filename column
                column.setMinWidth(110);
            }
        }

        //Popup menu section
        ActionListener deleteAction = new ActionListener() {
            public void actionPerformed( ActionEvent event ) {
                deleteSelectedFile();
            }
        };
        view_item.addActionListener( new ActionListener() {
            public void actionPerformed( ActionEvent event ) {
                dislaySelectedImageFullScreen();
            }
        });
        convert_item.addActionListener( new ActionListener() {
            public void actionPerformed( ActionEvent event ) {
            /* only available in JAI enable version
                ConversionDialog convertDialog = new ConversionDialog(parentFrame, "Image Format Conversion", true);
                convertDialog.show();
                RefreshFileList();*/
            }
        });
        popupMenu.add(view_item);
        delete_item.addActionListener(deleteAction);
        popupMenu.add(delete_item);
        popupMenu.add(rename_item);
        popupMenu.add(convert_item);
        convert_item.setEnabled(false);
        rename_item.setEnabled(false);

        delete_dir_item.addActionListener(deleteAction);
        dirPopupMenu.add(delete_dir_item);
        dirPopupMenu.add(rename_dir_item);
        rename_dir_item.setEnabled(false);

        browse_item.addActionListener(
            new ActionListener() {
            public void actionPerformed( ActionEvent event ) {
                DoChangeDir();
            }
        });
        dirPopupMenu.add(browse_item);
        slide_item.addActionListener(
            new ActionListener() {
            public void actionPerformed( ActionEvent event ) {
                DoChangeDir();
                parentFrame.Run_Slide_Show_For_Dir();
            }
        });
        dirPopupMenu.add(slide_item);

        linkPopupMenu.add(browse_link_item);
        browse_link_item.addActionListener(
            new ActionListener() {
            public void actionPerformed( ActionEvent event ) {
                DoChangeDir();
            }
        });
        linkPopupMenu.add(slide_link_item);
        slide_link_item.addActionListener(
            new ActionListener() {
            public void actionPerformed( ActionEvent event ) {
                DoChangeDir();
                parentFrame.Run_Slide_Show_For_Dir();
            }
        });
        // end Popup menu section

        // Listener for file list table
        MouseListener mouseListener = new MouseAdapter() {
            public void mouseClicked( MouseEvent e ) {
                if (e.getClickCount() == 2)
                    if (selectedFileIsDirectory())
                        DoChangeDir();
                    else
                        dislayImageFullScreen();
            }
            public void mousePressed ( MouseEvent e ) {
                if (e.isPopupTrigger()) {
                    PopupTriggered(e);
                }
            }
            public void mouseReleased ( MouseEvent e ) {
                if (e.isPopupTrigger()) {
                    PopupTriggered(e);
                }
            }
        };

        KeyListener keyListener = new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER)
                    if (selectedFileIsDirectory())
                        DoChangeDir();
                    else
                        dislayImageFullScreen();
              // more key like Delete, Home, End
            }
        };

        fileListTable.addMouseListener(mouseListener);
        fileListTable.addKeyListener(keyListener);
        //Added by Neoya 2002-03-06

        fileListTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        ListSelectionModel rowSM = fileListTable.getSelectionModel();
        rowSM.addListSelectionListener(
            new ListSelectionListener() {
            public void valueChanged(ListSelectionEvent e) {
                if (!e.getValueIsAdjusting()) {
                    if (!selectedFileIsDirectory()) {
                        parentFrame.setEnableDeleteButton(true);
                        parentFrame.Open(getSelectedFile());
                    }else {
                        if (!selectedFileIsLinkToUpperDirectory())
                            parentFrame.setEnableDeleteButton(true);
                        else {// is link to upper directory
                            parentFrame.setEnableDeleteButton(false);
                            parentFrame.setEnableViewButton(false);
                        }
                    }
                }
            }
        });

        fileListTable.setCellSelectionEnabled(false);
        fileListTable.setRowHeight(17);
        fileListTable.setIntercellSpacing(new Dimension(0, 0));
        fileListTable.setRowSelectionAllowed(true);

        fileListTable.setShowHorizontalLines(false);
        fileListTable.setShowVerticalLines(false);
        //Added by Neoya
        //Set the background color to white
        this.getViewport().setBackground(Color.white);
        fileListTable.setDefaultRenderer(String.class,new ColorRenderer(true));
        fileListTable.setDefaultRenderer(Long.class,new ColorRenderer(true));
        //fileListTable.getTableHeader().setDefaultRenderer(new ButtonRenderer());
        fileListTable.getTableHeader().addMouseListener(new MouseAdapter(){
            public void mouseClicked(MouseEvent e) {
                TableColumnModel columnModel = fileListTable.getColumnModel();
                int viewColumn = columnModel.getColumnIndexAtX(e.getX());
                int column = fileListTable.convertColumnIndexToModel(viewColumn);
                //System.out.println(column);
                //fileListTable.getColumnModel().getColumn(column).setHeaderValue("New");
            }
        });
        //Add fileListTable to JScrollPane
        getViewport().setView(fileListTable);
        parentFrame.fileTree.setSelectionPath(directory);
    }

    private Object[][] makeFileListData() {
        //Added by Neoya 2002-03-06
        if (file_list==null)
            return null;
        Object[][] data = new Object[6][file_list.length];
        String fileSeparator = System.getProperty("file.separator");
        //System.out.println(fileSeparator);
        for (int i = 0; i < file_list.length; i++) {
            String fullFileName = file_list[i].toString();

⌨️ 快捷键说明

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