Why not pass the name of a file as an argument instead of the entire string? Or maybe you can read from standard in?
On Nov 22, 2010, at 7:59 AM, Jacques Granduel wrote: > Thanks for your remark and I had indeed seen I could use "Pivot scripting", > but I want to dynamically shape my view from the outside, according to some > input. > > What could be the best way to send this object (as a String or > ByteArrayInputStream ?) to BXMLSerializer as the actual API seems to be > > java.lang.Object readObject(java.net.URL) > java.lang.Object readObject(java.io.InputStream) > java.lang.Object readObject(java.lang.Class,java.lang.String,boolean) > java.lang.Object readObject(java.lang.Class,java.lang.String) > java.lang.Object readObject(java.net.URL,org.apache.pivot.util.Resources). > > I modified the ScriptApplication.java for allowing path/to/file.bxml to be > accepted beside classpath resource using File(...).toURI().toURL(). > > As for the String, I wanted the equivalent, say (example in JS/Rhino) > JS>var win = <Window title="Hello BXML!" maximized="true" > xmlns:bxml="http://pivot.apache.org/bxml" > xmlns="org.apache.pivot.wtk"> > <Label text="Hello BXML!" > styles="{font:'Arial bold 24', color:'#ff0000', > horizontalAlignment:'center', verticalAlignment:'center'}"/> > </Window> > JS>ScriptApplication.main(["--src=" + win]); > The latest crashed because DesktopApplicationContext.java splits args this > way: > if (arg.startsWith("--")) { > String[] property = arg.split("="); > and my bxml snippet is full of "=" due to the attribute values! > So, as a quick workaround, I kept the first element of the property table, > and joined back the rest. > > ScriptApplication.java: > String src = properties.get(SRC_KEY); > InputStream ins = new ByteArrayInputStream(src.getBytes()); > BXMLSerializer bxmlSerializer = new BXMLSerializer(); > window = (Window)bxmlSerializer.readObject(ins); > window.open(display); > > This way it seems to work nicely. > > So... may I suggest adding loading bxml from File and String also? > > Thanks once again for your help, > jqg > > > 2010/11/22 Greg Brown <[email protected]> > > So my reasons for doing that kind of stuff, well, er, curiosity? learning > > and playing Pivot from a tiny environment, manipulating the bxml xml with > > E4X and dynamically injecting js code in the GUI ?... I have to learn how > > to directly pass a bxml String or E4X/XML object to ScriptApplication and > > to manipulate objects from the rhino shell, as it's doable in Swing. > > OK. Just in case you were not aware, BXML allows you to embed script code > directly within your markup, and will invoke the appropriate script engine as > needed. So don't necessarily need to launch Pivot from within Rhino to use > Rhino. > > G > >
