добавление / удаление панели инструментов действий, когда редактор имеет фокус - PullRequest
2 голосов
/ 21 февраля 2010

Я расширяю Eclipse с помощью инфраструктуры плагинов Eclipse, и у меня возникла проблема:

Я создал текстовый редактор и хотел бы добавить действия на панель инструментов Eclipse, когда мой редактор открыт и имеет фокус. Например:

textViewer.getTextWidget().addFocusListener(new FocusListener(){
public void focusGained(FocusEvent e) {
  /* add actions */         
}

public void focusLost(FocusEvent e) {
 /* remove actions */           
}

});

В следующем примере extensionPoint: ActionSet, добавьте кнопку действия на панель инструментов постоянно:

<action
class="MyActionClass"
id="MyActionID"
label="MyActionLabel"
menubarPath="MyActionMenuBarPath"
toolbarPath="MyActionToolBarPath" <-- this property
     ...
</action>

как это сделать динамически?

Ответы [ 2 ]

2 голосов
/ 23 февраля 2010

Спасибо за ваш ответ, я нашел простой способ сделать это, просто добавьте следующую точку расширения, если кнопки ActionSet:

<extension
     point="org.eclipse.ui.actionSetPartAssociations">
  <actionSetPartAssociation
        targetID="myActionSetId">
     <part
           id="myEditorId">
     </part>
  </actionSetPartAssociation>

1 голос
/ 21 февраля 2010

Вы можете посмотреть на реализацию Eclipse подобных динамических обновлений панели инструментов.

Например, Breadcrumb bare можно активировать только для редактора Java, а кнопка панели инструментов «Toggle Breadcrumb» не будет видна для других типов редакторов.

альтернативный текст http://img109.imageshack.us/img109/359/eclipsetoolbarupdate.png

Это ToggleBreadcrumbAction, объявленный в plugin.xml как

  <actionSet
        label="%javaEditorPresentationActionSet.label"
        visible="false"
        id="org.eclipse.jdt.ui.text.java.actionSet.presentation">
     <action
           allowLabelUpdate="true"
           style="toggle"
           toolbarPath="org.eclipse.ui.edit.text.actionSet.presentation/Presentation"
           id="org.eclipse.jdt.ui.edit.text.java.toggleMarkOccurrences"
           definitionId="org.eclipse.jdt.ui.edit.text.java.toggleMarkOccurrences"
           disabledIcon="$nl$/icons/full/dtool16/mark_occurrences.gif"
           icon="$nl$/icons/full/etool16/mark_occurrences.gif"
           helpContextId="toggle_mark_occurrences_action_context"
           label="%toggleMarkOccurrences.label"
           retarget="true"
           tooltip="%toggleMarkOccurrences.tooltip">
     </action>
     <action
           allowLabelUpdate="true"
           style="toggle"
           toolbarPath="org.eclipse.ui.edit.text.actionSet.presentation/Presentation"
           id="org.eclipse.jdt.ui.edit.text.java.toggleBreadcrumb"
           definitionId="org.eclipse.jdt.ui.edit.text.java.toggleBreadcrumb"
           disabledIcon="$nl$/icons/full/dtool16/toggle_breadcrumb.gif"
           icon="$nl$/icons/full/etool16/toggle_breadcrumb.gif"
           helpContextId="toggle_mini_browser_action_context"
           label="%toggleBreadcrumb.label"
           retarget="true"
           tooltip="%toggleBreadcrumb.tooltip">
     </action>
  </actionSet>

Вы можете попробовать такое же определение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...