@Override protected WorkbenchJob doCreateRefreshJob() { WorkbenchJob job = super.doCreateRefreshJob(); job.addJobChangeListener(new JobChangeAdapter() { @SuppressWarnings("deprecation") @Override public void done(IJobChangeEvent event) { if (event.getResult() != null && event.getResult().isOK() && !getViewer().getTree().isDisposed()) { Set<String> joinChecked = new HashSet(getSelectedValues()); for(String i : getPartialValues()) { getViewer().setGrayed(i, true); joinChecked.add(i); } getViewer().setCheckedElements(joinChecked.toArray()); } } }); return job; }
protected WorkbenchJob doCreateRefreshJob() { WorkbenchJob filterJob = super.doCreateRefreshJob(); filterJob.addJobChangeListener(new JobChangeAdapter() { public void done(IJobChangeEvent event) { if (event.getResult().isOK()) { getDisplay().asyncExec(new Runnable() { public void run() { if (checkboxViewer.getTree().isDisposed()) return; checkboxViewer.restoreLeafCheckState(); } }); } } }); return filterJob; }
private void createUpdateJob() { new WorkbenchJob("GwtSuperDevModeCodeServerTabGroup") { @Override public IStatus runInUIThread(IProgressMonitor monitor) { ILaunchConfigurationTab tab = launchConfigurationDialog.getActiveTab(); if (tab != null && !tab.getControl().isDisposed()) { launchConfigurationDialog.updateButtons(); launchConfigurationDialog.updateMessage(); } return Status.OK_STATUS; } }.schedule(); }
private void createUpdateJob() { new WorkbenchJob("WebAppTabGroup") { @Override public IStatus runInUIThread(IProgressMonitor monitor) { ILaunchConfigurationTab tab = launchConfigurationDialog.getActiveTab(); if (tab != null && !tab.getControl().isDisposed()) { launchConfigurationDialog.updateButtons(); launchConfigurationDialog.updateMessage(); } return Status.OK_STATUS; } }.schedule(); }
/** * Avoid the expansion stage of the refresh by using a monitor in the * "canceled" state. */ @Override protected WorkbenchJob doCreateRefreshJob() { final WorkbenchJob realJob = super.doCreateRefreshJob(); return new WorkbenchJob(realJob.getName()) { @Override public IStatus runInUIThread(IProgressMonitor monitor) { IProgressMonitor cancelledMonitor = new NullProgressMonitor(); cancelledMonitor.setCanceled(true); realJob.runInUIThread(cancelledMonitor); return Status.OK_STATUS; } }; }
private void dispose() { WorkbenchJob job = new WorkbenchJob("Disposing KeybindingsManager") //$NON-NLS-1$ { @Override public IStatus runInUIThread(IProgressMonitor monitor) { workbench.getDisplay().removeFilter(SWT.KeyDown, listener); workbench.getDisplay().removeFilter(SWT.Traverse, listener); return Status.OK_STATUS; } }; EclipseUtil.setSystemForJob(job); job.schedule(); }
/** * createDelayedRefreshJob * * @return workbench job */ private WorkbenchJob createDelayedRefreshJob() { return new WorkbenchJob("Refresh Content") { //$NON-NLS-1$ /** * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor) */ public IStatus runInUIThread(IProgressMonitor monitor) { try { if (_treeViewer.getControl().isDisposed()) { return Status.CANCEL_STATUS; } _treeViewer.setSelection(null); _treeViewer.refresh(); } // SWT errors may be thrown here and will show as an error box since this is done on the UI thread // Catch everything and log it so that the dialog doesn't annoy the user since they may be typing into // the editor when this code throws errors and will impact them severely catch (Throwable e) { IdeLog.logError(CommonEditorPlugin.getDefault(), e); } return Status.OK_STATUS; } }; }
private void addFilter() { fFilter = new ListFilter(fSelected, fLabelProvider); fAvailableViewer.addFilter(fFilter); fFilterJob = new WorkbenchJob("FilterJob") { //$NON-NLS-1$ public IStatus runInUIThread(IProgressMonitor monitor) { handleFilter(); return Status.OK_STATUS; } }; fFilterJob.setSystem(true); }
private WorkbenchJob doCreateRefreshJob() { return new WorkbenchJob(PreferencesMessages.OptionsConfigurationBlock_RefreshFilter) { @Override public IStatus runInUIThread(IProgressMonitor monitor) { updateUI(fRoot); fParentComposite.layout(true, true); //relayout if (fScrolledPageContent != null) { setVisible(fNoMatchFoundLabel, !fMatchFound); fScrolledPageContent.reflow(true); } return Status.OK_STATUS; } }; }
public static Job uijob(final String name, final Function<IProgressMonitor, IStatus> fn) { return new WorkbenchJob(name) { @Override public IStatus runInUIThread(final IProgressMonitor monitor) { return fn.apply(monitor); } }; }
public static Job stateJob(final String name, final AtomicInteger state, final Function2<IProgressMonitor, Integer, IStatus> fn) { return new WorkbenchJob(name) { @Override public IStatus runInUIThread(final IProgressMonitor monitor) { return fn.apply(monitor, state.incrementAndGet()); } }; }
@Override public void memoryBlocksAdded(final IMemoryBlock[] memory) { WorkbenchJob job = new WorkbenchJob("Update Memory View") { private static final long RESCHEDULE_TIME = 200; private static final int MAX_ATTEMPTS = 5; private volatile int attempts = 0; @Override public IStatus runInUIThread(IProgressMonitor monitor) { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); if (page == null) { return Status.OK_STATUS; } try { IMemoryRenderingSite memoryView = null; for (IViewReference ref : page.getViewReferences()) { if (ref.getId().equals(IDebugUIConstants.ID_MEMORY_VIEW)) { memoryView = (IMemoryRenderingSite) ref.getView(true); break; } } if (memoryView == null) { if (attempts < MAX_ATTEMPTS) { //Memory view may still not been opened, try 5 times attempts++; this.schedule(RESCHEDULE_TIME); } else { attempts = 0; } return Status.OK_STATUS; } for (IMemoryBlock mb : memory) { if (mb instanceof BfMemoryBlock && !((BfMemoryBlock) mb).isUserCreated()) { IMemoryRenderingType renderingType = DebugUITools.getMemoryRenderingManager().getPrimaryRenderingType(mb); IMemoryRendering rendering = renderingType.createRendering(); IMemoryRenderingContainer container = memoryView.getContainer(IDebugUIConstants.PLUGIN_ID + ".MemoryView.RenderingViewPane.1"); rendering.init(container, mb); container.addMemoryRendering(rendering); } } } catch (CoreException e) { DbgActivator.getDefault().logError("Updating Memory View failed", e); } this.attempts = 0; return Status.OK_STATUS; } }; job.setUser(false); job.schedule(); }
private void initBindings() { WorkbenchJob workbenchJob = new WorkbenchJob("Installing KeybindingsManager") //$NON-NLS-1$ { @Override public IStatus runInUIThread(IProgressMonitor monitor) { loadbindings(); // Insert our key listener before the Eclipse's key listeners IBindingService bindingService = (IBindingService) workbench.getService(IBindingService.class); if (bindingService instanceof BindingService) { final BindingService theBindingService = (BindingService) bindingService; Display display = PlatformUI.getWorkbench().getDisplay(); final WorkbenchKeyboard keyboard = theBindingService.getKeyboard(); Listener keyDownFilter = keyboard.getKeyDownFilter(); try { if (keyDownFilter != null) { display.removeFilter(SWT.KeyDown, keyDownFilter); display.removeFilter(SWT.Traverse, keyDownFilter); } display.addFilter(SWT.KeyDown, listener); display.addFilter(SWT.Traverse, listener); } finally { if (keyDownFilter != null) { display.addFilter(SWT.KeyDown, keyDownFilter); display.addFilter(SWT.Traverse, keyDownFilter); } } } // Set the initial enabled state of KeybindingsManager IContextService contextService = (IContextService) workbench.getService(IContextService.class); contextService.addContextManagerListener(contextManagerListener); setEnabled(contextService.getActiveContextIds().contains(ScriptingUIPlugin.SCRIPTING_CONTEXT_ID)); return Status.OK_STATUS; } }; workbenchJob.setRule(MUTEX_RULE); EclipseUtil.setSystemForJob(workbenchJob); workbenchJob.setPriority(Job.LONG); workbenchJob.schedule(); }
/** * createRefreshJob * * @return Workbench job */ private WorkbenchJob createRefreshJob() { return new WorkbenchJob("Refresh Filter") {//$NON-NLS-1$ /** * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor) */ public IStatus runInUIThread(IProgressMonitor monitor) { if (_treeViewer.getControl().isDisposed()) { return Status.CANCEL_STATUS; } if (_pattern == null) { return Status.OK_STATUS; } _filter.setPattern(_pattern); try { // don't want the user to see updates that will be made to the tree _treeViewer.getControl().setRedraw(false); _treeViewer.refresh(true); if (_pattern.length() > 0) { /* * Expand elements one at a time. After each is expanded, check to see if the filter text has * been modified. If it has, then cancel the refresh job so the user doesn't have to endure * expansion of all the nodes. */ IStructuredContentProvider provider = (IStructuredContentProvider) _treeViewer .getContentProvider(); Object[] elements = provider.getElements(_treeViewer.getInput()); for (int i = 0; i < elements.length; i++) { if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } _treeViewer.expandToLevel(elements[i], AbstractTreeViewer.ALL_LEVELS); } TreeItem[] items = _treeViewer.getTree().getItems(); if (items.length > 0) { // to prevent scrolling _treeViewer.getTree().showItem(items[0]); } } } finally { // done updating the tree - set redraw back to true _treeViewer.getControl().setRedraw(true); } return Status.OK_STATUS; } }; }
@Override protected WorkbenchJob doCreateRefreshJob() { return new WorkbenchJob("Refresh Filter") {//$NON-NLS-1$ @Override public IStatus runInUIThread(IProgressMonitor monitor) { if (treeViewer.getControl().isDisposed()) { return Status.CANCEL_STATUS; } String text= getFilterString(); if (text == null) { return Status.OK_STATUS; } boolean initial= initialText != null && initialText.equals(text); if (initial) { getPatternFilter().setPattern(null); } else { getPatternFilter().setPattern(text); } Control redrawFalseControl= treeComposite != null ? treeComposite : treeViewer.getControl(); try { // don't want the user to see updates that will be made to // the tree // we are setting redraw(false) on the composite to avoid // dancing scrollbar redrawFalseControl.setRedraw(false); if (!narrowingDown) { // collapse all TreeItem[] is= treeViewer.getTree().getItems(); for (int i= 0; i < is.length; i++) { TreeItem item= is[i]; if (item.getExpanded()) { treeViewer.setExpandedState(item.getData(), false); } } } treeViewer.refresh(true); updateToolbar(text.length() > 0 && !initial); } finally { // done updating the tree - set redraw back to true TreeItem[] items= getViewer().getTree().getItems(); if (items.length > 0 && getViewer().getTree().getSelectionCount() == 0) { treeViewer.getTree().setTopItem(items[0]); } redrawFalseControl.setRedraw(true); } return Status.OK_STATUS; } }; }
/** * Validates the contents of the page, setting the page error message and Finish button state accordingly * * @since 8.1 */ protected void validatePage() { // Don't generate an error if project name or location is empty, but do disable Finish button. String msg = null; boolean complete = true; // ultimately treated as false if msg != null String name = getProjectName(); if (name.isEmpty()) { complete = false; } else { IStatus status = ResourcesPlugin.getWorkspace().validateName(name, IResource.PROJECT); if (!status.isOK()) { msg = status.getMessage(); } else { IProject project = root.getProject(name); if (project.exists()) { msg = "A project named '" + name + "' already exists in this workspace"; } } } if (msg == null) { String cmakeListsFile = getCMakeList(); if (cmakeListsFile.isEmpty()) { complete = false; } else { final File file= new File(cmakeListsFile); if (file.isDirectory()) { msg = "is a directory, please select the CMakeLists.txt of the project to import"; } else { if(file.exists()) { final File projDir = file.getParentFile(); // Ensure we can create files in the directory. if (!projDir.canWrite()) { msg = "no write permissions to the the project"; } File dotproject = new File(projDir, ".project"); if(dotproject.exists()) { msg = "Selected location already contains an eclipse project (.project file). Import it using 'File->Import...->General->Existing Projects into Workspace' instead."; } if(!projectNameSetByUser) { // Set the project name to the directory name but not if the user has supplied a name // (bugzilla 368987). Use a job to ensure proper sequence of activity, as setting the Text // will invoke the listener, which will invoke this method. if (!projectNameSetByUser && !name.equals(projDir.getName())) { WorkbenchJob wjob = new WorkbenchJob("update project name") { //$NON-NLS-1$ @Override public IStatus runInUIThread(IProgressMonitor monitor) { if (!projectName.isDisposed()) { projectName.setText(projDir.getName()); } return Status.OK_STATUS; } }; wjob.setSystem(true); wjob.schedule(); } } else { msg = "'" + cmakeListsFile + "' does not exist"; } } } } } setErrorMessage(msg); setPageComplete((msg == null) && complete); }