How I have it set up now is using Tasks from the Swing Application Framework, where in the protected succeeded() method, the next Task is started up (or decided between). This makes it so I have to track down each link in the chain to see where the overall execution may branch or change based on certain conditions (i.e. is a filter present, is the Graph visible, etc.).
This may not be the best way to do it, and I haved considered the Template pattern, but it seemed too rigid - you do this, then this, then this, no matter what (unless it happens to be a hook). What if I didn't plan on making a particular task optional? Well, rework the template method code.