弹出首选项对话框并定位至指定页面

某些时候,我们的Action的执行依赖于某些配置已经完好才能运行,即要检查环境是否已经配置完好。
我们可以这样做:在Action的run中进行判断,然后将用户引导至配置页面进行环境配置。对用户体验是非常好的。


public class StartActionDelegate implements IWorkbenchWindowActionDelegate {
	private IWorkbenchWindow window;

 
	public void dispose() {
	}

	/*
	 * @see IWorkbenchWindowActionDelegate#init(IWorkbenchWindow)
	 */
	public void init(IWorkbenchWindow window) {
		this.window = window;
	}

	/*
	 * @see IActionDelegate#run(IAction)
	 */
	public void run(IAction action) {
	
	
	    //查询首选项是否已经配置了tomcat的home目录
		IPreferenceStore pref =	TomcatLauncherPlugin.getDefault().getPreferenceStore();
		String appHome = pref.getString(TOMCAT_PREF_HOME_KEY);
	
	    if("".equals(appHome)){//App Home未配置
		    
			//将用户引导至首选项配置页面
			String pageId = "com.sysdeo.eclipse.tomcat.Page3";
			PreferenceManager manager = PlatformUI.getWorkbench().getPreferenceManager();
			Shell parentShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
 			PreferenceDialog pd = new PreferenceDialog(shell, manager);
 			pd.setSelectedNode(pageId);//设置选中的页面
 			pd.open();
			/**
			* 上述代码可用这一行代替
			*PreferencesUtil.createPreferenceDialogOn(getShell(), pageId, new String[] { pageId,"com.sysdeo.eclipse.tomcat.Page4"}, null).open();
			*/
			return;
		}else{
		     //to-do something
		}
	  
	}
 


如图即为点击StartTomcatAction后,将用户引导到的了如下首选项页面:

ps:代码是在tomcatplugin基础上修改的。

附录:

如下这样用也是可以的:

protected boolean showPreferencePage(GenericServerComposite composite) {
		PreferenceManager manager = PlatformUI.getWorkbench().getPreferenceManager();
		IPreferenceNode node = manager.find("org.eclipse.jdt.ui.preferences.JavaBasePreferencePage").findSubNode("org.eclipse.jdt.debug.ui.preferences.VMPreferencePage");  //$NON-NLS-1$//$NON-NLS-2$
		PreferenceManager manager2 = new PreferenceManager();
		manager2.addToRoot(node);
		final PreferenceDialog dialog = new PreferenceDialog(composite.getShell(), manager2);
		final boolean[] result = new boolean[] { false };
		BusyIndicator.showWhile(composite.getDisplay(), new Runnable() {
			public void run() {
				dialog.create();
				if (dialog.open() == Window.OK)
					result[0] = true;
			}
		});
		return result[0];
	}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值