void pasteMenu_Click(object sender, EventArgs e)
        {
            Undo.Push(new UndoTourSlidelistChange(Language.GetLocalizedText(544, "Paste Object"), tour));

            IDataObject dataObject = Clipboard.GetDataObject();

            if (dataObject.GetDataPresent(Overlay.ClipboardFormat))
            {
                // add try catch block
                string xml = dataObject.GetData(Overlay.ClipboardFormat) as string;
                System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                doc.LoadXml(xml);
                ClearSelection();
                System.Xml.XmlNode parent = doc["Overlays"];
                foreach (XmlNode child in parent.ChildNodes)
                {
                    Overlay copy = Overlay.FromXml(tour.CurrentTourStop, child);
                    if (copy.AnimationTarget != null)
                    {
                        copy.Id = Guid.NewGuid().ToString();
                        copy.AnimationTarget.TargetID = copy.Id;
                        tour.CurrentTourStop.AnimationTargets.Add(copy.AnimationTarget);
                    }
                    bool found = false;
                    float maxX = 0;
                    float maxY = 0;
                    foreach (Overlay item in tour.CurrentTourStop.Overlays)
                    {
                        if (item.Id == copy.Id && item.GetType() == copy.GetType())
                        {
                            found = true;
                            if (maxY < item.Y || maxX < item.X)
                            {
                                maxX = item.X;
                                maxY = item.Y;
                            }
                        }
                    }

                    if (found)
                    {
                        copy.X = maxX + 20;
                        copy.Y = maxY + 20;
                    }

                    tour.CurrentTourStop.AddOverlay(copy);
                    Focus = copy;
                    selection.AddSelection(Focus);
                    OverlayList.UpdateOverlayList(tour.CurrentTourStop, Selection);
                }
            }
            else if (UiTools.IsMetaFileAvailable())
            {
                Image img = UiTools.GetMetafileFromClipboard();
                if (img != null)
                {
                    BitmapOverlay bmp = new BitmapOverlay( tour.CurrentTourStop, img);
                    tour.CurrentTourStop.AddOverlay(bmp);
                    bmp.X = contextPoint.X;
                    bmp.Y = contextPoint.Y;
                    Focus = bmp;
                    selection.SetSelection(Focus);
                    OverlayList.UpdateOverlayList(tour.CurrentTourStop, Selection);
                }
            }
            else if (Clipboard.ContainsText() && Clipboard.GetText().Length > 0)
            {
                TextObject temp = TextEditor.DefaultTextobject;
                temp.Text = Clipboard.GetText();

                TextOverlay text = new TextOverlay( temp);
                //text.X = Earth3d.MainWindow.ClientRectangle.Width / 2;
                //text.Y = Earth3d.MainWindow.ClientRectangle.Height / 2;
                text.X = contextPoint.X;
                text.Y = contextPoint.Y;
                tour.CurrentTourStop.AddOverlay(text);
                Focus = text;
                selection.SetSelection(Focus);
                OverlayList.UpdateOverlayList(tour.CurrentTourStop, Selection);
            }
            else if (Clipboard.ContainsImage())
            {
                Image img = Clipboard.GetImage();
                BitmapOverlay bmp = new BitmapOverlay( tour.CurrentTourStop, img);
                tour.CurrentTourStop.AddOverlay(bmp);
                bmp.X = contextPoint.X;
                bmp.Y = contextPoint.Y;
                Focus = bmp;
                selection.SetSelection(Focus);
                OverlayList.UpdateOverlayList(tour.CurrentTourStop, Selection);
            }
        }
        public bool AddText(string p, TextObject textObject)
        {
            if (tour == null || tour.CurrentTourStop == null)
            {
                return false;
            }

            TextOverlay text = new TextOverlay( textObject);
            text.Color = textObject.ForegroundColor;
            text.X = 960;
            text.Y = 600;
            //todo localize
            Undo.Push(new UndoTourStopChange(Language.GetLocalizedText(547, "Insert Text"), tour));
            tour.CurrentTourStop.AddOverlay(text);
            OverlayList.UpdateOverlayList(tour.CurrentTourStop, Selection);
            return true;
        }
 public Overlay AddOverlay(Overlay ol)
 {
     if (tour == null || tour.CurrentTourStop == null)
     {
         return null;
     }
     if(ol.GetType() == typeof(ShapeOverlay))
     {
         ShapeOverlay srcShapeOverlay = (ShapeOverlay)ol;
         if (srcShapeOverlay != null)
         {
             ShapeOverlay shape = new ShapeOverlay(tour.CurrentTourStop, srcShapeOverlay.ShapeType);
             shape.Width = srcShapeOverlay.Width;
             shape.Height = srcShapeOverlay.Height;
             shape.X = contextPoint.X;
             shape.Y = contextPoint.Y;
             shape.Color = srcShapeOverlay.Color;
             shape.RotationAngle = srcShapeOverlay.RotationAngle;
             if (ol.AnimationTarget != null)
             {
                 shape.AnimationTarget = ol.AnimationTarget.Clone(shape);
             }
             tour.CurrentTourStop.AddOverlay(shape);
             return shape;
         }
     }
     else if (ol.GetType() == typeof(TextOverlay))
     {
         TextOverlay srcTxtOverlay = (TextOverlay)ol;
         if (srcTxtOverlay != null)
         {
             TextOverlay text = new TextOverlay(srcTxtOverlay.TextObject);
             text.X = contextPoint.X;
             text.Y = contextPoint.Y;
             text.Color = srcTxtOverlay.Color;
             if (ol.AnimationTarget != null)
             {
                 text.AnimationTarget = ol.AnimationTarget.Clone(text);
             }
             tour.CurrentTourStop.AddOverlay(text);
             return text;
         }
     }
     else if (ol.GetType() == typeof(BitmapOverlay))
     {
         BitmapOverlay srcBmpOverlay = (BitmapOverlay)ol;
         if (srcBmpOverlay != null)
         {
             BitmapOverlay bitmap = srcBmpOverlay.Copy(tour.CurrentTourStop);
             bitmap.X = contextPoint.X;
             bitmap.Y = contextPoint.Y;
             if (ol.AnimationTarget != null)
             {
                 bitmap.AnimationTarget = ol.AnimationTarget.Clone(bitmap);
             }
             tour.CurrentTourStop.AddOverlay(bitmap);
             return bitmap;
         }
     }
     else if (ol.GetType() == typeof(FlipbookOverlay))
     {
         FlipbookOverlay srcFlipbookOverlay = (FlipbookOverlay)ol;
         if (srcFlipbookOverlay != null)
         {
             FlipbookOverlay bitmap = srcFlipbookOverlay.Copy(tour.CurrentTourStop);
             bitmap.X = contextPoint.X;
             bitmap.Y = contextPoint.Y;
             if (ol.AnimationTarget != null)
             {
                 bitmap.AnimationTarget = ol.AnimationTarget.Clone(bitmap);
             }
             tour.CurrentTourStop.AddOverlay(bitmap);
             return bitmap;
         }
     }
     return null;
 }