外掛程式通常會將行為提供到已在工作台中的視圖中。 這是利用 org.eclipse.ui.viewActions 延伸點來完成的。 這個延伸點可讓外掛程式將功能表項目、子功能表和工具列項目提供到現有的視圖本端下拉功能表和本 端工具列中。
您可能已注意到,每次選取 Readme 檔時,導覽器的本端工具列中都會有一個項目進入啟用狀態。 這個項目也會出現在導覽器的本端下拉功能表中。 這些動作出現,是由於 Readme 工具外掛程式利用 viewActions 延伸來提供它們。
以下是相關的 plugin.xml 構成要素。
<extension point = "org.eclipse.ui.viewActions"> <viewContribution id="org.eclipse.ui.examples.readmetool.vc1" targetID="org.eclipse.ui.views.ResourceNavigator"> <action id="org.eclipse.ui.examples.readmetool.va1" label="%PopupMenu.ResourceNav.label" menubarPath="additions" toolbarPath="additions" icon="icons/obj16/editor.png" tooltip="%PopupMenu.ResourceNav.tooltip" helpContextId="org.eclipse.ui.examples.readmetool.view_action_context" class="org.eclipse.ui.examples.readmetool.ViewActionDelegate" enablesFor="1"> <selection class="org.eclipse.core.resources.IFile" name="*.readme"/> </action> </viewContribution> </extension>
其中指定了一個含唯一 ID 的檢視構成要素。 我們將動作新增其中的視圖是在 targetID 中指定的。 我們正提供至資源導覽器的功能表。我們指定新動作的標籤、功能表列和工具列位置。 (如果需要功能表和工具列位置的完整討論,請參閱功能表和工具列路徑)。
我們也指定應該啟用動作的狀況。 當有 IFile (class="org.eclipse.core.resources.IFile") 類型的選項(enablesFor="1"),且其檔名有 ".readme" 在副檔名(name="*.readme")中時,就會見到這個動作被啟用。 當然,這就是您按一下資源導覽器時所發生的動作。
plugin.xml 中的資訊就是所有必須將項目新增至適當功能表和工具列的內容,因為外掛程式程式碼 只有當動作確實的從功能表或工具列中被選取時才會執行。 要提供動作行為,plugin.xml 中所指定的實作類別必須實作 IViewActionDelegate 介面。
在這個範例中,Readme 外掛程式提供 ViewActionDelegate 來實作這個動作。 如果您瀏覽這個類別,您會見到它包含了記憶本身視圖、處理選項變更和呼叫動作的方法。 呼叫動作本身會簡單的啟動宣佈動作已執行的對話框。
public void run(org.eclipse.jface.action.IAction action) { MessageDialog.openInformation(view.getSite().getShell(), MessageUtil.getString("Readme_Editor"), MessageUtil.getString("View_Action_executed")); }
雖然這個動作很簡單,但我們仍可以想像利用選項及其他功能對話框可以如何讓這個動作做一些更感興趣的事。