Implement retained target sessions, runtime sizing and Component navigation
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user