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

📄 serverlist.java

📁 JMule是一个基于Java开发
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* *  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.serverlist;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.Color;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.JMThread;import org.jmule.core.edonkey.ServerManager;import org.jmule.core.edonkey.ServerManagerException;import org.jmule.core.edonkey.impl.ED2KServerLink;import org.jmule.core.edonkey.impl.Server;import org.jmule.countrylocator.CountryLocator;import org.jmule.ui.FlagPack.FlagSize;import org.jmule.ui.localizer.Localizer;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.CountryFlagPainter;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.TableItemCountryFlag;import org.jmule.ui.utils.NumberFormatter;import org.jmule.util.Misc;/** *  * @author binary256 * @version $$Revision: 1.7 $$ * Last changed by $$Author: binary256_ $$ on $$Date: 2008/10/16 18:20:01 $$ */public class ServerList extends JMTable<Server> implements Refreshable {		private ServerManager servers_manager;		private Color server_down_color      = new Color(getDisplay(),178,178,178);	private Color server_connected_color = new Color(getDisplay(),124,152,225);	private Color server_default_color   = new Color(getDisplay(),0,0,0);		private static final FlagSize default_flag_size = FlagSize.S25x15;		private Menu no_servers_menu;	private Menu no_selected_servers_menu;	private Menu selected_server_menu;	private Menu selected_multiple_servers_menu;		private MenuItem selected_server_connect;	private MenuItem selected_server_disconnect;	private MenuItem no_selection_menu_disconnect;	private MenuItem server_disconnect_multiselect,server_connect_multiselect;	private MenuItem server_remove_all,server_remove_all_multiselect;	private MenuItem add_to_static_list,remove_from_static_list;	private MenuItem multisel_add_to_static_list,multisel_remove_from_static_list;		private enum ServerListStatus { NO_SERVERS,NO_SERVERS_SELECTED_DISCONNECTED,NO_SERVERS_SELECTED_CONNECTED,SELECTED_DISCONNECTED_SERVER_NOT_CONNECTED,							 		  SELECTED_MULTIPLE_SERVERS_NOT_CONNECTED, SELECTED_CONNECTED_SERVER,							 		  SELECTED_MULTIPLE_SERVERS_WITH_ONE_CONNECTED,SELECTED_MULTIPLE_SERVERS_CONNECTED,							 		  SELECTED_DISCONNECTED_SERVER_CONNECTED }		public ServerList(Composite composite, final ServerManager server_manager) {		super(composite, SWT.NONE);				SWTServerListWrapper.getInstance().setServerList(this);				this.servers_manager = server_manager;		int width;		width = SWTPreferences.getInstance().getColumnWidth(SWTConstants.SERVER_LIST_NAME_COLUMN_ID);		addColumn(SWT.LEFT, SWTConstants.SERVER_LIST_NAME_COLUMN_ID,Localizer._("mainwindow.serverlisttab.serverlist.column.name"), "",width);				width = SWTPreferences.getInstance().getColumnWidth(SWTConstants.SERVER_LIST_CC_COLUMN_ID);		addColumn(SWT.CENTER, SWTConstants.SERVER_LIST_CC_COLUMN_ID,Localizer._("mainwindow.serverlisttab.serverlist.column.country_code"), _._("mainwindow.serverlisttab.serverlist.column.country_code.desc"),width);		if (CountryLocator.getInstance().isServiceDown()) 			disableColumn(SWTConstants.SERVER_LIST_CC_COLUMN_ID);				width = SWTPreferences.getInstance().getColumnWidth(SWTConstants.SERVER_LIST_FLAG_COLUMN_ID);		addColumn(SWT.LEFT, SWTConstants.SERVER_LIST_FLAG_COLUMN_ID,Localizer._("mainwindow.serverlisttab.serverlist.column.country"), "",width);		if (CountryLocator.getInstance().isServiceDown()) 			disableColumn(SWTConstants.SERVER_LIST_FLAG_COLUMN_ID);				width = SWTPreferences.getInstance().getColumnWidth(SWTConstants.SERVER_LIST_IP_COLUMN_ID);		addColumn(SWT.LEFT, SWTConstants.SERVER_LIST_IP_COLUMN_ID, Localizer._("mainwindow.serverlisttab.serverlist.column.address"), "",width);				width = SWTPreferences.getInstance().getColumnWidth(SWTConstants.SERVER_LIST_DESCRIPTION_COLUMN_ID);		addColumn(SWT.LEFT, SWTConstants.SERVER_LIST_DESCRIPTION_COLUMN_ID,Localizer._("mainwindow.serverlisttab.serverlist.column.description"), "",width);				width = SWTPreferences.getInstance().getColumnWidth(SWTConstants.SERVER_LIST_PING_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.SERVER_LIST_PING_COLUMN_ID,Localizer._("mainwindow.serverlisttab.serverlist.column.ping"), "",width);				width = SWTPreferences.getInstance().getColumnWidth(SWTConstants.SERVER_LIST_USERS_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.SERVER_LIST_USERS_COLUMN_ID,Localizer._("mainwindow.serverlisttab.serverlist.column.users"), "",width);				width = SWTPreferences.getInstance().getColumnWidth(SWTConstants.SERVER_LIST_MAX_USERS_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.SERVER_LIST_MAX_USERS_COLUMN_ID,Localizer._("mainwindow.serverlisttab.serverlist.column.max_users"), _._("mainwindow.serverlisttab.serverlist.column.maxusers.desc"),width);				width = SWTPreferences.getInstance().getColumnWidth(SWTConstants.SERVER_LIST_FILES_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.SERVER_LIST_FILES_COLUMN_ID,Localizer._("mainwindow.serverlisttab.serverlist.column.files"), "",width);				width = SWTPreferences.getInstance().getColumnWidth(SWTConstants.SERVER_LIST_SOFT_LIMIT_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.SERVER_LIST_SOFT_LIMIT_COLUMN_ID,Localizer._("mainwindow.serverlisttab.serverlist.column.soft_limit"), _._("mainwindow.serverlisttab.serverlist.column.soft_limit.desc"),width);				width = SWTPreferences.getInstance().getColumnWidth(SWTConstants.SERVER_LIST_HARD_LIMIT_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.SERVER_LIST_HARD_LIMIT_COLUMN_ID,Localizer._("mainwindow.serverlisttab.serverlist.column.hard_limit"), _._("mainwindow.serverlisttab.serverlist.column.hard_limit.desc"),width);				width = SWTPreferences.getInstance().getColumnWidth(SWTConstants.SERVER_LIST_VERSION_COLUMN_ID);		addColumn(SWT.RIGHT, SWTConstants.SERVER_LIST_VERSION_COLUMN_ID,Localizer._("mainwindow.serverlisttab.serverlist.column.software"), "",width);				width = SWTPreferences.getInstance().getColumnWidth(SWTConstants.SERVER_LIST_STATIC_COLUMN_ID);		addColumn(SWT.LEFT, SWTConstants.SERVER_LIST_STATIC_COLUMN_ID,Localizer._("mainwindow.serverlisttab.serverlist.column.static"), "",width);				updateColumnOrder();		updateColumnVisibility();				final SWTServerListWrapper wrapper = SWTServerListWrapper.getInstance();				// No servers		no_servers_menu = new Menu(this);				MenuItem no_servers_server_add = new MenuItem (no_servers_menu, SWT.PUSH);		no_servers_server_add.setText (Localizer._("mainwindow.serverlisttab.serverlist.popupmenu.add_server"));		no_servers_server_add.setImage(SWTImageRepository.getImage("server_add.png"));		no_servers_server_add.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				showServerAddWindow();			}		});				new MenuItem (no_servers_menu, SWT.SEPARATOR);				MenuItem no_server_paste_ed2k_links = new MenuItem (no_servers_menu, SWT.PUSH);		no_server_paste_ed2k_links.setText (Localizer._("mainwindow.serverlisttab.serverlist.popupmenu.paste_ed2k_links"));		no_server_paste_ed2k_links.setImage(SWTImageRepository.getImage("ed2k_link_paste.png"));		no_server_paste_ed2k_links.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				pasteED2KLinks();			}		});				new MenuItem (no_servers_menu, SWT.SEPARATOR);		MenuItem no_server_column_setup = new MenuItem (no_servers_menu, SWT.PUSH);		no_server_column_setup.setText (Localizer._("mainwindow.serverlisttab.serverlist.popupmenu.column_setup"));		no_server_column_setup.setImage(SWTImageRepository.getImage("columns_setup.png"));		no_server_column_setup.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				showColumnEditorWindow();			}		});				no_selected_servers_menu = new Menu(this);		MenuItem no_selection_menu_add = new MenuItem(no_selected_servers_menu,SWT.PUSH);		no_selection_menu_add.setText(Localizer._("mainwindow.serverlisttab.serverlist.popupmenu.add_server"));		no_selection_menu_add.setImage(SWTImageRepository.getImage("server_add.png"));		no_selection_menu_add.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				showServerAddWindow();			} 		});				new MenuItem(no_selected_servers_menu,SWT.SEPARATOR);				no_selection_menu_disconnect = new MenuItem(no_selected_servers_menu,SWT.PUSH);		no_selection_menu_disconnect.setText(Localizer._("mainwindow.serverlisttab.serverlist.popupmenu.disconnect_from"));		no_selection_menu_disconnect.setImage(SWTImageRepository.getImage("server_disconnect.png"));		no_selection_menu_disconnect.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				wrapper.disconnect();			} 		});				new MenuItem(no_selected_servers_menu,SWT.SEPARATOR);				MenuItem no_selection_menu_remove_all = new MenuItem(no_selected_servers_menu,SWT.PUSH);		no_selection_menu_remove_all.setText(Localizer._("mainwindow.serverlisttab.serverlist.popupmenu.remove_all"));		no_selection_menu_remove_all.setImage(SWTImageRepository.getImage("remove_all.png"));		no_selection_menu_remove_all.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				clearServerList();			} 		});				new MenuItem(no_selected_servers_menu,SWT.SEPARATOR);					MenuItem no_selection_menu_paste_ed2k = new MenuItem(no_selected_servers_menu,SWT.PUSH);		no_selection_menu_paste_ed2k.setText(Localizer._("mainwindow.serverlisttab.serverlist.popupmenu.paste_ed2k_links"));		no_selection_menu_paste_ed2k.setImage(SWTImageRepository.getImage("ed2k_link_paste.png"));		no_selection_menu_paste_ed2k.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				pasteED2KLinks();			} 		});				new MenuItem(no_selected_servers_menu,SWT.SEPARATOR);				MenuItem no_selection_menu_column_setup = new MenuItem(no_selected_servers_menu,SWT.PUSH);		no_selection_menu_column_setup.setText(Localizer._("mainwindow.serverlisttab.serverlist.popupmenu.column_setup"));		no_selection_menu_column_setup.setImage(SWTImageRepository.getImage("columns_setup.png"));		no_selection_menu_column_setup.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				showColumnEditorWindow();			} 		});				selected_server_menu =  new Menu(this);				selected_server_connect = new MenuItem (selected_server_menu, SWT.PUSH);		selected_server_connect.setText (Localizer._("mainwindow.serverlisttab.serverlist.popupmenu.connect_to"));		selected_server_connect.setImage(SWTImageRepository.getImage("server_connect.png"));		selected_server_connect.addSelectionListener(new SelectionAdapter() {		public void widgetSelected(final SelectionEvent e) {			Server selected_server = (Server) getSelectedObject();			wrapper.connectTo(selected_server);		}} );				selected_server_disconnect = new MenuItem (selected_server_menu, SWT.PUSH);		selected_server_disconnect.setText (Localizer._("mainwindow.serverlisttab.serverlist.popupmenu.disconnect_from"));		selected_server_disconnect.setImage(SWTImageRepository.getImage("server_disconnect.png"));		selected_server_disconnect.addSelectionListener(new SelectionAdapter() {		public void widgetSelected(final SelectionEvent e) {			if (wrapper.isAutoconnecting())				wrapper.stopConnecting();			else				wrapper.disconnect();		}} );				new MenuItem (selected_server_menu, SWT.SEPARATOR);		MenuItem server_add = new MenuItem (selected_server_menu, SWT.PUSH);		server_add.setText (Localizer._("mainwindow.serverlisttab.serverlist.popupmenu.add_server"));		server_add.setImage(SWTImageRepository.getImage("server_add.png"));		server_add.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				showServerAddWindow();			}		});		final MenuItem server_remove = new MenuItem (selected_server_menu, SWT.PUSH);		server_remove.setText (Localizer._("mainwindow.serverlisttab.serverlist.popupmenu.remove_server"));		server_remove.setImage(SWTImageRepository.getImage("server_delete.png"));		server_remove.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				removeSelectedServers();			}		});		server_remove_all = new MenuItem (selected_server_menu, SWT.PUSH);		server_remove_all.setText (Localizer._("mainwindow.serverlisttab.serverlist.popupmenu.remove_all"));		server_remove_all.setImage(SWTImageRepository.getImage("remove_all.png"));		server_remove_all.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				clearServerList();			}		});		new MenuItem (selected_server_menu, SWT.SEPARATOR);		final MenuItem server_copy_ed2k_link = new MenuItem (selected_server_menu, SWT.PUSH);

⌨️ 快捷键说明

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