internal TextViewTracker(IWpfTextView textView, IProjectTracker projectTracker, VSTextProperties vsTextProperties)
      : base() {
      Contract.Requires(textView != null);
      Contract.Requires(projectTracker != null);

      ContractsPackageAccessor.Current.ExtensionFailed += OnFailed;
      this.TextView = textView;
      if (textView.TextBuffer != null)
      {
        textView.TextBuffer.Changed += OnTextBufferChanged;
      }
      TextView.Closed += OnClosed;
      this._projectTracker = projectTracker;
      projectTracker.BuildDone += OnBuildDone;
//      ContractsPackageAccessor.Current.NewSourceFile += OnNewSourceFile;
      ContractsPackageAccessor.Current.NewCompilation += OnNewComilation;
      
      //Timer
      _textBufferChangedTimer = new System.Timers.Timer();
      _textBufferChangedTimer.AutoReset = false;
      _textBufferChangedTimer.Elapsed += OnTextViewSettled;
      _textBufferChangedTimer.Interval = DelayOnTextViewOpened; //Wait two seconds before attempting to fetch any syntactic/semantic information. This gives VS a chance to properly initialize everything.
      _textBufferChangedTimer.Start();

      //Set the text properties
      VSTextProperties = vsTextProperties;
      ContractsPackageAccessor.Current.QueueWorkItem((() => { VSTextProperties.LineHeight = TextView.LineHeight; }));

      //Set the file name
      Document document = TextView.TextSnapshot.GetOpenDocumentInCurrentContextWithChanges();
      FileName = document.Id;
    }
Beispiel #2
0
    private TextViewTracker(IWpfTextView textView, ProjectTracker projectTracker, VSTextProperties vsTextProperties)
      : base() {
      Contract.Requires(textView != null);
      Contract.Requires(projectTracker != null);

      VSServiceProvider.Current.ExtensionFailed += OnFailed;
      this.TextView = textView;
      if (textView.TextBuffer != null)
      {
        textView.TextBuffer.Changed += OnTextBufferChanged;
      }
      TextView.Closed += OnClosed;
      this._projectTracker = projectTracker;
      projectTracker.BuildDone += OnBuildDone;
//      VSServiceProvider.Current.NewSourceFile += OnNewSourceFile;
      VSServiceProvider.Current.NewCompilation += OnNewComilation;
      
      //Timer
      _textBufferChangedTimer = new System.Timers.Timer();
      _textBufferChangedTimer.AutoReset = false;
      _textBufferChangedTimer.Elapsed += OnTextViewSettled;
      _textBufferChangedTimer.Interval = DelayOnTextViewOpened; //Wait two seconds before attempting to fetch any syntactic/semantic information. This gives VS a chance to properly initialize everything.
      _textBufferChangedTimer.Start();

      //Set the text properties
      VSTextProperties = vsTextProperties;
      VSServiceProvider.Current.QueueWorkItem((() => { VSTextProperties.LineHeight = TextView.LineHeight; }));

      //Set the file name
      var fn = TextView.GetFileName();
      if (fn == null) { fn = "dummyFileName"; }
      FileName = new FileName(fn);
    }
    public MetadataContractAdornment(ITrackingSpan span, VSTextProperties vsTextProperties, Logger logger, Action queueRefreshLineTransfomer, AdornmentOptions options = AdornmentOptions.None)
      : base(span, vsTextProperties, logger, queueRefreshLineTransfomer, options) 
    {
      Contract.Requires(span != null);
      Contract.Requires(logger != null);

      SizeChanged += OnSizeChanged;
    }
 public static ITextViewTracker GetOrCreateTextViewTracker(IWpfTextView textView, IProjectTracker projectTracker, VSTextProperties vsTextProperties)
 {
     Contract.Requires(textView != null);
     Contract.Requires(projectTracker != null);
     Contract.Ensures(Contract.Result<ITextViewTracker>() != null);
     return textView.TextBuffer.Properties.GetOrCreateSingletonProperty<ITextViewTracker>(TextViewTrackerAccessor.TextViewTrackerKey, delegate
     {
         return ContractsPackageAccessor.Current.GetVersionedServicesFactory().CreateTextViewTracker(textView, projectTracker, vsTextProperties);
     });
 }
    public PurityAdornment(VSTextProperties vsTextProperties, ContractAdornment contractAdornment) {
      _vsTextProperties = vsTextProperties;

      var purityBlock = new TextBlock();
      purityBlock.Inlines.Add(new Run("["));
      var pureRun = new Run("Pure");
      pureRun.Foreground = _vsTextProperties.TypeColor;
      purityBlock.Inlines.Add(pureRun);
      purityBlock.Inlines.Add(new Run("]"));
      _visual = purityBlock;

      //contractAdornment.Unfocused += OnUnfocused;
      //contractAdornment.Focused += OnFocused;
      //contractAdornment.Collapsed += OnCollapsed;
      //contractAdornment.Expanded += OnExpanded;
    }
    private MetadataTracker(IWpfTextView textView, ProjectTracker projectTracker, VSTextProperties vsTextProperties) {
      Contract.Requires(projectTracker != null);
      Contract.Requires(textView != null);
      this._vsTextProperties = vsTextProperties;
      this._textView = textView;
      this._projectTracker = projectTracker;
      VSServiceProvider.Current.ExtensionFailed += OnExtensionFailed;

      _timer = new System.Timers.Timer();
      _timer.AutoReset = false;

        if (!AdornmentManager.TryGetAdornmentManager(textView, "MetadataAdornments", out _adornmentManager))
      {
        VSServiceProvider.Current.Logger.WriteToLog("Metadata adornments layer not instantiated.");
        return;
      }
      
      _timer.Elapsed += OnLayoutSettled;
      textView.LayoutChanged += OnLayoutChanged;
    }
 public ITextViewTracker CreateTextViewTracker(IWpfTextView textView, IProjectTracker projectTracker, VSTextProperties vsTextProperties)
 {
     return new TextViewTracker(textView, projectTracker, vsTextProperties);
 }
Beispiel #8
0
 public static TextViewTracker GetOrCreateTextViewTracker(IWpfTextView textView, ProjectTracker projectTracker, VSTextProperties vsTextProperties) {
   Contract.Requires(textView != null);
   Contract.Requires(projectTracker != null);
   Contract.Ensures(Contract.Result<TextViewTracker>() != null);
   return textView.TextBuffer.Properties.GetOrCreateSingletonProperty<TextViewTracker>(TextViewTrackerKey, delegate { return new TextViewTracker(textView, projectTracker, vsTextProperties); });
 }
 /// <summary>
 /// Gets or creates a MetadataTracker for a particular text view.
 /// </summary>
 public static MetadataTracker GetOrCreateMetadataTracker(IWpfTextView textView, ProjectTracker projectTracker, VSTextProperties vsTextProperties) {
   Contract.Requires(textView != null);
   Contract.Assume(textView.Properties != null);
   return textView.Properties.GetOrCreateSingletonProperty<MetadataTracker>(MetadataTrackerKey, delegate { return new MetadataTracker(textView, projectTracker, vsTextProperties); });
 }
    /// <summary>
    /// Creates a new ContractAdornment for the given method (specified by the tag).
    /// </summary>
    public ContractAdornment(ITrackingSpan span, VSTextProperties vsTextProperties, Logger logger, Action queueRefreshLineTransfomer, AdornmentOptions options = AdornmentOptions.None) {
      Contract.Requires(span != null);
      Contract.Requires(logger != null);

      _logger = logger;
      Span = span;
      InitializeComponent();
      _queueRefreshLineTransformer = queueRefreshLineTransfomer;
      Visibility = Visibility.Collapsed;
      _vsTextProperties = vsTextProperties;
      for (int i = 0; i < vsTextProperties.TabSize; i++) {
        _tabsAsSpaces += " ";
      }
      _options = options;
      LayoutUpdated += OnLayoutUpdated;
      IsVisibleChanged += OnVisibilityChanged;
      Visual.MouseEnter += OnMouseEnter;
      Visual.MouseLeave += OnMouseLeave;

      int size = (int)vsTextProperties.FontSize;
      /*
      if (size <= 9) size = 8;
      else if (size == 10) size = 9;
      else size = size - 2;
      */
      rootGrid.SetValue(TextBlock.FontSizeProperty, (double)size);
      SetVisual();
    }