Ok this is what I came up with:
public class SVGRect extends Node
{
protected SVGRect() {}
public static final native SVGRect create() /*-{
var rect = document.createElementNS('http://www.w3.org/2000/
svg', 'rect');
return rect;
}-*/;
}
public class SVGPanel extends Node
{
protected SVGRect() {}
public 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;
}-*/;
}
// main module
public void onModuleLoad() {
SVGPanel panel = SVGPanel.create("100%", "100%");
Document doc = Document.get();
doc.getBody().appendChild(panel);
SVGRect rect = SVGRect.create();
rect.setWidth(100);
.... create / manipulate shapes etc ...
panel.appendChild(rect);
}
I wanted to use overlays since they're supposed to introduce zero
overhead. If I derive from Widget (like gwt-svg does), then don't we
have to pay for the extra member variables used in the Widget class?
I'm worried that if I want to create a large number of rectangles for
example, then each will have extra data associated with it. The Widget
implementation looks like this at the start:
public abstract class Widget {
int style, state;
Display display;
EventTable eventTable;
Object data;
so I'm just imaging each rectangle I create in my svg having all that
extra data associated with it.
@DaveC's comment:
"Your create method is returning an Element - not an SVGPanel..."
Yeah I'm not sure if this is right - runs ok (programming by chance) -
should I really return a Node, then cast it to my SVGRect type? Since
it's just an overlay, I thought it would be ok.
I may be completely off on all this, any more thoughts would be great.
I've got dragging svg shapes built in now and all that fun stuff, I'd
like to make this library available when complete, svg is really cool.
I also hooked it up to SVG Web, so that if on Internet Explorer, it'll
use that library to emulate SVG using Flash,
Thanks
On Jan 26, 3:19 am, Brett Morgan <[email protected]> wrote:
> It might be worth checking out the gwt svg implementation in gwt-widget
> library:
>
> http://gwt-widget.sourceforge.net/docs/xref/org/gwtwidgets/client/svg...
>
>
>
>
>
> On Tue, Jan 26, 2010 at 6:22 AM, markww <[email protected]> wrote:
> > Hi,
>
> > I'd like to make some really simple overlay classes in GWT to wrap
> > some SVG stuff. I'd basically like to get a rectangle drawn, this is
> > how I do it in 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);
>
> > and now I'm having trouble translating that to GWT. I was hoping I
> > could do a really thin overlay around all those calls, something like
> > this:
>
> > 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);
> > }
> > }
>
> > yeah but I do not have a grasp on how we can jump from the javascript
> > representation of the SVG stuff to GWT java classes. For one, the
> > SVGPanel class extends JavaScriptObject, but I can't simply add it to
> > the Document body class because it's expecting an Element type. If
> > someone could just point out the right way to do that bridge I should
> > be able to get going after that.
>
> > Also, I'm not sure if this the optimal way to incorporate some simple
> > SVG classes, should I be modeling them using the DOM classes instead
> > of trying to use JSNI ?
>
> > Thanks
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Google Web Toolkit" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<google-web-toolkit%2Bunsubs
> > [email protected]>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/google-web-toolkit?hl=en.
>
> --
> Brett Morganhttp://domesticmouse.livejournal.com/
--
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
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.