public ConversionPane(FiniteStateAutomaton nfa, Environment environment) {
		super(new BorderLayout());
		FiniteStateAutomaton dfa = new FiniteStateAutomaton();
		controller = new ConversionController(nfa, dfa, this);
		// Create the left view of the original NFA.
		AutomatonPane nfaPane = new AutomatonDraggerPane(nfa);
		// Put it all together.
		JSplitPane split = SplitPaneFactory.createSplit(environment, true, .25,
				nfaPane, createEditor(dfa));
		add(split, BorderLayout.CENTER);

		// When the component is first shown, perform layout.
		addComponentListener(new ComponentAdapter() {
			public void componentShown(ComponentEvent event) {
				// We may now lay out the states...
				controller.performFirstLayout();
				editor.getAutomatonPane().repaint();
			}

			boolean doneBefore = false;
		});
	}