Как установить изображение в верхний правый угол заголовка формы - PullRequest
1 голос
/ 07 февраля 2012

Я использую rcp формы eclipse,

Я пытаюсь установить изображение с помощью

form.setImage()

просто устанавливает изображение слева от текста формы. Как разместить изображение в правом верхнем углу текста заголовка формы.

Как показано на рисунке ниже (изображение является обзорной вкладкой по умолчанию для любого приложения RCP) enter image description here

Из рисунка выше я понимаю, что изображения / виджеты расположены рядом с текстом формы (извините, если я ошибаюсь).

В качестве обходного пути я попытался поместить композит в заголовок формы, но я считаю, что заголовок формы следует после уровня заголовка формы (если мы рассматриваем заголовок формы как 1-й ряд, то заголовок формы отображается как 2-й ряд)

Composite composite = formToolkit.createComposite(form.getHead(), SWT.NONE);
form.setHeadClient(composite);
formToolkit.paintBordersFor(composite);
composite.setLayout(new GridLayout(2, false));

Таким образом я попытался поместить компоненты в композит, но в любом случае я не получил желаемый стиль, как показано на рисунке.

Как разместить изображение в правом верхнем углу заголовка формы

1 Ответ

0 голосов
/ 07 февраля 2012

Вы не можете установить изображения в правом углу.На прилагаемом изображении вы видите панель инструментов с некоторыми IContributionItem

. Чтобы создать что-то, вы должны переопределить org.eclipse.ui.forms.editor.SharedHeaderFormEditor.createHeaderContents(IManagedForm) с помощью следующего:

@Override
protected void createHeaderContents(final IManagedForm headerForm) {

    headerForm.getForm().setText("EditorTitle");
    headerForm.getForm().setImage(myLeftImage);
    headerForm.getToolkit().decorateFormHeading(
            headerForm2.getForm().getForm());
    Action action = new Action("Do something") {
        @Override
        public ImageDescriptor getImageDescriptor() {
            return imageDescriptorOfRightImage;
        }
    };
    headerForm.getForm().getToolBarManager().add(action);
    headerForm.getForm().getToolBarManager().update(true);

}
...