@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; } }