`
zhangzcz1999
  • 浏览: 144395 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

RCP中实现带有run in background按钮的进度条对话框

阅读更多
public class TestWithProgress implements IRunnableWithProgress {

		public void run(IProgressMonitor monitor)
				throws InvocationTargetException, InterruptedException {
			monitor.beginTask("Test", IProgressMonitor.UNKNOWN);
			ActivateJob job = new ActivateJob("Test");
			job.addJobChangeListener(new ActivateJobChangeAdapter(Display.getDefault()));
			job.setUser(true);
			job.schedule();
			if (monitor.isCanceled()) {
				throw new InterruptedException(
						"The long running operation was cancelled"); //$NON-NLS-1$
			}
		}
		
		private class ActivateJob extends Job {
			
			public ActivateJob(String name) {
				super(name);
			}

			@Override
			protected IStatus run(IProgressMonitor monitor) {
				
				try {
						...................

					return  new Status(Status.OK, "OK", "OK");
				} catch (Exception ex) {
					return new Status(Status.ERROR, "FAIL", "FAIL");
				}
			}
		}
		
		private class ActivateJobChangeAdapter extends JobChangeAdapter {

				/*
			 * (non-Javadoc)
			 * 
			 * @see
			 * org.eclipse.core.runtime.jobs.JobChangeAdapter#done(org.eclipse.core
			 * .runtime.jobs.IJobChangeEvent)
			 */
			@Override
			public void done(final IJobChangeEvent event) {
					IStatus iStatus = event.getResult();
					String message = iStatus.getMessage();

			
					if (IStatus.OK != iStatus.getSeverity()) {
						......
					}

			}

		}
	}

ProgressMonitorDialog progressMonitorDialog = new ProgressMonitorDialog(
				Display.getCurrent().getActiveShell());
		try {
			progressMonitorDialog.run(false, true,
					new TestWithProgress());
		} catch (InvocationTargetException e) {

		} catch (InterruptedException e) {

		} catch (Throwable e) {

		}

WorkbenchWindowAdvisor.preWindowOpen()中有这configurer.setShowProgressIndicator(true);确保在状态栏显示进度条
如果要显式进度窗口,用job.setUser(true).或者调用IWorkbenchSiteProgressService.showInDialog(...)
完成部分任务时执行,monitor.worked(进度片段值);
分享到:
评论
1 楼 tianmo2008 2010-07-05  
最近在使用,遇到点问题,希望能请教一下.
请问一下,你出现过IRunnableWithProgress 对话框,在加载的数据过多时,出现软件界面白屏当机的情况吗?是怎么解决的,

ps,我主要是要一个解压功能,要显示文件进度,但如果文件太多,就会出先白屏当机.
(以确定jvm内存回收的问题)

相关推荐

Global site tag (gtag.js) - Google Analytics