private void initComponents() {
			JButton button = null;
			// Let's hear it for sloth!

			button = new JButton("Finite Automaton");
			button.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					createWindow(new automata.fsa.FiniteStateAutomaton());
				}
			});
			getContentPane().add(button);
            
            button = new JButton("Mealy Machine");
            button.addActionListener(new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        createWindow(new MealyMachine());
                    }
                });
            getContentPane().add(button);
            button = new JButton("Moore Machine");
            button.addActionListener(new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        createWindow(new MooreMachine());
                    }
                });
            getContentPane().add(button);

			button = new JButton("Pushdown Automaton");
			button.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					Object[] possibleValues = {"Multiple Character Input", "Single Character Input"};
					Object selectedValue = JOptionPane.showInputDialog(null,
				            "Type of PDA Input", "Input",
				            JOptionPane.INFORMATION_MESSAGE, null,
				            possibleValues, possibleValues[0]);
					if (selectedValue==possibleValues[0]){
						createWindow(new automata.pda.PushdownAutomaton());
					}else if(selectedValue==possibleValues[1]){
						createWindow(new automata.pda.PushdownAutomaton(true));
					}
				}
			});
			getContentPane().add(button);

			button = new JButton("Turing Machine");
			button.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					createWindow(new automata.turing.TuringMachine(1));
				}
			});
			getContentPane().add(button);

			button = new JButton("Multi-Tape Turing Machine");
			button.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					if (INTS == null) {
						INTS = new Integer[4];
						for (int i = 0; i < INTS.length; i++)
							INTS[i] = new Integer(i + 2);
					}
					Number n = (Number) JOptionPane.showInputDialog(
							NewDialog.this.getContentPane(), "How many tapes?",
							"Multi-tape Machine", JOptionPane.QUESTION_MESSAGE,
							null, INTS, INTS[0]);
					if (n == null)
						return;
					createWindow(new automata.turing.TuringMachine(n.intValue()));
				}

				private Integer[] INTS = null;
			});
			getContentPane().add(button);

			button = new JButton("Grammar");
			button.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					createWindow(new grammar.cfg.ContextFreeGrammar());
				}
			});
			getContentPane().add(button);

			button = new JButton("L-System");
			button.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					createWindow(new grammar.lsystem.LSystem());
				}
			});
			getContentPane().add(button);

			button = new JButton("Regular Expression");
			button.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					createWindow(new regular.RegularExpression());
				}
			});
			getContentPane().add(button);
            
            button = new JButton("Regular Pumping Lemma");
            button.addActionListener(new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        createWindow(new RegPumpingLemmaChooser());
                    }
                });
            getContentPane().add(button);
            
            button = new JButton("Context-Free Pumping Lemma");
            button.addActionListener(new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        createWindow(new CFPumpingLemmaChooser());
                    }
                });
            getContentPane().add(button);
		}