1 package at.ac.tuwien.sbc.valesriegler.group.gui;
3 import java.awt.GridLayout;
4 import java.awt.event.ActionEvent;
5 import java.awt.event.ActionListener;
6 import java.util.ArrayList;
9 import javax.swing.JButton;
10 import javax.swing.JComboBox;
11 import javax.swing.JLabel;
12 import javax.swing.JPanel;
13 import javax.swing.JSpinner;
14 import javax.swing.SpinnerNumberModel;
16 import at.ac.tuwien.sbc.valesriegler.common.PizzaType;
17 import at.ac.tuwien.sbc.valesriegler.group.gui.GroupFrame.GroupCreationHandler;
19 public class GroupCreationPanel extends JPanel {
21 private GroupCreationHandler handler;
22 private int numberMembers;
23 private JSpinner numberOfGroupsSpinner;
24 private List<JComboBox> combos = new ArrayList<JComboBox>();
26 public GroupCreationPanel(int numberMembers) {
27 this.numberMembers = numberMembers;
29 GridLayout layout = new GridLayout(0, 2);
32 for(int i=1; i<=numberMembers; i++) {
33 JLabel memberLabel = new JLabel(i + ". Person");
34 JComboBox pizzaDropdown = new JComboBox();
35 combos.add(pizzaDropdown);
36 for(PizzaType type : PizzaType.values()) {
37 pizzaDropdown.addItem(type);
39 this.add(memberLabel);
40 this.add(pizzaDropdown);
42 JLabel numberOfGroupsLabel = new JLabel("Number of groups to create: ");
43 SpinnerNumberModel model = new SpinnerNumberModel(1,1,100,1);
44 numberOfGroupsSpinner = new JSpinner(model);
46 this.add(numberOfGroupsLabel);
47 this.add(numberOfGroupsSpinner);
49 JButton create = new JButton("Create");
50 JButton cancel = new JButton("Cancel");
55 addCreateHandler(create);
56 addCancelHandler(cancel);
60 private void addCancelHandler(JButton cancel) {
61 cancel.addActionListener(new ActionListener() {
64 public void actionPerformed(ActionEvent e) {
65 handler.handleCancel();
70 private void addCreateHandler(JButton create) {
71 create.addActionListener(new ActionListener() {
74 public void actionPerformed(ActionEvent e) {
75 List<PizzaType> types = new ArrayList<>();
76 for(JComboBox combo : combos) {
77 types.add((PizzaType) combo.getSelectedItem());
79 GroupCreationRequest gcr = new GroupCreationRequest(numberMembers, (int) numberOfGroupsSpinner.getValue(), types);
80 handler.handleGroupCreation(gcr);
85 public void setCreateAndCancelHandler(
86 GroupCreationHandler groupCreationCallback) {
87 this.handler = groupCreationCallback;