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

📄 downloadlist.java

📁 JMule是一个基于Java开发
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* *  JMule - Java file sharing client *  Copyright (C) 2007-2008 JMule team ( jmule@jmule.org / http://jmule.org ) * *  Any parts of this program derived from other projects, or contributed *  by third-party developers are copyrighted by their respective authors. * *  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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. * */package org.jmule.ui.swt.maintabs.transfers;import java.text.DecimalFormat;import java.util.List;import org.eclipse.swt.SWT;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.graphics.Image;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Menu;import org.eclipse.swt.widgets.MenuItem;import org.jmule.core.JMRunnable;import org.jmule.core.JMuleCore;import org.jmule.core.downloadmanager.DownloadManager;import org.jmule.core.downloadmanager.DownloadManagerListener;import org.jmule.core.downloadmanager.DownloadSession;import org.jmule.core.edonkey.impl.ED2KFileLink;import org.jmule.core.edonkey.impl.FileHash;import org.jmule.core.uploadmanager.UploadManager;import org.jmule.core.uploadmanager.UploadSession;import org.jmule.ui.localizer._;import org.jmule.ui.swt.Refreshable;import org.jmule.ui.swt.SWTConstants;import org.jmule.ui.swt.SWTImageRepository;import org.jmule.ui.swt.SWTPreferences;import org.jmule.ui.swt.SWTThread;import org.jmule.ui.swt.Utils;import org.jmule.ui.swt.common.GapListPainter;import org.jmule.ui.swt.mainwindow.MainWindow;import org.jmule.ui.swt.tables.BufferedTableRow;import org.jmule.ui.swt.tables.JMTable;import org.jmule.ui.swt.tables.TableItemGapList;import org.jmule.ui.utils.FileFormatter;import org.jmule.ui.utils.SpeedFormatter;import org.jmule.ui.utils.TimeFormatter;import org.jmule.util.Misc;/** * Created on Aug 02 2008 * @author binary256 * @version $$Revision: 1.7 $$ * Last changed by $$Author: binary256_ $$ on $$Date: 2008/10/16 18:20:02 $$ */public class DownloadList extends JMTable<DownloadSession> implements Refreshable,DownloadManagerListener {	private JMuleCore _core;	private DownloadManager download_manager;	private UploadManager   upload_manager;		private Menu no_downloads_menu;	private Menu single_download_selected;	private Menu multiple_downloads_selected;		private MenuItem set_download_status;	private MenuItem multiple_start_download;	private MenuItem multiple_stop_download;	private enum DownloadListStatus { NO_DOWNLOADS, NO_DOWNLOADS_SELECTED, STOPPED_DOWNLOAD_SELECTED,									  STARTED_DOWNLOAD_SELECTED, MULTIPLE_STARTED_DOWNLOADS_SELECTED,									  MULTIPLE_STOPPED_DOWNLOADS_SELECTED, MULTIPLE_MISC_DOWNLOADS_SELECTED };		  	public DownloadList(Composite composite, JMuleCore core) {		super(composite, SWT.NONE);				_core = core;		download_manager = core.getDownloadManager();		upload_manager = core.getUploadManager();				int width;				width = swt_preferences.getColumnWidth(SWTConstants.DOWNLOAD_LIST_FILE_NAME_COLUMN_ID); 		addColumn(SWT.LEFT, SWTConstants.DOWNLOAD_LIST_FILE_NAME_COLUMN_ID, _._("mainwindow.transferstab.downloads.column.filename"),"", width);				width = swt_preferences.getColumnWidth(SWTConstants.DOWNLOAD_LIST_SIZE_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.DOWNLOAD_LIST_SIZE_COLUMN_ID, 	_._("mainwindow.transferstab.downloads.column.size"),"", width);				width = swt_preferences.getColumnWidth(SWTConstants.DOWNLOAD_LIST_TRANSFERRED_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.DOWNLOAD_LIST_TRANSFERRED_COLUMN_ID, _._("mainwindow.transferstab.downloads.column.transferred"),"", width);				width = swt_preferences.getColumnWidth(SWTConstants.DOWNLOAD_LIST_DOWNLOAD_SPEED_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.DOWNLOAD_LIST_DOWNLOAD_SPEED_COLUMN_ID, _._("mainwindow.transferstab.downloads.column.download_speed"), "", width);				width = SWTPreferences.getInstance().getColumnWidth(SWTConstants.DOWNLOAD_LIST_UPLOAD_SPEED_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.DOWNLOAD_LIST_UPLOAD_SPEED_COLUMN_ID, _._("mainwindow.transferstab.downloads.column.upload_speed"),"", width);				width = swt_preferences.getColumnWidth(SWTConstants.DOWNLOAD_LIST_PROGRESS_COLUMN_ID);		addColumn(SWT.LEFT, SWTConstants.DOWNLOAD_LIST_PROGRESS_COLUMN_ID, _._("mainwindow.transferstab.downloads.column.progress"),"", width);		width = swt_preferences.getColumnWidth(SWTConstants.DOWNLOAD_LIST_COMPLETED_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.DOWNLOAD_LIST_COMPLETED_COLUMN_ID, _._("mainwindow.transferstab.downloads.column.completed"),"", width);				width = swt_preferences.getColumnWidth(SWTConstants.DOWNLOAD_LIST_SOURCES_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.DOWNLOAD_LIST_SOURCES_COLUMN_ID, _._("mainwindow.transferstab.downloads.column.sources"),"", width);				width = swt_preferences.getColumnWidth(SWTConstants.DOWNLOAD_LIST_REMAINING_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.DOWNLOAD_LIST_REMAINING_COLUMN_ID, _._("mainwindow.transferstab.downloads.column.eta"), _._("mainwindow.transferstab.downloads.column.eta.desc"), width);				width = swt_preferences.getColumnWidth(SWTConstants.DOWNLOAD_LIST_STATUS_COLUMN_ID);		addColumn(SWT.LEFT, SWTConstants.DOWNLOAD_LIST_STATUS_COLUMN_ID, _._("mainwindow.transferstab.downloads.column.status"),"", width);				width = swt_preferences.getColumnWidth(SWTConstants.DOWNLOAD_LIST_COMPLETE_SOURCES_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.DOWNLOAD_LIST_COMPLETE_SOURCES_COLUMN_ID, _._("mainwindow.transferstab.downloads.column.completed_src"), "", width);				width = swt_preferences.getColumnWidth(SWTConstants.DOWNLOAD_LIST_PARTIAL_SOURCES_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.DOWNLOAD_LIST_PARTIAL_SOURCES_COLUMN_ID, _._("mainwindow.transferstab.downloads.column.partial_src"), "", width);				updateColumnOrder();		updateColumnVisibility();				no_downloads_menu = new Menu(this);				MenuItem paste_ed2k_file_links = new MenuItem(no_downloads_menu,SWT.PUSH);		paste_ed2k_file_links.setText(_._("mainwindow.transferstab.downloads.popupmenu.paste_ed2k_links"));		paste_ed2k_file_links.setImage(SWTImageRepository.getImage("ed2k_link_paste.png"));		paste_ed2k_file_links.addSelectionListener(new SelectionAdapter() {			public void widgetSelected( SelectionEvent e ) {				pasteED2KLink();		}});		new MenuItem(no_downloads_menu,SWT.SEPARATOR);				MenuItem column_setup = new MenuItem(no_downloads_menu,SWT.PUSH);		column_setup.setText(_._("mainwindow.transferstab.downloads.popupmenu.column_setup"));		column_setup.setImage(SWTImageRepository.getImage("columns_setup.png"));		column_setup.addSelectionListener(new SelectionAdapter() {			public void widgetSelected( SelectionEvent e ) {				showColumnEditorWindow();			}		});				single_download_selected = new Menu(this);				set_download_status = new MenuItem(single_download_selected,SWT.PUSH);		set_download_status.setText(_._("mainwindow.transferstab.downloads.popupmenu.start_download"));		set_download_status.setImage(SWTImageRepository.getImage("start_download.png"));		set_download_status.addSelectionListener(new SelectionAdapter() {			public void widgetSelected( SelectionEvent e ) {				if (getSelectedObject().isStarted())					stopSelectedDownloads();				else					startSelectedDownloads();		}});				MenuItem single_cancel_download = new MenuItem(single_download_selected,SWT.PUSH);		single_cancel_download.setText(_._("mainwindow.transferstab.downloads.popupmenu.cancel_download"));		single_cancel_download.setImage(SWTImageRepository.getImage("cancel.png"));		single_cancel_download.addSelectionListener(new SelectionAdapter() {			public void widgetSelected( SelectionEvent e ) {				cancelSelectedDownloads();		}});					new MenuItem(single_download_selected,SWT.SEPARATOR);				MenuItem copy_ed2k_link = new MenuItem(single_download_selected,SWT.PUSH);		copy_ed2k_link.setText(_._("mainwindow.transferstab.downloads.popupmenu.copy_ed2k_link"));		copy_ed2k_link.setImage(SWTImageRepository.getImage("ed2k_link.png"));		copy_ed2k_link.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(SelectionEvent e) {				copyED2KLink();			}		});						MenuItem paste_ed2k_link = new MenuItem(single_download_selected,SWT.PUSH);		paste_ed2k_link.setText(_._("mainwindow.transferstab.downloads.popupmenu.paste_ed2k_link"));		paste_ed2k_link.setImage(SWTImageRepository.getImage("ed2k_link_paste.png"));		paste_ed2k_link.addSelectionListener(new SelectionAdapter() {			public void widgetSelected( SelectionEvent e ) {				pasteED2KLink();		}});				new MenuItem(single_download_selected,SWT.SEPARATOR);				column_setup = new MenuItem(single_download_selected,SWT.PUSH);		column_setup.setText(_._("mainwindow.transferstab.downloads.popupmenu.column_setup"));		column_setup.setImage(SWTImageRepository.getImage("columns_setup.png"));		column_setup.addSelectionListener(new SelectionAdapter() {			public void widgetSelected( SelectionEvent e ) {				showColumnEditorWindow();		}});				new MenuItem(single_download_selected,SWT.SEPARATOR);				MenuItem download_details = new MenuItem(single_download_selected,SWT.PUSH);		download_details.setText(_._("mainwindow.transferstab.downloads.popupmenu.details"));		download_details.setImage(SWTImageRepository.getImage("info.png"));				download_details.addSelectionListener(new SelectionAdapter() {			public void widgetSelected( SelectionEvent e ) {				try {					DownloadInfoWindow download_info_window = new DownloadInfoWindow(getSelectedObject());					download_info_window.getCoreComponents();					download_info_window.initUIComponents();				}catch(Throwable es) {					es.printStackTrace();				}		}});				multiple_downloads_selected = new Menu(this);				multiple_start_download = new MenuItem(multiple_downloads_selected,SWT.PUSH);		multiple_start_download.setText(_._("mainwindow.transferstab.downloads.popupmenu.start_downloads"));		multiple_start_download.setImage(SWTImageRepository.getImage("start_download.png"));		multiple_start_download.addSelectionListener(new SelectionAdapter() {			public void widgetSelected( SelectionEvent e ) {				startSelectedDownloads();		}});				multiple_stop_download = new MenuItem(multiple_downloads_selected,SWT.PUSH);		multiple_stop_download.setText(_._("mainwindow.transferstab.downloads.popupmenu.stop_downloads"));		multiple_stop_download.setImage(SWTImageRepository.getImage("stop_download.png"));		multiple_stop_download.addSelectionListener(new SelectionAdapter() {			public void widgetSelected( SelectionEvent e ) {				stopSelectedDownloads();		}});				MenuItem multiple_cancel_download = new MenuItem(multiple_downloads_selected,SWT.PUSH);		multiple_cancel_download.setText(_._("mainwindow.transferstab.downloads.popupmenu.cancel_downloads"));		multiple_cancel_download.setImage(SWTImageRepository.getImage("cancel.png"));		multiple_cancel_download.addSelectionListener(new SelectionAdapter() {			public void widgetSelected( SelectionEvent e ) {				cancelSelectedDownloads();		}});					new MenuItem(multiple_downloads_selected,SWT.SEPARATOR);				MenuItem multiple_copy_ed2k_links = new MenuItem(multiple_downloads_selected, SWT.PUSH);		multiple_copy_ed2k_links.setText(_._("mainwindow.transferstab.downloads.popupmenu.copy_ed2k_links"));		multiple_copy_ed2k_links.setImage(SWTImageRepository.getImage("ed2k_link_paste.png"));		multiple_copy_ed2k_links.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(SelectionEvent e) {				copyED2KLink();			}		});				new MenuItem(multiple_downloads_selected,SWT.SEPARATOR);				column_setup = new MenuItem(multiple_downloads_selected,SWT.PUSH);		column_setup.setText(_._("mainwindow.transferstab.downloads.popupmenu.column_setup"));		column_setup.setImage(SWTImageRepository.getImage("columns_setup.png"));		column_setup.addSelectionListener(new SelectionAdapter() {			public void widgetSelected( SelectionEvent e ) {				showColumnEditorWindow();		}});				for(DownloadSession session : download_manager.getDownloads() ) {			addDownlaodSession(session);		}				download_manager.addDownloadManagerListener(this);			}		private DownloadListStatus getSelectionStatus() {				if ((getSelectionCount()==0)&&(getItems().length>0))			return DownloadListStatus.NO_DOWNLOADS_SELECTED;				if ((getSelectionCount()==1)&&(getSelectedObject().isStarted())) 			return DownloadListStatus.STARTED_DOWNLOAD_SELECTED;				if ((getSelectionCount()==1)&&(!getSelectedObject().isStarted())) 			return DownloadListStatus.STOPPED_DOWNLOAD_SELECTED;				if (getSelectionCount()>1) {			boolean contain_started = false;

⌨️ 快捷键说明

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