Great!
Didn't know that there could be several arguments in render method and all 
of them are matching parameters with exact the same name in uiBinder file.
Actually found in documentation: 
https://developers.google.com/web-toolkit/doc/latest/DevGuideUiBinder#Rendering_HTML_for_Cells
 (*UiBinder uses the names of the parameters in MyUiRenderer.render() to 
match the fields defined in <ui:with>** tags. Use as many as needed to 
render your data.*) 

So finally, my UiBinder file is:

<!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">
<ui:with field='contact' type='com.billmanager.client.model.ClientContact' 
/>
<ui:with field='image' type='com.google.gwt.safehtml.shared.SafeHtml'/>
<div>
<span>
<ui:text from='{contact.getDisplayName}' />
</span>
<span>
<ui:text from='{contact.getDisplayEmail}' />
</span>
<span>
<ui:safehtml from='{image}' />
</span>
</div>
</ui:UiBinder>  


Java file:

public class ContactCell extends AbstractCell<ClientContact> {

private static ImageResourceRenderer imageRenderer = new 
ImageResourceRenderer();
 interface MyUiRenderer extends UiRenderer {
void render(SafeHtmlBuilder sb, ClientContact contact, SafeHtml image);
}
  
private static MyUiRenderer renderer = GWT.create(MyUiRenderer.class);

@Override
public void render(com.google.gwt.cell.client.Cell.Context context, 
ClientContact value, SafeHtmlBuilder sb) {
renderer.render(sb, value, 
imageRenderer.render(Resources.INSTANCE.delete()));
}
}


My image safeHtml is second argument to be passed to uiBinder.

Thank you for help. Will be trying to handle events now.

On Tuesday, November 6, 2012 10:55:52 AM UTC+2, Thomas Broyer wrote:
>
>
>
> On Monday, November 5, 2012 10:38:09 PM UTC+1, Evgeniy Bogdanov wrote:
>>
>> On Monday, November 5, 2012 7:14:15 PM UTC+2, Thomas Broyer wrote:
>>
>>>
>>>
>>> On Monday, November 5, 2012 4:23:56 PM UTC+1, Evgeniy Bogdanov wrote:
>>>>
>>>> Hi,
>>>> Is there an any example - how to add image into Cell with UiBinder?
>>>> There is great example in showcase (
>>>> http://gwt.google.com/samples/Showcase/Showcase.html#!CwCellList) but 
>>>> without uiBinder.
>>>> 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">
>>>> <ui:with field='contact' 
>>>> type='com.billmanager.client.model.ClientContact'/>
>>>> <ui:with field='res' type='com.billmanager.client.common.Resources'/>
>>>>   <g:HTMLPanel>
>>>>    <span><ui:text from='{contact.getDisplayName}'/></span>
>>>>    <span><ui:text from='{contact.getDisplayEmail}'/></span>
>>>>    <g:Image resource='{res.delete}'/>
>>>>   </g:HTMLPanel>
>>>> </ui:UiBinder> 
>>>>
>>>>  
>>>> Do not displays image.
>>>>
>>>> My java class is simple:
>>>>
>>>>  public class ContactCell extends AbstractCell<ClientContact> {
>>>>
>>>> interface MyUiRenderer extends UiRenderer {
>>>> void render(SafeHtmlBuilder sb, ClientContact contact);
>>>> }
>>>>  
>>>> private static MyUiRenderer renderer = GWT.create(MyUiRenderer.class);
>>>>
>>>> @Override
>>>> public void render(com.google.gwt.cell.client.Cell.Context context, 
>>>> ClientContact value, SafeHtmlBuilder sb) {
>>>> renderer.render(sb, value);
>>>> }
>>>>
>>>> }
>>>>
>>>>
>>>> What I thought is to get rendered element (empty) and add image as 
>>>> html, but I don't thing it is the right way. 
>>>>
>>>>
>>> You cannot use a widget (<g:HTMLPanel>, <g:Image>) in a Cell. Replace 
>>> those with HTML elements (<div> for instance); and for displaying an 
>>> ImageResource in a Cell, use an ImageResourceRenderer to generate the 
>>> SafeHtml that you can then pass as argument to the UiRenderer and use in 
>>> the template with <ui:safehtml> (similar to <ui:text>).
>>>
>>
>> Yah, that works.
>> finally I was able to display image in Cell, but I don't think it is 
>> optimal way.
>> So 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">
>> <ui:with field='contact' 
>> type='com.billmanager.client.model.ClientContact' />
>> <div>
>> <span>
>> <ui:text from='{contact.getDisplayName}' />
>> </span>
>> <span>
>> <ui:text from='{contact.getDisplayEmail}' />
>> </span>
>> <span>
>> <ui:safehtml from='{contact.getDeleteBtn}' />
>> </span>
>> </div>
>> </ui:UiBinder>  
>>
>>
>> Corresponding Java file:
>>
>>  public class ContactCell extends AbstractCell<ClientContact> {
>> private static ImageResourceRenderer imageRenderer = new 
>> ImageResourceRenderer();
>>  interface MyUiRenderer extends UiRenderer {
>> void render(SafeHtmlBuilder sb, ClientContact contact);
>> }
>>   
>> private static MyUiRenderer renderer = GWT.create(MyUiRenderer.class);
>>
>> @Override
>> public void render(com.google.gwt.cell.client.Cell.Context context, 
>> ClientContact value, SafeHtmlBuilder sb) {
>> value.setDeleteBtn(imageRenderer.render(Resources.INSTANCE.delete()));
>> renderer.render(sb, value);
>> }
>>
>> }
>>
>>
>> The problme is I have to add image into ClientContact model. I didn't 
>> find other way to pass several arguments into UiRenderer. Any ideas about 
>> that?
>>
>
> Did you try defining your UiRenderer's render() method with one more 
> argument?
>
> interface MyUiRenderer extends UiRenderer {
>   void render(SafeHtmlBuilder sb, ClientContact contact, SafeHtml 
> imageResource);
> }
>
> And of course two <ui:with> in the template.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-web-toolkit/-/PK1Ar1hR7l8J.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to