/*
* PetriNetObjectNameEdit.java
*/
package pipe.historyActions.component;
import uk.ac.imperial.pipe.models.petrinet.PetriNetComponent;
import javax.swing.undo.AbstractUndoableEdit;
/**
* Undo/Redo action for changing a Petri net components name/id
*/
public final class ChangePetriNetComponentName extends AbstractUndoableEdit {
/**
* Old name
*/
private final String oldName;
/**
* name name
*/
private final String newName;
/**
* Petri net component
*/
private final PetriNetComponent component;
/**
*
* @param component component whose name will change
* @param oldName old component name
* @param newName new component name
*/
public ChangePetriNetComponentName(PetriNetComponent component, String oldName, String newName) {
this.component = component;
this.oldName = oldName;
this.newName = newName;
}
@Override
public int hashCode() {
int result = oldName.hashCode();
result = 31 * result + newName.hashCode();
result = 31 * result + component.hashCode();
return result;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof ChangePetriNetComponentName)) {
return false;
}
ChangePetriNetComponentName that = (ChangePetriNetComponentName) o;
if (!component.equals(that.component)) {
return false;
}
if (!newName.equals(that.newName)) {
return false;
}
if (!oldName.equals(that.oldName)) {
return false;
}
return true;
}
/**
* Sets the component id to the old name
*/
@Override
public void undo() {
super.undo();
component.setId(oldName);
}
/**
* Sets the component id to the new name
*/
@Override
public void redo() {
super.redo();
component.setId(newName);
}
}