- From: Olav Junker Kjær <olav@olav.dk>
- Date: Tue, 23 Nov 2004 14:01:39 +0100
I thought a little bit more about custom widgets. Two audiences are involved. People writing custom widgets, and people using custom widgets developed by others. The first group have at least some experience with javascript. The last group might not understand javascript at all, but may have used some cut-and-paste scripts. I should be as easy as possible to use a custom widget (developed by someone else) on a WF2, preferable it should be done without any javascript. Using a color picker in a form should be as easy as 1) include <script src="customcolorpicker.js"></script> in the header 2) writing: <input type="text" widget="colorpicker"> in the form. On the other hand, in a platform specific environment, is should be just as easy to use some advanced extension mechanism: <input type="text" widget="colorpicker1"> <cyberwidgets:colorpicker id=colorpicker1> </cyberwidgets:colorpicker> The widget probably need to execute some code at initialization time, to generate its initial html representation. If the widget is implemented as a xbl or something like this, the widget element can handle this on its own. However, if the widget is implemented in a javascript file, some initialization method must be called from the WF2 field. I imagine something like: a field has a widget attribute which is either the ID of an element or the name of a globally defined javascript function. Or it could be a javascript expression which evaluates to a function or object/element reference. If the property is sat through the DOM, the value might be a reference rather than a name or expression. When the field is initialized, the widget attribute is checked. If it is present, the default widget is hidden and the value is evaluated. - If it evaluates to a javascript function, the function is executed with the field as parameter. - If it evaluates to an element (or javascript object), and that object has a method 'initializeWidget()', that method it is called with the field as parameter. The function (which might be a constructor) or method initializes the widget, generates additional HTML in the document, and keeps a reference to the underlying field for tracking and updating its value. This is a bit fuzzy I know, but I think the important part is that it should be very easy for casual HTML authors to connect a 3rd party widget to a WF2 field. The API for custom widget should be simple, but not at the expense of making it more complicated to integrate the widget in a form. Olav Junker Kj?r
Received on Tuesday, 23 November 2004 05:01:39 UTC