diff options
author | Uwe Stieber | 2013-06-05 07:17:15 +0000 |
---|---|---|
committer | Uwe Stieber | 2013-06-05 07:17:15 +0000 |
commit | a13cb6fdddc13a8ca1f42a4ec8f092baa891d8e0 (patch) | |
tree | 7d7e78b53c1ee5ac5339bbce240cda1808b1a11d /target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse | |
parent | 2e41449b85607ac874a0360f73c095b30eaf94f6 (diff) | |
download | org.eclipse.tcf-a13cb6fdddc13a8ca1f42a4ec8f092baa891d8e0.tar.gz org.eclipse.tcf-a13cb6fdddc13a8ca1f42a4ec8f092baa891d8e0.tar.xz org.eclipse.tcf-a13cb6fdddc13a8ca1f42a4ec8f092baa891d8e0.zip |
Target Explorer: Provide busy indicator while refreshing the process list
Diffstat (limited to 'target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse')
-rw-r--r-- | target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/handler/RefreshProcessListHandler.java | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/handler/RefreshProcessListHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/handler/RefreshProcessListHandler.java index 25f7c37ee..ae3619c8c 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/handler/RefreshProcessListHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/handler/RefreshProcessListHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 2013 Wind River Systems, Inc. and others. All rights reserved. * This program and the accompanying materials are made available under the terms * of the Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html @@ -15,7 +15,11 @@ import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.runtime.Assert; +import org.eclipse.swt.custom.BusyIndicator; import org.eclipse.tcf.protocol.Protocol; +import org.eclipse.tcf.te.core.async.AsyncCallbackCollector; +import org.eclipse.tcf.te.runtime.concurrent.util.ExecutorsUtil; +import org.eclipse.tcf.te.runtime.interfaces.callback.ICallback; import org.eclipse.tcf.te.runtime.services.ServiceManager; import org.eclipse.tcf.te.runtime.services.interfaces.IUIService; import org.eclipse.tcf.te.tcf.core.model.interfaces.IModel; @@ -27,6 +31,7 @@ import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchPartSite; +import org.eclipse.ui.PlatformUI; import org.eclipse.ui.commands.IElementUpdater; import org.eclipse.ui.handlers.HandlerUtil; import org.eclipse.ui.menus.UIElement; @@ -44,15 +49,28 @@ public class RefreshProcessListHandler extends AbstractHandler implements IEleme IEditorInput editorInput = HandlerUtil.getActiveEditorInputChecked(event); final IPeerModel peer = (IPeerModel) editorInput.getAdapter(IPeerModel.class); if (peer != null) { - Runnable runnable = new Runnable() { + BusyIndicator.showWhile(PlatformUI.getWorkbench().getDisplay(), new Runnable() { @Override public void run() { - IModel model = ModelManager.getRuntimeModel(peer); - Assert.isNotNull(model); - model.getService(IModelRefreshService.class).refresh(null); + final AsyncCallbackCollector collector = new AsyncCallbackCollector(); + final ICallback callback = new AsyncCallbackCollector.SimpleCollectorCallback(collector); + + Runnable runnable = new Runnable() { + @Override + public void run() { + IModel model = ModelManager.getRuntimeModel(peer); + Assert.isNotNull(model); + model.getService(IModelRefreshService.class).refresh(callback); + } + }; + Protocol.invokeLater(runnable); + + collector.initDone(); + + ExecutorsUtil.waitAndExecute(0, collector.getConditionTester()); } - }; - Protocol.invokeLater(runnable); + }); + } return null; } |