2013-03-08 67 views
0

我正在开发一个RCP应用程序,我想设置状态行。我发现我可以扩展ActionBarAdvisor类,并通过重写方法fillStatusLine()来设置状态。Eclipse RCP:在状态行中设置图像

private StatusLineContributionItem statusItem; 

@Override 
protected void fillStatusLine(IStatusLineManager statusLine) { 
    statusItem = new StatusLineContributionItem("LoggedInStatus"); 
    statusItem.setText("Logged in"); 
    statusLine.add(statusItem); 
} 

现在,我希望设置图像一起。是可以添加图像状态行?

回答

2

您需要重写StatusLineContributionItem中的fill(Composite parent)方法。在那里你可以添加自定义组件(图像,按钮等到状态行)。例如:http://book.javanb.com/eclipse-rich-client-platform-designing-coding-and-packaging-java-applications-oct-2005/ch17lev1sec7.html

org.eclipsercp.hyperbola/StatusLineContribution 
public void fill(Composite parent) { 
    Label separator = new Label(parent, SWT.SEPARATOR); 
    label = new CLabel(parent, SWT.SHADOW_NONE); 

    GC gc = new GC(parent); 
    gc.setFont(parent.getFont()); 
    FontMetrics fm = gc.getFontMetrics(); 
    Point extent = gc.textExtent(text); 
    if (widthHint > 0) 
    widthHint = fm.getAverageCharWidth() * widthHint; 
    else 
    widthHint = extent.x; 
    heightHint = fm.getHeight(); 
    gc.dispose(); 

    StatusLineLayoutData statusLineLayoutData = new StatusLineLayoutData(); 
    statusLineLayoutData.widthHint = widthHint; 
    statusLineLayoutData.heightHint = heightHint; 
    label.setLayoutData(statusLineLayoutData); 
    label.setText(text); 
    label.setImage(image); 
    ... 
} 
0

您chould使用下面的类:org.eclipse.ui.texteditor.StatusLineContributionItem.class此包含方法setImage(图像的图像)。

它位于您的eclipse安装的plugins/org.eclipse.ui.workbench.texteditor_(version).jar中。

这是类的扩展:org.eclipse.jface.action.StatusLineContributionItem.class。

请注意有两个类命名为:StatusLineContributionItem.class另一个驻留在:plugins/org.eclipse.jface_(version).jar中,命名为:org.eclipse.jface.action.StatusLineContributionItem.class。

但是,这一个不包含setImage(图像图像)方法。

然后,您可以拨打:

StatusLineManager statusLine = new StatusLineManager(); 

StatusLineContributionItem i = new StatusLineContributionItem("myid"); 
i.setText("myText"); 
i.setImage(SWTResourceManager.getImage(MyClass.class, "config.gif"); 
... 
statusLine.add(i); 
... 
return statusLine; 

如果你想完全自定义,你可以使用上面覆盖填充(复合复合)方法的解决方案。

参考: http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fui%2Ftexteditor%2FStatusLineContributionItem.html