use of org.freeplane.core.undo.IActor in project freeplane by freeplane.
the class EncryptionController method toggleCryptState.
public void toggleCryptState(final NodeModel node, PasswordStrategy passwordStrategy) {
final EncryptionModel encryptionModel = EncryptionModel.getModel(node);
if (encryptionModel != null) {
final boolean wasFolded = node.isFolded();
final boolean wasAccessible = encryptionModel.isAccessible();
if (wasAccessible)
encryptionModel.calculateEncryptedContent(Controller.getCurrentModeController().getMapController());
else {
if (!doPasswordCheckAndDecryptNode(encryptionModel, passwordStrategy))
return;
}
final boolean becomesFolded = wasAccessible;
final boolean becomesAccessible = !wasAccessible;
Controller.getCurrentController().getSelection().selectAsTheOnlyOneSelected(node);
final IActor actor = new IActor() {
public void act() {
encryptionModel.setAccessible(becomesAccessible);
if (becomesFolded != wasFolded) {
node.setFolded(becomesFolded);
}
fireEncyptionChangedEvent(node);
}
public String getDescription() {
return "toggleCryptState";
}
public void undo() {
encryptionModel.setAccessible(wasAccessible);
if (becomesFolded != wasFolded)
node.setFolded(wasFolded);
fireEncyptionChangedEvent(node);
}
};
Controller.getCurrentModeController().execute(actor, node.getMap());
} else {
encrypt(node, passwordStrategy);
}
}
use of org.freeplane.core.undo.IActor in project freeplane by freeplane.
the class EncryptionController method encrypt.
private void encrypt(final NodeModel node, PasswordStrategy passwordStrategy) {
if (node.allClones().size() > 1) {
UITools.errorMessage(TextUtils.getText("can_not_encrypt_cloned_node"));
return;
}
final StringBuilder password = passwordStrategy.getPasswordWithConfirmation();
if (passwordStrategy.isCancelled()) {
return;
}
final EncryptionModel encryptionModel = new EncryptionModel(node);
encryptionModel.setEncrypter(new SingleDesEncrypter(password));
final IActor actor = new IActor() {
public void act() {
node.addExtension(encryptionModel);
fireEncyptionChangedEvent(node);
}
public String getDescription() {
return "encrypt";
}
public void undo() {
node.removeExtension(encryptionModel);
fireEncyptionChangedEvent(node);
}
};
Controller.getCurrentModeController().execute(actor, node.getMap());
}
use of org.freeplane.core.undo.IActor in project freeplane by freeplane.
the class MMapController method convertCloneToNode.
private void convertCloneToNode(final NodeModel node) {
final MModeController mModeController = getMModeController();
final ClipboardController clipboardController = mModeController.getExtension(ClipboardController.class);
final NodeModel duplicate = clipboardController.duplicate(node, false);
IActor converter = new IActor() {
@Override
public void act() {
node.swapData(duplicate);
nodeChanged(node);
}
@Override
public void undo() {
node.swapData(duplicate);
nodeChanged(node);
}
@Override
public String getDescription() {
return "convertClonesToIndependentNodes";
}
};
final boolean shouldConvertChildNodes = node.subtreeClones().size() > 1;
mModeController.execute(converter, node.getMap());
if (shouldConvertChildNodes)
for (NodeModel child : node.getChildren()) convertCloneToNode(child);
}
use of org.freeplane.core.undo.IActor in project freeplane by freeplane.
the class MMapController method moveSingleNode.
private void moveSingleNode(final NodeModel child, final NodeModel newParent, final int newIndex, final boolean isLeft, final boolean changeSide) {
final NodeModel oldParent = child.getParentNode();
final int oldIndex = oldParent.getIndex(child);
final boolean wasLeft = child.isLeft();
final IActor actor = new IActor() {
public void act() {
moveNodeToWithoutUndo(child, newParent, newIndex, isLeft, changeSide);
}
public String getDescription() {
return "moveNode";
}
public void undo() {
moveNodeToWithoutUndo(child, oldParent, oldIndex, wasLeft, changeSide);
}
};
Controller.getCurrentModeController().execute(actor, newParent.getMap());
}
use of org.freeplane.core.undo.IActor in project freeplane by freeplane.
the class MMapController method insertSingleNewNode.
private void insertSingleNewNode(final NodeModel newNode, final NodeModel parent, final int index, final boolean newNodeIsLeft) {
final MapModel map = parent.getMap();
newNode.setLeft(newNodeIsLeft);
final IActor actor = new IActor() {
public void act() {
insertNodeIntoWithoutUndo(newNode, parent, index);
}
public String getDescription() {
return "addNewNode";
}
public void undo() {
deleteWithoutUndo(parent, index);
}
};
Controller.getCurrentModeController().execute(actor, map);
}
Aggregations