📄 serverlisttab.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.serverlist;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.JFrame;import javax.swing.JMenuItem;import javax.swing.JPopupMenu;import javax.swing.JScrollPane;import javax.swing.JSplitPane;import javax.swing.JTextArea;import javax.swing.SwingUtilities;import javax.swing.border.LineBorder;import javax.swing.border.TitledBorder;import org.jmule.core.JMuleCore;import org.jmule.core.JMuleCoreFactory;import org.jmule.core.edonkey.ServerListListener;import org.jmule.core.edonkey.ServerManager;import org.jmule.core.edonkey.impl.Server;import org.jmule.ui.swing.maintabs.AbstractTab;import org.jmule.ui.swing.tables.ServerListTable;/** * * @author javajox * @version $$Revision: 1.3 $$ * Last changed by $$Author: javajox $$ on $$Date: 2008/10/18 17:42:47 $$ */public class ServerListTab extends AbstractTab { private JSplitPane splitPane; // splits up the visible area into 2 horizontal parts: top, where the server list is located // and bottom (server messages and infoes) private JSplitPane splitPane2; // bottom visible area is splitted up into 2 vertical parts: left, server messages, right infoes private JScrollPane serverListScrollPane; private JScrollPane serverMessagesScrollPane; private JScrollPane myInfoScrollPane; private GridLayout gridLayout; private ServerListTable serverListTable; //private MyInfoTable myInfoTable; private Info myInfoTable; private JTextArea serverMessages; private TitledBorder serverListScrollPaneBorder; private JMuleCore _core = JMuleCoreFactory.getSingleton(); private ServerManager _server_manager = _core.getServerManager(); public ServerListTab(JFrame parent) { super(parent); initComponents(); super.registerRefreshable(serverListTable); } private void initComponents() { splitPane = new JSplitPane(); splitPane2 = new JSplitPane(); serverListScrollPane = new JScrollPane(); serverMessagesScrollPane = new JScrollPane(); myInfoScrollPane = new JScrollPane(); gridLayout = new GridLayout(1,1); serverListTable = new ServerListTable(parent); //myInfoTable = new MyInfoTable(); myInfoTable = new Info(); serverMessages = new JTextArea(); splitPane.setDividerLocation(200); splitPane2.setDividerLocation(500); this.setLayout(gridLayout); splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT); this.add(splitPane); splitPane2.setOrientation(JSplitPane.HORIZONTAL_SPLIT); splitPane.setBottomComponent(splitPane2); //The following declarations are the style for titled border used in the appl. Font titledBorderTextFont = new java.awt.Font("Dialog", 0, 12); Color titledBorderTextColor = Color.BLACK; Color titledBorderColor = Color.GRAY; LineBorder border = new javax.swing.border.LineBorder(titledBorderColor, 1, true); serverMessages.setEditable(false); //Set up the border and border style for the all titled borders /*TitledBorder titledBorder = javax.swing.BorderFactory.createTitledBorder( border, "Unknown", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, titledBorderTextFont, titledBorderTextColor);*/ //Set up the title border for serverListScrollPane serverListScrollPaneBorder = javax.swing.BorderFactory.createTitledBorder( border, "Servers", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, titledBorderTextFont, titledBorderTextColor); //TitledBorder serverListScrollPaneBorder = javax.swing.BorderFactory.createTitledBorder("Servers"); serverListScrollPane.setBorder(serverListScrollPaneBorder); _server_manager.addServerListListener(new ServerListListener() { public void autoConnectStarted() {} public void autoConnectStopped() {} public void serverAdded(Server server) { SwingUtilities.invokeLater(new Runnable() { public void run() { setServerListCount(); } }); } public void serverListCleared() { SwingUtilities.invokeLater(new Runnable() { public void run() { setServerListCount(); } }); } public void serverRemoved(Server server) { SwingUtilities.invokeLater(new Runnable() { public void run() { setServerListCount(); } }); } }); serverListScrollPane.setViewportView(serverListTable); splitPane.setTopComponent(serverListScrollPane); //Set up the border for myInfoScrollPane /* TitledBorder myInfoScrollPaneBorder = javax.swing.BorderFactory.createTitledBorder( border, "My info", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, titledBorderTextFont, titledBorderTextColor); myInfoScrollPane.setBorder(myInfoScrollPaneBorder); */ myInfoScrollPane.setViewportView(myInfoTable); splitPane2.setBottomComponent(myInfoScrollPane); serverMessagesScrollPane.setViewportView(serverMessages); //Set up the border for serverMessagesScrollPane TitledBorder serverMessagesScrollPaneBorder = javax.swing.BorderFactory.createTitledBorder( border, "Server messages", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, titledBorderTextFont, titledBorderTextColor); //TitledBorder serverMessagesScrollPaneBorder = javax.swing.BorderFactory.createTitledBorder("Messages"); serverMessagesScrollPane.setBorder(serverMessagesScrollPaneBorder); splitPane2.setTopComponent(serverMessagesScrollPane); serverListScrollPane.setPreferredSize(new Dimension(300,200)); serverMessagesScrollPane.setPreferredSize(new Dimension(200,300)); // Clear server messages popup menu final JPopupMenu popup_menu = new JPopupMenu(); JMenuItem clear_menu_item = new JMenuItem("Clear"); clear_menu_item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { serverMessages.setText(""); } }); popup_menu.add(clear_menu_item); class MousePopupListener extends MouseAdapter { public void mousePressed(MouseEvent e) { checkPopup(e); } public void mouseClicked(MouseEvent e) { checkPopup(e); } public void mouseReleased(MouseEvent e) { checkPopup(e); } private void checkPopup(MouseEvent e) { if (e.isPopupTrigger()) { popup_menu.show(e.getComponent(), e.getX(), e.getY()); } } } serverMessages.addMouseListener(new MousePopupListener()); setServerListCount(); } private void setServerListCount() { String server_count = "Servers(" + _server_manager.getServersCount() + ")"; serverListScrollPaneBorder.setTitle(server_count); serverListScrollPane.repaint(); } public ServerListTable getServerListTable() { return serverListTable; } public void setServerListTable(ServerListTable serverListTable) { this.serverListTable = serverListTable; } public Info getMyInfoTable() { return myInfoTable; } public void setMyInfoTable(Info myInfoTable) { this.myInfoTable = myInfoTable; } public void setServerMessage(String serverMessage) { serverMessages.setText(serverMessage); } public void clearServerMessage() { serverMessages.setText(""); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -