]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/group/gui/GroupCreationPanel.java
Basic Group GUI implementation
[pub/jan/sbc.git] / src / main / java / at / ac / tuwien / sbc / valesriegler / group / gui / GroupCreationPanel.java
1 package at.ac.tuwien.sbc.valesriegler.group.gui;
2
3 import java.awt.GridLayout;
4 import java.awt.event.ActionEvent;
5 import java.awt.event.ActionListener;
6 import java.util.ArrayList;
7 import java.util.List;
8
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;
15
16 import at.ac.tuwien.sbc.valesriegler.common.PizzaType;
17 import at.ac.tuwien.sbc.valesriegler.group.gui.GroupFrame.GroupCreationHandler;
18
19 public class GroupCreationPanel extends JPanel {
20         
21         private GroupCreationHandler handler;
22         private int numberMembers;
23         private JSpinner numberOfGroupsSpinner;
24         private List<JComboBox> combos = new ArrayList<JComboBox>();
25         
26         public GroupCreationPanel(int numberMembers) {
27                 this.numberMembers = numberMembers;
28                 
29                 GridLayout layout = new GridLayout(0, 2);
30                 setLayout(layout);
31                 
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);
38                         }
39                         this.add(memberLabel);
40                         this.add(pizzaDropdown);
41                 }
42                 JLabel numberOfGroupsLabel = new JLabel("Number of groups to create: ");
43                 SpinnerNumberModel model = new SpinnerNumberModel(1,1,100,1);
44             numberOfGroupsSpinner = new JSpinner(model);
45             
46             this.add(numberOfGroupsLabel);
47             this.add(numberOfGroupsSpinner);
48             
49             JButton create = new JButton("Create");
50             JButton cancel = new JButton("Cancel");
51             
52             this.add(create);
53             this.add(cancel);
54             
55             addCreateHandler(create);
56             addCancelHandler(cancel);
57         }
58
59
60         private void addCancelHandler(JButton cancel) {
61                 cancel.addActionListener(new ActionListener() {
62                         
63                         @Override
64                         public void actionPerformed(ActionEvent e) {
65                                 handler.handleCancel();
66                         }
67                 });
68         }
69
70         private void addCreateHandler(JButton create) {
71                 create.addActionListener(new ActionListener() {
72                         
73                         @Override
74                         public void actionPerformed(ActionEvent e) {
75                                 List<PizzaType> types = new ArrayList<>();
76                                 for(JComboBox combo : combos) {
77                                         types.add((PizzaType) combo.getSelectedItem());
78                                 }
79                                 GroupCreationRequest gcr = new GroupCreationRequest(numberMembers, (int) numberOfGroupsSpinner.getValue(), types);
80                                 handler.handleGroupCreation(gcr);
81                         }
82                 });
83         }
84
85         public void setCreateAndCancelHandler(
86                         GroupCreationHandler groupCreationCallback) {
87                 this.handler = groupCreationCallback;
88         }
89
90 }