public void Redo()
        {
            if (redoStack.Count <= 0)
            {
                return;
            }

            string model;

            if (redoStack.TryPop(out model))
            {
                string current = TextSerializer.Serialize(this.Elements);
                undoStack.Push(current);

                Clear();
                TextSerializer.Deserialize(model, this.Elements);
                UpdateNextId();

                RedrawCanvas();
            }
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            //RequestWindowFeature(WindowFeatures.NoTitle);
            base.OnCreate(savedInstanceState);

            _repository = new Repository(
                System.IO.Path.Combine(
                    System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal),
                    "diagrams.db"));

            // create drawing canvas
            _canvasView = new CanvasView(this);

            RegisterForContextMenu(_canvasView);

            // get diagram from repository
            int diagramId = Intent.GetIntExtra("DiagramId", 0);

            if (diagramId > 0)
            {
                _currentDiagram = _repository.Get(diagramId);
            }
            else
            {
                _currentDiagram = new Diagram();
            }

            // create diagram
            TextSerializer.Deserialize(_currentDiagram.Model, _canvasView.Model.Elements);
            _canvasView.Model.UpdateNextId();
            _canvasView.Model.CurrentModel = TextSerializer.Serialize(_canvasView.Model.Elements);

            // set content view to drawing canvas
            SetContentView(_canvasView);

            //ActivityCompat.InvalidateOptionsMenu (this);

            Console.WriteLine("DiagramEditor OnCreate");
        }