// Class: ObstCourseFileMenuActionHandler
//
// Author: Alyce Brady 
//
// Created on May 22, 2005
//    Modified 21 May 2017 to add @Override
//
// License Information:
//   This class is free software; you can redistribute it and/or modify
//   it under the terms of the GNU General Public License as published by
//   the Free Software Foundation.
//
//   This class is distributed in the hope that it will be useful,
//   but WITHOUT ANY WARRANTY; without even the implied warranty of
//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//   GNU General Public License for more details.

import edu.kzoo.grid.Grid;
import edu.kzoo.grid.gui.FileMenuActionHandler;
import edu.kzoo.grid.gui.GridAppFrame;
import edu.kzoo.grid.gui.GridCreationDialog;
import edu.kzoo.grid.gui.GridDataFileHandler;
import edu.kzoo.grid.gui.SteppedGridAppFrame;

/**
 *  Obstacle Course Program:<br>
 *
 *  A <code>ObstCourseFileMenuActionHandler</code> object 
 *  provides the actions associated with choosing various items
 *  from the File Menu in the Obstacle Course program.
 *
 *  @author Alyce Brady
 *  @version 21 May 2017
 **/
public class ObstCourseFileMenuActionHandler extends FileMenuActionHandler
{

    /** Constructs a new ObstCourseFileMenuActionHandler object.
     *  @param frame  the frame that uses this action handler
     *  @param fileHandler object that can read and write a grid;
     *                     null if this handler should not support file i/o
     */
    public ObstCourseFileMenuActionHandler(GridAppFrame frame,
                                           GridDataFileHandler fileHandler)
    {
        super(frame, fileHandler);
    }

    /** Indicates whether this controller supports grid editing.
     *  @return <code>true</code>
     **/
    @Override
    public boolean supportsGridEditing()
    {
        return true; 
    }

    /** Creates a new empty grid and invokes the grid editor.
     *  (Precondition: <code>supportsGridEditing() == true</code>
     **/
    @Override
    public void createNewGrid()
    {
        GridCreationDialog gridCreationDialog =
                  GridCreationDialog.makeDimensionsDialog(getParentFrame());
        Grid newGrid = gridCreationDialog.showDialog();
        if (newGrid != null)
            getParentFrame().setGrid(newGrid);
    }

    /** Invokes the appropriate editor.
     **/
    @Override
    protected void invokeEditor()
    {
        ObstCourseEditor editor = new ObstCourseEditor(getParentFrame());
    }
    
    /** Enables editing of an existing grid.
     **/
    @Override
    public void editGrid(Grid grid)
    {
        ((SteppedGridAppFrame)getParentFrame()).stop();
        super.editGrid();
    }

}
