private TutorialTooltipView TryAddDialogTemplateChild(string xamlId, Func <TutorialTooltipView, TutorialTooltipPositionTracker.OnUpdateTransformEvent> positionDialog)
        {
            TutorialTooltipView dialog = GetEnabledTemplateChild(xamlId);

            if (dialog != null)
            {
                m_dialogs.Add(xamlId, new PositionedDialog(dialog, positionDialog(dialog)));
            }
            return(dialog);
        }
        private TutorialTooltipView GetEnabledTemplateChild(string xamlId)
        {
            TutorialTooltipView child = (TutorialTooltipView)GetTemplateChild(xamlId);

            if (child.IsEnabled)
            {
                return(child);
            }
            else
            {
                child.Visibility = Visibility.Collapsed;
                return(null);
            }
        }
        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            TutorialTooltipView mapModeDialog = (TutorialTooltipView)GetTemplateChild(MapModeDialogName);

            m_positionedMapModeDialog = new PositionedDialog(mapModeDialog, (x, y, w, h) =>
            {
                ((TranslateTransform)mapModeDialog.RenderTransform).X = x - mapModeDialog.GetTooltipWidth() - DialogGap;
                ((TranslateTransform)mapModeDialog.RenderTransform).Y = y + 2;
            });

            FlattenButtonView flattenButtonView = ViewHelpers.FindChildrenOfType <FlattenButtonView>(m_mainWindow.MainGrid.Children).Single();

            m_mapModePositionTracker = new TutorialTooltipPositionTracker(m_mainWindow, flattenButtonView);
            m_mapModePositionTracker.OnUpdateTransform += m_positionedMapModeDialog.DialogPosition;
            mapModeDialog.RenderTransformOrigin         = new Point(0.0, 0.0);
            mapModeDialog.RenderTransform = new TranslateTransform();

            TutorialTooltipView dropPinDialog = (TutorialTooltipView)GetTemplateChild(DropPinDialogName);

            m_positionedDropPinDialog = new PositionedDialog(dropPinDialog, (x, y, w, h) =>
            {
                ((TranslateTransform)dropPinDialog.RenderTransform).X = x + w + dropPinDialog.ArrowPointHeight + DialogGap;
                ((TranslateTransform)dropPinDialog.RenderTransform).Y = y - (dropPinDialog.GetTooltipHeight() - h) - 2;
            });

            MyPinCreationButtonView myPinCreationButtonView = ViewHelpers.FindChildrenOfType <MyPinCreationButtonView>(m_mainWindow.MainGrid.Children).Single();

            m_dropPinPositionTracker = new TutorialTooltipPositionTracker(m_mainWindow, myPinCreationButtonView);
            m_dropPinPositionTracker.OnUpdateTransform += m_positionedDropPinDialog.DialogPosition;
            dropPinDialog.RenderTransformOrigin         = new Point(0.0, 0.0);
            dropPinDialog.RenderTransform = new TranslateTransform();

            m_showAnimation            = (Storyboard)FindResource("ShowAnimation");
            m_hideAnimation            = ((Storyboard)FindResource("HideAnimation")).Clone();
            m_hideAnimation.Completed += (o, e) =>
            {
                m_hideAnimationRunning = false;
                Visibility             = Visibility.Hidden;
            };
        }
 public PositionedDialog(TutorialTooltipView dialog, TutorialTooltipPositionTracker.OnUpdateTransformEvent dialogPosition)
 {
     Dialog         = dialog;
     DialogPosition = dialogPosition;
 }