1 package at.ac.tuwien.sbc.valesriegler.group.gui;
3 import at.ac.tuwien.sbc.valesriegler.common.Util;
4 import at.ac.tuwien.sbc.valesriegler.group.DeliveryGroup;
5 import at.ac.tuwien.sbc.valesriegler.group.Group;
6 import at.ac.tuwien.sbc.valesriegler.group.GroupAgent;
7 import at.ac.tuwien.sbc.valesriegler.types.Order;
8 import org.slf4j.LoggerFactory;
11 import java.util.ArrayList;
12 import java.util.List;
15 * Handles the Wizard-like creation of groups.
17 * Give an instance of this class as a callback to the Panel from which a
18 * group creation request should be issued
20 class GroupCreationHandler {
21 private static final org.slf4j.Logger log = LoggerFactory.getLogger(GroupCreationHandler.class);
22 private final boolean createDeliveryGroups;
23 private JPanel creationPanel;
24 private JPanel chooseGroupSizePanel;
25 private JPanel groupCreationPanel;
27 public GroupCreationHandler(JPanel creationPanel, JPanel chooseGroupSizePanel, JPanel groupCreationPanel, boolean createDeliveryGroups) {
28 this.createDeliveryGroups = createDeliveryGroups;
29 this.creationPanel = creationPanel;
30 this.chooseGroupSizePanel = chooseGroupSizePanel;
31 this.groupCreationPanel = groupCreationPanel;
34 public void showGroupCreationDetailPanel() {
35 chooseGroupSizePanel.setVisible(false);
36 creationPanel.add(groupCreationPanel);
39 public void handleGroupCreation(GroupCreationDetailsRequest gc) {
40 chooseGroupSizePanel.setVisible(true);
41 creationPanel.remove(groupCreationPanel);
42 creationPanel.repaint();
46 public void createGroups(GroupCreationDetailsRequest gc) {
47 List<DeliveryGroup> newDeliveryGroups = new ArrayList<>();
48 List<Group> newNormalGroups = new ArrayList<>();
50 for (int i = 0; i < gc.numberOfGroups; i++) {
51 if(createDeliveryGroups) {
52 DeliveryGroup group = new DeliveryGroup();
53 final Order order = Util.createOrder(group, gc);
54 group.getDeliveryGroupData().setOrder(order);
55 group.getDeliveryGroupData().setPizzeriaId(gc.pizzeria);
56 group.getDeliveryGroupData().setAddress(gc.address);
57 newDeliveryGroups.add(group);
59 Group group = new Group();
60 final Order order = Util.createOrder(group, gc);
61 group.getGroupData().setOrder(order);
62 group.getGroupData().setSize(gc.size);
63 group.getGroupData().setPizzeriaId(gc.pizzeria);
64 newNormalGroups.add(group);
67 if(createDeliveryGroups) {
68 DeliveryOverviewModel deliveryOverviewModel = GroupAgent.getInstance().getDeliveryModel();
69 deliveryOverviewModel.addItems(newDeliveryGroups);
70 GroupAgent.getInstance().onDeliveryGroupsCreated(newDeliveryGroups);
72 GroupOverviewModel groupModel = GroupAgent.getInstance().getGroupModel();
73 groupModel.addItems(newNormalGroups);
74 GroupAgent.getInstance().onGroupsCreated(newNormalGroups);
78 public void handleCancel() {
79 chooseGroupSizePanel.setVisible(true);
80 creationPanel.remove(groupCreationPanel);
81 creationPanel.repaint();