package net.jeeeyul.eclipse.themes.test;
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.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
public class BusyTestView extends ViewPart {
public BusyTestView() {
}
@Override
public void createPartControl(Composite parent) {
Composite composite = new Composite(parent, SWT.NORMAL);
composite.setLayout(new GridLayout());
Button testButton = new Button(composite, SWT.PUSH);
testButton.setText("Do some job");
testButton.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
doTest();
}
});
}
private void doTest() {
IWorkbenchSiteProgressService service = (IWorkbenchSiteProgressService) getSite()
.getService(IWorkbenchSiteProgressService.class);
service.schedule(new Job("Test Job") {
@Override
protected IStatus run(IProgressMonitor monitor) {
monitor.beginTask("Test", 100);
for (int i = 0; i < 100; i++) {
try {
Thread.sleep(100);
monitor.worked(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
monitor.done();
return Status.OK_STATUS;
}
});
}
@Override
public void setFocus() {
}
}