diff options
Diffstat (limited to 'lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Server2ClientProtocolExtension.java')
-rw-r--r-- | lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Server2ClientProtocolExtension.java | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Server2ClientProtocolExtension.java b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Server2ClientProtocolExtension.java index 80550f9fc37..239aef54fc3 100644 --- a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Server2ClientProtocolExtension.java +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/Server2ClientProtocolExtension.java @@ -8,17 +8,44 @@ package org.eclipse.lsp4e.cpp.language; +import org.eclipse.jface.action.StatusLineContributionItem; +import org.eclipse.jface.action.StatusLineManager; import org.eclipse.lsp4e.LanguageClientImpl; import org.eclipse.lsp4e.cpp.language.cquery.CqueryInactiveRegions; import org.eclipse.lsp4e.cpp.language.cquery.CquerySemanticHighlights; import org.eclipse.lsp4e.cpp.language.cquery.IndexingProgressStats; import org.eclipse.lsp4j.jsonrpc.services.JsonNotification; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.internal.WorkbenchWindow; +@SuppressWarnings("restriction") public class Server2ClientProtocolExtension extends LanguageClientImpl { @JsonNotification("$cquery/progress") public final void indexingProgress(IndexingProgressStats stats) { - // TODO: Implement + + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + final String cqueryStatusFieldId = "org.eclipse.lsp4e.cpp.status"; //$NON-NLS-1$ + final int width = 28; + IWorkbenchWindow[] workbenchWindows = PlatformUI.getWorkbench().getWorkbenchWindows(); + for (IWorkbenchWindow window : workbenchWindows) { + StatusLineManager statusLine = ((WorkbenchWindow) window).getStatusLineManager(); + StatusLineContributionItem cqueryStatusField = (StatusLineContributionItem) statusLine.find(cqueryStatusFieldId); + if (cqueryStatusField == null) { + cqueryStatusField = new StatusLineContributionItem(cqueryStatusFieldId, width); + statusLine.add(cqueryStatusField); + } + String msg = stats.getTotalJobs() > 0 ? NLS.bind(Messages.CqueryStateBusy, stats.getTotalJobs()) + : Messages.CqueryStateIdle; + cqueryStatusField.setText(msg); + } + } + }); } @JsonNotification("$cquery/setInactiveRegions") @@ -26,7 +53,6 @@ public class Server2ClientProtocolExtension extends LanguageClientImpl { // TODO: Implement } - @JsonNotification("$cquery/publishSemanticHighlighting") public final void semanticHighlights(CquerySemanticHighlights highlights) { // TODO: Implement |