    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 direction is changed.
    013 *
    014 * @author nokutu
    015 *
    016 */
    017public class CommandTurn extends StreetsideCommand {
    018  private double ca;
    019
    020  /**
    021   * Main constructor.
    022   *
    023   * @param images
    024   *          Set of images that is turned.
    025   * @param ca
    026   *          How much the images turn.
    027   */
    028  public CommandTurn(Set<StreetsideAbstractImage> images, double ca) {
    029    super(images);
    030    this.ca = ca;
    031  }
    032
    033  @Override
    034  public void undo() {
    035    for (StreetsideAbstractImage image : this.images) {
    036      image.turn(-this.ca);
    037      image.stopMoving();
    038    }
    039    StreetsideLayer.invalidateInstance();
    040  }
    041
    042  @Override
    043  public void redo() {
    044    for (StreetsideAbstractImage image : this.images) {
    045      image.turn(this.ca);
    046      image.stopMoving();
    047    }
    048    StreetsideLayer.invalidateInstance();
    049  }
    050
    051  @Override
    052  public String toString() {
    053    // TODO: trn( RRH
    054    return trn("Turned {0} image", "Turned {0} images", this.images.size(),
    055        this.images.size());
    056  }
    057
    058  @Override
    059  public void sum(StreetsideCommand command) {
    060    if (command instanceof CommandTurn) {
    061      this.ca += ((CommandTurn) command).ca;
    062    }
    063  }
    064}