我正在开发一个RCP应用程序,我想设置状态行。我发现我可以扩展ActionBarAdvisor类,并通过覆盖方法fillStatusLine()方法我可以设置状态。
private StatusLineContributionItem statusItem;
@Override
protected void fillStatusLine(IStatusLineManager statusLine) {
statusItem = new StatusLineContributionItem("LoggedInStatus");
statusItem.setText("Logged in");
statusLine.add(statusItem);
}
现在,我希望设置图像。可以将图像添加到状态行吗?
答案 0 :(得分:2)
您需要覆盖StatusLineContributionItem中的fill(复合父级)方法。在那里,您可以添加自定义组件(图像,按钮等到状态行)。例如: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);
...
}
答案 1 :(得分:0)
你可以使用以下类:org.eclipse.ui.texteditor.StatusLineContributionItem.class这包含方法setImage(Image image)。
可以在: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;
如果您想要完全自定义,可以使用上面的解决方案覆盖填充(复合复合)方法。