「一般喜好設定」可讓使用者指定在按一下或按兩下視圖時,是否應該開啟視圖的物件。
為什麼免責聲明要提及這個喜好設定的不會在所有視圖中發生作用?因為外掛程式提供的視圖必須明確地支援實作中的喜好設定。
可利用建立 SWT 控制項並撰寫標準 SWT 程式碼實作來視圖,或使用 JFace 檢視器來處理低階的詳細資料。接受按一下喜好設定可以在任一層次完成。開啟其他物件的大部分視圖呈現一個結構化的、像清單一樣的視圖。現在我們將專注於那種類型的視圖。 如果您的視圖用不同方式展示物件,可能是使用 SWT 層次概念來支援按一下。
如果您使用 JFace 清單導向的檢視器來呈現物件,支援按一下是直接明確的。 要在視圖中觸發開啟項目時,使用 addOpenListener,而不要使用 addDoubleClickListener。開啟接聽器接受現 行工作台喜好設定,當指定的滑鼠事件發生時,啟動開啟事件。
您可能希望為「non-open」動作使用 addDoubleClickListener,例如按兩下以展開樹狀結構中的項目。
JFace 提供 OpenStrategy 這個公用程式類別, 以處理在 SWT 控制層中按一下和按兩下的底層機制。 OpenStrategy 是由「一般喜好設定」對話框來配置,所以它接受現行的工作台開啟喜好設定。事實上,JFace 檢視器使用這個類別實作接聽器的接聽器。
您必須建立 OpenStrategy 以及與 SWT 控制項的關聯。OpenStrategy 將連結適當的事件並依據使用者喜好設定翻譯。您的工作是新增開啟的接聽器至實作程式碼以供開啟的策略中。這樣一來,您受到關於小組件事件觸發開啟事件知識的防護。
OpenStrategy openHandler = new OpenStrategy(control); openHandler.addOpenListener(new IOpenEventListener() { public void handleOpen(SelectionEvent e) { // 處理開啟事件的程式碼。 ... } }
開啟的其他工作台喜好設定(選取浮動說明,使用方向鍵開啟)也由 OpenStrategy 處理。 這表示「對的事」將發生,如果您使用 JFace 檢視器或 OpenStrategy 類別來實作開啟行為的話。
處理開啟事件時,您應該使用 OpenStrategy.activateOnOpen() 來決定 已開啟的編輯器是否應依預設來啟動。啟動編輯器切換從視圖至編輯器的焦點,在按一下模式中,是特別令人混淆而且不宜的。