Ok, I'll try to highlight the major things for upgrading widgets ...

Things that have changed in Widget sub-classes:

* remove inheritance from Fusion.Tool.ButtonBase and add uiClass: Jx.Button
* remove inheritance from Fusion.Tool.MenuBase and add uiClass: Jx.Menu
* add setUiObject method for widgets that need to add stuff to a menu (see ViewOptions)
* change initialize to initializeWidget
* add isExclusive: true for widgets that are 'modal' on the map
* change execute method to activate

The key change that you need to understand, Mark, is the one about setUiObject. Due to an architectural change in how widgets are constructed, widgets typically do not have a domObj any more. What they do have is a uiObj which is some representation of the widget in the user interface. For reasons that escape me right now, the uiObj is not available when the widget is created so I added a setUiObject method to handle the association of a uiObj with a widget. The particular uiObj that is created for any given widget is controlled by its uiClass member (which is null by default).

When a new widget is created, if it has a uiClass set then the framework creates a new instance of the uiClass and gives it to the widget via the setUiObject. If no uiClass is specified then element from the dom with the id that causes the widget to be created is passed (i.e. a reference to a <div>).

The base Widget class provides a default implementation of setUiObject that does the grunt work of making buttons, menus etc work properly, especially if the widget is considered modal on the map. For widgets that are not using a uiClass (which would be your case), you will need to add a setUiObject method to your widget to handle inserting your ui into what was previously the domObj.

I believe the code in initializeWidget that tests if domObj is valid is never used now and it is probably there by mistake.

You should be able to copy the setUiObject method from EditableScale into your widget and replace the appendChild calls to do the appropriate thing.

Hope this helps

Paul

On 19-Feb-09, at 11:55 AM, Mark Pendergraft wrote:

I have a widget which I’m trying to port to the 2.0 beta and in the past I used “this.domObj.appendChild()” to add an input box to the widget, but now that code breaks saying that the domObj is null. I noticed in the EditableScale widget that an if (this.domObj) statement is used to see if the domObj is valid. My question is: Do I need to wait for a certain event to happen before creating this widget? Right now my code never adds the input box, but the EditableScale code does.

_______________________________________________
mapguide-users mailing list
mapguide-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapguide-users

_______________________________________________
mapguide-users mailing list
mapguide-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapguide-users

Reply via email to