[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:
BoykoAlex
2017-10-10 12:15:55 -04:00
parent 825db31d88
commit 423c6bcaef
40 changed files with 1177 additions and 359 deletions

View File

@@ -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);
}
}