001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.plugins.streetside.history.commands;
003
004import java.util.Set;
005import java.util.concurrent.ConcurrentSkipListSet;
006
007import org.openstreetmap.josm.plugins.streetside.StreetsideAbstractImage;
008
009/**
010* Abstract class for any Streetside command.
011*
012* @author nokutu
013*
014*/
015public abstract class StreetsideCommand {
016/** Set of {@link StreetsideAbstractImage} objects affected by the command */
017public Set<StreetsideAbstractImage> images;
018
019/**
020* Main constructor.
021*
022* @param images
023*          The images that are affected by the command.
024*/
025public StreetsideCommand(Set<StreetsideAbstractImage> images) {
026 this.images = new ConcurrentSkipListSet<>(images);
027}
028
029/**
030* Undoes the action.
031*/
032public abstract void undo();
033
034/**
035* Redoes the action.
036*/
037public abstract void redo();
038
039/**
040* If two equal commands are applied consecutively to the same set of images,
041* they are summed in order to reduce them to just one command.
042*
043* @param command
044*          The command to be summed to last command.
045*/
046public abstract void sum(StreetsideCommand command);
047
048@Override
049public abstract String toString();
050}