📄 uploadpeerstable.java
字号:
/* * 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.Component;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.util.Comparator;import javax.swing.JFrame;import javax.swing.JMenuItem;import javax.swing.JPopupMenu;import javax.swing.JTable;import javax.swing.SwingConstants;import org.jmule.core.edonkey.impl.Peer;import org.jmule.core.uploadmanager.UploadSession;import org.jmule.countrylocator.CountryLocator;import org.jmule.ui.FlagPack;import org.jmule.ui.UIConstants;import org.jmule.ui.swing.models.UploadPeersModel;import org.jmule.ui.utils.PeerInfoFormatter;import org.jmule.ui.utils.SpeedFormatter;import org.jmule.util.GeneralComparator;import org.jmule.util.Misc;/** * * Created on Oct 7, 2008 * @author javajox * @version $Revision: 1.2 $ * Last changed by $Author: javajox $ on $Date: 2008/10/19 17:59:25 $ */public class UploadPeersTable extends JMTable { CountryLocator country_locator = CountryLocator.getInstance(); UploadSession session; class NickNameTableCellRenderer extends UploadPeersTableCellRenderer { 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(" " + peer.getNickName()); return this; } } class CCTableCellRenderer extends UploadPeersTableCellRenderer { 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.getCountryCode(peer.getAddress())); this.setToolTipText(country_locator.getCountryName(peer.getAddress())); return this; } } class FlagTableCellRenderer extends UploadPeersTableCellRenderer { 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.setIcon(FlagPack.getFlagAsIconByIP(peer.getAddress(), FlagPack.FlagSize.S18x25)); this.setToolTipText(country_locator.getCountryName(peer.getAddress())); return this; } } class IPTableCellRenderer extends UploadPeersTableCellRenderer { 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(" " + peer.getAddress() + " : " + peer.getPort()); return this; } } /*class DownSpeedTableCellRenderer extends UploadPeersTableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); return this; } }*/ class UpSpeedTableCellRenderer extends UploadPeersTableCellRenderer { 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.RIGHT); this.setText(SpeedFormatter.formatSpeed(peer.getUploadSpeed()) + " "); return this; } } class ClientTableCellRenderer extends UploadPeersTableCellRenderer { 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(" " + PeerInfoFormatter.formatPeerSoftware(peer)); return this; } } class StatusTableCellRenderer extends UploadPeersTableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); Object[] objects = (Object[])value; UploadSession session = (UploadSession)objects[0]; Peer peer = (Peer)objects[1]; int peer_position = session.getPeerPosition(peer); boolean is_uploading = (peer_position == 0)?true:false; this.setHorizontalAlignment(SwingConstants.LEFT); this.setText(" " + (is_uploading?"Uploading":"Position: " + peer_position)); return this; } } // -------------------------------- Comparators ----------------------------------------- class CCComparator implements Comparator { public int compare(Object o1, Object o2) { Peer peer1 = (Peer)o1; Peer peer2 = (Peer)o2; String cc1 = country_locator.getCountryCode(peer1.getAddress()); String cc2 = country_locator.getCountryCode(peer2.getAddress()); return Misc.compareAllObjects(cc1, cc2, "toString", true); } } public UploadPeersTable(JFrame parent, UploadSession session) { super(parent); this.session = session; JMTableColumn nick_name = new JMTableColumn(); nick_name.setIdentifier(UIConstants.UPLOAD_PEER_LIST_NICKNAME_COLUMN_ID); nick_name.setModelIndex(UploadPeersModel.NICK_NAME); nick_name.setVisible(_pref.isColumnVisible(UIConstants.UPLOAD_PEER_LIST_NICKNAME_COLUMN_ID)); nick_name.setHeaderValue("Nickname"); nick_name.setCellRenderer(new NickNameTableCellRenderer()); nick_name.setComparator(new GeneralComparator("getNickName")); table_columns.add(nick_name); JMTableColumn cc = new JMTableColumn(); cc.setIdentifier(UIConstants.UPLOAD_PEER_LIST_CC_COLUMN_ID); cc.setModelIndex(UploadPeersModel.CC); cc.setVisible(_pref.isColumnVisible(UIConstants.UPLOAD_PEER_LIST_CC_COLUMN_ID)); cc.setHeaderValue("CC"); cc.setCellRenderer(new CCTableCellRenderer()); cc.setComparator(new CCComparator()); table_columns.add(cc); JMTableColumn flag = new JMTableColumn(); flag.setIdentifier(UIConstants.UPLOAD_PEER_LIST_FLAG_COLUMN_ID); flag.setModelIndex(UploadPeersModel.FLAG); flag.setVisible(_pref.isColumnVisible(UIConstants.UPLOAD_PEER_LIST_FLAG_COLUMN_ID)); flag.setHeaderValue("Flag"); flag.setCellRenderer(new FlagTableCellRenderer()); flag.setComparator(new GeneralComparator("ooops2!")); flag.setComparator(new CCComparator()); table_columns.add(flag); JMTableColumn ip = new JMTableColumn(); ip.setIdentifier(UIConstants.UPLOAD_PEER_LIST_IP_COLUMN_ID); ip.setModelIndex(UploadPeersModel.IP); ip.setVisible(_pref.isColumnVisible(UIConstants.UPLOAD_PEER_LIST_IP_COLUMN_ID)); ip.setHeaderValue("IP:Port"); ip.setCellRenderer(new IPTableCellRenderer()); ip.setComparator(new GeneralComparator("getAddress")); table_columns.add(ip); JMTableColumn up_speed = new JMTableColumn(); up_speed.setIdentifier(UIConstants.UPLOAD_PEER_LIST_UPLOAD_SPEED_COLUMN_ID); up_speed.setModelIndex(UploadPeersModel.UP_SPEED); up_speed.setVisible(_pref.isColumnVisible(UIConstants.UPLOAD_PEER_LIST_UPLOAD_SPEED_COLUMN_ID)); up_speed.setHeaderValue("Up speed"); up_speed.setCellRenderer(new UpSpeedTableCellRenderer()); up_speed.setComparator(new GeneralComparator("getUploadSpeed")); table_columns.add(up_speed); JMTableColumn client = new JMTableColumn(); client.setIdentifier(UIConstants.UPLOAD_PEER_LIST_SOFTWARE_COLUMN_ID); client.setModelIndex(UploadPeersModel.CLIENT); client.setVisible(_pref.isColumnVisible(UIConstants.UPLOAD_PEER_LIST_SOFTWARE_COLUMN_ID)); client.setHeaderValue("Client"); client.setCellRenderer(new ClientTableCellRenderer()); client.setComparator(new Comparator() { public int compare(Object o1, Object o2) { String client1 = PeerInfoFormatter.formatPeerSoftware((Peer)o1); String client2 = PeerInfoFormatter.formatPeerSoftware((Peer)o2); return Misc.compareAllObjects(client1, client2, "toString", true); } }); table_columns.add(client); JMTableColumn status = new JMTableColumn(); status.setIdentifier(UIConstants.UPLOAD_PEER_LIST_STATUS_COLUMN_ID); status.setModelIndex(UploadPeersModel.STATUS); status.setVisible(_pref.isColumnVisible(UIConstants.UPLOAD_PEER_LIST_STATUS_COLUMN_ID)); status.setHeaderValue("Status"); status.setCellRenderer(new StatusTableCellRenderer()); status.setComparator(new Comparator() { public int compare(Object o1, Object o2) { Object[] objects1 = (Object[])o1; Object[] objects2 = (Object[])o2; UploadSession session1 = (UploadSession)objects1[0]; Peer peer1 = (Peer)objects1[1]; UploadSession session2 = (UploadSession)objects2[0]; Peer peer2 = (Peer)objects2[1]; int peer_position1 = session1.getPeerPosition(peer1); int peer_position2 = session2.getPeerPosition(peer2); boolean is_uploading1 = (peer_position1 == 0)?true:false; boolean is_uploading2 = (peer_position2 == 0)?true:false; String str1 = is_uploading1?"Uploading":"Position: " + peer_position1; String str2 = is_uploading2?"Uploading":"Position: " + peer_position2; return Misc.compareAllObjects(str1, str2, "toString", true); } }); table_columns.add(status); super.buildColumns(new UploadPeersModel(session)); class PopupListener extends MouseAdapter { JMenuItem column_setup; public PopupListener() { column_setup = new JMenuItem("Column setup"); } public void mousePressed(MouseEvent e) { showPopup(e); } public void mouseReleased(MouseEvent e) { showPopup(e); } private void showPopup(MouseEvent e) { if (e.isPopupTrigger()) { JPopupMenu popup_menu = new JPopupMenu(); popup_menu.add(column_setup); popup_menu.show(e.getComponent(), e.getX(), e.getY()); } } } //this.addMouseListener(new PopupListener()); } private void init() { } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -