public InheritanceMargin( IThreadingContext threadingContext, IStreamingFindUsagesPresenter streamingFindUsagesPresenter, ClassificationTypeMap classificationTypeMap, IClassificationFormatMap classificationFormatMap, IUIThreadOperationExecutor operationExecutor, InheritanceMarginTag tag, IWpfTextView textView, IAsynchronousOperationListener listener) { _threadingContext = threadingContext; _streamingFindUsagesPresenter = streamingFindUsagesPresenter; _workspace = tag.Workspace; _operationExecutor = operationExecutor; _textView = textView; _listener = listener; InitializeComponent(); var viewModel = InheritanceMarginViewModel.Create(classificationTypeMap, classificationFormatMap, tag, textView.ZoomLevel); DataContext = viewModel; ContextMenu.DataContext = viewModel; ToolTip = new ToolTip { Content = viewModel.ToolTipTextBlock, Style = (Style)FindResource("ToolTipStyle") }; }
public InheritanceMargin( IThreadingContext threadingContext, IStreamingFindUsagesPresenter streamingFindUsagesPresenter, ClassificationTypeMap classificationTypeMap, IClassificationFormatMap classificationFormatMap, IUIThreadOperationExecutor operationExecutor, InheritanceMarginTag tag, IWpfTextView textView) { _threadingContext = threadingContext; _streamingFindUsagesPresenter = streamingFindUsagesPresenter; _workspace = tag.Workspace; _operationExecutor = operationExecutor; _textView = textView; InitializeComponent(); // ZoomLevel of textView is percentage based. (e.g. 20 -> 400 means 20% -> 400%) // and the scaleFactor of CrispImage is 1 based. (e.g 1 means 100%) var scaleFactor = textView.ZoomLevel; var viewModel = InheritanceMarginViewModel.Create(classificationTypeMap, classificationFormatMap, tag, scaleFactor); DataContext = viewModel; ContextMenu.DataContext = viewModel; ToolTip = new ToolTip { Content = viewModel.ToolTipTextBlock, Style = (Style)FindResource("ToolTipStyle") }; }
public static InheritanceMarginViewModel Create( ClassificationTypeMap classificationTypeMap, IClassificationFormatMap classificationFormatMap, InheritanceMarginTag tag, double scaleFactor) { var members = tag.MembersOnLine; if (members.Length == 1) { var member = tag.MembersOnLine[0]; // Here we want to show a classified text with loc text, // e.g. 'Bar' is inherited. // But the classified text are inlines, so can't directly use string.format to generate the string var inlines = member.DisplayTexts.ToInlines(classificationFormatMap, classificationTypeMap); var startOfThePlaceholder = ServicesVSResources._0_is_inherited.IndexOf("{0}", StringComparison.Ordinal); var prefixString = ServicesVSResources._0_is_inherited[..startOfThePlaceholder];