use of com.intellij.util.ui.update.MergingUpdateQueue in project intellij-community by JetBrains.
the class FilteringTreeBuilder method setFilteringMerge.
public void setFilteringMerge(int gap, @Nullable JComponent modalityStateComponent) {
if (myRefilterQueue != null) {
Disposer.dispose(myRefilterQueue);
myRefilterQueue = null;
}
if (gap >= 0) {
JComponent stateComponent = modalityStateComponent;
if (stateComponent == null) {
stateComponent = myTree;
}
myRefilterQueue = new MergingUpdateQueue("FilteringTreeBuilder", gap, false, stateComponent, this, myTree);
myRefilterQueue.setRestartTimerOnAdd(true);
}
}
use of com.intellij.util.ui.update.MergingUpdateQueue in project android by JetBrains.
the class NlModel method getRenderingQueue.
@NotNull
private MergingUpdateQueue getRenderingQueue() {
synchronized (myRenderingQueueLock) {
if (myRenderingQueue == null) {
myRenderingQueue = new MergingUpdateQueue("android.layout.rendering", RENDER_DELAY_MS, true, null, this, null, Alarm.ThreadToUse.OWN_THREAD);
myRenderingQueue.setRestartTimerOnAdd(true);
}
return myRenderingQueue;
}
}
use of com.intellij.util.ui.update.MergingUpdateQueue in project intellij-community by JetBrains.
the class FrameworkDetectionManager method doInitialize.
public void doInitialize() {
myDetectionQueue = new MergingUpdateQueue("FrameworkDetectionQueue", 500, true, null, myProject);
if (ApplicationManager.getApplication().isUnitTestMode()) {
myDetectionQueue.setPassThrough(false);
myDetectionQueue.hideNotify();
}
myDetectedFrameworksData = new DetectedFrameworksData(myProject);
FrameworkDetectionIndex.getInstance().addListener(this, myProject);
myProject.getMessageBus().connect().subscribe(DumbService.DUMB_MODE, new DumbService.DumbModeListener() {
@Override
public void enteredDumbMode() {
myDetectionQueue.suspend();
}
@Override
public void exitDumbMode() {
myDetectionQueue.resume();
}
});
}
use of com.intellij.util.ui.update.MergingUpdateQueue in project intellij-community by JetBrains.
the class HistoryDialog method init.
protected void init() {
LocalHistoryFacade facade = LocalHistoryImpl.getInstanceImpl().getFacade();
myModel = createModel(facade);
setTitle(myModel.getTitle());
JComponent root = createComponent();
setComponent(root);
setPreferredFocusedComponent(showRevisionsList() ? myRevisionsList.getComponent() : myDiffView);
myUpdateQueue = new MergingUpdateQueue(getClass() + ".revisionsUpdate", 500, true, root, this, null, false);
myUpdateQueue.setRestartTimerOnAdd(true);
facade.addListener(new LocalHistoryFacade.Listener() {
public void changeSetFinished() {
scheduleRevisionsUpdate(null);
}
}, this);
scheduleRevisionsUpdate(null);
}
use of com.intellij.util.ui.update.MergingUpdateQueue in project intellij-community by JetBrains.
the class AnnotateStackTraceAction method actionPerformed.
@Override
public void actionPerformed(final AnActionEvent e) {
myIsLoading = true;
ProgressManager.getInstance().run(new Task.Backgroundable(myEditor.getProject(), "Getting File History", true) {
private final Object LOCK = new Object();
private final MergingUpdateQueue myUpdateQueue = new MergingUpdateQueue("AnnotateStackTraceAction", 200, true, null);
private MyActiveAnnotationGutter myGutter;
@Override
public void onCancel() {
myEditor.getGutter().closeAllAnnotations();
}
@Override
public void onFinished() {
myIsLoading = false;
Disposer.dispose(myUpdateQueue);
}
@Override
public void run(@NotNull ProgressIndicator indicator) {
MultiMap<VirtualFile, Integer> files2lines = new MultiMap<>();
Map<Integer, LastRevision> revisions = ContainerUtil.newHashMap();
ApplicationManager.getApplication().runReadAction(() -> {
for (int line = 0; line < myEditor.getDocument().getLineCount(); line++) {
indicator.checkCanceled();
VirtualFile file = getHyperlinkVirtualFile(myHyperlinks.findAllHyperlinksOnLine(line));
if (file == null)
continue;
files2lines.putValue(file, line);
}
});
files2lines.entrySet().forEach(entry -> {
indicator.checkCanceled();
VirtualFile file = entry.getKey();
Collection<Integer> lines = entry.getValue();
LastRevision revision = getLastRevision(file);
if (revision == null)
return;
synchronized (LOCK) {
for (Integer line : lines) {
revisions.put(line, revision);
}
}
myUpdateQueue.queue(new Update("update") {
@Override
public void run() {
updateGutter(indicator, revisions);
}
});
});
// myUpdateQueue can be disposed before the last revisions are passed to the gutter
ApplicationManager.getApplication().invokeLater(() -> updateGutter(indicator, revisions));
}
@CalledInAwt
private void updateGutter(@NotNull ProgressIndicator indicator, @NotNull Map<Integer, LastRevision> revisions) {
if (indicator.isCanceled())
return;
if (myGutter == null) {
myGutter = new MyActiveAnnotationGutter(getProject(), myHyperlinks, indicator);
myEditor.getGutter().registerTextAnnotation(myGutter, myGutter);
}
Map<Integer, LastRevision> revisionsCopy;
synchronized (LOCK) {
revisionsCopy = ContainerUtil.newHashMap(revisions);
}
myGutter.updateData(revisionsCopy);
((EditorGutterComponentEx) myEditor.getGutter()).revalidateMarkup();
}
@Nullable
private LastRevision getLastRevision(@NotNull VirtualFile file) {
try {
AbstractVcs vcs = VcsUtil.getVcsFor(myEditor.getProject(), file);
if (vcs == null)
return null;
VcsHistoryProvider historyProvider = vcs.getVcsHistoryProvider();
if (historyProvider == null)
return null;
FilePath filePath = VcsContextFactory.SERVICE.getInstance().createFilePathOn(file);
if (historyProvider instanceof VcsHistoryProviderEx) {
VcsFileRevision revision = ((VcsHistoryProviderEx) historyProvider).getLastRevision(filePath);
if (revision == null)
return null;
return LastRevision.create(revision);
} else {
VcsHistorySession session = historyProvider.createSessionFor(filePath);
if (session == null)
return null;
List<VcsFileRevision> list = session.getRevisionList();
if (list == null || list.isEmpty())
return null;
return LastRevision.create(list.get(0));
}
} catch (VcsException ignored) {
LOG.warn(ignored);
return null;
}
}
});
}
Aggregations