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

📄 remoterightclicklistener.java

📁 具有Ftp的基本功能
💻 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 + -