我正在开发Eclipse RCP应用程序的插件。在这个插件中,我想在修剪状态栏中设置文本消息和图标。
考虑到我的情况,我想我可以废弃以下方法:
ActionBarAdvisor 方法似乎要求主应用程序设置状态栏内容。这不合适,因为插件应该能够独立于应用程序,反之亦然。
StatusLineContributionItem 似乎绑定到某个视图。就我而言,无论当前选择的视图如何,都必须为整个应用程序全局设置内容。
这使我们接受Contributing to the Status Bar/Trim in Eclipse RCP方法。我按照这种方法设置了一个小样本实现:
plugin.xml实现:
<menuContribution
allPopups="false"
locationURI="toolbar:org.eclipse.ui.trim.status">
<toolbar
id="mypackage.toolbarContribution">
<control
class="mypackage.StatusBarContribution">
</control>
</toolbar>
</menuContribution>
类实现:
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
public class StatusBarContribution extends WorkbenchWindowControlContribution {
protected Composite composite = null;
@Override
protected Control createControl(Composite parent) {
FillLayout layout = new FillLayout(SWT.HORIZONTAL);
layout.marginHeight = 0;
layout.marginWidth = 0;
composite = new Composite(parent, SWT.NO_TRIM | SWT.BORDER);
composite.setLayout(layout);
Text text = new Text(composite, SWT.NONE);
text.setText("foo");
return composite;
}
}
但这只会在状态栏中给我一小段文字:
我故意设置
composite = new Composite(parent, SWT.NO_TRIM | SWT.BORDER);
能够看到布局边距:
所以,我在这里错过了什么 - 例如使用另一个margin属性或SWT位样式?