[OpenAjaxIDE] Example of how Adobe is using the Widget Meta Data ...

Jon Ferraiolo jferrai at us.ibm.com
Thu Aug 21 13:56:48 PDT 2008

Lori Hylan-Cho <lorihc at aptana.com> wrote on 08/21/2008 01:00:14 PM:

> Hi Jon
> Either I'm not understanding you, or you're not understanding me. :
> -) All of the markup in my example would have been in the metadata
> file anyway; the only thing I added was <footag> (i.e., a single
> tag) to group some properties together.

OK. If we want to allow multiple groups of properties, then we could allow
multiple <properties> elements, each with their own name, but I hope we can
avoid that.

> I *know* I'm not understanding your suggestion about the property
> bag and the widget's JavaScript. The Dreamweaver scenario is that
> the Dw user is given an opportunity to set properties for the widget
> *at insertion, aka authoring, time* (and, ideally, after insertion
> via a property inspector, but that's a bit hampered by the re-
> editing issue Kin brought up). The widget's runtime JavaScript never
> comes into play.

Yes, understood.

> Dreamweaver is just dropping the contents of the <content>,
> <javascript> and <require> tags into the user's page after first
> making the @@ and %% subtitutions. If the contents of a <javascript>
> tag contain a constructor that happens to take an options object as
> an argument, how is the IDE to know which widget properties belong
> in that options object?

There were 3 parts to my email. One of them said that there would be a
preprocessor mechanism which would receive the content of the <content> and
be able to munge it in arbitrary ways. The way the preprocessor would work
would be that the <preprocessor> element would contain JavaScript which was
the logic that did the munging. For IDEs, I was assuming this JavaScript
execution would happen at design time before the final HTML was generated.
But that's not the focus on this email.

> Are you suggesting that instead of actually passing that options
> object as a constructor argument, we should be adding propertyvalue
> = this.setPropertyValue(propertyname, value) calls to the
> <javascript> that's specified in the metadata? How would the IDE
> know to do this? Would it be expected that all properties be set
> this way, whether they're specified in the constructor or not?

I'm saying that the widget writer would include the following JavaScript
within the widget's metadata (or in referenced JavaScript files):

function foo.bar(id,wrapper) { // constructor for foo.bar class (widget's
      this.prop1 = this.getPropertyValue('prop1');
      this.prop2 = this.getPropertyValue('prop2');

The alternate approach would involve passing the property bag to the

function foo.bar(id,wrapper,propbag) { // constructor for foo.bar class
(widget's jsClass)
      this.prop1 = propbag['prop1'];
      this.prop2 = propbag['prop2'];

which doesn't not seem to be a big win for the propbag argument. Also, we
have discovered that there are other things that a widget might want to pay
attention to when used within a mashup, such as resize events or view
change events.

I am assuming that the IDE (and mashup tool) would insert appropriate
JavaScript into the generated HTML such that there was a getPropertyValue()
method on the widget's instance object. (Although I'll admit I'm not sure
at this point exactly what APIs go on the widget wrapper object versus the
widget object.)


> Lori
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://openajax.org/pipermail/ide/attachments/20080821/9cf2e0ed/attachment.html 

More information about the IDE mailing list