/*
* @(#)TransformRestoreEdit.java
*
* Copyright (c) 1996-2010 The authors and contributors of JHotDraw.
* You may not use, copy or modify this file, except in compliance with the
* accompanying license terms.
*/
package org.jhotdraw.draw.event;
import org.jhotdraw.draw.*;
import javax.swing.undo.*;
import org.jhotdraw.util.*;
/**
* An {@code UndoableEdit} event which can undo a lossy transform of a single
* {@link Figure} by restoring the figure using its transform restore data.
* <p>
* This object is useful for undoing lossy transformations, such as the
* rotation, scaling or shearing of a figure.
* <p>
* The transform restore data may consume a lot of memory. Undos of lossless
* transforms, such as translations of a figure, should use {@link TransformEdit}.
*
* @author Werner Randelshofer
* @version $Id$
*/
public class TransformRestoreEdit extends AbstractUndoableEdit {
private static final long serialVersionUID = 1L;
private Figure owner;
private Object oldTransformRestoreData;
private Object newTransformRestoreData;
/** Creates a new instance. */
public TransformRestoreEdit(Figure owner, Object oldTransformRestoreData, Object newTransformRestoreData) {
this.owner = owner;
this.oldTransformRestoreData = oldTransformRestoreData;
this.newTransformRestoreData = newTransformRestoreData;
}
@Override
public String getPresentationName() {
ResourceBundleUtil labels = ResourceBundleUtil.getBundle("org.jhotdraw.draw.Labels");
return labels.getString("edit.transform.text");
}
@Override
public void undo() throws CannotUndoException {
super.undo();
owner.willChange();
owner.restoreTransformTo(oldTransformRestoreData);
owner.changed();
}
@Override
public void redo() throws CannotRedoException {
super.redo();
owner.willChange();
owner.restoreTransformTo(newTransformRestoreData);
owner.changed();
}
}