csShared.Controls.Popups.MapCallOut.MapCallOutViewModel.UpdateCallout C# (CSharp) Method

UpdateCallout() public method

public UpdateCallout ( ) : void
return void
        public void UpdateCallout()
        {
            if (Pinned)
            {
                MaxWidth = double.NaN;
                Pos = new Thickness(0, 0, 0, 0);
                //ContentVerticalAlignment = VerticalAlignment.Stretch;
                ShowArrow = false;
                CanClose = true;
                CanPin = false;
                ContentAlignment = HorizontalAlignment.Stretch;
                GridAlignment = HorizontalAlignment.Stretch;
            }
            else
            {
                MaxWidth = Width;
                ContentAlignment = HorizontalAlignment.Left;
                ContentVerticalAlignment = VerticalAlignment.Top;
                ShowArrow = true;

                CanClose = true;
                if (PinEnabled)
                    CanPin = true;
                var p = AppStateSettings.Instance.ViewDef.MapControl.MapToScreen(Point);
                switch (orientation)
                {
                    case CallOutOrientation.Top:
                        Pos = new Thickness(p.X - Width / 2, 0, 0, AppStateSettings.Instance.ViewDef.MapControl.ActualHeight - p.Y + 20);
                        GridMargin = new Thickness(0, 0, 0, 20);
                        PathMargin = new Thickness(0, 0, 0, 0);
                        PathOrientation = 0.0;
                        PathHorizontalAlignment = HorizontalAlignment.Center;
                        GridAlignment = HorizontalAlignment.Center;
                        break;
                    case CallOutOrientation.Right:
                        PathVerticalAlignment = VerticalAlignment.Top;
                        PathOrientation = 90.0;
                        GridMargin = new Thickness(10, 0, 0, 0);
                        Pos = new Thickness(p.X + 20, Math.Max(p.Y - 100, 0), 0, Math.Min((p.Y), 0));
                        PathMargin = new Thickness(0, p.Y < 80 ? Math.Max(p.Y, -20) : 80, 0, 0);
                        PathHorizontalAlignment = HorizontalAlignment.Left;
                        GridAlignment = HorizontalAlignment.Left;

                        if (p.Y < -20 && mcov != null && mcov.Visibility == Visibility.Visible)
                            mcov.Visibility = Visibility.Collapsed;
                        else if (p.Y > -20 && mcov != null && mcov.Visibility == Visibility.Collapsed)
                            mcov.Visibility = Visibility.Visible;
                        break;
                    case CallOutOrientation.RightSideMenu:
                        PathVerticalAlignment = VerticalAlignment.Top;
                        PathOrientation = 90.0;
                        GridMargin = new Thickness(0, 0, 0, 0);
                        Pos = new Thickness(mcov.ActualWidth - Width, 0, 0, 0);
                        mcov.ContentGrid.Height = mcov.Height = (mcov.Parent as System.Windows.Controls.ContentControl).ActualHeight; // TODO Must be improved
                        mcov.ContentGrid.Width = Width;
                        PathMargin = new Thickness(0, 0, 0, 0);
                        PathHorizontalAlignment = HorizontalAlignment.Left;
                        GridAlignment = HorizontalAlignment.Left;

                        if (p.Y < -20 && mcov != null && mcov.Visibility == Visibility.Visible)
                            mcov.Visibility = Visibility.Collapsed;
                        else if (p.Y > -20 && mcov != null && mcov.Visibility == Visibility.Collapsed)
                            mcov.Visibility = Visibility.Visible;
                        break;
                }
            }
        }