| Hi everyone. Please I need your help. I've created a CellBrowser with UiBinder that I populate from a database. The problem is that I can't display it using the InitWidget method. But if I attach it directely to the RootPanel (using the instruction: RootPanel.get().add(cellBrowser);), it gets displayed, but over the other coponents that are attached to the composite (it becomes a real mess :/ ). I've put it in a HTMLPanel but it doesn't work. How can I attach it to the composite and get it displayed with the other widgets? (I've tried other panels, but it didn't work :/ ). Here's my code:
The UiBinder file: <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:c='urn:import:com.google.gwt.user.cellview.client'> <ui:style> #errors { color: red; }
#success { color: green; }
.arrondie { border: 1px solid black; -moz-border-radius: 7px; -webkit-border-radius: 7px; border-radius: 7px; background-color: #FFFFCC; } </ui:style>
<g:HorizontalPanel> <g:HTMLPanel> <table align="center" id="arrondie"> <tr> <td colspan="3" align="center"> <div id="errors" align="center"></div> <br /> <div id="success" align="center"></div> </td> </tr> <tr> <td> <g:Label text="Unit's family:" /> </td> <td colspan="2"> <g:TextBox width="15em" ui:field="familyName" /> </td> </tr> <tr> <td> <g:Label text="Unit:" /> </td> <td> <g:TextBox width="15em" ui:field="unitName" /> </td> <td> <g:Button ui:field="addUnit" text="Add unit" /> </td> </tr> <tr> <td colspan="3" align="center"> <g:Button ui:field="submit" text="Submit" /> </td> </tr> </table> </g:HTMLPanel>
<g:HTMLPanel> <c:CellBrowser defaultColumnWidth='300' ui:field='cellBrowser' /> </g:HTMLPanel> </g:HorizontalPanel> </ui:UiBinder>
The view: public class UniteViewImpl extends Composite implements UniteView {
private Presenter presenter; private static UniteViewImplUiBinder uiBinder = GWT.create(UniteViewImplUiBinder.class); private ListDataProvider<FamilleUniteProxy> dataProvider;
interface UniteViewImplUiBinder extends UiBinder<Widget, UniteViewImpl> { }
@SuppressWarnings("deprecation") public UniteViewImpl() { dataProvider = new ListDataProvider<FamilleUniteProxy>(new ArrayList<FamilleUniteProxy>()); TreeViewModel model = new CustomTreeModel(dataProvider); cellBrowser = new CellBrowser(model, null); cellBrowser.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED); cellBrowser.setHeight("200"); cellBrowser.setWidth("630"); RootPanel.get().add(cellBrowser); // If I delete this line, the cellBrowser is not displayed initWidget(uiBinder.createAndBindUi(this)); }
@UiField TextBox familyName;
@UiField TextBox unitName;
@UiField Button addUnit;
@UiField Button submit;
@UiField(provided = true) CellBrowser cellBrowser;
public UniteViewImpl(String firstName) { initWidget(uiBinder.createAndBindUi(this)); }
@Override public void setPresenter(Presenter presenter) { this.presenter = presenter; }
public void updateProvider(List<FamilleUniteProxy> familles) { dataProvider.setList(familles); dataProvider.refresh(); }
@UiFactory public CellBrowser getCellBrowser() { return cellBrowser; } }
The TreeViewModel class: class CustomTreeModel implements TreeViewModel {
private ListDataProvider<FamilleUniteProxy> dataProvider ;
public CustomTreeModel(ListDataProvider<FamilleUniteProxy> dataProvider) { this.dataProvider = dataProvider; }
public <T> NodeInfo<?> getNodeInfo(T value) { if (value == null) { Cell<FamilleUniteProxy> cell = new AbstractCell<FamilleUniteProxy>() {
@Override public void render(Context context, FamilleUniteProxy value, SafeHtmlBuilder sb) { sb.appendEscaped(value.getIntituleFamilleUnite()); } }; return new DefaultNodeInfo<FamilleUniteProxy>(dataProvider, cell);
} else if (value instanceof FamilleUniteProxy) { ListDataProvider<UniteProxy> dataProvider = new ListDataProvider<UniteProxy>( ((FamilleUniteProxy) value).getUnites()); Cell<UniteProxy> cell = new AbstractCell<UniteProxy>() {
@Override public void render(Context context, UniteProxy value, SafeHtmlBuilder sb) { if (value != null) { sb.appendEscaped(value.getIntituleUnite()); } } }; return new DefaultNodeInfo<UniteProxy>(dataProvider, cell); }
return null; }
public boolean isLeaf(Object value) { if (value instanceof UniteProxy) { return true; }
return false; } }
I hope it's clear and thank you very much. |
--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to
google-web-toolkit@googlegroups.com.
Visit this group at
http://groups.google.com/group/google-web-toolkit.
For more options, visit
https://groups.google.com/d/optout.
No comments:
Post a Comment