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

📄 aboutwindow.java

📁 JMule是一个基于Java开发
💻 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.swt.aboutwindow;import java.util.Set;import org.eclipse.swt.SWT;import org.eclipse.swt.custom.CLabel;import org.eclipse.swt.custom.CTabFolder;import org.eclipse.swt.custom.CTabItem;import org.eclipse.swt.custom.StyledText;import org.eclipse.swt.events.MouseAdapter;import org.eclipse.swt.events.MouseEvent;import org.eclipse.swt.events.PaintEvent;import org.eclipse.swt.events.PaintListener;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.graphics.Color;import org.eclipse.swt.graphics.Cursor;import org.eclipse.swt.graphics.Font;import org.eclipse.swt.graphics.FontData;import org.eclipse.swt.graphics.GC;import org.eclipse.swt.graphics.Image;import org.eclipse.swt.graphics.Rectangle;import org.eclipse.swt.layout.FillLayout;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.layout.GridLayout;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Canvas;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Label;import org.eclipse.swt.widgets.Menu;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Text;import org.jmule.core.JMConstants;import org.jmule.core.JMRunnable;import org.jmule.core.JMThread;import org.jmule.ui.JMuleUIComponent;import org.jmule.ui.JMuleUIManager;import org.jmule.ui.UIConstants;import org.jmule.ui.localizer.Localizer;import org.jmule.ui.localizer._;import org.jmule.ui.swt.SWTImageRepository;import org.jmule.ui.swt.SWTThread;import org.jmule.ui.swt.Utils;import org.jmule.ui.swt.skin.SWTSkin;import org.jmule.ui.swt.tables.JMTable;/** * Created on Aug 22, 2008 * @author binary256 * @version $Revision: 1.7 $ * Last changed by $Author: binary256_ $ on $Date: 2008/10/16 18:20:01 $ */public class AboutWindow implements JMuleUIComponent {		private int TOP_GRADIENT_HEIGHT = 60;	private Color GRADIENT_COLOR_1 = SWTThread.getDisplay().getSystemColor (SWT.COLOR_WHITE);	private Color GRADIENT_COLOR_2 = new Color(SWTThread.getDisplay(),255,141,5);		private final String logo_image = "jmule_logo.png";		private Shell shell;	private Display display;		public void getCoreComponents() {			}	public void initUIComponents() {		SWTSkin skin = null;		try {		    skin = (SWTSkin)JMuleUIManager.getJMuleUI().getSkin();		}catch(Throwable t) { }				display = SWTThread.getDisplay();				final Shell shell1=new Shell(display,SWT.ON_TOP);		shell=new Shell(shell1,SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);				MouseAdapter link_listener = new MouseAdapter() {			public void mouseDoubleClick(MouseEvent arg0) {				String path = (String) ((CLabel) arg0.widget).getData();				if (!Utils.launchProgram(path)) 					Utils.showWarningMessage(shell, _._("aboutwindow.error_open_url.title")							, Localizer._("aboutwindow.error_open_url",path));			}			public void mouseDown(MouseEvent arg0) {				String path = (String) ((CLabel) arg0.widget).getData();				if (!Utils.launchProgram(path)) 					Utils.showWarningMessage(shell, _._("aboutwindow.error_open_url.title")							, Localizer._("aboutwindow.error_open_url",path));			}		};				GridData layout_data;		GridLayout layout;		Composite content;				layout = new GridLayout(1,false);		layout.marginHeight = 0;		layout.marginWidth = 0;				shell.setLayout(layout);				// Top gradient		final Canvas window_top = new Canvas(shell,SWT.NONE);		layout_data = new GridData(GridData.FILL_HORIZONTAL);		layout_data.heightHint = TOP_GRADIENT_HEIGHT;		window_top.setLayoutData(layout_data);		window_top.addPaintListener(new PaintListener() {			public void paintControl(PaintEvent arg0) {				Rectangle rect = shell.getClientArea ();				GC gc = arg0.gc;				gc.setForeground (GRADIENT_COLOR_2);				gc.setBackground (GRADIENT_COLOR_1);				gc.fillGradientRectangle (rect.x, rect.y, rect.width, rect.height, false);				Image image = SWTImageRepository.getImage(logo_image);				gc.drawImage(image, rect.width - image.getImageData().width - 10, 5);								gc.setForeground(new Color(SWTThread.getDisplay(),0,0,0));				Font font = new Font(display,"Arial",14,SWT.NONE ); 				gc.setFont(font);				gc.drawText(JMConstants.JMULE_NAME, 20, TOP_GRADIENT_HEIGHT / 2 - 15,true);								gc.setForeground(new Color(SWTThread.getDisplay(),0,0,0));				font = new Font(display,"Arial",10,SWT.NONE ); 				gc.setFont(font);				gc.drawText("Version : " + JMConstants.JMULE_VERSION, 17, TOP_GRADIENT_HEIGHT / 2 + 5,true);			}		});				Composite window_content = new Composite(shell,SWT.NONE);		window_content.setLayoutData(new GridData(GridData.FILL_BOTH));				FillLayout fill_layout = new FillLayout();		fill_layout.marginHeight = 0;		fill_layout.marginWidth = 0;		window_content.setLayout(fill_layout);				CTabFolder tab_list = new CTabFolder(window_content, SWT.BORDER);		tab_list.setLayout(new FillLayout());		tab_list.setSimple(false);		tab_list.setUnselectedImageVisible(false);		tab_list.setUnselectedCloseVisible(false);				CTabItem general_tab = new CTabItem(tab_list,SWT.NONE);		content = new Composite(tab_list,SWT.NONE);		general_tab.setControl(content);		general_tab.setText(_._("aboutwindow.tab.general"));		layout = new GridLayout(1,false);		layout.marginTop +=10;		content.setLayout(layout);		Composite container1 = new Composite(content,SWT.NONE);		container1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));		layout = new GridLayout(1,false);		layout.marginWidth = 15;		container1.setLayout(layout);				Label jmule_version = new Label(container1,SWT.LEFT);		FontData data = skin.getLabelFont().getFontData()[0];				Font bold_font = new Font(display,data.getName(),data.getHeight(),SWT.BOLD);		jmule_version.setText(JMConstants.JMULE_FULL_NAME);		jmule_version.setFont(bold_font);				Label copyright = new Label(container1,SWT.LEFT);		copyright.setText("Copyright (C) 2007-2008 JMule Team");		copyright.setFont(bold_font);				new Label(container1,SWT.NONE);				StyledText about_text = new StyledText(container1,SWT.LEFT | SWT.READ_ONLY);		about_text.setText(_._("aboutwindow.tab.general.label.about"));		about_text.setWordWrap(true);		about_text.setBackground(shell.getBackground());		layout_data = new GridData(GridData.FILL_HORIZONTAL);		about_text.setLayoutData(layout_data);				Composite links_container = new Composite(content,SWT.NONE);		links_container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));		layout = new GridLayout(2,false);		layout.marginWidth = 15;		links_container.setLayout(layout);				FontData link_font_data = skin.getLabelFont().getFontData()[0];		Font link_font = new Font(SWTThread.getDisplay(),link_font_data.getName(), link_font_data.getHeight(), SWT.UNDERLINE_SINGLE);				CLabel link;				link = new CLabel(links_container,SWT.NONE);		link.setText(_._("aboutwindow.tab.general.label.home_page") + " : ");		link = new CLabel(links_container,SWT.NONE);		link.setFont(link_font);		link.setText(JMConstants.JMULE_WEB_SITE);		link.setData(JMConstants.JMULE_WEB_SITE);		link.setForeground(SWTThread.getDisplay().getSystemColor(SWT.COLOR_BLUE));		link.setCursor(new Cursor(SWTThread.getDisplay(),SWT.CURSOR_HAND));		link.addMouseListener(link_listener);		link = new CLabel(links_container,SWT.NONE);		link.setText(_._("aboutwindow.tab.general.label.forum") + " : ");				link = new CLabel(links_container,SWT.NONE);		link.setFont(link_font);		link.setText(JMConstants.JMULE_FORUMS);		link.setData(JMConstants.JMULE_FORUMS);		link.setForeground(SWTThread.getDisplay().getSystemColor(SWT.COLOR_BLUE));		link.setCursor(new Cursor(SWTThread.getDisplay(),SWT.CURSOR_HAND));		link.addMouseListener(link_listener);				if (JMConstants.IS_NIGHTLY_BUILD) {			CTabItem nightly_build = new CTabItem(tab_list,SWT.NONE);			content = new Composite(tab_list,SWT.NONE);			nightly_build.setControl(content);			nightly_build.setText(_._("aboutwindow.tab.nightly_build"));			layout = new GridLayout(1,false);			layout.marginHeight = 10;			layout.marginWidth  = 10;			content.setLayout(layout);						final Label image = new Label(content,SWT.NONE);			image.setImage(SWTImageRepository.getImage("bomb.png"));			layout_data = new GridData();			layout_data.grabExcessHorizontalSpace = true;			layout_data.horizontalAlignment = GridData.CENTER;			image.setLayoutData(layout_data);						Label nightly_build_label = new Label(content,SWT.NONE);			nightly_build_label.setForeground(SWTThread.getDisplay().getSystemColor(SWT.COLOR_RED));			layout_data = new GridData(GridData.FILL_HORIZONTAL);			layout_data.horizontalAlignment = GridData.CENTER;			nightly_build_label.setLayoutData(layout_data);			nightly_build_label.setText(_._("aboutwindow.tab.nightly_build.label.nightly_buld_str1"));						Label nightly_build_label2 = new Label(content,SWT.NONE);			nightly_build_label2.setForeground(SWTThread.getDisplay().getSystemColor(SWT.COLOR_RED));			layout_data = new GridData(GridData.FILL_HORIZONTAL );			layout_data.horizontalAlignment = GridData.CENTER;			nightly_build_label2.setLayoutData(layout_data);			nightly_build_label2.setText(_._("aboutwindow.tab.nightly_build.label.nightly_buld_str2")+" "+_._("aboutwindow.tab.general.label.forum"));						CLabel forum_link = new CLabel(content,SWT.NONE);			layout_data = new GridData(GridData.FILL_HORIZONTAL );			layout_data.horizontalAlignment = GridData.CENTER;			forum_link.setLayoutData(layout_data);			forum_link.setFont(link_font);			forum_link.setText(JMConstants.JMULE_FORUMS);			forum_link.setData(JMConstants.JMULE_FORUMS);			forum_link.setForeground(SWTThread.getDisplay().getSystemColor(SWT.COLOR_BLUE));			forum_link.setCursor(new Cursor(SWTThread.getDisplay(),SWT.CURSOR_HAND));			forum_link.addMouseListener(link_listener);		}				CTabItem environment_tab = new CTabItem(tab_list,SWT.NONE);		content = new Composite(tab_list,SWT.NONE);		environment_tab.setControl(content);		environment_tab.setText(_._("aboutwindow.tab.environment"));		content.setLayout(new FillLayout());				JMTable<String> table = new JMTable<String>(content,SWT.NONE) {			protected int compareObjects(String object1, String object2,					int columnID, boolean order) {				return 0;			}			protected Menu getPopUpMenu() {				return null;			}			public void updateRow(String object) {				setRowText(object, 1, object);				if (object.equals("line.separator"))					setRowText(object,2,"\\n");				else {					String data = System.getProperty(object);					setRowText(object,2,data);				}			}			protected void saveColumnSettings() {}		};		table.setLayout(new FillLayout());		table.setLinesVisible(true);		table.setAlternateBackgroundColor(false);		table.setSorting(false);		table.addColumn(SWT.LEFT, 1, _._("aboutwindow.tab.environment.table.column.key"), "", 200);		table.addColumn(SWT.LEFT, 2, _._("aboutwindow.tab.environment.table.column.value"), "", 500);				Set<Object> keys = System.getProperties().keySet();				for(Object key : keys) {			String value = (String) key;			table.addRow(value);		}		CTabItem license_tab = new CTabItem(tab_list,SWT.NONE);		content = new Composite(tab_list,SWT.NONE);		license_tab.setControl(content);		license_tab.setText(_._("aboutwindow.tab.license"));				content.setLayout(new FillLayout());				Text license_text = new Text(content,SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.READ_ONLY);	    license_text.setText(UIConstants.GNU_LICENSE);	    license_text.setBackground(SWTThread.getDisplay().getSystemColor(SWT.COLOR_WHITE));	    		tab_list.setSelection(general_tab);				Composite button_bar = new Composite(shell,SWT.NONE);		button_bar.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));				layout = new GridLayout(1,false);		layout.marginWidth = 10;		layout.marginHeight = 10;		button_bar.setLayout(layout);				Button button_ok = new Button(button_bar,SWT.NONE);		button_ok.setFont(skin.getButtonFont());		button_ok.setText(_._("aboutwindow.button.ok"));		GridData grid_data = new GridData();		grid_data.horizontalAlignment = GridData.END;		grid_data.widthHint = 60;		grid_data.grabExcessHorizontalSpace = true;		button_ok.setFocus();		button_ok.setLayoutData(grid_data);				button_ok.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(SelectionEvent event) {				shell.close();			}		});				shell.setText(Localizer._("aboutwindow.title"));		shell.setImage(SWTImageRepository.getImage("jmule.png"));		shell.setSize(500,400);		Utils.centreWindow(shell);				shell.setAlpha(0);					shell.open();		new JMThread(new JMRunnable() {				int i;				private static final int INCREMENT = 10;				public void JMRun() {					for(i = 0; i<255;i+=INCREMENT ) {					display.syncExec(new JMRunnable() {						public void JMRun() {							shell.setAlpha(i);						}					});					}				}			}).start();	}}

⌨️ 快捷键说明

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