2.1
org.eclipse.ui.commands
延伸點係用來利用 command
和 category
元素,
來宣告指令和指令種類。指令為某些語意行為的抽象表示法,但不是實際的實作方式。這可讓不同開發人員提出各自個別組件的專屬行為模式。例如,在某個編輯器中可能有一種實作方式的「貼上」指令,但在檔案總管小組件中有不同的實作方式。這些實作方式稱為處理常式。指令也可以視為宣告的函數指標或信號處理常式。
<!ELEMENT extension (category* , command* , commandParameterType* , keyBinding* , keyConfiguration* , context* , scope* , activeKeyConfiguration?)>
<!ATTLIST extension
id CDATA #IMPLIED
name CDATA #IMPLIED
point CDATA #REQUIRED>
<!ELEMENT command (defaultHandler? , state* , commandParameter*)>
<!ATTLIST command
category CDATA #IMPLIED
description CDATA #IMPLIED
id CDATA #REQUIRED
name CDATA #REQUIRED
categoryId CDATA #IMPLIED
defaultHandler CDATA #IMPLIED
returnTypeId CDATA #IMPLIED
helpContextId CDATA #IMPLIED>
這個元素用來定義指令。指令代表來自使用者的要求,這個要求可被動作處理,而且在其他指令之間應該具有專屬的語意。如果已定義一個具有相同意義的指令,
請不要定義它。如果這些元素有多個存在且具有相同 id
屬性,
僅最後宣告的元素(按讀取外掛程式登錄的次序)才視為有效。請參閱 org.eclipse.ui.actionSets 和 org.eclipse.ui.editorActions 延伸點,以瞭解動作如何連接至指令。
categoryId
。這個指令的種類唯一 ID。如果這個指令未指定種類, 它仍將出現在所有 UI 中,伴隨著其他特別分類的指令。
自從:3.0
這個指令的預設處理常式(請參閱 org.eclipse.ui.bindings 延伸點)。如果沒有其他作用中的處理常式,這個處理常式將成為作用中。此處理常式將會與其他未指定 activeWhen
條件的處理常式定義衝突。如果您要建立一個 IExecutableExtension
,您可以改用 defaultHandler
元素。
自從:3.1
commandParameterType
的 id,表示這個指令傳回的值類型。指定 returnTypeId
可讓執行指令的用戶端在傳回的值和 Java 類型之間建立關聯性,並將值轉換成 String 格式,再儲存及/或傳遞至另一個接受相同參數類型的指令。
自從:3.2
這個指令通常相關的說明環境定義的 ID。處理常式可置換這個環境定義 ID,為特定行為提供更具體的說明。
自從:3.2
<!ELEMENT category EMPTY>
<!ATTLIST category
description CDATA #IMPLIED
id CDATA #REQUIRED
name CDATA #REQUIRED>
在 UI 中,指令通常是按種類來組織,這使得它們更加容易管理。這個元素用來定義這些種類。指令可以將它們自己新增至最多一個種類中。如果這些元素有多個存在且具有相同 id
屬性,
僅最後宣告的元素(按讀取外掛程式登錄的次序)才視為有效。
<!ELEMENT commandParameter (values?)>
<!ATTLIST commandParameter
id CDATA #REQUIRED
name CDATA #REQUIRED
values CDATA #IMPLIED
typeId CDATA #IMPLIED
optional (true | false) "true">
定義指令應能瞭解的參數。參數是一個在執行時間能提供詳細資訊給處理常式的方式。例如,"Show view 指令可能會使用視圖作為參數。處理常式應該能夠瞭解這些參數,這樣他們能被視為 API。
自從:3.1
org.eclipse.core.commands.IParameterValues
。如果未指定這個類別,您必須指定更多的詳細 values
元素。請參閱 org.eclipse.core.runtime.IExecutableExtension
。<!ELEMENT commandParameterType EMPTY>
<!ATTLIST commandParameterType
id CDATA #REQUIRED
type CDATA #IMPLIED
converter CDATA #IMPLIED>
定義 commandParameter 的物件類型,並指定 org.eclipse.core.commands.AbstractParameterValueConverter
子類別來轉換字串參數值和物件。
自從:3.2
java.lang.Object
做為參數類型。org.eclipse.core.commands.AbstractParameterValueConverter
。轉換器應該生產和使用 type
屬性指定的物件類型。如果不指定這個類別,則無法使用這項機能來轉換這個參數類型的字串和物件值(類別 ParameterType
的 getValueConverter()
將傳回 null
)。<!ELEMENT values (parameter*)>
<!ATTLIST values
class CDATA #REQUIRED>
commandParameter
上 values
屬性的更詳細版本。
自從:3.1
org.eclipse.core.commands.IParameterValues
。如果未指定這個類別,您必須指定更多的詳細 values
元素。請參閱 org.eclipse.core.runtime.IExecutableExtension
。<!ELEMENT parameter EMPTY>
<!ATTLIST parameter
name CDATA #REQUIRED
value CDATA #REQUIRED>
參數的可能值。
自從:3.1
IExecutableExtension
的參數名稱。IExecutableExtension
的參數值。<!ELEMENT defaultHandler (parameter)>
<!ATTLIST defaultHandler
class CDATA #REQUIRED>
此指令的預設處理常式。如果沒有其他作用中的處理常式,這個處理常式將成為作用中。此處理常式將會與其他未指定 activeWhen
條件的處理常式定義衝突。如果您未建立 IExecutableExtension
,您可以改用 defaultHandler
屬性。
自從:3.1
org.eclipse.core.commands.IHandler
的類別。<!ATTLIST state
class CDATA #IMPLIED
id CDATA #REQUIRED>
所有處理常式共用的狀態資訊,且在不同階段作業之間可能持續保存。通常是關於勾選框狀態或處理常式的標籤。狀態只是載入來監督狀態的類別。如需詳細資訊,請參閱 API 資訊。
自從:3.2
org.eclipse.core.commands.State
。請參閱 API 資訊。org.eclipse.jface.commands.PersistentState
的實例)。某些一般 ID(請參閱 org.eclipse.jface.menus.IMenuStateIds
)是在功能表或工具列呈現指令時才解析。這個 ID 只要在定義狀態的指令內保持唯一即可。
<!ATTLIST class
class CDATA #REQUIRED>
載入來儲存這個指令的狀態的類別。如果要將多個參數傳遞至 org.eclipse.core.runtime.IExecutableExtension
,可使用這個元素。
自從:3.2
org.eclipse.core.commands.State
。請參閱 API 資訊。<!ELEMENT keyConfiguration EMPTY>
<!ATTLIST keyConfiguration
description CDATA #IMPLIED
id CDATA #REQUIRED
name CDATA #REQUIRED
parent CDATA #IMPLIED
parentId CDATA #IMPLIED>
這個元素用來定義按鍵配置。如果這些元素有多個存在且具有相同 id
屬性,
僅最後宣告的元素(按讀取外掛程式登錄的次序)才視為有效。請改用 "org.eclipse.ui.bindings" 延伸點。
<!ELEMENT context EMPTY>
<!ATTLIST context
description CDATA #IMPLIED
id CDATA #REQUIRED
name CDATA #REQUIRED
parent CDATA #IMPLIED
parentId CDATA #IMPLIED>
這個元素用來定義環境定義。如果這些元素有多個存在且具有相同 id
屬性,
僅最後宣告的元素(按讀取外掛程式登錄的次序)才視為有效。請改用 org.eclipse.ui.contexts 延伸點。
<!ELEMENT scope EMPTY>
<!ATTLIST scope
description CDATA #IMPLIED
id CDATA #REQUIRED
name CDATA #REQUIRED
parent CDATA #IMPLIED>
這個元素用來定義範圍。如果這些元素有多個存在且具有相同 id
屬性,
僅最後宣告的元素(按讀取外掛程式登錄的次序)才視為有效。@deprecated 請改用 "org.eclipse.ui.contexts" 延伸點。
<!ELEMENT activeKeyConfiguration EMPTY>
<!ATTLIST activeKeyConfiguration
value CDATA #IMPLIED
keyConfigurationId CDATA #IMPLIED>
這個元素用來定義 Eclipse 的起始作用中按鍵配置。如果這些元素有多個存在,僅最後宣告的元素(按讀取外掛程式登錄的次序)才視為有效。
此元素已被喜好設定所取代。如果您的應用程式需要變更預設按鍵配置,請在您的 plugin_customization.ini
檔:org.eclipse.ui/KEY_CONFIGURATION_ID=your.default.key.configuration.id
中指定以下各項。
id
屬性)。id
屬性)。<!ELEMENT keyBinding EMPTY>
<!ATTLIST keyBinding
configuration CDATA #IMPLIED
command CDATA #IMPLIED
locale CDATA #IMPLIED
platform CDATA #IMPLIED
contextId CDATA #IMPLIED
string CDATA #IMPLIED
scope CDATA #IMPLIED
keyConfigurationId CDATA #IMPLIED
commandId CDATA #IMPLIED
keySequence CDATA #IMPLIED>
這個元素可讓使用者指派按鍵順序給指令。請改用 "org.eclipse.ui.bindings" 延伸點中的 key
元素。
java.util.Locale
中宣告的格式來指定的。platform
屬性值是一組由 org.eclipse.swt.SWT.getPlatform()
傳回的可能值。key
元素上使用 schemeId
屬性。指定給指令的按鍵順序。按鍵順序是由一或多個按鍵作用所組成,按鍵作用是由鍵盤上的按鍵所組成,可以選擇性結合下列一或多個修飾元一起按下:Ctrl、Alt、Shift 和 Command。按鍵作用是以空格區隔,修飾元則以 '+' 字元區隔。
修正鍵亦可以不同的平台上執行的方式表示。在 MacOS X 上,舉例來說,"Command" 幾乎總是用來替代 "Ctrl"。所以,我們提供了 "M1",在適當的地方,可對映至 "Ctrl" 或 "Command"。同樣地,"M2" 是 "Shift";"M3" 是 "Alt"; "M4" 是 "Ctrl" (MacOS X)。如果新增了更多平台,您可依賴這些別名,將其對映至平台預設值。
此字串的語法定義於 org.eclipse.ui.internal.keys
。簡單來說,該字串不區分大小寫 -- 雖然在文體上比較偏好大寫。如果該按鍵為一個字母,則只需附加該字母。如果該按鍵為一個特殊鍵(例如,非 ASCII),則使用以下其中一項:ARROW_DOWN、ARROW_LEFT, ARROW_RIGHT, ARROW_UP、BREAK、CAPS_LOCK、END、F1、F2、F3、F4、F5、F6、F7、F8、F9、F10、F11、F12、F13、F14、F15、HOME、INSERT、NUM_LOCK、NUMPAD_0、NUMPAD_1、NUMPAD_2、NUMPAD_3、NUMPAD_4、NUMPAD_5、NUMPAD_6、NUMPAD_7、NUMPAD_8、NUMPAD_9、NUMPAD_ADD、NUMPAD_DECIMAL、NUMPAD_DIVIDE、NUMPAD_ENTER、NUMPAD_EQUAL、NUMPAD_MULTIPLY、NUMPAD_SUBTRACT、PAGE_UP、PAGE_DOWN、PAUSE、PRINT_SCREEN,或 SCROLL_LOCK。如果該按鍵為不可列印的 ASCII 鍵,則使用以下其中一項:BS、CR、DEL、ESC、FF、LF、NUL、SPACE、TAB,或 VT。請注意,主要鍵盤的 enter/return 鍵為 CR。
org.eclipse.ui
外掛程式中的 plugin.xml
檔會充分利用 org.eclipse.ui.commands
延伸點。
利用 org.eclipse.ui.handlers.IHandlerService
可登錄指令的處理常式。這可從各種工作台元件中(例如,工作台、工作台視窗、組件網站等)呼叫 getService(IHandlerService.class)
來擷取。
通常最好靜態地宣告所有指令(在 plugin.xml
中)。以利於使用者將按鍵連結附加至指令。不過,也可以在執行時期宣告指令。作法是從工作台元件中擷取 org.eclipse.ui.commands.ICommandService
,呼叫 getCommand(yourCommandID)
,再呼叫 Command.define(...)
。
處理常式狀態有幾個預設實作可能對這個延伸點的使用者有用:
Copyright (c) 2000, 2005 IBM Corporation and others.
All
rights reserved. 本程式與隨附的資料依照 Elipse Public License 1.0 版此次發行所隨附的條款而提供,
可以在以下網址取得:http://www.eclipse.org/legal/epl-v10.html