在建置複雜的使用者介面時,有非常多類別和介面可用。 而非常幸運地,如果只要做些簡單的事,您不需要完全瞭解它們。 首先,我們要檢視工作台使用者介面所外曝的一些概念以及隱藏著的對應結構。
當我們使用工作台一詞時,它泛指「啟動平台時所開啟的視窗」。現在,我們要深入一些,瞭解組成工作台的部份視覺元件。
在這項討論的其餘部份中,當我們使用工作台一詞時,我們是指工作台視窗 (IWorkbenchWindow)。 工作台視窗是工作台中最上層的視窗。 它是功能表列、工具列、狀態行、捷徑列及頁面所在的頁框。 您通常不需要進行工作台視窗的程式設計。 只要知道它在那裡就行了。
附註:您可以利用視景 -> 開啟來開啟多個工作台視窗。依預設,會在相同工作台視窗中開啟新的視景。 可以使用其它選項(請參閱工作台喜好設定頁面,以取得詳細資料)。每個工作台視窗都是一個自足的編輯器和檢視畫面的世界,我們只要將焦點放在單一工作台視窗就行了。
從使用者的角度來看,工作台含有檢視畫面和編輯器。另外還有少數其它類別,用來實作工作台視窗。
在工作台視窗中,您會找到一或個依次含有各部份的頁面 (IWorkbenchPage)。頁面是各部份之分組的實作機制。 您通常不需要進行這個頁面的程式設計,但您會在程式設計和除錯的上下文中見到它。
附註: 頁面用在視景的實作中。 它們容許將工作台各部份放在外部儲存器中,而不必考量視景是在相同工作台或新工作台視窗中開啟的。
檢視畫面和編輯器是我們略過實作細節而進入某些一般外掛程式設計之處。 當您新增視覺化元件到工作台時,您必須決定要實作檢視畫面或編輯器。 您要如何決定呢?
不論任任何一種情況,您都要根據一般生命週期來建置您的檢視畫面或編輯器。
您要實作 createPartControl 方法來建立代表視覺化元件的 SWT 小組件。您必須判斷要使用哪些小組件以及配置煩示檢視畫面或編輯器所需要的任何相關的 UI 資源。
當您的檢視畫面或編輯器得到焦點時,您會收到一項 setFocus 通知,讓您能夠將焦點設為正確的小組件。
當關閉檢視畫面或編輯器時,您會收到一則已刪除的訊息,指出已關閉檢視畫面或編輯器。這時 createPartControl 中所配置的控制項已自動刪除,但您必須刪除任何在建立控制項或回應小組件事件時所配置的任何圖形資源(如游標、圖示或字型)。
在這整個生命週期中,會從項目包含其中的工作台頁面發動事件,將檢視畫面和編輯器的開啟、啟動、取消啟動和關閉通知給有興趣的各方。
似乎很簡單?可能是。 這就是工作台檢視畫面和編輯器的美麗之處。 它們只是小組件保留區,可以視需要而很簡單或很複雜。 我們先前在建置 Hello World 檢視畫面時,見到比較簡單的檢視畫面。 現在,我們又進一步說明了正在進行的動作。
package org.eclipse.examples.helloworld;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.SWT;
import org.eclipse.ui.part.ViewPart;
public class HelloWorldView extends ViewPart {
Label label;
public HelloWorldView() {
}
public void createPartControl(Composite parent) {
label = new Label(parent, SWT.WRAP);
label.setText("Hello World");
}
public void setFocus() {
// 將焦點設在我的小組件。對標籤而言,
// 這沒有什麼意義,但對於較複雜的小組件集而言,
// 您就要決定將焦點放在哪個小組件上。
}
}
請注意,我們不需要實作 dispose() 方法,因為我們沒有執行任何動作,只是在 createPartControl(parent) 方法中建立標籤而已。 如果我們已配置過任何 UI 資源,如影像或字型,就會在這裡刪除它們。 由於我們繼承了 ViewPart 類別,我們也繼承了 dispose() 的「不執行任何動作」的實作。