/*
* Copyright (C) 2015 Patryk Strach
*
* This file is part of Virtual Slide Viewer.
*
* Virtual Slide Viewer 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,
* either version 3 of the License, or (at your option) any later version.
*
* Virtual Slide Viewer 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.
*
* You should have received a copy of the GNU General Public License along with Virtual Slide Viewer.
* If not, see <http://www.gnu.org/licenses/>.
*/
package virtualslideviewer.undo;
import virtualslideviewer.core.VirtualSlide;
import virtualslideviewer.core.VirtualSlideImage;
import virtualslideviewer.util.ParameterValidator;
/**
* An undoable action which removes an image from a virtual slide.
*/
public class RemoveImageAction implements UndoableAction
{
private final VirtualSlide mVirtualSlide;
private final VirtualSlideImage mImage;
private final int mImageIndex;
/**
* @param virtualSlide A virtual slide to remove image from.
* @param imageIndex The index of image to remove.
*/
public RemoveImageAction(VirtualSlide virtualSlide, int imageIndex)
{
ParameterValidator.throwIfNull(virtualSlide, "virtualSlide");
mVirtualSlide = virtualSlide;
mImage = virtualSlide.getImageList().get(imageIndex);
mImageIndex = imageIndex;
}
@Override
public void execute()
{
mVirtualSlide.removeImage(mImageIndex);
}
@Override
public void undo()
{
mVirtualSlide.addImage(mImageIndex, mImage);
}
@Override
public String getExecuteMessage()
{
return String.format("Removed image \"%s\"", mImage.getName());
}
@Override
public String getUndoMessage()
{
return String.format("Restored image \"%s\"", mImage.getName());
}
}