📄 downloadqueue.java
字号:
/* * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */package net.sf.jftp.gui;import net.sf.jftp.*;import net.sf.jftp.config.*;import net.sf.jftp.gui.framework.*;import net.sf.jftp.net.*;import net.sf.jftp.util.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.*;import javax.swing.*;import javax.swing.JComponent.*;import javax.swing.event.*;public class DownloadQueue extends HPanel implements ActionListener{ private static final String SEP = "--> "; // Number of Retry int NumRetry = 5; //private JTextArea text = new JTextArea(); private DefaultListModel liststr = new DefaultListModel(); private JList list = new JList(liststr); private ArrayList queue = new ArrayList(); private queueDownloader thread = new queueDownloader(); private QueueRecord lastDownload; private BasicConnection con; // private Vector listeners = new Vector(); private HImageButton start = new HImageButton(Settings.resumeImage, "start", "Start queue download...", this); private HImageButton stop = new HImageButton(Settings.pauseImage, "stop", "Stop queue download...", this); private HImageButton save = new HImageButton(Settings.saveImage, "save", "Save queue list to file...", this); private HImageButton load = new HImageButton(Settings.cdImage, "load", "Load queue list from...", this); private HImageButton up = new HImageButton(Settings.downloadImage, "up", "Change order of queue", this); private HImageButton down = new HImageButton(Settings.uploadImage, "down", "Change order of queue", this); private HImageButton delete = new HImageButton(Settings.deleteImage, "del", "Delete item in queue", this); //private HImageButton rotate = new HImageButton(Settings.cmdImage,"rotate","Toggle selected transfer...",this); // connection established? private boolean isThere = false; private boolean downloading = false; private ConnectionHandler handler = new ConnectionHandler(); private JLabel statuslabel; public DownloadQueue() { setLayout(new BorderLayout()); // list.setCellRenderer(new DirCellRenderer()); HPanel cmdP = new HPanel(); cmdP.add(start); cmdP.add(stop); cmdP.add(new JLabel(" ")); cmdP.add(up); cmdP.add(down); cmdP.add(delete); cmdP.add(new JLabel(" ")); cmdP.add(save); cmdP.add(load); start.setSize(24, 24); start.setBorder(true); stop.setSize(24, 24); stop.setBorder(true); up.setSize(24, 24); up.setBorder(true); down.setSize(24, 24); down.setBorder(true); delete.setSize(24, 24); delete.setBorder(true); save.setSize(24, 24); save.setBorder(true); load.setSize(24, 24); load.setBorder(true); JScrollPane dP = new JScrollPane(list); //add("South",cmdP); //add("North",dP); add(cmdP, BorderLayout.SOUTH); add(dP, BorderLayout.CENTER); HPanel status = new HPanel(); statuslabel = new JLabel(""); statuslabel.setSize(100, 100); status.add(statuslabel); add(status, BorderLayout.NORTH); //*** MY ADDITIONS start.setToolTipText("Start queue download..."); stop.setToolTipText("Stop queue download..."); save.setToolTipText("Save queue list to file..."); load.setToolTipText("Load queue list from..."); up.setToolTipText("Change order of queue"); down.setToolTipText("Change order of queue"); delete.setToolTipText("Delete item in queue"); //*** } /* public void fresh() { } */ public void addFtp(String file) { Log.debug("Remote File" + JFtp.remoteDir.getPath() + file + "Local File" + JFtp.localDir.getPath() + file + "HostName" + JFtp.hostinfo.hostname); QueueRecord rec = new QueueRecord(); rec.type = "ftp"; rec.hostname = JFtp.hostinfo.hostname; rec.username = JFtp.hostinfo.username; rec.password = JFtp.hostinfo.password; rec.port = JFtp.hostinfo.port; rec.local = JFtp.localDir.getPath(); rec.remote = JFtp.remoteDir.getPath(); rec.file = file; queue.add(rec); liststr.addElement(rec.hostname + " : " + rec.remote + rec.file); } public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("start")) { if(thread != null) { if(!thread.isAlive()) { thread = new queueDownloader(); thread.start(); //listeners.add(thread); } } else { thread = new queueDownloader(); thread.start(); //listeners.add(thread); } } else if(e.getActionCommand().equals("stop")) { if(thread != null) { thread.block = true; //QueueRecord rec = (QueueRecord)queue.get(0); //Transfer d = (Transfer)handler.getConnections().get(rec.file); //DataConnection dcon = d.getDataConnection(); FtpConnection ftpcon = (FtpConnection) con; DataConnection dcon = ftpcon.getDataConnection(); dcon.getCon().work = false; try { dcon.sock.close(); } catch(Exception ex) { ex.printStackTrace(); } } } else if(e.getActionCommand().equals("down")) { if(list.getSelectedIndex() != -1) { int a = list.getSelectedIndex(); int b = a + 1; QueueRecord qa = (QueueRecord) queue.get(b); queue.remove(b); queue.add(a, qa); String sa = (String) liststr.get(b); liststr.remove(b); liststr.add(a, sa); list.setSelectedIndex(b); } } else if(e.getActionCommand().equals("up")) { if(list.getSelectedIndex() != -1) { int a = list.getSelectedIndex() - 1; int b = a + 1; QueueRecord qa = (QueueRecord) queue.get(b); queue.remove(b); queue.add(a, qa); String sa = (String) liststr.get(b); liststr.remove(b); liststr.add(a, sa); list.setSelectedIndex(a); } } else if(e.getActionCommand().equals("del")) { if(list.getSelectedIndex() != -1) { queue.remove(list.getSelectedIndex()); liststr.remove(list.getSelectedIndex()); list.setSelectedIndex(0); } } else if(e.getActionCommand().equals("save")) { JFileChooser chooser = new JFileChooser(); chooser.setDialogTitle("Save file"); chooser.setDialogType(JFileChooser.SAVE_DIALOG); int returnVal = chooser.showSaveDialog(new JDialog()); if(returnVal == JFileChooser.APPROVE_OPTION) { File f = chooser.getSelectedFile(); saveList(f); } } else if(e.getActionCommand().equals("load")) { JFileChooser chooser = new JFileChooser(); chooser.setDialogTitle("Open file"); chooser.setDialogType(JFileChooser.OPEN_DIALOG); int returnVal = chooser.showOpenDialog(new JDialog()); if(returnVal == JFileChooser.APPROVE_OPTION) { File f = chooser.getSelectedFile(); loadList(f); } } } private void saveList(File file) { try { if(file.exists()) { file.delete();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -