public PlayerEditorComponent(GUIComponentGroup superGroup) {
        super(superGroup);

        rowsActive = new boolean[Game.MAX_PLAYERS];
        for (int i = 0; i < Game.MAX_PLAYERS; i++) {
            rowsActive[i] = true;
        }

        Grid grid = new Grid(6, Game.MAX_PLAYERS*2 + 1);
        grid.setColumnWidth(this.getWidth()/15, 0);
        grid.setColumnWidth(this.getWidth()*8/15, 1);
        grid.setColumnWidth(this.getWidth()*4/15, 2);
        grid.setColumnWidth(this.getWidth()/15, 3);
        grid.setColumnWidth(this.getWidth()/30, 4);
        grid.setColumnWidth(this.getWidth()/30, 5);
        grid.setRowHeight((this.getHeight() - SEPARATOR_HEIGHT*(Game.MAX_PLAYERS + 1))/ Game.MAX_PLAYERS);
        for (int i = 0; i <= Game.MAX_PLAYERS*2; i += 2) {
            grid.setRowHeight(SEPARATOR_HEIGHT, i);
        }
        this.setGrid(grid);

        this.setAlignment(H_ALIGN_LEFT, V_ALIGN_CENTER);

        SeparatorComponent separatorComponent;
        for (int i = 0; i <= Game.MAX_PLAYERS*2; i += 2) {
            separatorComponent = new SeparatorComponent(this);
            separatorComponent.setSize(this.getWidth(), SEPARATOR_HEIGHT);
            this.addComponent(separatorComponent, 0, i);
        }

        checkCircles = new CheckCircleComponent[Game.MAX_PLAYERS];
        nameFields = new ButtonComponent[Game.MAX_PLAYERS];
        typeFields = new ButtonComponent[Game.MAX_PLAYERS];
        colorSelections = new BasicInputComponent[Game.MAX_PLAYERS];
        upArrows = new ArrowComponent[Game.MAX_PLAYERS];
        downArrows = new ArrowComponent[Game.MAX_PLAYERS];

        for (int i = 0; i < Game.MAX_PLAYERS; i++) {
            checkCircles[i] = new CheckCircleComponent(this);
            checkCircles[i].setSize(64, 64);
            checkCircles[i].addActionListener(this);
            this.addComponent(checkCircles[i], 0, i*2 + 1);

            nameFields[i] = new ButtonComponent(this, "No Name");
            nameFields[i].setHugText(true);
            nameFields[i].setTextAlignment(TextComponent.H_LEFT, TextComponent.V_CENTER);
            nameFields[i].addActionListener(this);
            this.addComponent(nameFields[i], 1, i*2 + 1);

            typeFields[i] = new ButtonComponent(this, Game.DEFAULT_COMPUTER_DIFFICULTY.name());
            typeFields[i].setHugText(true);
            typeFields[i].setFont(GraphicalFont.BigFont);
            typeFields[i].setTextAlignment(TextComponent.H_RIGHT, TextComponent.V_CENTER);
            typeFields[i].addActionListener(this);
            this.addComponent(typeFields[i], 2, i*2 + 1);

            colorSelections[i] = new BasicInputComponent(this) {
                @Override
                public void mousePressed(int x, int y, GUIComponent component) {
                    this.actionPerformed();
                }
            };
            colorSelections[i].setTextureID(TextureManager.getTextureID("color_selection"));
            colorSelections[i].addActionListener(this);
            colorSelections[i].setSize(64, 64);
            this.addComponent(colorSelections[i], 3, i*2 + 1);

            upArrows[i] = new ArrowComponent(this, ArrowComponent.UP);
            upArrows[i].setSize(32, 32);
            upArrows[i].addActionListener(this);
            this.addComponent(upArrows[i], 4, i*2 + 1);

            downArrows[i] = new ArrowComponent(this, ArrowComponent.DOWN);
            downArrows[i].setSize(32, 32);
            downArrows[i].addActionListener(this);
            this.addComponent(downArrows[i], 5, i*2 + 1);
        }

        typeDropdown = new DropDownComponent(this, Game.PlayerType.values().length, 256, 32);
        for (int i = 0; i < Game.PlayerType.values().length; i++) {
            typeDropdown.setEntry(i, Game.PlayerType.values()[i].name());
        }
        typeDropdown.addActionListener(this);
        this.addComponent(typeDropdown);
        typeDropdown.hide();

        colorSelector = new ColorSelectorComponent(this);
        colorSelector.addActionListener(this);
        this.addComponent(colorSelector);
        colorSelector.hide();

        nameInput = new TextEntryComponent(this, "Input Name:");
        nameInput.addActionListener(this);
        this.addComponent(nameInput);
        nameInput.hide();

        confirmPopup = new ConfirmPopup(this, "Discard Changes?");
        confirmPopup.addActionListener(this);
        this.addComponent(confirmPopup);
        confirmPopup.setLocationC();
    }