예제 #1
0
        partial void OnPopupPanelChanged(DependencyPropertyChangedEventArgs e)
        {
            var previousPanel = e.OldValue as PopupPanel;
            var newPanel      = e.NewValue as PopupPanel;

            if (previousPanel?.Superview != null)
            {
                // Remove the current child, if any.
                previousPanel.Children.Clear();

                previousPanel.RemoveFromSuperview();
            }

            if (PopupPanel != null)
            {
                if (Child != null)
                {
                    // Make sure that the child does not find itself without a TemplatedParent
                    if (PopupPanel.TemplatedParent == null)
                    {
                        PopupPanel.TemplatedParent = TemplatedParent;
                    }

                    PopupPanel.AddSubview(Child);
                }

                RegisterPopupPanel();
            }
        }
예제 #2
0
        private protected override void OnUnloaded()
        {
            base.OnUnloaded();

            PopupPanel?.RemoveFromSuperview();
            UnregisterPopupPanelChild();
        }
예제 #3
0
        partial void OnPopupPanelChangedPartial(PopupPanel previousPanel, PopupPanel newPanel)
        {
            if (previousPanel?.Superview != null)
            {
                // Remove the current child, if any.
                previousPanel.Children.Clear();

                previousPanel.RemoveFromSuperview();
            }

            if (newPanel != null)
            {
                if (Child != null)
                {
                    // Make sure that the child does not find itself without a TemplatedParent
                    if (newPanel.TemplatedParent == null)
                    {
                        newPanel.TemplatedParent = TemplatedParent;
                    }

                    newPanel.AddSubview(Child);
                }

                newPanel.Background = GetPanelBackground();

                RegisterPopupPanel();
            }
        }
예제 #4
0
        partial void OnPopupPanelChangedPartial(PopupPanel previousPanel, PopupPanel newPanel)
        {
            if (previousPanel?.Superview != null)
            {
                // Remove the current child, if any.
                previousPanel.Children.Clear();

                previousPanel.RemoveFromSuperview();
            }

            if (newPanel != null)
            {
                if (Child != null)
                {
                    // Make sure that the child does not find itself without a TemplatedParent
                    if (newPanel.TemplatedParent == null)
                    {
                        newPanel.TemplatedParent = TemplatedParent;
                    }

                    newPanel.AddSubview(Child);
                }

                newPanel.Background = IsLightDismissEnabled
                                        ? new SolidColorBrush(Colors.Transparent)
                                        : null;

                RegisterPopupPanel();
            }
        }
예제 #5
0
        public Popup()
        {
            MainWindow = UIApplication.SharedApplication.KeyWindow ?? UIApplication.SharedApplication.Windows[0];

            PopupPanel = new PopupPanel(this);

            MainWindow.AddSubview(PopupPanel);

            UpdateDismissTriggers();
        }
예제 #6
0
        partial void InitializePartial()
        {
#if __ANDROID__
            if (_useNativePopup)
            {
                InitializeNativePartial();
            }
#endif

            PopupPanel = new PopupPanel(this);
        }
예제 #7
0
        partial void InitializePartial()
        {
#if __ANDROID__
            if (FeatureConfiguration.Popup.UseNativePopup)
            {
                InitializeNativePartial();
            }
#endif

            PopupPanel = new PopupPanel(this);
        }
예제 #8
0
        private void RegisterPopupPanel()
        {
            if (PopupPanel == null)
            {
                PopupPanel = new PopupPanel(this);
            }

            if (PopupPanel.Superview == null)
            {
                MainWindowContent?.AddSubview(PopupPanel);
            }
        }
예제 #9
0
        partial void OnPopupPanelChangedPartial(PopupPanel previousPanel, PopupPanel newPanel)
        {
            previousPanel?.Children.Clear();

            if (PopupPanel != null)
            {
                if (Child != null)
                {
                    PopupPanel.Children.Add(Child);
                }
            }
        }
예제 #10
0
        partial void OnPopupPanelChangedPartial(PopupPanel previousPanel, PopupPanel newPanel)
        {
            previousPanel?.Children.Clear();

            if (newPanel != null)
            {
                if (Child != null)
                {
                    newPanel.Children.Add(Child);
                }
                newPanel.Background = GetPanelBackground();
            }
        }
예제 #11
0
        private void RegisterPopupPanel()
        {
            if (PopupPanel == null)
            {
                PopupPanel = new PopupPanel(this);
                UpdateDismissTriggers();
            }

            if (PopupPanel.Superview == null)
            {
                MainWindow.AddSubview(PopupPanel);
            }
        }
예제 #12
0
        partial void OnPopupPanelChangedPartial(PopupPanel previousPanel, PopupPanel newPanel)
        {
            previousPanel?.Children.Clear();

            if (newPanel != null)
            {
                if (Child != null)
                {
                    newPanel.Children.Add(Child);
                }
                newPanel.Background = IsLightDismissEnabled
                                        ? new SolidColorBrush(Colors.Transparent)
                                        : null;
            }
        }
예제 #13
0
        protected override void OnIsOpenChanged(bool oldIsOpen, bool newIsOpen)
        {
            base.OnIsOpenChanged(oldIsOpen, newIsOpen);

            RegisterPopupPanel();

            UpdateLightDismissLayer(newIsOpen);

            // this is necessary as during initial measure the panel was Collapsed
            // and got 0 available size from its parent (root Window element, usually a Frame)
            // this will ensure the size of its child will be calculated properly
            PopupPanel.OnInvalidateMeasure();

            EnsureForward();
        }
예제 #14
0
        public Popup()
        {
            _popupWindow = new PopupWindow(this, WindowManagerLayoutParams.MatchParent, WindowManagerLayoutParams.MatchParent, true);

            _popupWindow.Width     = WindowManagerLayoutParams.MatchParent;
            _popupWindow.Height    = WindowManagerLayoutParams.MatchParent;
            _popupWindow.Focusable = true;
            _popupWindow.Touchable = true;

            OnIsLightDismissEnabledChanged(false, true);

            _popupWindow.DismissEvent += OnPopupDismissed;

            PopupPanel = new PopupPanel(this);
        }
예제 #15
0
        partial void OnPopupPanelChangedPartialNative(PopupPanel previousPanel, PopupPanel newPanel)
        {
            previousPanel?.Children.Clear();

            if (PopupPanel != null)
            {
                if (Child != null)
                {
                    PopupPanel.Children.Add(Child);
                }
            }

            _popupWindow.ContentView = newPanel;

            UpdatePopupPanelDismissibleBackground(IsLightDismissEnabled);
        }
예제 #16
0
 /// <summary>
 /// Ensure that Popup panel is forward-most in the window. This ensures it isn't hidden behind the main content, which can happen when
 /// the Popup is created during initial launch.
 /// </summary>
 private void EnsureForward()
 {
     //macOS does not have BringSubviewToFront,
     //solution based on https://stackoverflow.com/questions/4236304/os-x-version-of-bringsubviewtofront
     if (PopupPanel.Layer.SuperLayer != null)
     {
         var superlayer = PopupPanel.Layer.SuperLayer;
         PopupPanel.Layer.RemoveFromSuperLayer();
         superlayer.AddSublayer(PopupPanel.Layer);
     }
     else if (PopupPanel.Superview != null)
     {
         var superview = PopupPanel.Superview;
         PopupPanel.RemoveFromSuperview();
         superview.AddSubview(PopupPanel);
     }
 }
예제 #17
0
        protected override void OnChildChanged(UIElement oldChild, UIElement newChild)
        {
            base.OnChildChanged(oldChild, newChild);

            if (PopupPanel != null)
            {
                if (oldChild != null)
                {
                    PopupPanel.RemoveChild(oldChild);
                }

                if (newChild != null)
                {
                    PopupPanel.AddSubview(newChild);
                }
            }
        }
예제 #18
0
        partial void OnPopupPanelChangedPartial(PopupPanel previousPanel, PopupPanel newPanel)
        {
#if __ANDROID__
            if (_useNativePopup)
            {
                OnPopupPanelChangedPartialNative(previousPanel, newPanel);
            }
            else
#endif
            {
                previousPanel?.Children.Clear();

                if (newPanel != null)
                {
                    if (Child != null)
                    {
                        newPanel.Children.Add(Child);
                    }
                    newPanel.Background = GetPanelBackground();
                }
            }
        }
예제 #19
0
        partial void OnPopupPanelChanged(DependencyPropertyChangedEventArgs e)
        {
            var previousPanel = e.OldValue as PopupPanel;
            var newPanel      = e.NewValue as PopupPanel;

            if (previousPanel?.Superview != null)
            {
                // Remove the current child, if any.
                previousPanel.Children.Clear();

                previousPanel.RemoveFromSuperview();
            }

            if (PopupPanel != null)
            {
                if (Child != null)
                {
                    PopupPanel.AddSubview(Child);
                }

                RegisterPopupPanel();
            }
        }
예제 #20
0
 public Popup()
 {
     PopupPanel = new PopupPanel(this);
 }
예제 #21
0
 partial void OnPopupPanelChangedPartialNative(PopupPanel previousPanel, PopupPanel newPanel);
예제 #22
0
        protected override void OnUnloaded()
        {
            base.OnUnloaded();

            PopupPanel?.RemoveFromSuperview();
        }
예제 #23
0
		partial void OnPopupPanelChangedPartial(PopupPanel previousPanel, PopupPanel newPanel)
		{
		}
예제 #24
0
 partial void InitializePartial()
 {
     PopupPanel = new PopupPanel(this);
 }