Следуя намеку на API-интерфейс презентации, данный Тонни Мэдсеном, я придумал решение моей проблемы.Мое решение основано на следующих статьях:
чтобы сделать свою работу решение, я закончил с изменениями в двух файлах и новый класс:
В файле plugin.xml, я добавил следующее расширение:
<extension point="org.eclipse.ui.presentationFactories">
<factory
name="Extended Presentation Factory"
class="org.eclipse.minicrm.ui.swt.custom.ExtendedPresentationFactory"
id="org.eclipse.minicrm.ui.swt.custom.ExtendedPresentationFactory"
/>
</extension>
Это, кажется, игнорируется Eclipse, 4.x, поэтому для удовлетворения этих случаев, я добавил следующую строку в plugin_customisation. INI-файл:
org.eclipse.ui/presentationFactoryId = org.eclipse.minicrm.ui.swt.custom.ExtendedPresentationFactory
затем я создал соответствующий класс:
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.ui.internal.presentations.util.TabbedStackPresentation;
import org.eclipse.ui.presentations.IStackPresentationSite;
import org.eclipse.ui.presentations.StackPresentation;
import org.eclipse.ui.presentations.WorkbenchPresentationFactory;
@SuppressWarnings("restriction")
public class ExtendedPresentationFactory extends WorkbenchPresentationFactory {
private ToolBarManager m_toolBarManager = null;
private ToolBar m_toolbar = null;
@Override
public StackPresentation createEditorPresentation(final Composite parent, final IStackPresentationSite site) {
final TabbedStackPresentation presentation = (TabbedStackPresentation) super.createViewPresentation(parent, site);
m_toolbar = new ToolBar(presentation.getTabFolder().getToolbarParent(), 0);
m_toolBarManager = new ToolBarManager(m_toolbar);
m_toolBarManager.add(new MyAction1());
m_toolBarManager.add(new MyAction2());
m_toolBarManager.add(new MyAction3());
m_toolBarManager.update(true);
presentation.getTabFolder().setToolbar(m_toolbar);
return presentation;
}
}
Это добавляет панель инструментов с тремя кнопками на мой ЭОД .
Мне по-прежнему нужно возиться с некоторыми точками (место размещения и т. Д.), Но для начала это удовлетворяет мою потребность в панели инструментов в области редактора.
Спасибо Tonny за ваш ответ. Пример кода, который я использовал, чтобы узнать, как добавлять панели инструментов в представления, использовал имя пакета + класса как идентификатор вида, поэтому я никогда не понимал, что это не должно быть имя класса, спасибо, что указали это. Ссылка на API представления помогла мне найти решение (я опубликую ответ, показывающий, что я придумал). –