【问题标题】:Eclipse RCP trim status bar composite margins too big to display textEclipse RCP 修剪状态栏复合边距太大而无法显示文本
【发布时间】:2018-10-19 12:11:42
【问题描述】:

我正在为 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);

能够看到布局边距:

如您所见,创建的复合高度太低,无法正确显示文本:

那么,我在这里错过了什么吗?使用其他边距属性或 SWT 位样式?

【问题讨论】:

  • 您可以尝试使用 GridLayout 而不是 FillLayour。在文本上使用带有宽度和高度提示的 GridData。
  • 嗨 Greg,我在将布局更改为 GridLayout 后尝试了以下操作但没有成功:GridData gridData = new GridData(SWT.FILL, SWT.BEGINNING, false, true); gridData.heightHint = text.computeSize(SWT.DEFAULT, SWT.DEFAULT).y; text.setLayoutData(gridData);
  • @Niklas 你有没有成功解决这个问题?我刚刚将我的 RCP 应用从 Kepler 升级到 2020-03,现在遇到了与您描述的相同的问题。

标签: java layout swt eclipse-rcp


【解决方案1】:

如果您在控件之外添加一个虚拟命令贡献,则布局有效。

【讨论】:

    猜你喜欢
    • 2011-02-18
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多