📄 remoterightclicklistener.java
字号:
package Listener;
import java.awt.event.*;
import java.util.Date;
import javax.swing.*;
import FtpForaneSource.*;
import FtpLocalSource.LocalSourcePanelClass;
import GUI.RemoteFilePanel;
/**
* 用于响应远程FTP文件目录右键菜单按钮
* @author 赖程远
*
*/
public class RemoteRightClickListener extends MouseAdapter
{
private RemoteFilePanel remoteFilePanel;
private JPopupMenu popupMenu;
private JMenuItem downloadMenuItem, deleteMenuItem,
newMenuItem, renameMenuItem;
private long time;
private ForaneSourceTableClass table;
LocalSourcePanelClass localDirectory;
/**
*
* @param remoteFilePanel 用于显示远程FTP文件目录
* @param localDirectory 用于显示本地FTP文件目录
*/
public RemoteRightClickListener(final RemoteFilePanel remoteFilePanel,
final LocalSourcePanelClass localDirectory)
{
this.table = remoteFilePanel.getTable();
this.localDirectory = localDirectory;
popupMenu = new JPopupMenu();
downloadMenuItem = new JMenuItem("下载(L)", new ImageIcon("ArrowDn.png"));
downloadMenuItem.setMnemonic(KeyEvent.VK_L);
deleteMenuItem = new JMenuItem("删除(D)", new ImageIcon("Delete.gif"));
deleteMenuItem.setMnemonic(KeyEvent.VK_D);
newMenuItem = new JMenuItem("新建文件夹(N)", new ImageIcon("newFolder.gif"));
newMenuItem.setMnemonic(KeyEvent.VK_N);
renameMenuItem = new JMenuItem("重命名(R)", new ImageIcon("rename.gif"));
renameMenuItem.setMnemonic(KeyEvent.VK_R);
this.remoteFilePanel = remoteFilePanel;
this.popupMenu.add(downloadMenuItem);
this.popupMenu.addSeparator();
this.popupMenu.add(newMenuItem);
this.popupMenu.add(deleteMenuItem);
this.popupMenu.add(renameMenuItem);
// 事件监听
newMenuItem.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
String s = JOptionPane.showInputDialog(null, "请输入新建文件夹的名称:");
if (s != null)
{
remoteFilePanel.getConn().makeNewDirectory(s);
remoteFilePanel.getTable().showFTPFile(
remoteFilePanel.getConn().listRemoteFiles());
}
}
});
downloadMenuItem.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0)
{
JTable table = remoteFilePanel.getTable();
int i = table.getSelectedRow();
if (i >= 0)
{
ImagedTableCell tableCell = (ImagedTableCell) table
.getValueAt(i, 0);
String s = tableCell.getText();
remoteFilePanel.getConn().getTaskQueue().addDonwloadTask(s,
localDirectory.getCurrentDirecory());
}
}
});
deleteMenuItem.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0)
{
JTable table = remoteFilePanel.getTable();
int i = table.getSelectedRow();
if (i >= 0)
{
ImagedTableCell tableCell = (ImagedTableCell) table
.getValueAt(i, 0);
String s = tableCell.getText();
if (((String) table.getValueAt(i, 2)).equals("文件夹"))
remoteFilePanel.getConn().deleteDirectory(s);
else
remoteFilePanel.getConn().deleteFile(s);
remoteFilePanel.getTable().showFTPFile(
remoteFilePanel.getConn().listRemoteFiles());
}
}
});
renameMenuItem.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0)
{
JTable table = remoteFilePanel.getTable();
int i = table.getSelectedRow();
if (i >= 0)
{
ImagedTableCell tableCell = (ImagedTableCell) table
.getValueAt(i, 0);
String s = tableCell.getText();
String s1 = JOptionPane.showInputDialog(null, s + "重命名为:");
if (s1 != null)
{
remoteFilePanel.getConn().rename(s, s1);
remoteFilePanel.getTable().showFTPFile(
remoteFilePanel.getConn().listRemoteFiles());
}
}
}
});
}
@Override
public void mouseClicked(MouseEvent e)
{
long newTime = new Date().getTime();
if (newTime - time < 700)
{
int row = remoteFilePanel.getTable().getSelectedRow();
if (row >= 0)
{
String name = ((ImagedTableCell) remoteFilePanel.getTable()
.getValueAt(row, 0)).getText();
remoteFilePanel.getConn().changeWorkingDirectory(name);
remoteFilePanel.getPath().setText(
remoteFilePanel.getConn().getCurrentDirectory());
remoteFilePanel.getTable().showFTPFile(
remoteFilePanel.getConn().listRemoteFiles());
}
} else
{
}
time = newTime;
}
public void mousePressed(MouseEvent e)
{
selectTable(e);
checkForTriggerEvent(e);
}
public void mouseReleased(MouseEvent e)
{
selectTable(e);
checkForTriggerEvent(e);
}
private void selectTable(MouseEvent e)
{
int row = table.rowAtPoint(e.getPoint());
if (row >= 0)
table.setRowSelectionInterval(row, row);
}
private void checkForTriggerEvent(MouseEvent e)
{
if (e.isPopupTrigger())
{
popupMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -