📄 downloaddetailspanel.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.maintabs.transfers;import java.awt.Color;import java.awt.Font;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.GridLayout;import java.awt.Insets;import javax.swing.BorderFactory;import javax.swing.ImageIcon;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.SwingConstants;import org.jmule.core.JMuleCore;import org.jmule.core.JMuleCoreFactory;import org.jmule.core.downloadmanager.DownloadSession;import org.jmule.core.uploadmanager.UploadManager;import org.jmule.ui.UIConstants;import org.jmule.ui.swing.common.PiecesPanel;import org.jmule.ui.utils.FileFormatter;import org.jmule.ui.utils.SpeedFormatter;import org.jmule.util.Misc;/** * * Created on Oct 5, 2008 * @author javajox * @version $Revision: 1.1 $ * Last changed by $Author: javajox $ on $Date: 2008/10/16 17:35:15 $ */public class DownloadDetailsPanel extends JPanel { // ---------- Transfers panel ----------------------------- private JLabel pieces_label = new JLabel("Pieces"); private JLabel up_speed_value = new JLabel(); private JLabel transferred_label = new JLabel("Transferred"); private PiecesPanel pieces_panel; private JLabel down_speed_value = new JLabel(); private JLabel remaining_value = new JLabel(); private JLabel transferred_value = new JLabel(); private JLabel partial_sources_value = new JLabel(); private JLabel complete_sources_value = new JLabel(); private JLabel upload_speed_label = new JLabel("Up speed"); private JLabel download_speed_label = new JLabel("Down speed"); private JLabel remaining_label = new JLabel("Remaining"); private JLabel partial_sources_label = new JLabel("Partial sources"); private JLabel complete_sources_label = new JLabel("Complete sources"); // ------------- File details panel ------------------------------ private JLabel file_name_label = new JLabel("File name"); private JLabel status_label = new JLabel("Status"); private JLabel file_hash_label = new JLabel("File hash"); private JLabel parts_label = new JLabel("Parts"); private JLabel ed2k_link_label = new JLabel("ED2K Link"); private JLabel file_size_label = new JLabel("File size"); private JLabel part_met_file_label = new JLabel("part.met"); private JLabel file_name_value = new JLabel(); private JLabel file_size_value = new JLabel(); private JLabel status_value = new JLabel(); private JLabel file_hash_value = new JLabel(); private JLabel part_met_file_value = new JLabel(); private JLabel parts_value = new JLabel(); private JLabel ed2k_link_value = new JLabel(); private JPanel transfer_panel = new JPanel(); private JPanel general_info_panel = new JPanel(); private GridLayout grid_layout = new GridLayout(2,1); private final static Font label_value_font = new java.awt.Font("Dialog", 0, 12); private final static Font label_font = new java.awt.Font("Dialog", 1, 12); private DownloadSession session; private JMuleCore _core = JMuleCoreFactory.getSingleton(); private UploadManager _upload_manager = _core.getUploadManager(); public DownloadDetailsPanel(DownloadSession session) { this.session = session; init(); } private void init() { this.setLayout(grid_layout); // ----------------- Transfers panel -------------------------------- GridBagLayout transfer_grid_bag_layout = new GridBagLayout(); transfer_grid_bag_layout.rowWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1}; transfer_grid_bag_layout.rowHeights = new int[] {10, 24, 24, 24, 24, 24, 24, 24, 7}; transfer_grid_bag_layout.columnWeights = new double[] {0.0, 0.0, 0.1}; transfer_grid_bag_layout.columnWidths = new int[] {111, 17, 7}; pieces_label.setFont(label_font); transferred_label.setFont(label_font); upload_speed_label.setFont(label_font); download_speed_label.setFont(label_font); remaining_label.setFont(label_font); partial_sources_label.setFont(label_font); complete_sources_label.setFont(label_font); pieces_label.setHorizontalAlignment(SwingConstants.RIGHT); transferred_label.setHorizontalAlignment(SwingConstants.RIGHT); upload_speed_label.setHorizontalAlignment(SwingConstants.RIGHT); download_speed_label.setHorizontalAlignment(SwingConstants.RIGHT); remaining_label.setHorizontalAlignment(SwingConstants.RIGHT); partial_sources_label.setHorizontalAlignment(SwingConstants.RIGHT); complete_sources_label.setHorizontalAlignment(SwingConstants.RIGHT); transferred_value.setFont(label_value_font); up_speed_value.setFont(label_value_font); down_speed_value.setFont(label_value_font); remaining_value.setFont(label_value_font); partial_sources_value.setFont(label_value_font); complete_sources_value.setFont(label_value_font); pieces_panel = new PiecesPanel(session); ed2k_link_value.setForeground(Color.BLUE); ed2k_link_value.setToolTipText("Click to copy ed2k link"); file_hash_value.setForeground(Color.BLUE); transfer_panel.setBorder(BorderFactory.createTitledBorder("Transfer")); transfer_panel.setLayout(transfer_grid_bag_layout); transfer_panel.setPreferredSize(new java.awt.Dimension(436, 202)); transfer_panel.add(pieces_label, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); transfer_panel.add(complete_sources_label, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); transfer_panel.add(partial_sources_label, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); transfer_panel.add(transferred_label, new GridBagConstraints(0, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); transfer_panel.add(remaining_label, new GridBagConstraints(0, 5, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); transfer_panel.add(download_speed_label, new GridBagConstraints(0, 6, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); transfer_panel.add(upload_speed_label, new GridBagConstraints(0, 7, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); transfer_panel.add(pieces_panel, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 5), 0, 0)); transfer_panel.add(complete_sources_value, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); transfer_panel.add(partial_sources_value, new GridBagConstraints(2, 3, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); transfer_panel.add(transferred_value, new GridBagConstraints(2, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); transfer_panel.add(remaining_value, new GridBagConstraints(2, 5, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); transfer_panel.add(down_speed_value, new GridBagConstraints(2, 6, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); transfer_panel.add(up_speed_value, new GridBagConstraints(2, 7, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); this.add(transfer_panel); file_name_label.setFont(label_font); status_label.setFont(label_font); file_hash_label.setFont(label_font); parts_label.setFont(label_font); ed2k_link_label.setFont(label_font); file_size_label.setFont(label_font); part_met_file_label.setFont(label_font); file_name_value.setFont(label_value_font); status_value.setFont(label_value_font); file_hash_value.setFont(label_value_font); parts_value.setFont(label_value_font); ed2k_link_value.setFont(label_value_font); file_size_value.setFont(label_value_font); part_met_file_value.setFont(label_value_font); file_name_label.setHorizontalAlignment(SwingConstants.RIGHT); status_label.setHorizontalAlignment(SwingConstants.RIGHT); file_hash_label.setHorizontalAlignment(SwingConstants.RIGHT); parts_label.setHorizontalAlignment(SwingConstants.RIGHT); ed2k_link_label.setHorizontalAlignment(SwingConstants.RIGHT); file_size_label.setHorizontalAlignment(SwingConstants.RIGHT); part_met_file_label.setHorizontalAlignment(SwingConstants.RIGHT); GridBagLayout general_info_ayout = new GridBagLayout(); general_info_panel.setPreferredSize(new java.awt.Dimension(382, 185)); general_info_ayout.rowWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1}; general_info_ayout.rowHeights = new int[] {26, 25, 24, 26, 24, 25, 26, 7}; general_info_ayout.columnWeights = new double[] {0.0, 0.0, 0.1}; general_info_ayout.columnWidths = new int[] {90, 15, 7}; general_info_panel.setLayout(general_info_ayout); general_info_panel.add(file_name_label, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); general_info_panel.add(part_met_file_label, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); general_info_panel.add(status_label, new GridBagConstraints(0, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); general_info_panel.add(file_size_label, new GridBagConstraints(0, 5, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); general_info_panel.add(ed2k_link_label, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); general_info_panel.add(parts_label, new GridBagConstraints(0, 6, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); general_info_panel.add(file_hash_label, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); general_info_panel.add(file_name_value, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); general_info_panel.add(ed2k_link_value, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); general_info_panel.add(part_met_file_value, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); general_info_panel.add(file_hash_value, new GridBagConstraints(2, 3, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); general_info_panel.add(status_value, new GridBagConstraints(2, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); general_info_panel.add(file_size_value, new GridBagConstraints(2, 5, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); general_info_panel.add(parts_value, new GridBagConstraints(2, 6, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); general_info_panel.setBorder(BorderFactory.createTitledBorder("File info")); this.add(general_info_panel); file_name_value.setIcon(new ImageIcon(UIConstants.getMimeURLByExtension(Misc.getFileExtension(session.getSharingName())))); updateData(); } public void updateData() { pieces_panel.repaint(); complete_sources_value.setText(session.getCompletedSources() + ""); partial_sources_value.setText(session.getPartialSources() + ""); transferred_value.setText(FileFormatter.formatFileSize(session.getTransferredBytes())); remaining_value.setText(FileFormatter.formatFileSize(session.getFileSize() - session.getTransferredBytes())); down_speed_value.setText(SpeedFormatter.formatSpeed(session.getSpeed())); up_speed_value.setText(_upload_manager.hasUpload(session.getFileHash()) ? SpeedFormatter.formatSpeed(_upload_manager.getUpload(session.getFileHash()).getSpeed()) : SpeedFormatter.formatSpeed(0) ); file_name_value.setText(session.getSharingName()); file_name_value.setToolTipText(session.getSharingName()); ed2k_link_value.setText(session.getED2KLink().getAsString()); part_met_file_value.setText(session.getTempFileName()); part_met_file_value.setToolTipText(session.getMetFilePath()); file_hash_value.setText(session.getFileHash().getAsString()); switch(session.getStatus()) { case DownloadSession.STATUS_STARTED : status_value.setText("Started"); break; case DownloadSession.STATUS_STOPPED : status_value.setText("Stopped"); } file_size_value.setText(FileFormatter.formatFileSize(session.getFileSize())); parts_value.setText(session.getPartCount() + ", available " + session.getAvailablePartCount()); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -