Eclipse PluginでProgress
eclipseプラグインって本当に情報集めるのに苦労する…
キーワードをprogressで探しても、jfaseとかの古い記事がヒットして。
Jobクラスを使うのが正解。
package progress.sample.actions; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Display; import progress.sample.Activator; /** * プログレスバー上で実行するサンプル * * */ public class ProgressSample extends Job{ public ProgressSample(String name) { super(name); } @Override protected IStatus run(IProgressMonitor monitor) { monitor.beginTask("開始", 10); for(Integer i = 0; i<=10; i++) { if(monitor.isCanceled()) { monitor.done(); return Status.CANCEL_STATUS; } monitor.subTask(i+"/10 まで終了"); monitor.worked(1); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } monitor.done(); //ダイアログなどのUIを呼び出すときはこんな感じで。 Display.getDefault().asyncExec(new Runnable(){ public void run() { MessageDialog.openInformation( Activator.getDefault().getWorkbench().getActiveWorkbenchWindow() .getShell() , "Progress Sample", "完了"); } }); return Status.OK_STATUS; } }
こうやって使う
ProgressSample op = new ProgressSample("test"); op.setUser(true); op.schedule();