Я разрабатываю плагин для приложения 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;
}
}
Но это только дает мне небольшой кусочек текста в строке состояния:
Я специально установил
composite = new Composite(parent, SWT.NO_TRIM | SWT.BORDER);
чтобы увидеть поля макета:
Как видите, созданная составная высота слишком мала для правильного отображения текста:
Итак, я что-то здесь упускаю - например, использовать другое свойство поля или стиль битов SWT?