В Eclipse легко указать кнопки для панели инструментов с помощью точки расширения ActionSets. Однако, когда мне нужно указать некоторые элементы программно, я не могу получить такой же вид. Я не верю, что фреймворк использует для них собственные кнопки, но пока я не могу найти правильный рецепт, который соответствовал бы стилю Eclipse. Я хотел посмотреть, нашел ли кто-нибудь нужный фрагмент для дублирования этой функции в коде.




Не могли бы вы вставить отрывок из имеющегося у вас кода для программного добавления действий на панель инструментов? Я предполагаю, что вы делаете это в классе ApplicationActionBarAdvisor? Внешний вид кнопок, которые вы добавляете декларативно, не должен отличаться от тех, которые вы добавляете программно.
Сложно сказать по вашему вопросу, но похоже, что вы пытаетесь добавить ControlContribution на панель инструментов и вернуть кнопку. В результате кнопка на панели инструментов будет выглядеть как обычная кнопка, как вы, кажется, описываете. Это выглядело бы примерно так:
IToolBarManager toolBarManager = actionBars.getToolBarManager();
toolBarManager.add(new ControlContribution("Toggle Chart") {
@Override
protected Control createControl(Composite parent)
{
Button button = new Button(parent, SWT.PUSH);
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
// Perform action
}
});
}
});
Вместо этого вы должны добавить действие на панель инструментов. Это создаст кнопку на панели инструментов, которая соответствует стандартным кнопкам панели инструментов eclipse. Это выглядело бы примерно так:
Action myAction = new Action("", imageDesc) {
@Override
public void run() {
// Perform action
}
};
IToolBarManager toolBarManager = actionBars.getToolBarManager();
toolBarManager.add(myAction);
Какой код вы используете для программного добавления кнопок?