Friday, November 5, 2010

Designing Simplicity into Smallworld

At the Smallworld America's Users Conference this September in Baltimore, I heard a comment from an attendee that has stuck with me... "Smallworld needs to innovate simplicity into its product". Clearly there are many ways to accomplish this, but I thought I would share one area where I have been able to add some simplicity. I would very much like to hear from others about how they have designed simplicity into Smallworld applications or where they would like to see a simpler design.


scabious said...

Do these viewport appear on the map in the same way as any other viewport?
What determines how zoomed in the view in the new viewport is? Does it use the same display style?
The shading used to lift the viewport up from the parent viewport, does this appear on the final print?

Alfred Sawatzky said...

1. Yes, they are of class viewport_layout. I did not have to create any new classes.
2. I have used a hard-coded zoom factor of 3. I haven't given it much thought about how to easily make this configurable? Maybe a popup dialog that prompts the user for a zoom factor?
3. Yes, it uses the same display style. When I create the "zoom" viewport, I temporarily make it a child viewport of the containing viewport. When you make this parent/child association, all the properties from the parent viewport are assigned to the "zoom" viewport. Then I automagikally disassociate the "zoom" viewport from the parent and all the properties still remain on the "zoom" viewport.
4. The shading is determined by a property on the viewport_layout. It should appear on the final print.

I did not create any new classes for this functionality. I simply automated how some of the core properties (centre, world, shading, etc.) are populated based on the context of where the user placed the new viewport layout element.

Unknown said...

G'day Alfred,

That is a fantastic modification to the Layout tool. Very innovative.

Obviously there was magik code at play, was it difficult to implement?

Alfred Sawatzky said...


I have uploaded the code to mclib. You can read about it here: