Составные поля строки состояния обрезки Eclipse RCP слишком велики для отображения текста - PullRequest
0 голосов
/ 09 мая 2018

Я разрабатываю плагин для приложения Eclipse RCP. В этом плагине я хочу установить текстовое сообщение и значок в строке состояния обрезки.

Учитывая мои обстоятельства, я думаю, что могу отказаться от следующих подходов:

  • Подход ActionBarAdvisor , по-видимому, требует, чтобы основное приложение устанавливало содержимое строки состояния. Это не подходит, так как плагин должен быть независимым от приложения и наоборот.

  • StatusLineContributionItem , по-видимому, привязан к определенному представлению. В моем случае содержимое должно быть установлено глобально для всего приложения независимо от выбранного в данный момент представления.

Это оставляет нам подход Содействие в строке состояния / отделке в 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

Итак, я что-то здесь упускаю - например, использовать другое свойство поля или стиль битов SWT?

...