Eclipse RCP修剪状态栏复合边距太大而无法显示文本

时间:2018-05-09 11:29:32

标签: java layout swt eclipse-rcp

我正在开发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;
  }  
}

但这只会在状态栏中给我一小段文字:

enter image description here

我故意设置

composite = new Composite(parent, SWT.NO_TRIM  | SWT.BORDER);

能够看到布局边距:

如您所见,创建的复合高度可以低到正确显示文本:status bar's composite borders

所以,我在这里错过了什么 - 例如使用另一个margin属性或SWT位样式?

0 个答案:

没有答案