📄 statisticstabs.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.statistics;import java.awt.Font;import java.awt.GridLayout;import java.lang.management.MemoryMXBean;import java.lang.management.MemoryUsage;import java.lang.management.RuntimeMXBean;import java.lang.management.ThreadMXBean;import java.util.HashSet;import java.util.Hashtable;import java.util.Map;import java.util.Set;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTabbedPane;import org.jmule.core.statistics.JMuleCoreStats;import org.jmule.ui.swing.Refreshable;import org.jmule.ui.swing.maintabs.AbstractTab;import org.jmule.ui.utils.FileFormatter;import org.jmule.ui.utils.TimeFormatter;import sun.management.ManagementFactory;/** * * @author javajox * @version $$Revision: 1.2 $$ * Last changed by $$Author: javajox $$ on $$Date: 2008/10/18 17:42:47 $$ */public class StatisticsTabs extends AbstractTab { private SessionsPanel sessions_panel = new SessionsPanel(); private PeersPanel peers_panel = new PeersPanel(); private ServersPanel servers_panel = new ServersPanel(); private SharedFilesPanel shared_files_panel = new SharedFilesPanel(); private JavaPanel java_panel = new JavaPanel(); private JavaHeapMemoryPanel java_heap_memory_panel = new JavaHeapMemoryPanel(); private JavaNonHeapMemoryPanel java_non_heap_momory_panel = new JavaNonHeapMemoryPanel(); private JavaThreadsPanel java_threads_panel = new JavaThreadsPanel(); private JTabbedPane tabbed_panel = new JTabbedPane(); private JPanel general_panel = new JPanel(); private JPanel java_vm_panel = new JPanel(); // --------------- Stats data --------------------------------------------------- private Map<String,JLabel> stats_fields = new Hashtable<String,JLabel>(); private Set<String> types = new HashSet<String>(); private Set<String> filesize_formatter = new HashSet<String>(); private RuntimeMXBean runtime_bean = ManagementFactory.getRuntimeMXBean(); private MemoryMXBean memory_bean = ManagementFactory.getMemoryMXBean(); private MemoryUsage heap_memory = memory_bean.getHeapMemoryUsage(); private MemoryUsage nonheap_memory = memory_bean.getNonHeapMemoryUsage(); private ThreadMXBean thread_bean = ManagementFactory.getThreadMXBean(); private final static Font label_value_font = new java.awt.Font("Dialog", 0, 12); public StatisticsTabs(JFrame parent) { super(parent); init(); super.registerRefreshable(new Refreshable() { public void refresh() { updateData(); } }); updateData(); } private void init() { GridLayout general_panel_grid_layout = new GridLayout(2,2); general_panel.setLayout(general_panel_grid_layout); general_panel.add(sessions_panel); general_panel.add(peers_panel); general_panel.add(servers_panel); general_panel.add(shared_files_panel); GridLayout java_vm_panel_grid_layout = new GridLayout(2,2); java_vm_panel.setLayout(java_vm_panel_grid_layout); java_vm_panel.add(java_panel); java_vm_panel.add(java_heap_memory_panel); java_vm_panel.add(java_non_heap_momory_panel); java_vm_panel.add(java_threads_panel); tabbed_panel.add("General", general_panel); tabbed_panel.add("Java VM", java_vm_panel); this.setLayout(new GridLayout(1,1)); this.add(tabbed_panel); types.add(JMuleCoreStats.ST_NET_SESSION_DOWNLOAD_BYTES); types.add(JMuleCoreStats.ST_NET_SESSION_UPLOAD_BYTES); types.add(JMuleCoreStats.ST_NET_SESSION_DOWNLOAD_COUNT); types.add(JMuleCoreStats.ST_NET_SESSION_UPLOAD_COUNT); types.add(JMuleCoreStats.ST_NET_PEERS_COUNT); types.add(JMuleCoreStats.ST_NET_PEERS_DOWNLOAD_COUNT); types.add(JMuleCoreStats.ST_NET_PEERS_UPLOAD_COUNT); types.add(JMuleCoreStats.ST_NET_SERVERS_COUNT); types.add(JMuleCoreStats.ST_NET_SERVERS_DEAD_COUNT); types.add(JMuleCoreStats.ST_NET_SERVERS_ALIVE_COUNT); types.add(JMuleCoreStats.ST_DISK_SHARED_FILES_COUNT); types.add(JMuleCoreStats.ST_DISK_SHARED_FILES_PARTIAL_COUNT); types.add(JMuleCoreStats.ST_DISK_SHARED_FILES_COMPLETE_COUNT); types.add(JMuleCoreStats.ST_DISK_SHARED_FILES_BYTES); types.add(JMuleCoreStats.ST_DISK_SHARED_FILES_PARTIAL_BYTES); types.add(JMuleCoreStats.ST_DISK_SHARED_FILES_COMPLETE_BYTES); types.add(JMuleCoreStats.SEARCHES_COUNT); stats_fields.put(JMuleCoreStats.ST_NET_SESSION_DOWNLOAD_BYTES, sessions_panel.total_downloaded_value); stats_fields.put(JMuleCoreStats.ST_NET_SESSION_UPLOAD_BYTES, sessions_panel.total_uploaded_value); stats_fields.put(JMuleCoreStats.ST_NET_SESSION_DOWNLOAD_COUNT, sessions_panel.total_download_sessions_value); stats_fields.put(JMuleCoreStats.ST_NET_SESSION_UPLOAD_COUNT, sessions_panel.total_upload_sessions_value); stats_fields.put(JMuleCoreStats.ST_NET_PEERS_COUNT, peers_panel.total_peers_value); stats_fields.put(JMuleCoreStats.ST_NET_PEERS_DOWNLOAD_COUNT, peers_panel.downloading_peers_value); stats_fields.put(JMuleCoreStats.ST_NET_PEERS_UPLOAD_COUNT, peers_panel.uploading_peers_value); stats_fields.put(JMuleCoreStats.ST_NET_SERVERS_COUNT, servers_panel.total_servers_value); stats_fields.put(JMuleCoreStats.ST_NET_SERVERS_ALIVE_COUNT, servers_panel.alive_servers_value); stats_fields.put(JMuleCoreStats.ST_NET_SERVERS_DEAD_COUNT, servers_panel.dead_servers_value); stats_fields.put(JMuleCoreStats.SEARCHES_COUNT, servers_panel.searches_count_value); stats_fields.put(JMuleCoreStats.ST_DISK_SHARED_FILES_COUNT, shared_files_panel.shared_files_value); stats_fields.put(JMuleCoreStats.ST_DISK_SHARED_FILES_PARTIAL_COUNT, shared_files_panel.partial_files_value); stats_fields.put(JMuleCoreStats.ST_DISK_SHARED_FILES_COMPLETE_COUNT, shared_files_panel.completed_files_value); stats_fields.put(JMuleCoreStats.ST_DISK_SHARED_FILES_BYTES, shared_files_panel.total_shared_size_value); stats_fields.put(JMuleCoreStats.ST_DISK_SHARED_FILES_COMPLETE_BYTES, shared_files_panel.completed_files_size_value); stats_fields.put(JMuleCoreStats.ST_DISK_SHARED_FILES_PARTIAL_BYTES, shared_files_panel.partial_file_size_value); filesize_formatter.add(JMuleCoreStats.ST_NET_SESSION_DOWNLOAD_BYTES); filesize_formatter.add(JMuleCoreStats.ST_NET_SESSION_UPLOAD_BYTES); filesize_formatter.add(JMuleCoreStats.ST_DISK_SHARED_FILES_BYTES); filesize_formatter.add(JMuleCoreStats.ST_DISK_SHARED_FILES_PARTIAL_BYTES); filesize_formatter.add(JMuleCoreStats.ST_DISK_SHARED_FILES_COMPLETE_BYTES); java_panel.name_value.setText(runtime_bean.getVmName()); java_panel.vendor_value.setText(runtime_bean.getVmVendor()); java_panel.version_value.setText(runtime_bean.getVmVersion()); sessions_panel.total_downloaded_value.setFont(label_value_font); sessions_panel.total_uploaded_value.setFont(label_value_font); sessions_panel.total_download_sessions_value.setFont(label_value_font); sessions_panel.total_upload_sessions_value.setFont(label_value_font); peers_panel.total_peers_value.setFont(label_value_font); peers_panel.downloading_peers_value.setFont(label_value_font); peers_panel.uploading_peers_value.setFont(label_value_font); servers_panel.total_servers_value.setFont(label_value_font); servers_panel.alive_servers_value.setFont(label_value_font); servers_panel.dead_servers_value.setFont(label_value_font); servers_panel.searches_count_value.setFont(label_value_font); shared_files_panel.shared_files_value.setFont(label_value_font); shared_files_panel.partial_files_value.setFont(label_value_font); shared_files_panel.completed_files_value.setFont(label_value_font); shared_files_panel.total_shared_size_value.setFont(label_value_font); shared_files_panel.completed_files_size_value.setFont(label_value_font); shared_files_panel.partial_file_size_value.setFont(label_value_font); java_panel.uptime_value.setFont(label_value_font); java_heap_memory_panel.initial_heap_memory_value.setFont(label_value_font); java_heap_memory_panel.used_heap_memory_value.setFont(label_value_font); java_heap_memory_panel.maximum_heap_memory_value.setFont(label_value_font); java_non_heap_momory_panel.initial_non_heap_memory_value.setFont(label_value_font); java_non_heap_momory_panel.used_non_heap_momory_value.setFont(label_value_font); java_non_heap_momory_panel.maximum_non_heap_memory_value.setFont(label_value_font); java_threads_panel.jmule_threads_value.setFont(label_value_font); java_threads_panel.daemon_threads_value.setFont(label_value_font); java_threads_panel.peak_threads_value.setFont(label_value_font); java_threads_panel.total_threads_value.setFont(label_value_font); } private void updateData() { Map<String,Object> stats = JMuleCoreStats.getStats(types); for(String key : stats.keySet()) { Number value = (Number)stats.get(key); JLabel label = stats_fields.get(key); String str = value+""; if (filesize_formatter.contains(key)) str = FileFormatter.formatFileSize((Long) value); label.setText(str); } java_panel.uptime_value.setText(TimeFormatter.formatColon(runtime_bean.getUptime()/1000)+""); java_heap_memory_panel.initial_heap_memory_value.setText(FileFormatter.formatFileSize(heap_memory.getInit())); java_heap_memory_panel.used_heap_memory_value.setText(FileFormatter.formatFileSize(heap_memory.getUsed())); java_heap_memory_panel.maximum_heap_memory_value.setText(FileFormatter.formatFileSize(heap_memory.getMax())); java_non_heap_momory_panel.initial_non_heap_memory_value.setText(FileFormatter.formatFileSize(nonheap_memory.getInit())); java_non_heap_momory_panel.used_non_heap_momory_value.setText(FileFormatter.formatFileSize(nonheap_memory.getUsed())); java_non_heap_momory_panel.maximum_non_heap_memory_value.setText(FileFormatter.formatFileSize(nonheap_memory.getMax())); java_threads_panel.jmule_threads_value.setText(thread_bean.getThreadCount()+""); java_threads_panel.daemon_threads_value.setText(thread_bean.getDaemonThreadCount()+""); java_threads_panel.peak_threads_value.setText(thread_bean.getPeakThreadCount()+""); java_threads_panel.total_threads_value.setText(thread_bean.getTotalStartedThreadCount()+""); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -