import theater.*;

import javax.swing.*;


/**
 * ActionHandler zum Ändern der Spielfeldgröße
 *
 * @author Dietrich Boles (Universitaet Oldenburg)
 * @version 1.0 (07.10.2009)
 *
 */
public class SpielfeldGroesse extends ActionHandler {
    public void handleAction(Stage stage, Actor solist) {
        MyPerformance perf = (MyPerformance) Performance.getPerformance();

        // während eine Simulation läuft, kann die Aktion nicht ausgeführt werden
        if (perf.isRunning()) {
            return;
        }

        Spielfeld feld = (Spielfeld) stage;
        int oldSize = feld.getSize();
        String eingabe = JOptionPane.showInputDialog(null, "Spielfeldgröße",
                oldSize);

        if (eingabe == null) { // abbrechen

            return;
        }

        int newSize = Spielfeld.MIN_SIZE;

        try {
            newSize = Integer.parseInt(eingabe);

            if (newSize > Spielfeld.MAX_SIZE) {
                newSize = Spielfeld.MAX_SIZE;
            }
        } catch (NumberFormatException exc) {
            return; // keine Änderung
        }

        feld.setSize(newSize);

        // Damen außerhalb der neuen Spielfeldgrenzen löschen
        for (int r = newSize; r < Spielfeld.MAX_SIZE; r++) {
            for (int s = 0; s < Spielfeld.MAX_SIZE; s++) {
                feld.remove(feld.getComponentsAt(s, r, Dame.class));
                feld.removeDame(r, s);
            }
        }

        for (int s = newSize; s < Spielfeld.MAX_SIZE; s++) {
            for (int r = 0; r < Spielfeld.MAX_SIZE; r++) {
                feld.remove(feld.getComponentsAt(s, r, Dame.class));
                feld.removeDame(r, s);
            }
        }
    }
}
