Tinderbox Forum

Map View and Mind Map like Presentation

Hi, I am using tinderbox often to analyze existing system landscapes in the starting phase of bigger IT projects. What I am looking for actually is an idea to represent the systems, applications running on these systems, changes on these systems and applications and their dependencies on a flat level like a mind map.

The collecting of information I will do in outline view because of the given hierarchy. But presenting the dependencies it would be easier to show all components on same level.

Only idea I have so far is to use agents to collect all notes and create a map view based on the agent.

So, my question is, if this would be the best approach or maybe someone here has a better idea or solved something similar before ?

Thanks four your support.

That is a good idea and a common practice. Something like this – the agent “Map Level” in the example finds descendedFrom("Notes");

Of course your own containers, and the agent, will be very sophisticated.

A map of an agent container (i.e., “Map Level” in the example), by default rearranges itself when the agent refreshes. See Re-Arrangeable Agent Maps. To control that use the $CleanupAction attribute, whose value you set to none for the agent.

Screenshot of Tinderbox (12-6-20, 5-00-34 AM)

It’s also possible to invert the process – have all the notes in a master container and use agents (each of which is mapped) to pick out sub-categories.

A hidden benefit of @PaulWalters’ solution is it also moves what may be a big map out of the root (highest (outline) level of the document). If not using an agent, I’d thus suggesting making big maps in a container and not just in the first (root) map as is presented when you start a new TBX.

If you want to see itrems linked in the map, don’t create links in the map but use the originals. The background rationale is getting into the weeds, but trust me, linking originals notes as opposed to aliases will make your map’s linking more persistent.

. I’m not trying to hide anything, but just avoiding getting-started overload. more on linking and aliases can be read about here.

1 Like

Good point @mwra

As a general matter – I always create this structure in new Tinderbox documents:

Root-level containers for:

  • Notes
  • Agents [for documents that use them]
  • Prototypes
  • Templates
  • Code [for documents that have code notes]

There’s nothing prescriptive about this – other than the advice to segregate “types” of content into dedicated containers, and keep one’s working data (the “notes”) out of the root.


Thanks @mwra, @PaulWalters for your insights. I will try it in next days following your suggestions, especially regarding cleanupaction attribute and linking of the originals !

One topic left is a way of kind of automatic layout generation using X,Y coordinates of the note dependent of the notes directly linked to. Any idea regarding this ? I expect I have to use X,Y attribute of the note and adding kind of fix distance to it?! Just want to avoid implementing a second layer of graph layout generation…


While auto layout sounds attractive – and the math is certainly doable – the problem is the math. Consider

  1. $Xpos and $Ypos for a note and its alias in an agent container are not the same – the maps can have different layouts. So the calculations would have to focus on the aliases {X,Y} in the example earlier in this post.
  2. As @mwra suggested, it’s best to consider links between original notes. Since there is no obviously discernible mapping between {X,Y} for originals and {X,Y} for aliases, whatever math takes into account links in the original would probably need some sort of intermediate numeric attributes to calculate the effect on map layout in the map made of aliases.
  3. I believe (without proof – just supposition) that auto-layout can be fragile because it has to take account of numerous exogenous factors: note dimensions, anchor points for links (not calculable), etc.

I don’t mean to scare you off from this – it is a very interesting puzzle. But, auto-layout might be more time consuming than just manually setting up the map you want.**

** Consider that auto-layout based on figure metadata is not common feature of many graphical applications. OmniGraffle might be an exception – and even there the effort to work out the math is not trivial.

Don’t overlook Tinderbox’s force-directed layout method, aka ‘dance’. See more here. It might fit your needs.

Before writing any code in this context, do ask yourself, is this a strict hierarchy? IOW, do all items have one, and only one parent. If not, I’d revisit the plan. It’s not impossible but a little harder than in the minds-eye, where everything looks cool and lays out perfectly.

If it is a strict hierarchy, why not view it in Outline or Chart views. Of not, and it all relationships (inlcuding parent/child outline nesting) are implemented with links, try https://www.acrobatfaq.com/atbref8/index/Windows/DocumentWindow/Viewpane/Hyperbolicview.html.

1 Like

Thanks Paul, these thoughts regarding complexity and effort were preventing me to start.

I will start with the manual approach and will proceed step by step. For me part of the Tinderbox approach and will try to use this as an possibility for more thinking about the dependencies.

In the end, I like Tinderbox because not everything is done automatically. This offers more freedom to me.

1 Like

Unfortunately it is only in the „Material“ world a fixed structure (System - applications - Feature). But business objects and business projects will not necessarily follow it.

Will for sure take a look on this! Thanks!


So ‘dance’ may work for the former and might save a lot of action code. :slight_smile:

Keep in mind Smart Adornments that can help with gathering notes, and other affordances of Map views that can help with understanding the map – subtitles, captions, colors, textures, badges, etc.

If whatever you come up with is shareable in any way – please post an image here so that others who are looking to do a similar task can see a concrete example.

1 Like

@PaulWalters, @mwra Lot of time passed by because lot of other projects to do. I followed your advice to arrange map view manually. Based on this manual arrangement, I have started to begin with the map view and to generate an outline view by using a predefined link type with an OnAdd action to remember source and destination of the link for later. After finishing the map, I duplicated the whole container to a new one and applied a stamp for redefining the $Container attribute of all notes. Based on a former hint by Mark in another forum post.

Example Tinderbox file is enclosed: Many thanks for your support !
MapOutlineViews.tbx (85.2 KB)

1 Like

This is an embarrassing question, but I’m dropping in here anyway.
What is this grouping function called that sticks two notes together in a box? And how do you turn it off or undo it? I have searched forum, help, etc, but can’t find it.

Screen Shot 2021-02-20 at 9.14.18 AM

These are called composites. The article explains how to break apart a composite. To disable them completely, see the subarticle to the aforementioned, on ‘Suppressing formation of composites’.

HTH :slight_smile:

Thank you as always Mark. I actually do remember now (that you’ve told me :wink: But couldn’t before.

No problem. Tinderbox has so many features, I to forget.

There are no ‘stupid’ questions. Only the ones we’re worried about asking :slight_smile:

This is why I like user forums—an audience of equals.


You are so generous Mark, thank you. One follow up. When I broke the composite the two notes still stuck together, not as composite but dragging one dragged the other. Was that because of a missing action I didn’t take?

1 Like

Hard to say. It is confusing, IMO that the when Cmd+dragging a note out of a composite the composite’s border keeps expanding and so there is no visual evidence that you have dragged the note far enough away to exit the composite.

Another way to break the composite is to select it and use Edit menu → Break Composite. Or set $NeverCompoite to true (ticked, in the UI listings).

Does that help?

Yes it does. I did use Break Composite from the menu, but maybe had to cmd-drag to actually take them out of composite space. There is no way to make $NevrerComposite universal to a document right? Assume would have to incorporate in prototype.

Sure there is! Set the default value of $NeverComposite to true.