/**
* Copyright (c) 2012, Lindsay Bradford and other Contributors.
* All rights reserved.
*
* This program and the accompanying materials are made available
* under the terms of the BSD 3-Clause licence which accompanies
* this distribution, and is available at
* http://opensource.org/licenses/BSD-3-Clause
*/
package blacksmyth.personalfinancier.control.budget.command;
import javax.swing.undo.CannotRedoException;
import javax.swing.undo.CannotUndoException;
import blacksmyth.personalfinancier.model.CashFlowFrequency;
import blacksmyth.personalfinancier.model.budget.BudgetModel;
public class ChangeIncomeFrequencyCommand extends AbstractBudgetCommand {
private BudgetModel model;
private int incomeItemIndex;
private CashFlowFrequency preCommandFrequency;
private CashFlowFrequency postCommandFrequency;
public static ChangeIncomeFrequencyCommand doCmd(BudgetModel model, int incomeItemIndex,
CashFlowFrequency postCommandFrequency) {
ChangeIncomeFrequencyCommand command = new ChangeIncomeFrequencyCommand(
model,
incomeItemIndex,
model.getIncomeItems().get(incomeItemIndex).getFrequency(),
postCommandFrequency
);
command.redo();
return command;
}
protected ChangeIncomeFrequencyCommand(BudgetModel model, int incomeItemIndex,
CashFlowFrequency preCommandFrequency, CashFlowFrequency postCommandFrequency) {
this.model = model;
this.incomeItemIndex = incomeItemIndex;
this.preCommandFrequency = preCommandFrequency;
this.postCommandFrequency = postCommandFrequency;
}
@Override
public boolean isSignificant() {
if (this.preCommandFrequency.equals(this.postCommandFrequency)) {
return false;
}
return true;
}
@Override
public void redo() throws CannotRedoException {
model.setIncomeItemFrequency(
incomeItemIndex,
postCommandFrequency
);
}
@Override
public void undo() throws CannotUndoException {
model.setIncomeItemFrequency(
incomeItemIndex,
preCommandFrequency
);
}
}