/// <summary>Called when the associated data file changed: added/removed assemblies or includes.</summary> /// <param name="dataDiff">The difference between the old and new data.</param> private void OnFileDataChanged([NotNull] T4DeclaredAssembliesDiff dataDiff) { ShellLocks.AssertWriteAccessAllowed(); if (!AssemblyReferenceManager.ProcessDiff(dataDiff)) { return; } var changeBuilder = new PsiModuleChangeBuilder(); changeBuilder.AddModuleChange(this, PsiModuleChange.ChangeType.Modified); // TODO: get rid of this queuing? ShellLocks.ExecuteOrQueueEx( "T4PsiModuleChange", () => ChangeManager.ExecuteAfterChange( () => ShellLocks.ExecuteWithWriteLock( () => { if (!IsValid()) { return; } ChangeManager.OnProviderChanged( ChangeProvider, changeBuilder.Result, SimpleTaskExecutor.Instance ); }) ) ); }
/// <summary>Called when the associated data file changed: added/removed assemblies or includes.</summary> /// <param name="dataDiff">The difference between the old and new data.</param> private void OnFileDataChanged([NotNull] T4DeclaredAssembliesDiff dataDiff) { ShellLocks.AssertWriteAccessAllowed(); if (!AssemblyReferenceManager.ProcessDiff(dataDiff)) { return; } NotifyModuleChange(); }
public ExpressionChooser([NotNull] JetPopupMenus popupMenus, [NotNull] ShellLocks shellLocks, [NotNull] IActionManager actionManager, [NotNull] IThreading threading, [NotNull] IDocumentMarkupManager markupManager) { myPopupMenus = popupMenus; myShellLocks = shellLocks; myActionManager = actionManager; myMarkupManager = markupManager; myThreading = threading; }
public void Dispose() { var assemblyCookies = MyAssemblyReferences.Values.ToArray(); if (assemblyCookies.Length == 0) { return; } ShellLocks.ExecuteWithWriteLock( () => { foreach (var assemblyCookie in assemblyCookies) { assemblyCookie.Dispose(); } } ); MyAssemblyReferences.Clear(); }
private void NotifyModuleChange() { var changeBuilder = new PsiModuleChangeBuilder(); changeBuilder.AddModuleChange(this, PsiModuleChange.ChangeType.Modified); // TODO: get rid of this queuing? ShellLocks.ExecuteOrQueueEx( "T4PsiModuleChange", () => ChangeManager.ExecuteAfterChange( () => ShellLocks.ExecuteWithWriteLock( () => ChangeManager.OnProviderChanged( ChangeProvider, changeBuilder.Result, SimpleTaskExecutor.Instance ) ) ) ); }
private void OnFileDataChanged(Pair <IPsiSourceFile, T4DeclaredAssembliesDiff> pair) { (IPsiSourceFile first, T4DeclaredAssembliesDiff second) = pair; if (first != SourceFile) { return; } if (ShellLocks.IsWriteAccessAllowed()) { OnFileDataChanged(second); } else { ShellLocks.ExecuteOrQueueEx( Lifetime, "T4PsiModuleOnFileDataChanged", () => ShellLocks.ExecuteWithWriteLock(() => OnFileDataChanged(second)) ); } }
public TestExpressionChooser([NotNull] JetPopupMenus popupMenus, [NotNull] ShellLocks shellLocks, [NotNull] IActionManager actionManager, [NotNull] IThreading threading, [NotNull] IDocumentMarkupManager markupManager) : base(popupMenus, shellLocks, actionManager, threading, markupManager) { }