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

📄 mainwindow.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.mainwindow;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import java.io.File;import javax.swing.ButtonGroup;import javax.swing.JButton;import javax.swing.JCheckBoxMenuItem;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPopupMenu;import javax.swing.JRadioButtonMenuItem;import javax.swing.JSeparator;import javax.swing.JToggleButton;import javax.swing.JToolBar;import javax.swing.KeyStroke;import javax.swing.SwingUtilities;import javax.swing.UIManager;import javax.swing.filechooser.FileSystemView;import javax.swing.plaf.ColorUIResource;import org.jmule.core.JMConstants;import org.jmule.core.JMRunnable;import org.jmule.core.JMThread;import org.jmule.core.JMuleCore;import org.jmule.core.JMuleCoreFactory;import org.jmule.core.configmanager.ConfigurationAdapter;import org.jmule.core.configmanager.ConfigurationManager;import org.jmule.core.edonkey.ServerListener;import org.jmule.core.edonkey.ServerManager;import org.jmule.core.edonkey.ServerManagerException;import org.jmule.core.edonkey.impl.Server;import org.jmule.core.peermanager.PeerManager;import org.jmule.ui.JMuleUIManager;import org.jmule.ui.localizer.Localizer;import org.jmule.ui.localizer._;import org.jmule.ui.swing.BrowserLauncher;import org.jmule.ui.swing.ImgRep;import org.jmule.ui.swing.Refreshable;import org.jmule.ui.swing.SwingGUIUpdater;import org.jmule.ui.swing.SwingPreferences;import org.jmule.ui.swing.SwingUtils;import org.jmule.ui.swing.UISwingImageRepository;import org.jmule.ui.swing.dialogs.AboutDialog;import org.jmule.ui.swing.dialogs.AdjustSpeedLimitsDialog;import org.jmule.ui.swing.maintabs.AbstractTab;import org.jmule.ui.swing.maintabs.LogTab;import org.jmule.ui.swing.maintabs.search.SearchTab;import org.jmule.ui.swing.maintabs.serverlist.ServerListTab;import org.jmule.ui.swing.maintabs.shared.SharedTab;import org.jmule.ui.swing.maintabs.statistics.StatisticsTabs;import org.jmule.ui.swing.maintabs.transfers.TransfersTab;import org.jmule.ui.swing.settings.SettingsDialog;import org.jmule.ui.swing.versionchecker.VersionChecker;import org.jmule.ui.swing.wizards.SetupWizard;import org.jmule.ui.swing.wizards.UIChooserWizad;import org.jmule.ui.utils.SpeedFormatter;/** *  * @author javajox * @version $$Revision: 1.5 $$ * Last changed by $$Author: javajox $$ on $$Date: 2008/10/19 17:48:05 $$ */public class MainWindow extends JFrame implements WindowListener  {	private JMenuBar main_menu_bar;	private JMenu file, fnew, view, tools, help, tabs;	private JMenuItem new_downloads, new_servers,	                  exit, import_server_list, ui_chooser, config_wizard, 	                  options, open_support,	                  project_forums, bug_tracker, check_for_updates, about;	private JRadioButtonMenuItem servers, transfers, search, shared_files,stats,logs;	private JCheckBoxMenuItem tool_bar_visibility, status_bar_visibility;	private BorderLayout border_layout0;	private JToolBar main_buttons_bar;	// main tabs 	private ServerListTab server_list_tab = new ServerListTab(this);	private SearchTab search_tab = new SearchTab(this);	private SharedTab shared_tab = new SharedTab(this);	private TransfersTab transfers_tab = new TransfersTab(this); 	private StatisticsTabs statistic_tab = new StatisticsTabs(this);	private LogTab log_tab = new LogTab(this);	StatusBar status_bar;	JPanel the_current_view = server_list_tab;	private JPanel center_panel = new JPanel();	JButton connect_button;		private JMuleCore _core = JMuleCoreFactory.getSingleton();	private ServerManager _server_manager = _core.getServerManager();	private SwingGUIUpdater _ui_updater = SwingGUIUpdater.getInstance();	private PeerManager _peer_manager = _core.getPeerManager();	private SwingPreferences _pref = SwingPreferences.getSingleton();	private ConfigurationManager _config = _core.getConfigurationManager(); 		private AbstractTab previous_panel;		class JMToggleButton extends JToggleButton {		public JMToggleButton() {			 this.setSize(new Dimension(109,61));			 this.setPreferredSize(new Dimension(109,61));			 		     this.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);		     this.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);		 }	}		final JMToggleButton server_list_button = new JMToggleButton();	final JMToggleButton transfers_button = new JMToggleButton();	final JMToggleButton search_button = new JMToggleButton();	final JMToggleButton shared_files_button = new JMToggleButton();	final JMToggleButton statistics_button = new JMToggleButton();	final JMToggleButton log_button = new JMToggleButton();		public MainWindow() {		this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);		this.addWindowListener(this);		this.setIconImage(UISwingImageRepository.getImage("jmule_swing.png"));		initUIComponents();        setMainMenu();        setMainButtonsBar();            server_list_button.doClick();        setStatusBar();        final ActionListener start_auto_connect_action = new ActionListener() {        	public void actionPerformed(ActionEvent event) {				try {					_server_manager.startAutoConnect();				} catch (ServerManagerException e) {					e.printStackTrace();				}        	}        };                final ActionListener stop_auto_connect_action = new ActionListener() {        	public void actionPerformed(ActionEvent event) {				try {					_server_manager.stopAutoConnect();				} catch (Throwable e) {					e.printStackTrace();				}        	}        };                final ActionListener disconnect_action = new ActionListener() {        	public void actionPerformed(ActionEvent event) {        		try {        			_server_manager.getConnectedServer().disconnect();        		}catch(Throwable t) {        			t.printStackTrace();        		}        	}        };        		_server_manager.addServerListener(new ServerListener() {			public void connected(Server server) {				LogTab.getLogInstance().addMessage("The system is connected to server = " + server);                status_bar.setServerStatus(ServerStatusTypes.CONNECTED, server.getAddress() + ":" + server.getPort());                status_bar.setClientIDType( ( server.getClientID().isHighID() ? ClientIDTypes.HIGH_ID : ClientIDTypes.LOW_ID ), server.getClientID().toString());                connect_button.removeActionListener(start_auto_connect_action);                connect_button.removeActionListener(stop_auto_connect_action);                connect_button.addActionListener(disconnect_action);                connect_button.setText("Disconnect");                connect_button.setIcon(ImgRep.getIcon("connect_drop.png"));			}			public void disconnected(Server server) {				LogTab.getLogInstance().addMessage("The system has been disconnected from server = " + server);				status_bar.setClientIDType(ClientIDTypes.NO_ID, "");                status_bar.setServerStatus(ServerStatusTypes.DISCONNECTED, null);                connect_button.removeActionListener(disconnect_action);                connect_button.removeActionListener(stop_auto_connect_action);                connect_button.addActionListener(start_auto_connect_action);                connect_button.setText("Connect");                connect_button.setIcon(ImgRep.getIcon("connect_do.png"));			}			public void isconnecting(Server server) {				LogTab.getLogInstance().addMessage("The system is connecting to server = " + server);				status_bar.setClientIDType(ClientIDTypes.NO_ID, "");                status_bar.setServerStatus(ServerStatusTypes.CONNECTING, server.getAddress() + ":" + server.getPing());                connect_button.removeActionListener(disconnect_action);                connect_button.removeActionListener(start_auto_connect_action);                connect_button.addActionListener(stop_auto_connect_action);                connect_button.setText("Cancel");                connect_button.setIcon(ImgRep.getIcon("connect_stop.png"));			}			public void serverMessage(Server server, String message) {				server_list_tab.setServerMessage(message);			}					});				connect_button.addActionListener(start_auto_connect_action);				if(_pref.isConnectAtStartup()) {			try {			  _server_manager.connect();			}catch(Throwable t) {				t.printStackTrace();			}		}				LogTab.getLogInstance().addMessage("System started");	}	public void initUIComponents() {				String title = JMConstants.JMULE_FULL_NAME;		this.setTitle(title);		//TODO get this from CfgManager		this.setSize(800, 470);		this.setPreferredSize(new Dimension(800, 470));		//this.setIconImage(new ImageIcon(getClass().getClassLoader().getResource("resources/jmule.png")).getImage());		//place the main windows in the middle of display		this.setLocation(getToolkit().getScreenSize().width/2 - getWidth()/2,                         getToolkit().getScreenSize().height/2 - getHeight()/2);		//set the main layout		border_layout0 = new BorderLayout();        this.setLayout( border_layout0 );                center_panel.setLayout(new GridLayout(1,1));        this.add(center_panel, BorderLayout.CENTER);			}	//----------------------------------------------------------------------	private void setMainMenu() {		main_menu_bar = new JMenuBar();		file = new JMenu();		fnew = new JMenu();		view = new JMenu();		tools = new JMenu();		help = new JMenu();		tabs = new JMenu();				exit = new JMenuItem();		new_downloads = new JMenuItem();		new_servers = new JMenuItem();		import_server_list = new JMenuItem();		ButtonGroup radio_button_menu_items_group = new ButtonGroup();		servers = new JRadioButtonMenuItem();		transfers = new JRadioButtonMenuItem();		search = new JRadioButtonMenuItem();		shared_files = new JRadioButtonMenuItem();		stats = new JRadioButtonMenuItem();		logs = new JRadioButtonMenuItem();		radio_button_menu_items_group.add(servers);		radio_button_menu_items_group.add(transfers);		radio_button_menu_items_group.add(search);		radio_button_menu_items_group.add(shared_files);		radio_button_menu_items_group.add(stats);		radio_button_menu_items_group.add(logs);		servers.setSelected(true);		ui_chooser = new JMenuItem();		config_wizard = new JMenuItem();		options = new JMenuItem();        open_support = new JMenuItem();        project_forums = new JMenuItem();        bug_tracker = new JMenuItem();        check_for_updates = new JMenuItem();		about = new JMenuItem();				tool_bar_visibility = new JCheckBoxMenuItem();		status_bar_visibility = new JCheckBoxMenuItem();		tool_bar_visibility.setText("Tool bar");        status_bar_visibility.setText("Status bar");        tool_bar_visibility.setSelected(true);        status_bar_visibility.setSelected(true);		        status_bar_visibility.addActionListener(new ActionListener() {        	public void actionPerformed(ActionEvent event) {

⌨️ 快捷键说明

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