1 package at.ac.tuwien.sbc.valesriegler.group.gui;
3 import at.ac.tuwien.sbc.valesriegler.group.Group;
4 import at.ac.tuwien.sbc.valesriegler.group.GroupAgent;
5 import at.ac.tuwien.sbc.valesriegler.types.Order;
6 import at.ac.tuwien.sbc.valesriegler.types.PizzaOrder;
7 import at.ac.tuwien.sbc.valesriegler.types.PizzaType;
10 import java.util.ArrayList;
11 import java.util.List;
14 * Handles the Wizard-like creation of groups.
16 * Give an instance of this class as a callback to the Panel from which a
17 * group creation request should be issued
19 class GroupCreationHandler {
20 private final boolean isDeliveryGroup;
21 private JPanel creationPanel;
22 private JPanel chooseGroupSizePanel;
23 private JPanel groupCreationPanel;
25 public GroupCreationHandler(JPanel creationPanel, JPanel chooseGroupSizePanel, JPanel groupCreationPanel, boolean isDeliveryGroup) {
26 this.isDeliveryGroup = isDeliveryGroup;
27 this.creationPanel = creationPanel;
28 this.chooseGroupSizePanel = chooseGroupSizePanel;
29 this.groupCreationPanel = groupCreationPanel;
32 public void showGroupCreationDetailPanel() {
33 chooseGroupSizePanel.setVisible(false);
34 creationPanel.add(groupCreationPanel);
37 public void handleGroupCreation(GroupCreationDetailsRequest gc) {
38 chooseGroupSizePanel.setVisible(true);
39 creationPanel.remove(groupCreationPanel);
40 creationPanel.repaint();
44 public void createGroups(GroupCreationDetailsRequest gc) {
45 List<Group> newGroups = new ArrayList<>();
46 for (int i = 0; i < gc.numberOfGroups; i++) {
47 Group group = new Group();
48 group.getGroupData().setSize(gc.size);
49 List<PizzaOrder> pizzaOrders = new ArrayList<>();
50 for (PizzaType pt : gc.pizzaTypes) {
51 pizzaOrders.add(new PizzaOrder(pt));
53 Order order = new Order(group, pizzaOrders);
54 // the order id has to be set by the waiter
55 /*for (PizzaOrder pizzaOrder : order.getOrderedPizzas()) {
56 pizzaOrder.setOrderId(order.getId());
58 group.getGroupData().setOrder(order);
59 order.setNumberOfPizzas(order.getOrderedPizzas().size());
63 GroupOverviewModel groupModel = GroupAgent.getInstance().getGroupModel();
64 groupModel.addItems(newGroups);
65 GroupAgent.getInstance().onGroupsCreated(newGroups, isDeliveryGroup);
68 public void handleCancel() {
69 chooseGroupSizePanel.setVisible(true);
70 creationPanel.remove(groupCreationPanel);
71 creationPanel.repaint();