2013-04-11 3 views
1

я успешно удалось добавить специфичную панели инструментов в моей RCP приложения, добавив следующий блок к точке расширения org.eclipse.ui.menus:Eclipse RCP: Можно ли добавить панель инструментов в часть редактора?

<menuContribution 
     allPopups="false" 
     locationURI="toolbar:my.package.path.views.ClassOfMyView"> 
    <dynamic 
      class="my.package.path.toolbars.ViewToolBar" 
      id="MyViewToolbar"> 
    </dynamic> 
    </menuContribution> 

Однако, пытаясь сделать то же самое с моей EditorPart не похоже на работу:

<menuContribution 
     allPopups="false" 
     locationURI="toolbar:my.package.path.views.ClassOfMyEditorPart"> 
    <dynamic 
      class="my.package.path.toolbars.EditorPartToolBar" 
      id="MyEditorpartToolbar"> 
    </dynamic> 
    </menuContribution> 

есть ли что-то очевидно, что мне не хватает, или это просто не поддерживается в RCP?

ответ

3

Следуя намеку на 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; 
    } 
} 

Это добавляет панель инструментов с тремя кнопками на мой ЭОД .

Мне по-прежнему нужно возиться с некоторыми точками (место размещения и т. Д.), Но для начала это удовлетворяет мою потребность в панели инструментов в области редактора.

3

Вот некоторые важные визуальные различия между редакторами и представлениями:

  • редактора предоставляют дополнительные действия в меню верхнего уровня и панель инструментов; просмотров нет *
  • Виды имеют независимую панель меню и панель инструментов; редакторы не
  • В перспективе есть не более одного активного редактора; может быть любое количество активных просмотров
  • В каждом из видов «тип» есть не более одного вида; может быть любое количество редакторов *
  • Редакторы все размещены в «области редактора»; просмотров размещаются в ряде «просмотреть стопок»

Некоторые из этих различий (отмеченные * выше) могут быть устранены при помощи различных функциональных возможностей RCP платформы:

  • Интерфейс ISaveblePart может дать вид того же жизненного цикла, что и редактор.
  • Пункт расширения menues может добавлять элементы в главное меню и панель инструментов при активном представлении.
  • Точка расширения views может использоваться для просмотра нескольких видов одного и того же типа.

С Eclipse 4 вы также можете комбинировать редакторы и представления в одном стеке или папке.

Но добавление меню или панели инструментов, если смотреть с видами, требует больше работы! Но это можно сделать с помощью API-интерфейса Presentation, где большая часть визуальной разницы может быть устранена.

Дополнительный комментарий: неtoolbar:my.package.path.views.ClassOfMyView но toolbar:id-of-the-view.

+0

Спасибо Tonny за ваш ответ. Пример кода, который я использовал, чтобы узнать, как добавлять панели инструментов в представления, использовал имя пакета + класса как идентификатор вида, поэтому я никогда не понимал, что это не должно быть имя класса, спасибо, что указали это. Ссылка на API представления помогла мне найти решение (я опубликую ответ, показывающий, что я придумал). –

Смежные вопросы