SharpDevelop IDE 系列文章,會在這篇文章之後告一段落,這個章節,來聊聊 SharpDevelop 的幾個 API ,方便日後要研究時,可以從這邊著手去探索。
SD / WorkbenchSingleton 的 Workbench
在 SharpDevelop 中,你可以直接使用 SD.xxx 或是 WorkbencchSingleton.xxx 得到 AutoComplete 建議:
現在,我們要考慮底下兩個程式碼:
WorkbenchSingleton.Workbench.ShowView(new Class1()); SD.Workbench.ShowView(new Class1());
這兩個程式碼,是做完全一模一樣的事情,那他們差在哪? 我該用哪一個去做?
這時候,把滑鼠放上去 WorkbenchSingleton ,它會告訴你:
WorkbenchSingleton only consists of obsolete members. Use SD.Workbench and SD.MainThread instead.
很明顯的,它告訴你這是過時的變數成員,它已經把取得 Workbench 的方式,變成 Static 放在 SD 中了。
Workbench 可以想像成 IDE 場域中的所有內容,會透過 Workbench 這個人去處理。
用 Workbench 取得場域上的那個東西
取得什麼東西,是由 Type 決定的,假設我想取得某一個 Pad 視窗的 Class ,我就要用那個 Pad 實作的 Type 讓 Workbench 幫你找出來,如果找不到,就會給你空的值,讓你自己去新增,請看以下程式碼:
PadDescriptor pad = SD.Workbench.GetPad(typeof(CustomPropertiesPad)); //取得 IDE 場上活動的 CustomPropertiesPad 型別 if (pad == null) //如果找不到 { pad.CreatePad(); //就直接新增一個 Pad } pad.BringPadToFront(); //然後把它呼叫到最前面
或者是直接告訴我,目前此人的 Pad 是誰:
SD.Workbench.GetType()
Pad 這個概念就是每一個在場域上拆分的細節,包含 Avalon Dock (如圖) 這些可以分出來的視窗,其實都是由不同的 Class 構成的, Workbench 可以取得這些 class runtime 中的 instance ,然後對他們執行某些方法,或是傳送參數:
除了 Workbench 還有什麼?
MessageService (可以顯示文字對話框):
SD.MessageService.AskQuestion("Are you OKay?"); SD.MessageService.ShowMessage("WOW Hello");
OutputPad (在 Output Pad 中顯示編譯訊息之類的):
SD.OutputPad.BuildCategory.AppendText(new RichText("test"));
AddInTree (取的外掛樹,也可以嘗試對外部外掛對接處理):
SD.AddInTree.xxx
那麼,這一系列的研究文章大概就告一段落了。
2020.07 月.
沒有留言:
張貼留言