htmlhelpdialog.java

来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 67 行

JAVA
67
字号
package net.sf.component;

import java.io.IOException;
import java.net.URL;

import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Shell;

/**
 * 抽取通用的help显示对话框,约定显示指定插件的docs/manual.htm
 * @author levin
 * @since 2007-11-20 下午07:59:11
 */
public class HtmlHelpDialog extends MessageDialog {
	private String bundleName;
    public HtmlHelpDialog(Shell shell,String title,String bundleName){
    	super(shell,title, null,"欢迎使用\n hlstudio@gmail.com  http://mywork.sf.net\n\n", MessageDialog.INFORMATION, new String[]{IDialogConstants.OK_LABEL}, 0);
    	this.bundleName=bundleName;
    }
   
    //显示帮助,一个辅助方法
    public static void showHelp(Shell shell,String title,String bundleName){
    	HtmlHelpDialog dialog=new HtmlHelpDialog(shell,title,bundleName);
    	dialog.open();
    }
    
	@Override
	protected Point getInitialLocation(Point initialSize) {
		Point p=super.getInitialLocation(initialSize);
		//让弹出窗口在主窗口的下方,缺省在上方
		return new Point(p.x,p.y*2);
	}    
	
    protected Control createCustomArea(Composite composite) {
    	Composite parent = new Composite(composite, SWT.NULL);
		Browser browser = new Browser(parent, SWT.WRAP | SWT.READ_ONLY);
    	browser.setSize(620, 400);
		Menu menu = new Menu(browser.getShell(), SWT.POP_UP);
		browser.setMenu(menu);		
    	URL helpfile = FileLocator.find(Platform.getBundle(bundleName), new Path("docs/manual.htm"), null);
		try {
			browser.setUrl(toFilePath(helpfile));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return browser;
    }
    
	// 取文件的url,win32平台下可能会多一个/
	private static String toFilePath(URL url) throws IOException {
		String path = FileLocator.toFileURL(url).getPath();
		if ("win32".equals(SWT.getPlatform()) && path.startsWith("/"))
			path = path.substring(1);
		return path;
	}
}

⌨️ 快捷键说明

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