2012-05-21 3 views
2

Все в вопросе, как я могу создать пользовательскую ячейку с холстом на ней, используя CellTable в GWT?Как использовать холст в качестве ячейки виджета с таблицей с GWT?

Я ищу способ преобразования холста в html, чтобы добавить его в параметр SafeHtmlBuilder метода визуализации, но без успеха. Вот интересный отрывок из пользовательской ячейки:

public void render(Context context, String value, SafeHtmlBuilder sb) { 

    Canvas c = Canvas.createIfSupported(); 

    // create a text into the canvas using the value parameter 
    // something like (this is not important) : 
    c.getContext2d().drawTheText(value); 

    // here is the problem, what kind of transformation may I do 
    // to use the canvas in this cell ? 
    SafeHtml safeValue = SafeHtmlUtils.fromString(c.?????); 
    sb.append(safeValue); 
} 

EDIT: здесь рабочий раствор, благодаря Томасу

sb.append(SafeHtmlUtils.fromTrustedString("<img src=\"" + canvas.toDataUrl() + "\" />")); 

Обратите внимание, что шаблон должен быть использован вместо того, чтобы использовать непосредственно кусок html-кода.

ответ

2

Я думаю, вам нужно будет использовать toDataURL() и построить элемент <img> для его отображения.

Обратите внимание, что вы можете повторно использовать один и тот же экземпляр Canvas между вызовами render; просто убедитесь, что вы очистили его перед повторным использованием.

+0

Хм, кажется странным, но я попробую. Спасибо –

+0

, который работает, спасибо большое –

+1

Если бы я был вами, я бы измерил выступления. Возможно, для вашего пользователя может быть лучше, если вы вместо этого создадите элемент-заполнитель (с идентификатором) и запланируете отложенную команду для заполнения заполнителя Canvas. Таким образом, остальная часть рендеринга «CellTable» не будет влиять на производительность холста. –