Я хотел бы сделать несколько действительно простых оверлейных классов в GWT, чтобы обернуть некоторые элементы SVG. Я бы хотел нарисовать прямоугольник, вот как я делаю это в JavaScript:
var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg.setAttribute('width', '100%');
svg.setAttribute('height', '100%');
document.body.appendChild(svg);
var rect = document.createElementNS('http://www.w3.org/2000/svg','rect');
rect.setAttribute("width","300");
rect.setAttribute("height","100");
svg.appendChild(rect);
и теперь у меня возникают проблемы с переводом этого в GWT. Я надеялся, что смогу сделать очень тонкий оверлей со всеми этими вызовами, что-то вроде этого:
public class SVGPanel extends JavaScriptObject {
protected SVGPanel() {}
public static native SVGPanel create(String width, String height) /*-{
var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg.setAttribute('width', width);
svg.setAttribute('height', height);
return svg;
}-*/;
}
public MyProject implements EntryPoint {
public void onModuleLoad() {
SVGPanel panel = SVGPanel.create("100%", "100%");
Document.get().getBody().appendChild(panel);
}
}
да, но я не понимаю, как мы можем перейти от представления javascript SVG к классам GWT java. Во-первых, класс SVGPanel расширяет JavaScriptObject, но я не могу просто добавить его в класс тела документа, поскольку он ожидает тип Element. Если бы кто-то мог просто указать правильный путь для того, чтобы сделать этот мост, я должен был бы начать после этого.
Кроме того, я не уверен, является ли это оптимальным способом для включения некоторых простых классов SVG. Должен ли я моделировать их, используя классы DOM, вместо того, чтобы пытаться использовать JSNI?
Спасибо