[PT-#150740880] File listener and project listeners mechanics
Refactor project finder into project manager Update annotation index based on project changes Missing comments
This commit is contained in:
@@ -21,18 +21,21 @@ import org.eclipse.lsp4j.SymbolInformation;
|
||||
import org.eclipse.lsp4j.WorkspaceSymbolParams;
|
||||
import org.eclipse.lsp4j.services.WorkspaceService;
|
||||
import org.springframework.ide.vscode.commons.util.Assert;
|
||||
import org.springframework.ide.vscode.commons.util.FileObserver;
|
||||
import org.springframework.ide.vscode.commons.util.Log;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
public class SimpleWorkspaceService implements WorkspaceService {
|
||||
public class SimpleWorkspaceService implements WorkspaceService, FileObserver {
|
||||
|
||||
private SimpleLanguageServer server;
|
||||
|
||||
private ListenerList<Settings> configurationListeners = new ListenerList<>();
|
||||
private ExecuteCommandHandler executeCommandHandler;
|
||||
private WorkspaceSymbolHandler workspaceSymbolHandler;
|
||||
private org.springframework.ide.vscode.commons.util.ListenerList<FileListener> fileListeners = new org.springframework.ide.vscode.commons.util.ListenerList<>();
|
||||
|
||||
public SimpleWorkspaceService(SimpleLanguageServer server) {
|
||||
this.server = server;
|
||||
@@ -59,6 +62,32 @@ public class SimpleWorkspaceService implements WorkspaceService {
|
||||
|
||||
@Override
|
||||
public void didChangeWatchedFiles(DidChangeWatchedFilesParams params) {
|
||||
params.getChanges().forEach(event -> fileListeners.forEach(listener -> {
|
||||
try {
|
||||
String uri = event.getUri();
|
||||
if (uri != null) {
|
||||
if (listener.accept(event.getUri())) {
|
||||
switch (event.getType()) {
|
||||
case Created:
|
||||
listener.created(uri);
|
||||
break;
|
||||
case Changed:
|
||||
listener.changed(uri);
|
||||
break;
|
||||
case Deleted:
|
||||
listener.deleted(uri);
|
||||
break;
|
||||
default:
|
||||
Log.log("Uknown file change type '" + event.getType() + "' for file: " + uri);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
Log.log(t);
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -87,4 +116,14 @@ public class SimpleWorkspaceService implements WorkspaceService {
|
||||
return this.workspaceSymbolHandler != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addListener(FileListener listener) {
|
||||
fileListeners.add(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeListener(FileListener listener) {
|
||||
fileListeners.remove(listener);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user