001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.plugins.streetside.history.commands; 003 004import static org.openstreetmap.josm.tools.I18n.trn; 005 006import java.util.Set; 007 008import org.openstreetmap.josm.plugins.streetside.StreetsideAbstractImage; 009import org.openstreetmap.josm.plugins.streetside.StreetsideLayer; 010 011/** 012 * Command created when an image's position is changed. 013 * 014 * @author nokutu 015 * 016 */ 017public class CommandMove extends StreetsideCommand { 018 private double x; 019 private double y; 020 021 /** 022 * Main constructor. 023 * 024 * @param images 025 * Set of images that are going to be moved. 026 * @param x 027 * How much the x coordinate increases. 028 * @param y 029 * How much the y coordinate increases. 030 */ 031 public CommandMove(Set<StreetsideAbstractImage> images, double x, 032 double y) { 033 super(images); 034 this.x = x; 035 this.y = y; 036 } 037 038 @Override 039 public void undo() { 040 for (StreetsideAbstractImage image : this.images) { 041 image.move(-this.x, -this.y); 042 image.stopMoving(); 043 } 044 StreetsideLayer.invalidateInstance(); 045 } 046 047 @Override 048 public void redo() { 049 for (StreetsideAbstractImage image : this.images) { 050 image.move(this.x, this.y); 051 image.stopMoving(); 052 } 053 StreetsideLayer.invalidateInstance(); 054 } 055 056 @Override 057 public String toString() { 058 // TODO: trn( RRH 059 return trn("Moved {0} image", "Moved {0} images", this.images.size(), 060 this.images.size()); 061 } 062 063 @Override 064 public void sum(StreetsideCommand command) { 065 if (command instanceof CommandMove) { 066 this.x += ((CommandMove) command).x; 067 this.y += ((CommandMove) command).y; 068 } 069 } 070}