1

I have a navigation plugin which I want to extend to allow support for context navigation. I've got everything I need except for the NavigationOptions instance. In my INavigateFromHereProvider I get called with an IDataContext so can create the NavigationOptions from this using the NavigationOptions.FromDataContext method. Great.

In my context action I don't get called with a IDataContext, I get given a ICSharpContextActionDataProvider during construction. I can get my IDeclaredElement from this to base my navigation decision on, but I'm not sure how to create my NavigationOptions instance. It feels like I should be using NavigationOptions.FromWindowContext but I seems to need a PopupWindowContextSource and I don't know where to get one of these from.

So where can I get a relevant PopupWindowContextSource to create my NavigationOptions from?

2 Answers 2

1

Ah, discovered the answer (well, an answer).

I can use this:

 var popupWindowContextSource = solution.GetComponent<MainWindowPopupWindowContext>().Source;

I'm not sure if this is the most appropriate thing to use, but it seems to work.

Sign up to request clarification or add additional context in comments.

Comments

0

You might be better off using NavigationOptions.FromDataContext. This will pull a window context from the IDataContext that you've already got. This should give you a popup window context that's appropriate to where you've been invoked from - anchored to the editor window, or the tree view, or whatever. Using the MainWindowPopupContext will give you a context that's based on the main Visual Studio window, which will likely work and be fine, but might not be the most relevant.

3 Comments

I don't have a IDataContext at this point. I'm adding support for doing the navigation via Alt-Enter (a context action) so in my IsAvailable(IUserDataHolder cache) method I only have access to the ICSharpContextActionDataProvider I was given in the constructor
It's in this method that I want to get a popupwindowcontextsource
Oops. Misread the question. I think using MainWindowPopupContext is fine, then, or you could even create your own that derives from PopupWindowContext.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.