/*
* RateParameterValueEdit.java
*/
package pipe.historyActions.rateparameter;
import uk.ac.imperial.pipe.models.petrinet.RateParameter;
import javax.swing.undo.AbstractUndoableEdit;
/**
* Undoable edit responsible for undo/redoing a rate parameters
* expression
*/
public class ChangeRateParameterRate extends AbstractUndoableEdit {
/**
* Rate parameter whose expression has changed
*/
private final RateParameter rateParameter;
/**
* Previous value
*/
private final String previousExpression;
/**
* Value the expression has been changed to
*/
private final String newExpression;
/**
* Constructor
* @param rateParameter underlying model
* @param previousExpression previous expression of the rate parameter
* @param newExpression new expression of the rate parameter
*/
public ChangeRateParameterRate(RateParameter rateParameter, String previousExpression, String newExpression) {
this.rateParameter = rateParameter;
this.previousExpression = previousExpression;
this.newExpression = newExpression;
}
@Override
public int hashCode() {
int result = rateParameter.hashCode();
result = 31 * result + previousExpression.hashCode();
result = 31 * result + newExpression.hashCode();
return result;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof ChangeRateParameterRate)) {
return false;
}
ChangeRateParameterRate that = (ChangeRateParameterRate) o;
if (!newExpression.equals(that.newExpression)) {
return false;
}
if (!previousExpression.equals(that.previousExpression)) {
return false;
}
if (!rateParameter.equals(that.rateParameter)) {
return false;
}
return true;
}
/**
* Sets the rate parameters expression to the previous expression
*/
@Override
public void undo() {
super.undo();
rateParameter.setExpression(previousExpression);
}
/**
* Sets the rate parameters expression to the new expression
*/
@Override
public void redo() {
super.redo();
rateParameter.setExpression(newExpression);
}
}