@Override
    public void selectElement() {
        assert isInitialized : "Menu not initialized";

        Choice pointedChoice = Choice.values()[getPointedElementId()];
        switch (pointedChoice) {
        case RETURN:
            close();
            break;
        case USE:
            setChanged();
            notifyObservers(new UseItem(item));
            break;
        case INSPECT:
            setChanged();
            notifyObservers(new ShowMessage(new Message(item.getDescription())));
            break;
        case THROW:
            setChanged();
            if (item.isThrowable()) {
                List<String> possibleAnswers = new ArrayList<String>();
                possibleAnswers.add(UserInterface.getLang().getString("yes"));
                possibleAnswers.add(UserInterface.getLang().getString("no"));

                List<List<IAction>> actionLists = new ArrayList<List<IAction>>();

                List<IAction> throwActionList = new ArrayList<IAction>();
                throwActionList.add(new ThrowItem(item, bag));
                throwActionList.add(new ShowMessage(new Message(UserInterface.getLang().getString("thrown") + item.getName())));
                throwActionList.add(new CloseMenu(this));

                List<IAction> cancelActionList = new ArrayList<IAction>();
                cancelActionList.add(new CloseMenu(MenuID.messageBox));

                actionLists.add(throwActionList);
                actionLists.add(cancelActionList);

                Question q = new Question(UserInterface.getLang().getString("confirmThrow"), possibleAnswers, actionLists);

                notifyObservers(new ShowMessage(q));
            }
            else {
                notifyObservers(new ShowMessage(new Message(UserInterface.getLang().getString("notThrowable"))));
            }
            break;
        default:
            break;
        }
    }