Search in sources :

Example 1 with VcsBackgroundableActions

use of com.intellij.openapi.vcs.impl.VcsBackgroundableActions in project intellij-community by JetBrains.

the class VcsHistoryProviderBackgroundableProxy method doExecuteAppendableSession.

private void doExecuteAppendableSession(final VcsKey vcsKey, final FilePath filePath, @Nullable VcsRevisionNumber startRevisionNumber, final VcsAppendableHistorySessionPartner partner, @Nullable VcsBackgroundableActions actionKey, boolean canUseCache, boolean canUseLastRevisionCheck) {
    if (myCachesHistory && canUseCache) {
        final VcsAbstractHistorySession session = getFullHistoryFromCache(vcsKey, filePath);
        if (session != null) {
            partner.reportCreatedEmptySession(session);
            partner.finished();
            return;
        }
    }
    final ProjectLevelVcsManagerImpl vcsManager = (ProjectLevelVcsManagerImpl) ProjectLevelVcsManager.getInstance(myProject);
    final VcsBackgroundableActions resultingActionKey = actionKey == null ? VcsBackgroundableActions.CREATE_HISTORY_SESSION : actionKey;
    final BackgroundableActionEnabledHandler handler;
    handler = vcsManager.getBackgroundableActionHandler(resultingActionKey);
    // fo not start same action twice
    if (handler.isInProgress(resultingActionKey))
        return;
    handler.register(resultingActionKey);
    final VcsAppendableHistorySessionPartner cachedPartner;
    if (myCachesHistory && startRevisionNumber == null) {
        cachedPartner = new HistoryPartnerProxy(partner, session -> {
            if (session == null)
                return;
            VcsCacheableHistorySessionFactory<Serializable, VcsAbstractHistorySession> delegate = (VcsCacheableHistorySessionFactory<Serializable, VcsAbstractHistorySession>) myDelegate;
            FilePath correctedPath = delegate.getUsedFilePath(session);
            myVcsHistoryCache.put(filePath, correctedPath, vcsKey, (VcsAbstractHistorySession) session.copy(), delegate, true);
        });
    } else {
        cachedPartner = partner;
    }
    reportHistory(filePath, startRevisionNumber, vcsKey, resultingActionKey, handler, cachedPartner, canUseLastRevisionCheck);
}
Also used : ItemLatestState(com.intellij.openapi.vcs.diff.ItemLatestState) VcsBackgroundableComputable(com.intellij.openapi.vcs.impl.VcsBackgroundableComputable) VirtualFile(com.intellij.openapi.vfs.VirtualFile) ModalityState(com.intellij.openapi.application.ModalityState) ArrayList(java.util.ArrayList) ProcessCanceledException(com.intellij.openapi.progress.ProcessCanceledException) Task(com.intellij.openapi.progress.Task) DiffProvider(com.intellij.openapi.vcs.diff.DiffProvider) Project(com.intellij.openapi.project.Project) com.intellij.openapi.vcs(com.intellij.openapi.vcs) VcsBackgroundableActions(com.intellij.openapi.vcs.impl.VcsBackgroundableActions) ProgressManager(com.intellij.openapi.progress.ProgressManager) VcsUtil(com.intellij.vcsUtil.VcsUtil) BackgroundableActionEnabledHandler(com.intellij.openapi.vcs.impl.BackgroundableActionEnabledHandler) ProjectLevelVcsManagerImpl(com.intellij.openapi.vcs.impl.ProjectLevelVcsManagerImpl) LocalFileSystem(com.intellij.openapi.vfs.LocalFileSystem) VcsHistoryProviderEx(com.intellij.vcs.history.VcsHistoryProviderEx) Serializable(java.io.Serializable) ThrowableComputable(com.intellij.openapi.util.ThrowableComputable) Nullable(org.jetbrains.annotations.Nullable) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) List(java.util.List) ApplicationManager(com.intellij.openapi.application.ApplicationManager) NotNull(org.jetbrains.annotations.NotNull) Consumer(com.intellij.util.Consumer) Serializable(java.io.Serializable) BackgroundableActionEnabledHandler(com.intellij.openapi.vcs.impl.BackgroundableActionEnabledHandler) ProjectLevelVcsManagerImpl(com.intellij.openapi.vcs.impl.ProjectLevelVcsManagerImpl) VcsBackgroundableActions(com.intellij.openapi.vcs.impl.VcsBackgroundableActions)

Example 2 with VcsBackgroundableActions

use of com.intellij.openapi.vcs.impl.VcsBackgroundableActions in project intellij-community by JetBrains.

the class VcsHistoryProviderBackgroundableProxy method createSessionFor.

public void createSessionFor(final VcsKey vcsKey, final FilePath filePath, final Consumer<VcsHistorySession> continuation, @Nullable VcsBackgroundableActions actionKey, final boolean silent, @Nullable final Consumer<VcsHistorySession> backgroundSpecialization) {
    final ThrowableComputable<VcsHistorySession, VcsException> throwableComputable = myHistoryComputerFactory.create(filePath, backgroundSpecialization, vcsKey);
    final VcsBackgroundableActions resultingActionKey = actionKey == null ? VcsBackgroundableActions.CREATE_HISTORY_SESSION : actionKey;
    final Object key = VcsBackgroundableActions.keyFrom(filePath);
    if (silent) {
        VcsBackgroundableComputable.createAndRunSilent(myProject, resultingActionKey, key, VcsBundle.message("loading.file.history.progress"), throwableComputable, continuation);
    } else {
        VcsBackgroundableComputable.createAndRun(myProject, resultingActionKey, key, VcsBundle.message("loading.file.history.progress"), VcsBundle.message("message.title.could.not.load.file.history"), throwableComputable, continuation, null);
    }
}
Also used : VcsBackgroundableActions(com.intellij.openapi.vcs.impl.VcsBackgroundableActions)

Aggregations

VcsBackgroundableActions (com.intellij.openapi.vcs.impl.VcsBackgroundableActions)2 ApplicationManager (com.intellij.openapi.application.ApplicationManager)1 ModalityState (com.intellij.openapi.application.ModalityState)1 ProcessCanceledException (com.intellij.openapi.progress.ProcessCanceledException)1 ProgressIndicator (com.intellij.openapi.progress.ProgressIndicator)1 ProgressManager (com.intellij.openapi.progress.ProgressManager)1 Task (com.intellij.openapi.progress.Task)1 Project (com.intellij.openapi.project.Project)1 ThrowableComputable (com.intellij.openapi.util.ThrowableComputable)1 com.intellij.openapi.vcs (com.intellij.openapi.vcs)1 DiffProvider (com.intellij.openapi.vcs.diff.DiffProvider)1 ItemLatestState (com.intellij.openapi.vcs.diff.ItemLatestState)1 BackgroundableActionEnabledHandler (com.intellij.openapi.vcs.impl.BackgroundableActionEnabledHandler)1 ProjectLevelVcsManagerImpl (com.intellij.openapi.vcs.impl.ProjectLevelVcsManagerImpl)1 VcsBackgroundableComputable (com.intellij.openapi.vcs.impl.VcsBackgroundableComputable)1 LocalFileSystem (com.intellij.openapi.vfs.LocalFileSystem)1 VirtualFile (com.intellij.openapi.vfs.VirtualFile)1 Consumer (com.intellij.util.Consumer)1 VcsHistoryProviderEx (com.intellij.vcs.history.VcsHistoryProviderEx)1 VcsUtil (com.intellij.vcsUtil.VcsUtil)1