October 25, 2004
MarkBernstein.org
 

Teasing Apart HypertextView

The last evident roadblock between us and Tinderbox for Windows involves a large, old, and much-used class called HypertextView. It's the common ancestor of all sorts of windows: maps, views, outlines, treemaps, roadmaps, and all the rest.

One of the reasons these views are all so powerful is that HypertextView provides services they all can share. For example, you can link to notes in any view -- including the Find dialog -- because they're all HypertextViews.

Unfortunately, that also means HypertextView is big. It's got well over 100 public methods. More than seventy classes depend on it -- and that means every change to HypertextView means all the others need to be recompiled.

This is not aesthetic, but we could live with it until Windows. Unfortunately, windows in Windows don't work like Windows on the Macintosh, and HypertextView assumes, deep down, that its a Mac window.

That has to change. Carefully, because we don't want to break stuff, we're breaking chunks of functionality out of HypertextView and putting them in their own objects. It goes slowly, because every change means recompiling 70 classes.