`

在RCP定义状态栏

阅读更多
from:http://blog.csdn.net/moneyice/archive/2006/05/12/726810.aspx  
在Eclipse 中,每选中一个文件,底部的状态栏上都会显示出该文件的有关信息。客户端软件通常都会将一些全局的或当前的信息显示在底部的状态栏上。本文将在RCP中添加状态栏功能。

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

ApplicationWorkbenchWindowAdvisor.java
01 public void preWindowOpen() {
02     IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
03     configurer.setInitialSize(new Point(600, 400));
04     configurer.setShowCoolBar(true);
05     configurer.setShowStatusLine(true);
06     configurer.setShowFastViewBars(true);
07     configurer.setShowPerspectiveBar(true);
08     configurer.setShowMenuBar(true);
09     configurer.setShowProgressIndicator(true);
10     configurer.setShowStatusLine(true);
11     PlatformUI.getPreferenceStore().setDefault(
12         IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS, true);
13     PlatformUI.getPreferenceStore().setDefault(
14         IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS,
15         false);
16     PlatformUI.getPreferenceStore().setDefault(
17         IWorkbenchPreferenceConstants.DOCK_PERSPECTIVE_BAR,
18         IWorkbenchPreferenceConstants.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添加监听选择事件:

1 viewer.addSelectionChangedListener(new ISelectionChangedListener() {
2       public void selectionChanged(SelectionChangedEvent event) {
3         updateStatusline(event);
4       }
5     });
01 protected void updateStatusline(SelectionChangedEvent event) {
02     IStatusLineManager statusline = this.getViewSite().getActionBars()
03         .getStatusLineManager();
04     IStructuredSelection selection = (IStructuredSelection) event
05         .getSelection();
06     String msg = getSelectionMessage(selection);
07
08     statusline.setMessage(msg);
09   }
10
11   private String getSelectionMessage(IStructuredSelection selection) {
12     if (selection.isEmpty()) {
13       return "";
14     }
15     if (selection.size() == 1) {
16       return selection.getFirstElement().toString();
17     }
18     return selection.size() + " items selected";
19   }

在View中使用StatusLine,当输入不合法时,显示出错信息。
1 protected void inputChagned() {
2     if (groupName.getText().length() == 0) {
3       showErrorOnStatusline("Group name can not be blank");
4       return;
5     }
6     showErrorOnStatusline(null);
7     setDirty(true);
8   }
1 protected void showErrorOnStatusline(String error) {
2     IStatusLineManager statusline = this.getEditorSite().getActionBars()
3         .getStatusLineManager();
4     if (error == null) {
5       statusline.setErrorMessage(null, error);
6     } else {
7       statusline.setErrorMessage(ImageShop.get("error"), error);
8     }
分享到:
评论
2 楼 WIN 2010-07-06  
zhoche2008 写道
我的状态栏的内容是固定的,怎么办呢,如果在ActionBarAdvisor.fillStatusLine中设置statusLine.setMessage后,当我点击某个viewpart后,状态栏的内容就消失了,如果在每一个viewpart里面都设置setMessage又太麻烦,怎么办?

你可以看看另一篇博文-----35791487这个是博文编号,将460989覆盖掉就可以了
1 楼 zhoche2008 2010-07-05  
我的状态栏的内容是固定的,怎么办呢,如果在ActionBarAdvisor.fillStatusLine中设置statusLine.setMessage后,当我点击某个viewpart后,状态栏的内容就消失了,如果在每一个viewpart里面都设置setMessage又太麻烦,怎么办?

相关推荐

    RCP 菜单与工具栏小结

    RCP的菜单和工具栏支持动态更新,这意味着它们可以根据应用的状态变化自动调整显示的项。例如,如果某个编辑器中有未保存的更改,那么保存菜单项可能会高亮显示,或者在用户打开特定类型文件时,工具栏上会显示出...

    rcp 工具栏

    在Eclipse RCP中,工具栏(Toolbar)是一种图形用户界面组件,通常位于窗口顶部,包含一系列按钮,每个按钮代表一个可执行的操作或命令。工具栏的设计旨在提高用户的效率,因为它们提供了一种快速访问常用功能的方式...

    RCP常用方法,RCP常用方法

    为了更好地满足用户界面的需求,可以进一步定制主窗口的样式,包括窗口大小、是否显示工具栏和状态栏等。 **步骤**: 1. **修改窗口大小**:在`ApplicationWorkbenchWindowAdvisor.java`的`preWindowOpen()`方法中...

    Eclipse RCP Plug-in开发自学教程(Eclipse3.6)

    - **简介**:状态栏在RCP界面底部显示信息。 - **安装状态栏**:添加和配置状态栏。 - **初始化状态条**:启动时设置状态栏信息。 - **控制状态栏**:动态更新和控制状态栏内容。 11. **透视图** - **简介**:...

    eclipse 3.6 rcp 开发

    - **介绍**: 状态栏用于显示简短的信息或状态。 - **实现**: 通过实现IStatusLineManagerListener接口。 #### 11. 透视图 - **概念**: 透视图是Eclipse RCP中的不同工作空间布局。 - **添加透视图**: - 创建...

    eclipse RCP tutorial(中文教程)

    1. **定义状态栏**:在插件中定义状态栏。 2. **更新状态栏**:编写更新状态栏信息的代码。 #### 共享状态栏 共享状态栏可以让多个视图共享同一个状态栏。实现共享状态栏的关键步骤包括: 1. **定义共享状态栏**:...

    eclipse rcp 开发基础教程

    6. **Command Framework**:Eclipse RCP的命令框架允许开发者定义、分发和执行应用程序中的命令,包括菜单项、工具栏按钮等。 7. **Model Data Binding**:Eclipse RCP支持数据绑定,自动同步模型数据与UI组件的...

    RCP 开发自学教程

    #### 十、添加状态栏 - **状态栏**: - 显示当前操作状态的信息区域。 - 位于应用窗口底部。 #### 十一、透视图 **11.1 简介** - **透视图(Perspective)**: - Eclipse RCP中的布局模板。 - 可以定义不同用途...

    rcp editor实例的项目代码

    4. **菜单和工具栏**:Eclipse RCP允许自定义菜单和工具栏,这些可以通过`Action`类实现。你可以创建`MenuManager`和`ToolBarManager`来管理这些动作,并在编辑器的上下文中添加它们。 5. **事件处理**:RCP编辑器...

    rcp定制应用程序窗口属性

    窗口样式的定制还包括控制工具栏的显示和状态栏的隐藏/显示。例如,可以暂时隐藏工具栏,显示状态栏: ```java configurer.setShowCoolBar(false); // 隐藏工具栏 configurer.setShowStatusLine(true); // 显示状态...

    RCP 资料

    在RCP中,开发者可以创建自定义的工作台视图、编辑器、透视图,以及通过插件系统进行功能扩展。Eclipse RCP的核心设计理念是“模型-视图-控制器”(MVC)模式,这使得应用程序的结构清晰,易于维护和扩展。 **主要...

    RCP基本框架分析 Workbench是工作台,通俗地说就是代表用户界面的UI元素

    Advisor类在RCP中起到配置和建议的作用,用于定义用户界面的布局、样式和其他特性。主要有三种类型的Advisor: - WorkbenchAdvisor:负责整个工作台的生命周期管理,包括启动、关闭工作台,以及异常处理,并可以...

    RCP与GEF课件,介绍RCP和GEF各组成部分和工作原理

    5. **Command Framework**:命令框架提供了处理用户操作的能力,如菜单项、工具栏按钮等。通过命令,开发者可以解耦UI和实现,使得功能可以独立于其表示进行定义和扩展。 6. **Property and Selection Services**:...

    RCP开发入门-PDF.7z

    在RCP应用中,工作台(Workbench)作为整体架构的中心,负责管理窗口、视图、编辑器等元素。 书中的内容可能涵盖了以下知识点: 1. **环境搭建**:介绍如何配置Eclipse IDE,安装RCP开发所需的插件,如PDE(Plug-...

    rcp研究总结

    开发者可以利用RCP构建自己的应用程序,填充自己的业务逻辑,而无需从头设计基础界面元素,如菜单、工具栏和窗口。RCP使得开发者能够复用Eclipse的一些内置功能,例如控制台(Console),从而避免重复劳动,提高开发...

    eclipsercp教程

    - **作用**:用于控制状态栏、工具栏、标题和窗口大小等元素。 - **特点**: - 将工具栏的创建任务委托给`ApplicationActionBarAdvisor`类。 - 具体的工具栏配置和行为由后者负责。 ##### 5. ...

    rcp]-eclipse_rcp

    - **工具栏(Toolbars)**、**菜单(Menu Bars)**、**状态栏(Status Bar)**:提供了用户与应用程序进行交互的主要方式。 ##### 3. 动作与事件 - **动作(Actions)**:Eclipse RCP通过引入“动作”的概念来简化事件处理...

    Eclipse-4-RCP教程

    - **工具栏**:回顾工具栏的定义及其在Eclipse RCP中的作用。 - **工具控件**:深入探讨工具控件及其用途。 - **下拉工具项**:介绍下拉工具项的特点及其在Eclipse RCP中的实现方法。 #### 二十一、命令和处理器...

Global site tag (gtag.js) - Google Analytics