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

📄 serverlisttable.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.swing.tables;import java.awt.BorderLayout;import java.awt.Component;import java.awt.GridLayout;import java.awt.Toolkit;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.ClipboardOwner;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.Transferable;import java.awt.datatransfer.UnsupportedFlavorException;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.io.IOException;import java.net.URL;import java.util.Hashtable;import java.util.List;import java.util.Map;import javax.swing.Icon;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JPopupMenu;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.SwingConstants;import javax.swing.table.DefaultTableColumnModel;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableCellRenderer;import javax.swing.table.TableColumn;import javax.swing.table.TableColumnModel;import javax.swing.table.TableModel;import org.jdesktop.swingx.JXTable;import org.jdesktop.swingx.table.TableColumnExt;import org.jmule.core.JMRunnable;import org.jmule.core.JMThread;import org.jmule.core.JMuleCore;import org.jmule.core.JMuleCoreFactory;import org.jmule.core.edonkey.ServerManager;import org.jmule.core.edonkey.ServerManagerFactory;import org.jmule.core.edonkey.impl.ED2KServerLink;import org.jmule.core.edonkey.impl.Server;import org.jmule.countrylocator.CountryLocator;import org.jmule.ui.FlagPack;import org.jmule.ui.IDialog;import org.jmule.ui.UIConstants;import org.jmule.ui.localizer._;import org.jmule.ui.maintabs.serverlist.INewServerDialog;import org.jmule.ui.swing.ImgRep;import org.jmule.ui.swing.SwingGUIUpdater;import org.jmule.ui.swing.SwingUtils;import org.jmule.ui.swing.maintabs.serverlist.SNewServerDialog;import org.jmule.ui.swing.maintabs.serverlist.ServerDetailsDialog;import org.jmule.ui.swing.models.ServerListTableModel;import org.jmule.ui.utils.NumberFormatter;import org.jmule.util.GeneralComparator;/** *  * @author javajox * @version $$Revision: 1.4 $$ * Last changed by $$Author: javajox $$ on $$Date: 2008/10/18 17:42:46 $$ */public class ServerListTable extends JMTable {	CountryLocator country_locator = CountryLocator.getInstance();		// =============== Column cell renderers ==============================	class ServerNameTableCellRenderer extends ServerListTableCellRenderer  {		public Component getTableCellRendererComponent(JTable table, Object value,				boolean isSelected, boolean hasFocus, int row, int column) {			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);				        if(!server.isDown()) 	          if(server.isConnected()) this.setIcon(ImgRep.getIcon("server_connected.png"));		          else this.setIcon(ImgRep.getIcon("server.png"));	        else this.setIcon(ImgRep.getIcon("server_error.png"));	        			URL flag_icon_url = FlagPack.getFlagAsURLByIP(server.getAddress(), FlagPack.FlagSize.S18x25);			String name         = ( server.getName() != "" ) ? server.getName() : null;			String ip           = ( server.getAddress() != "" ) ? server.getAddress() : null;			String ver          = ( server.getVersion() != "") ? " ver. " + server.getVersion() + "<br>" : null;			String desc         = ( server.getDesc() != "" ) ? server.getDesc() : null;			String ping         = ( server.getPing() > 0 ) ? "<tr><td>Ping</td><td>" + server.getPing() + "</td></tr>" + "" : null;			String users        = ( server.getNumUsers() > 0 ) ?  "<tr><td>Users</td><td>" + NumberFormatter.formatSizeHumanReadable(server.getNumUsers()) + " (max " + NumberFormatter.formatSizeHumanReadable(server.getMaxUsers()) +")"+ "</td></tr>" + "" : null;			//String max_users    = ( server.getMaxUsers() > 0 ) ? server.getMaxUsers() + "" : null;			String files        = ( server.getNumFiles() > 0 ) ? "<tr><td>Files</td><td>" + NumberFormatter.formatSizeHumanReadable(server.getNumFiles()) + " Limits [soft: " + NumberFormatter.formatSizeHumanReadable(server.getSoftLimit()) + ", hard: " + NumberFormatter.formatSizeHumanReadable(server.getHardLimit()) +"]" +"</td></tr>" + "" : null;			//String soft_limit   = ( server.getSoftLimit() > 0 ) ? server.getSoftLimit() + "" : null;			//String hard_limit   = ( server.getHardLimit() > 0 ) ? server.getHardLimit() + "" : null;			//String down         = ( server.isDown() ? "<tr><td>Status</td><td><font color=\"red\"><b>DOWN</b></font></td></tr>" : null );			this.setText(" " + server.getName());			String text =   "<html>" + "<body " + (server.isDown()?"color=\"#c0c0c0\"":"") + ">" +			                           ( name != null ? name : "" ) + 			                           ( ver != null ? ver : "" ) +			                           ( desc != null ? desc : "" ) +			              "<hr>" +			              "<table>" + ( ( ip != null || flag_icon_url != null ) ? ("<tr><td>IP</td><td>" + ( flag_icon_url != null ? "<img src=\""+flag_icon_url+"\">&nbsp;" : "" ) + ( ip != null ? ip : "") + "</td></tr>") : "" ) +			                          ( ping != null ? ping  : "" ) +			                          ( users != null ? users : "" ) +			                          ( files != null ? files : "" ) + 			              "</table>"+			              "</body>" +			              "</html>";			//System.out.println(text);			this.setToolTipText(text);			this.setHorizontalAlignment(SwingConstants.LEFT);			return this;		}	}	// --------------------------------------------------------------------------	class CCTableCellRenderer extends ServerListTableCellRenderer  {		public Component getTableCellRendererComponent(JTable table, Object value,				boolean isSelected, boolean hasFocus, int row, int column) {			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);			this.setHorizontalAlignment(SwingConstants.CENTER);			this.setText(!country_locator.isServiceDown() ? 					      country_locator.getCountryCode(server.getAddress()) : "Unknown");			if( !country_locator.isServiceDown() )				 this.setToolTipText(country_locator.getCountryName(server.getAddress()));			return this;		}	}	// ---------------------------------------------------------------------------	class FlagTableCellRenderer extends ServerListTableCellRenderer {		public Component getTableCellRendererComponent(JTable table, Object value,				boolean isSelected, boolean hasFocus, int row, int column) {			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);			this.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);			Icon flag_icon = FlagPack.getFlagAsIconByIP(server.getAddress(), FlagPack.FlagSize.S25x15);			if( flag_icon != null ) this.setIcon(flag_icon);			if( !country_locator.isServiceDown() )				 this.setToolTipText(country_locator.getCountryName(server.getAddress()));			return this;		}	}	// --------------------------------------------------------------------------	class StaticTableCellRenderer extends ServerListTableCellRenderer {		public Component getTableCellRendererComponent(JTable table, Object value,				boolean isSelected, boolean hasFocus, int row, int column) {			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);			this.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);			this.setText(server.isStatic()?"Yes":"No");			return this;		}	}	// ---------------------------------------------------------------------------	class DescTableCellRenderer extends ServerListTableCellRenderer {		public Component getTableCellRendererComponent(JTable table, Object value,				boolean isSelected, boolean hasFocus, int row, int column) {			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);			this.setHorizontalAlignment(SwingConstants.LEFT);			this.setText(" " + server.getDesc());			this.setToolTipText(server.getDesc());			return this;		}	}	// ---------------------------------------------------------------------------	class PingTableCellRenderer extends ServerListTableCellRenderer {		public Component getTableCellRendererComponent(JTable table, Object value,				boolean isSelected, boolean hasFocus, int row, int column) {			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);            this.setText(server.getPing() + " ");            this.setHorizontalAlignment(SwingConstants.RIGHT);			return this;		}	}	// -----------------------------------------------------------------------------	class UsersTableCellRenderer extends ServerListTableCellRenderer {		public Component getTableCellRendererComponent(JTable table, Object value,				boolean isSelected, boolean hasFocus, int row, int column) {			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);            this.setText(NumberFormatter.formatSizeHumanReadable(server.getNumUsers()) + " ");            this.setHorizontalAlignment(SwingConstants.RIGHT);			return this;		}	}	// -------------------------------------------------------------------------------	class MaxUsersTableCellRenderer extends ServerListTableCellRenderer {		public Component getTableCellRendererComponent(JTable table, Object value,				boolean isSelected, boolean hasFocus, int row, int column) {			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);			this.setText(NumberFormatter.formatSizeHumanReadable(server.getMaxUsers()) + " ");			this.setHorizontalAlignment(SwingConstants.RIGHT);			return this;		}	}	// --------------------------------------------------------------------------------	class FilesTableCellRenderer extends ServerListTableCellRenderer {		public Component getTableCellRendererComponent(JTable table, Object value,				boolean isSelected, boolean hasFocus, int row, int column) {			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);			this.setText(NumberFormatter.formatSizeHumanReadable(server.getNumFiles()) + " ");			this.setHorizontalAlignment(SwingConstants.RIGHT);			return this;		}	}	// --------------------------------------------------------------------------------	class SoftLimitTableCellRenderer extends ServerListTableCellRenderer {		public Component getTableCellRendererComponent(JTable table, Object value,				boolean isSelected, boolean hasFocus, int row, int column) {			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);			this.setText(NumberFormatter.formatSizeHumanReadable(server.getSoftLimit()) + " ");			this.setHorizontalAlignment(SwingConstants.RIGHT);			return this;		}	}	// ----------------------------------------------------------------------------------	class HardLimitTableCellRenderer extends ServerListTableCellRenderer {		public Component getTableCellRendererComponent(JTable table, Object value,				boolean isSelected, boolean hasFocus, int row, int column) {			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);			this.setText(NumberFormatter.formatSizeHumanReadable(server.getHardLimit()) + " ");			this.setHorizontalAlignment(SwingConstants.RIGHT);			return this;		}	}	// -----------------------------------------------------------------------------------	class VersionTableCellRenderer extends ServerListTableCellRenderer {		public Component getTableCellRendererComponent(JTable table, Object value,				boolean isSelected, boolean hasFocus, int row, int column) {			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);			this.setHorizontalAlignment(SwingConstants.LEFT);            this.setText(" "+server.getVersion());			return this;		}	}	// ------------------------------------------------------------------------------------    class IPTableCellRenderer extends ServerListTableCellRenderer {		public Component getTableCellRendererComponent(JTable table, Object value,				boolean isSelected, boolean hasFocus, int row, int column) {			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);			this.setHorizontalAlignment(SwingConstants.LEFT);            this.setText(" "+server.getAddress() + ":" + server.getPort());			return this;		}	}    // --------------------------------------------------------------------------------------	class DownTableCellRenderer extends ServerListTableCellRenderer {		public Component getTableCellRendererComponent(JTable table, Object value,				boolean isSelected, boolean hasFocus, int row, int column) {			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);            this.setText(server.isDown()?"Yes":"No");            this.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);			return this;		}	}		private JMuleCore _core = JMuleCoreFactory.getSingleton();	private ServerManager _server_manager = _core.getServerManager();	private final Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();	private ServerListTableModel server_list_model;	private SwingGUIUpdater _gui_updater = SwingGUIUpdater.getInstance();	private final JXTable _this;	private ServerDetailsDialog server_details;		public ServerListTable(JFrame parent) {        super(parent);		init();		_this = this;	}		//public void refresh() {				 //_this.updateUI();			// TableModel model = _this.getModel();			 //((AbstractTableModel)model).fireTableDataChanged();			 //TableModel model = _this.getModel();			 //((AbstractTableModel)model).fireTableRowsUpdated(	         //           0, model.getRowCount() );		//	 repaint();			//}		private void init() {        		// Create columns for server manager		TableColumnExt name = new TableColumnExt();		name.setIdentifier(UIConstants.SERVER_LIST_NAME_COLUMN_ID);		name.setModelIndex(ServerListTableModel.SERVER_NAME);		name.setVisible(_pref.isColumnVisible(UIConstants.SERVER_LIST_NAME_COLUMN_ID));		name.setHeaderValue("Name");			name.setCellRenderer(new ServerNameTableCellRenderer());		name.setComparator(new GeneralComparator("getName"));				table_columns.add(name);		//server_tab_column_model.addColumn( name );				TableColumnExt cc = new TableColumnExt();		cc.setIdentifier(UIConstants.SERVER_LIST_CC_COLUMN_ID);		cc.setModelIndex(ServerListTableModel.CC);		cc.setVisible(_pref.isColumnVisible(UIConstants.SERVER_LIST_CC_COLUMN_ID));		cc.setHeaderValue("CC");		cc.setCellRenderer(new CCTableCellRenderer());				table_columns.add(cc);				TableColumnExt flag = new TableColumnExt();		flag.setIdentifier(UIConstants.SERVER_LIST_FLAG_COLUMN_ID);		flag.setModelIndex(ServerListTableModel.FLAG);		flag.setVisible(_pref.isColumnVisible(UIConstants.SERVER_LIST_FLAG_COLUMN_ID));		flag.setHeaderValue("Flag");		flag.setCellRenderer(new FlagTableCellRenderer());				table_columns.add(flag);				TableColumnExt ip = new TableColumnExt();		ip.setModelIndex(ServerListTableModel.SERVER_IP);		ip.setIdentifier(UIConstants.SERVER_LIST_IP_COLUMN_ID);		ip.setVisible(_pref.isColumnVisible(UIConstants.SERVER_LIST_IP_COLUMN_ID));		ip.setHeaderValue("IP");		ip.setCellRenderer(new IPTableCellRenderer());

⌨️ 快捷键说明

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