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();

公式の記事