[Oberon] Gadgets programming

Jacques Eloff eloff at cs.sun.ac.za
Mon Oct 27 15:39:00 CET 2003


I'm trying to use gadgets as output for an interactive display. Basically, I 
want to place Iconizers on a panel and link certain Iconizers with Line 
objects to create a chart.

What I would like to know is the following:
 - Should I use the slink field to link the Iconizers and Lines
 - Is slink also used to link each object individually to the panel
 - Should a ConsumeMsg using the 'drop' type be specified to make the
   gadgets visible?
 - What happens if I want to link multiple lines from one Iconizer to 
different Iconizers. For example a graph with 3 vertices (v1, v2, v3) and two
edges (v1,v2) and (v1, v3).

I've looked at the Oberon companion, specifically Example16 on page 217 and it 
seems close to what I want to do. Example16 uses Gadgets.ThisFrame to locate 
the coordinates of the * marker, but I will be working directly with a Panel. 
Should I still use ThisFrame or can I use the Attributes module to determine 
the panel's coordinates and size?

As I understand things I basically need to do the following:
1) Locate the my Panel using Gadgets.FindObj
2) Use the Gadgets.CreateObject to create my Iconizers and Lines
3) Link everything (the question is what is 'everything')
4) Broadcast a ConsumeMsg or perhaps multiple consume messages after setting 
the coordinates of the objects, etc.
5) Do I need to call Gadgets.Update for the panel or would the ConsumeMsg
take care of redisplaying everything

Does this sound right?

Jacques Eloff
Department of Computer Science
University of Stellenbosch

More information about the Oberon mailing list