import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import generator.GeneratorStrategy; public class GenerationSelector extends JPopupMenu { public GenerationSelector(ModelObservable godlModel) { List gens = godlModel.getGeneratorStrategies(); for (int i = 0; i < gens.size(); i++) { add(new GeneratorMenuItem((GeneratorStrategy) gens.get(i), godlModel)); } } private class GeneratorMenuItem extends JMenuItem { GeneratorStrategy gen; private ModelObservable godlModel; public GeneratorMenuItem(final GeneratorStrategy gen, final ModelObservable godlmodel) { this.godlModel = godlmodel; this.gen = gen; this.setText(gen.toString()); this.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { GenerationSelector.this.setVisible(false); godlmodel.setGenerator(gen); godlmodel.generate(); } }); } } }