title: Creating a Quartz Composer Style interface
body: <p>I'm wanting to add a Quartz Composer "patch editor" style interface element to my Cocoa/Objective C(++) application. For those unfamiliar with QC, the patch editor is a visual representation of the patch graph: effectively showing each node and it's properties, and providing a mouse driven select/click/drag interface. It looks like...
  <a href="http://files.me.com/archgrove/ya1xhh" rel="nofollow noreferrer">Quartz Composer Example http://files.me.com/archgrove/ya1xhh</a></p>
  
  <p>I'll be using it to render a specific type of multi-rooted tree, where each node has some associated text and an arc joining it to its children. Users will be clicking on the tree nodes to select them, as well as dragging them around.</p>
  
  <p>At the moment, I'm using a custom NSView inside a scroll view that Quartz draws each node, the arcs etc at each render, and processes mouse and keyboard input by hand (including hit testing, movement and so forth). This seems brutally wheel reinventive, and doesn't interact all that well with Core Animation. I'm hoping someone has some general alternative advice. I'm pondering along the lines of...</p>
  
  <ul>
  <li>An existing control/3rd party library I've overlooked</li>
  <li>Make each node in the tree an NSView, and use the normal view structure to handle the input, whilst drawing the graphics in the same way. But then, the inter-node arc rendering doesn't seem to fit naturally into the design</li>
  <li>Something using a single NSView still, but making each tree node and arc an individual layer</li>
  <li>Something else</li>
  </ul>
  
  <p>Thanks kindly,</p>
  
  <p>adamw</p>