コード例 #1
0
#pragma warning restore 0169

        public HexToolTipProviderImpl(WpfHexView wpfHexView)
        {
            if (wpfHexView == null)
            {
                throw new ArgumentNullException(nameof(wpfHexView));
            }
            this.wpfHexView         = wpfHexView;
            spaceReservationManager = wpfHexView.GetSpaceReservationManager(PredefinedHexSpaceReservationManagerNames.ToolTip);
        }
コード例 #2
0
        void PresenterUpdated(HexIntellisenseSession session)
        {
            var sessionState = GetSessionState(session);

            if (sessionState.SpaceReservationAgent != null)
            {
                sessionState.SpaceReservationManager.RemoveAgent(sessionState.SpaceReservationAgent);
            }
            Debug.Assert(sessionState.SpaceReservationAgent == null);

            var presenter      = session.Presenter;
            var popupPresenter = presenter as IHexPopupIntellisensePresenter;

            if (popupPresenter != null)
            {
                if (sessionState.SpaceReservationManager == null)
                {
                    sessionState.SetSpaceReservationManager(wpfHexView.GetSpaceReservationManager(popupPresenter.SpaceReservationManagerName));
                    sessionState.SpaceReservationManager.AgentChanged += SpaceReservationManager_AgentChanged;
                }
                UnregisterPopupIntellisensePresenterEvents(sessionState.PopupIntellisensePresenter);
                sessionState.PopupIntellisensePresenter = popupPresenter;
                RegisterPopupIntellisensePresenterEvents(sessionState.PopupIntellisensePresenter);

                var presentationSpan = popupPresenter.PresentationSpan;
                var surfaceElement   = popupPresenter.SurfaceElement;
                if (!presentationSpan.IsDefault && surfaceElement != null)
                {
                    sessionState.SpaceReservationAgent = sessionState.SpaceReservationManager.CreatePopupAgent(presentationSpan, popupPresenter.PopupStyles, surfaceElement);
                    sessionState.SpaceReservationManager.AddAgent(sessionState.SpaceReservationAgent);
                }
            }
            else
            {
                var customPresenter = presenter as IHexCustomIntellisensePresenter;
                if (customPresenter != null)
                {
                    customPresenter.Render();
                }
                else
                {
                    Debug.Assert(presenter == null, $"Unsupported presenter: {presenter?.GetType()}");
                }
            }
        }