在RCP定义状态栏

系统 1710 0

Eclipse 中,每选中一个文件,底部的状态栏上都会显示出该文件的有关信息。客户端软件通常都会将一些全局的或当前的信息显示在底部的状态栏上。本文将在 RCP 中添加状态栏功能。

首先,必须在 WorkbenchWindowAdvisor. preWindowOpen() 启用状态栏功能, configurer.setShowStatusLine(true);

<style type="text/css"> <!--code { font-family: Courier New, Courier; font-size: 10pt; margin: 0px; }--> </style> <!-- ======================================================== --><!-- = Java Sourcecode to HTML automatically converted code = --><!-- = Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard markus@jave.de = --><!-- = Further information: http://www.java2html.de = -->
<!-- start source code --> <!-- end source code --> <!-- start headline --> <!-- end headline -->
ApplicationWorkbenchWindowAdvisor.java
01 public void preWindowOpen(){
02IWorkbenchWindowConfigurerconfigurer=getWindowConfigurer();
03configurer.setInitialSize( new Point(600,400));
04configurer.setShowCoolBar( true );
05configurer.setShowStatusLine( true );
06configurer.setShowFastViewBars( true );
07configurer.setShowPerspectiveBar( true );
08configurer.setShowMenuBar( true );
09configurer.setShowProgressIndicator( true );
10configurer.setShowStatusLine( true );
11PlatformUI.getPreferenceStore().setDefault(
12IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS, true );
13PlatformUI.getPreferenceStore().setDefault(
14IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS,
15 false );
16PlatformUI.getPreferenceStore().setDefault(
17IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR,
18IWorkbenchPreferenceConstants.TOP_RIGHT);
19}

和menu bar和 toolbar一样,状态栏也是由ActionBarAdvisor控制,在ActionBarAdvisor.fillStatusLine (IStatusLineManager)中,状态栏信息的显示都由IStatusLineManager控制。

状态栏的结构

Fast views 可以将View拖到Fast views中,提供View的快捷访问。

Icon/message 这里可以显示图标和信息

Progress 用来显示进度条,通常是不可见的。当有IWorkbenchWindow.run() 调用时,显示一个进度条和一个取消按钮。

Contributions 由来显示一些额外信息,例如Eclipse选中一个java editor时,底部的读写状态,行数等信息。

Jobs progress 用来显示执行的Job,默认是不现实。要启用此功能,要设置IWorkbenchWindowConfigurator.setShowProgressIndicator(boolean).

一般 Icon/message已经可以满足显示信息的要求,如果想要添加,可以在ActionBarAdvisor.fillStatusLine (IStatusLineManager)执行IStatusLineManager.add(IContributionItem).

在View中使用StatusLine,当选中某个节点时,在状态栏显示节点信息。

为View中的TreeViewer添加监听选择事件:

<!--CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dt--><style type="text/css"> <!--code { font-family: Courier New, Courier; font-size: 10pt; margin: 0px; }--> </style> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <!-- ======================================================== --><!-- = Java Sourcecode to HTML automatically converted code = --><!-- = Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard markus@jave.de = --><!-- = Further information: http://www.java2html.de = -->
1viewer.addSelectionChangedListener( new ISelectionChangedListener(){
2 public void selectionChanged(SelectionChangedEventevent){
3updateStatusline(event);
4}
5});
<!--CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dt--><style type="text/css"> <!--code { font-family: Courier New, Courier; font-size: 10pt; margin: 0px; }--> </style> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <!-- ======================================================== --><!-- = Java Sourcecode to HTML automatically converted code = --><!-- = Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard markus@jave.de = --><!-- = Further information: http://www.java2html.de = -->
<!-- start source code --> <!-- end source code -->
01 protected void updateStatusline(SelectionChangedEventevent){
02IStatusLineManagerstatusline= this .getViewSite().getActionBars()
03.getStatusLineManager();
04IStructuredSelectionselection=(IStructuredSelection)event
05.getSelection();
06Stringmsg=getSelectionMessage(selection);
07
08statusline.setMessage(msg);
09}
10
11 private StringgetSelectionMessage(IStructuredSelectionselection){
12 if (selection.isEmpty()){
13 return "";
14}
15 if (selection.size()==1){
16 return selection.getFirstElement().toString();
17}
18 return selection.size()+"itemsselected";
19}

在View中使用StatusLine,当输入不合法时,显示出错信息。

<!--CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dt--><style type="text/css"> <!--code { font-family: Courier New, Courier; font-size: 10pt; margin: 0px; }--> </style> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <!-- ======================================================== --><!-- = Java Sourcecode to HTML automatically converted code = --><!-- = Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard markus@jave.de = --><!-- = Further information: http://www.java2html.de = -->
<!-- start source code --> <!-- end source code -->
1 protected void inputChagned(){
2 if (groupName.getText().length()==0){
3showErrorOnStatusline("Groupnamecannotbeblank");
4 return ;
5}
6showErrorOnStatusline( null );
7setDirty( true );
8}
<!-- = END of automatically generated HTML code = --><!-- ======================================================== --><!--CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dt--><style type="text/css"> <!--code { font-family: Courier New, Courier; font-size: 10pt; margin: 0px; }--> </style> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <!-- ======================================================== --><!-- = Java Sourcecode to HTML automatically converted code = --><!-- = Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard markus@jave.de = --><!-- = Further information: http://www.java2html.de = -->
<!-- start source code --> <!-- end source code -->
1 protected void showErrorOnStatusline(Stringerror){
2IStatusLineManagerstatusline= this .getEditorSite().getActionBars()
3.getStatusLineManager();
4 if (error== null ){
5statusline.setErrorMessage(null,error);
6} else {
7statusline.setErrorMessage(ImageShop.get("error"),error);
8}
9}
<!-- = END of automatically generated HTML code = --><!-- ======================================================== -->

在RCP定义状态栏


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论