private bool HandleTogglePreview(GraphCommand command)
        {
            uint bubbleId = (uint)command.GetArgument(0);

            if (bubbleId == uint.MaxValue)
            {
                return(ToggleAllPreviews());
            }

            PreviewBubble previewBubble = bubbleCollection[bubbleId] as PreviewBubble;

            if (previewBubble == null)
            {
                return(false);
            }

            VisualNode node = GetVisualNode(previewBubble.OwnerId);

            if (node == null)
            {
                return(false);
            }

            List <IVisualNode> nodeList = new List <IVisualNode>();

            nodeList.Add(node);

            undoRedoRecorder.BeginGroup();
            undoRedoRecorder.RecordNodeModificationForUndo(nodeList);
            undoRedoRecorder.EndGroup();

            if (node.NodeStates.HasFlag(States.PreviewHidden))
            {
                node.ClearState(States.PreviewHidden);
                CurrentSynchronizer.BeginQueryNodeValue(node.NodeId);
            }
            else
            {
                node.SetNodeState(States.PreviewHidden);
            }

            previewBubble.Collapse(node.NodeStates.HasFlag(States.PreviewHidden));

            return(true);
        }