package com.softberries.klerk; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; 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 org.eclipse.ui.handlers.HandlerUtil; public class RunJob1 extends AbstractHandler { @Override public Object execute(final ExecutionEvent event) throws ExecutionException { Job job = new Job("First Job") { @Override protected IStatus run(IProgressMonitor monitor) { for (int i = 0; i < 10; i++) { try { // We simulate a long running operation here Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Doing something"); } // Use this to open a Shell in the UI thread Display.getDefault().asyncExec(new Runnable() { public void run() { MessageDialog.openInformation( HandlerUtil.getActiveShell(event), "Your Popup ", "Your job has finished."); } }); return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); return null; } }