public TransitionWindow(FSAToREController controller) {
		super("Transitions");
		this.controller = controller;
		// Init the GUI.
		setSize(250, 400);
		getContentPane().setLayout(new BorderLayout());
		getContentPane().add(
				new JLabel("Select to see what transitions were combined."),
				BorderLayout.NORTH);
		getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
		getContentPane().add(new JButton(new AbstractAction("Finalize") {
			public void actionPerformed(ActionEvent e) {
				TransitionWindow.this.controller.finalizeStateRemove();
			}
		}), BorderLayout.SOUTH);
		// Have the listener to the transition.
		table.getSelectionModel().addListSelectionListener(
				new ListSelectionListener() {
					public void valueChanged(ListSelectionEvent e) {
						if (table.getSelectedRowCount() != 1) {
							TransitionWindow.this.controller
									.tableTransitionSelected(null);
							return;
						}
						Transition t = transitions[table.getSelectedRow()];
						TransitionWindow.this.controller
								.tableTransitionSelected(t);
						;
					}
				});
	}