MVPでCellTableを使用しました。
UI:
<g:HTMLPanel>
<g:ScrollPanel>
<p1:CellTable ui:field="cellTable" width="100%" styleName="style.cellTable" height="100%" />
</g:ScrollPanel>
</g:HTMLPanel>
ビュー インターフェイス:
public interface SomeCellListView extends IsWidget {
void setPresenter(Presenter listener);
// Method to set the CellTable data
void setCellList(ArrayList<ObjectDTO> list);
public interface Presenter {
void goTo(Place place);
void doSomething(int id);
}
}
ビューの実装:
public class SomeCellListViewImpl extends Composite implements SomeCellListView {
... all Ui Binder stuff here
@UiField(provided = true)
CellTable<ObjectDTO>cellTable = new CellTable<ObjectDTO>();
SomeCellListViewImpl(){
TextColumn<ObjectDTO> someColumn= new TextColumn<ObjectDTO>(){
@Override
public String getValue(ObjectDTO o) {
return o.getSomeFieldValue();
}
};
cellTable.addColumn(someColumn, "column1");
... add other columns here
}
// This method is called from Presenter to set CellTable data
public void setCellList(ArrayList<ObjectDTO> list) {
cellTable.setRowCount(list.size(), true);
cellTable.setRowData(0, list);
}
}
アクティビティ (またはプレゼンター):
// コンストラクターでビューとサービスを設定 (ClientFactory からビューを取得)
public void start(AcceptsOneWidget containerWidget, EventBus eventBus) {
// Make RPC call
this.service
.getCellList(new AsyncCallback<ArrayList<ObjectDTO>>(){
@Override
public void onFailure(Throwable caught) {
view.setError("Error fetching details");
}
@Override
public void onSuccess(ArArrayList<ObjectDTO> result) {
view.setCelllist(result);
}
});
view.setPresenter(this);
containerWidget.setWidget(view.asWidget());
}
ここで、ビューはすでに ClientFactory によって作成されています。ビューには、CellTable のレイアウトのみが含まれています。ビューの作成時にデータがロードされません。アクティビティ (別名プレゼンター) が開始されると、「開始」メソッドが呼び出されます。ここでは、Cell データを取得する RPC を作成し、ビューでメソッドを呼び出してデータを設定します。
私はCellTreeを使用していません。しかし、あなたはセルウィジェットについて一般的に尋ねました。したがって、これを共有することを考えました。お役に立てれば。