com.sencha.gxt.widget.core.client.Composite
, 而不是 GWT 的 com.google.gwt.user.client.ui.Composite
@UiChild
。 例如 ContentPanel
有 addButton()
跟 addTool()
掛 @UiChild
,所以就可以這樣寫FooTabPanel
extends TabPanel
不明瞭為什麼這樣還是會去 call 到 TabPanel.add()
:add()
就沒問題......sinkEvents()
傳入 component 打算處理的 event 代碼com.google.gwt.user.client.Event
)onBrowserEvent()
(最好還是做 super.onBrowserEvent()
getElement().setTabIndex(0)
, 參考自 GXT 的 Menu
,原理不明... [遮臉]KeyNav
可以處理鍵盤輸入。 但也不按照 sinkEvents()
的流程走,寫法也是各種 WTF, 不要浪費時間用它 XDXTemplates
的 method 回傳內容一定是 SafeHtml
, @XTemplate
的靜態內容基本上不會作 HTML convert, 但是動態內容(大括號內的東西)就一定會作轉換。@XTemplate
中的語法是 {wtf:foo}
,wtf
是某個變數 or 某個變數的某個 property, foo
是 formatter 的名稱,後頭還可以帶參數(參數能不能抓參數的值還不確定)。 要作到這個功能,首先得要弄出一個 formatter 像這樣:XTemplates
要掛上 @FormatterFactories
像這樣:@FormatterFactory
來告訴 generator 要去哪裡找 formatter 的 method, 所以要給 class 跟 method。 method 的部份再透過 @FormatterFactoryMethod
來指定是哪個 method(method
)、 以及在 XTemplates
當中叫啥名字(name
)。