📄 filelistview.java
字号:
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 + -