Implement retained target sessions, runtime sizing and Component navigation

This commit is contained in:
2026-11-12 14:20:26 +01:00
parent e41b276b13
commit 6e25cf3ac6
71 changed files with 2538 additions and 120 deletions
@@ -26,6 +26,14 @@ public final class IntellijDocuments implements HostServices.Documents, AutoClos
private final java.util.concurrent.CopyOnWriteArrayList<java.util.function.Consumer<URI>>
changes = new java.util.concurrent.CopyOnWriteArrayList<>();
private final java.util.List<java.util.function.Consumer<URI>> saves =
new java.util.concurrent.CopyOnWriteArrayList<>();
public AutoCloseable onSave(java.util.function.Consumer<URI> listener) {
saves.add(listener);
return () -> saves.remove(listener);
}
public AutoCloseable onChange(java.util.function.Consumer<URI> listener) {
changes.add(listener);
return () -> changes.remove(listener);
@@ -48,6 +56,18 @@ public final class IntellijDocuments implements HostServices.Documents, AutoClos
this.project = Objects.requireNonNull(project);
lifetime = this::disposeResources;
Disposer.register(project, lifetime);
ApplicationManager.getApplication()
.getMessageBus()
.connect(lifetime)
.subscribe(
com.intellij.openapi.fileEditor.FileDocumentManagerListener.TOPIC,
new com.intellij.openapi.fileEditor.FileDocumentManagerListener() {
public void afterDocumentSaved(Document document) {
var file = FileDocumentManager.getInstance().getFile(document);
if (file != null && file.isInLocalFileSystem())
saves.forEach(listener -> listener.accept(canonicalUri(file)));
}
});
EditorFactory.getInstance()
.getEventMulticaster()
.addDocumentListener(