@Override
  public void actionPerformed(ActionEvent actionEvent) {
    String command = actionEvent.getActionCommand();
    System.out.println(command);
    switch (command) {
      case "comboBoxChanged":
        if (((JComboBox) components.get("typeComboBox")).getSelectedItem().equals("Side")
            || ((JComboBox) components.get("typeComboBox")).getSelectedItem().equals("Drink")) {
          components.get("priceContainer").setVisible(true);
          components.get("shortnameContainer").setVisible(false);
        } else if (((JComboBox) components.get("typeComboBox")).getSelectedItem().equals("Size")) {
          components.get("priceContainer").setVisible(true);
          components.get("shortnameContainer").setVisible(true);
        } else {
          components.get("priceContainer").setVisible(false);
          components.get("shortnameContainer").setVisible(true);
        }
        break;
      case "Back":
        manager.activateWindow(manager.MENU_EDIT, manager.MANAGE_MAIN);
        break;
      case "Delete":
        if (item != null) {
          model.getCatalog().deleteItem(item);
        }
        resetView();
        break;
      case "Cancel":
        resetView();
        break;
      case "Save":
        String itemName = ((JTextArea) components.get("itemNameEditText")).getText();
        String shortName = ((JTextArea) components.get("shortNameEditText")).getText();
        String priceString = ((JTextArea) components.get("priceEditText")).getText();
        double price;
        try {
          switch (((JComboBox) components.get("typeComboBox")).getSelectedItem().toString()) {
            case "Topping":
              if (model.getCatalog().getEntireCatalog().contains(item)) {
                ((Topping) item).setFullName(itemName);
                ((Topping) item).setShortName(shortName);
                model.getCatalog().updateItem(((Topping) item).getItemID());
              } else {
                item = new Topping(shortName, itemName);
                model.getCatalog().addItem(item);
              }
              break;
            case "Size":
              price = Double.parseDouble(priceString);
              if (model.getCatalog().getEntireCatalog().contains(item)) {
                ((PizzaSize) item).setFullName(itemName);
                ((PizzaSize) item).setShortName(shortName);
                ((PizzaSize) item).setPrice(price);
                model.getCatalog().updateItem(((PizzaSize) item).getItemID());
              } else {
                item = new PizzaSize(shortName, itemName, price);
                model.getCatalog().addItem(item);
              }
              break;
            case "Sauce":
              if (model.getCatalog().getEntireCatalog().contains(item)) {
                ((Sauce) item).setFullName(itemName);
                ((Sauce) item).setShortName(shortName);
                model.getCatalog().updateItem(((Sauce) item).getItemID());
              } else {
                item = new Sauce(shortName, itemName);
                model.getCatalog().addItem(item);
              }
              break;
            case "Side":
              price = Double.parseDouble(priceString);
              if (model.getCatalog().getEntireCatalog().contains(item)) {
                ((Side) item).setName(itemName);
                ((Side) item).setPrice(price);
                model.getCatalog().updateItem(((Side) item).getItemID());
              } else {
                item = new Side(itemName, price);
                model.getCatalog().addItem(item);
              }
              break;
            case "Drink":
              price = Double.parseDouble(priceString);
              if (model.getCatalog().getEntireCatalog().contains(item)) {
                ((Drink) item).setName(itemName);
                ((Drink) item).setPrice(price);
                model.getCatalog().updateItem(((Drink) item).getItemID());
              } else {
                item = new Drink(itemName, price);
                model.getCatalog().addItem(item);
              }
              break;
          }

          resetView();
        } catch (NumberFormatException e) {
          JOptionPane.showMessageDialog(
              view, "Price must be a number", "Error", JOptionPane.PLAIN_MESSAGE);
        }
        break;
    }
  }