use of com.intellij.openapi.vcs.impl.BackgroundableActionEnabledHandler in project intellij-community by JetBrains.
the class SelectedBlockHistoryAction method isEnabled.
protected boolean isEnabled(VcsContext context) {
Project project = context.getProject();
if (project == null)
return false;
VcsSelection selection = VcsSelectionUtil.getSelection(context);
if (selection == null)
return false;
VirtualFile file = FileDocumentManager.getInstance().getFile(selection.getDocument());
if (file == null)
return false;
final ProjectLevelVcsManagerImpl vcsManager = (ProjectLevelVcsManagerImpl) ProjectLevelVcsManager.getInstance(project);
final BackgroundableActionEnabledHandler handler = vcsManager.getBackgroundableActionHandler(VcsBackgroundableActions.HISTORY_FOR_SELECTION);
if (handler.isInProgress(VcsBackgroundableActions.keyFrom(file)))
return false;
AbstractVcs activeVcs = ProjectLevelVcsManager.getInstance(project).getVcsFor(file);
if (activeVcs == null)
return false;
VcsHistoryProvider provider = activeVcs.getVcsBlockHistoryProvider();
if (provider == null)
return false;
if (!AbstractVcs.fileInVcsByFileStatus(project, VcsUtil.getFilePath(file)))
return false;
return true;
}
use of com.intellij.openapi.vcs.impl.BackgroundableActionEnabledHandler 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);
}
Aggregations