Eclipse 3.2的What's new 正式推出了“The Eclipse Tabbed Properties View”,這個東西以前就是IBM的一個內部項目,最近由于WTP的緣故給開放了出來。有的時候不得不佩服IBM的創意和能力,人多就是力量大。3.2推出了很多新的Feature,都頗有亮點。不知道IBM為這些新的Feature投入了多少人力物力。
Eclipse Tabbed Properties View實際上是對傳統的PropertySheet的一個替換,在Eclipse3.2的new feature中,可以看到一個共同點,那就是界面變得花梢了,Eclipse Tabbed Properties View也是如此。Tab標簽和UI-Form的結合,界面顯得更加清爽。所有的Property都可以自定義編輯界面,重用性也得到了提高,另外還有完美的MVC架構。
實際上Eclipse Tabbed Properties View的代碼我并不會感到陌生,我手頭上的項目關于Property上的架構和它基本一致,都是Element,setInput,createContent,refresh這一套邏輯。不過這段邏輯不是我寫的,不知道是是誰從IBM抄來的,當時抄的是GEF的架構,說是為了保持架構的一致,實際上非常冗余,挖了無數的坑。現在這個Tabbed Properties View走的還是一樣的套路,由此可見IBM內部項目的架構應當非常一致。
Eclipse官方提供了一篇關于Tabbed Properties View的文章:
http://www.eclipse.org/articles/ Article-Tabbed-Properties/tabbed_properties_view.html
,里面的介紹還算詳細。我這兒只說一些它沒有提到的東西。
Tabbed Properties View 的Tab以及Section都定義在Plugin.xml中,這里包含了一個依賴關系,Section依賴于input object,而Tab依賴于Section,于是當我們選中一個element的時候,系統會判斷哪些Section的input object和這個element類型一致。這些Section將會被Property Page加載,每個Section都對應一個Tab,這個Tab會在Section創建之前先創建出來。當Section創建完畢之后,會進行setInput操作,將Model傳給Section,最后在refresh的時候,給Section賦值。
另外一點,一個Section可以對應多個input,這樣不同的input object可以采用同一個Section,提高了系統的可重用性。
不足的地方是Section的enablefor屬性過于簡單,對上下文支持不夠,只能把上下文寫在Section的邏輯里面了。?