Eclipse rcp 有助于Eclipse RCP中的状态栏/修剪

Eclipse rcp 有助于Eclipse RCP中的状态栏/修剪,eclipse-rcp,Eclipse Rcp,我需要在Eclipse应用程序的状态栏中显示状态指示器。我不能通过ApplicationWindowAdvisor(另一个团队拥有核心产品)进行贡献,但我确信我应该能够通过扩展点进行贡献。尽管谷歌搜索了很多,我还是找不到任何描述如何做这件事的东西。一个可能的解决方案来检查: 您应该能够定义一个,以便能够添加到核心产品功能中。(再举一个例子) 其想法是为核心插件添加功能。您的贡献可能会以这种方式合并到该主产品。在org.eclipse.ui.menu贡献扩展中,使用“toolbar:org.ecl

我需要在Eclipse应用程序的状态栏中显示状态指示器。我不能通过ApplicationWindowAdvisor(另一个团队拥有核心产品)进行贡献,但我确信我应该能够通过扩展点进行贡献。尽管谷歌搜索了很多,我还是找不到任何描述如何做这件事的东西。

一个可能的解决方案来检查:
您应该能够定义一个,以便能够添加到核心产品功能中。(再举一个例子)


其想法是为核心插件添加功能。您的贡献可能会以这种方式合并到该主产品。

在org.eclipse.ui.menu贡献扩展中,使用“toolbar:org.eclipse.ui.trim.status”作为位置URI。您可以将命令/自定义控件添加到状态栏。

首先,将状态栏添加到application.e4xmi(应用程序>窗口和对话框>修剪窗口>修剪栏>窗口修剪(底部)>工具栏>工具控件)

@Inject
private IEventBroker eventBroker; 
private static final String STATUSBAR ="statusbar";

@Inject @Optional
public void  getEvent(@UIEventTopic(STATUSBAR) String message) {
    updateInterface(message); 
}

@PostConstruct
public void createControls(Composite parent) {
   .... \\ swt definitions e.g. label 
}

public void updateInterface(String message)
    {
        try{
            Display.getDefault().asyncExec(new Runnable() {
              @Override
              public void run() {
                 try{
                        label.setText(message);  
                    }
                    catch(Exception exc){
                        System.out.println(exc);
                    }               
              }
            });
        }
        catch(Exception exception){
            System.out.println(exception);
        }   
    }
创建.java类并在工具栏中提供地址(类uri)

e4状态栏实现不同于e3实现。在e4中,您可以使用eventbroker向状态栏发送文本(信息)

@Inject
private IEventBroker eventBroker; 
private static final String STATUSBAR ="statusbar";

@Inject @Optional
public void  getEvent(@UIEventTopic(STATUSBAR) String message) {
    updateInterface(message); 
}

@PostConstruct
public void createControls(Composite parent) {
   .... \\ swt definitions e.g. label 
}

public void updateInterface(String message)
    {
        try{
            Display.getDefault().asyncExec(new Runnable() {
              @Override
              public void run() {
                 try{
                        label.setText(message);  
                    }
                    catch(Exception exc){
                        System.out.println(exc);
                    }               
              }
            });
        }
        catch(Exception exception){
            System.out.println(exception);
        }   
    }
另外,不要忘记将eventbrokersender添加到另一个java类中

@Inject
private IEventBroker eventBroker; 
private static final String STATUSBAR ="statusbar";
eventBroker.send(STATUSBAR, "status bar test message..");