/**
* 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.AccountModel;
public class ChangeAccountNicknameCommand extends AbstractBudgetCommand {
private AccountModel model;
private int accountItemIndex;
private String preCommandNickname;
private String postCommandNickname;
public static ChangeAccountNicknameCommand doCmd(AccountModel model, int accountItemIndex,
String postCommandNickname) {
ChangeAccountNicknameCommand command = new ChangeAccountNicknameCommand(
model,
accountItemIndex,
model.getAccount(accountItemIndex).getNickname(),
postCommandNickname
);
command.redo();
return command;
}
protected ChangeAccountNicknameCommand(AccountModel model, int accountItemIndex,
String preCommandNickname, String postCommandNickname) {
this.model = model;
this.accountItemIndex = accountItemIndex;
this.preCommandNickname = preCommandNickname;
this.postCommandNickname = postCommandNickname;
}
@Override
public boolean isSignificant() {
if (this.preCommandNickname.equals(this.postCommandNickname)) {
return false;
}
return true;
}
@Override
public void redo() throws CannotRedoException {
model.setAccountNickname(
accountItemIndex,
postCommandNickname
);
}
@Override
public void undo() throws CannotUndoException {
model.setAccountNickname(
accountItemIndex,
preCommandNickname
);
}
}