Search in sources :

Example 36 with IActor

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);
    }
}
Also used : IActor(org.freeplane.core.undo.IActor) EncryptionModel(org.freeplane.features.map.EncryptionModel)

Example 37 with IActor

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());
}
Also used : IActor(org.freeplane.core.undo.IActor) EncryptionModel(org.freeplane.features.map.EncryptionModel)

Example 38 with IActor

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);
}
Also used : ClipboardController(org.freeplane.features.clipboard.ClipboardController) NodeModel(org.freeplane.features.map.NodeModel) IActor(org.freeplane.core.undo.IActor) MModeController(org.freeplane.features.mode.mindmapmode.MModeController)

Example 39 with IActor

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());
}
Also used : NodeModel(org.freeplane.features.map.NodeModel) IActor(org.freeplane.core.undo.IActor) Point(java.awt.Point)

Example 40 with IActor

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);
}
Also used : IActor(org.freeplane.core.undo.IActor) MapModel(org.freeplane.features.map.MapModel)

Aggregations

IActor (org.freeplane.core.undo.IActor)123 NodeModel (org.freeplane.features.map.NodeModel)30 ModeController (org.freeplane.features.mode.ModeController)28 MapModel (org.freeplane.features.map.MapModel)27 MapController (org.freeplane.features.map.MapController)11 AttributeRegistry (org.freeplane.features.attribute.AttributeRegistry)10 Color (java.awt.Color)8 Point (java.awt.Point)6 MMapController (org.freeplane.features.map.mindmapmode.MMapController)6 NodeStyleModel (org.freeplane.features.nodestyle.NodeStyleModel)6 Controller (org.freeplane.features.mode.Controller)5 IStyle (org.freeplane.features.styles.IStyle)5 MapStyleModel (org.freeplane.features.styles.MapStyleModel)5 NoSuchElementException (java.util.NoSuchElementException)4 LengthUnits (org.freeplane.core.ui.LengthUnits)4 AttributeRegistryElement (org.freeplane.features.attribute.AttributeRegistryElement)4 Date (java.util.Date)3 IExtension (org.freeplane.core.extension.IExtension)3 IUndoHandler (org.freeplane.core.undo.IUndoHandler)3 EdgeModel (org.freeplane.features.edge.EdgeModel)3