/** Reverses the actions of {@link JobDoneListener#scheduled(IJobChangeEvent)} */ @Override public void done(final IJobChangeEvent event) { if (event.getResult() == Status.OK_STATUS || event.getResult() == Status.CANCEL_STATUS) { UIJob refreshJob = new UIJob(REFRESH_STATISTICS_VIEW) { @Override public IStatus runInUIThread(IProgressMonitor monitor) { Job job = event.getJob(); if (job instanceof ITreeJob) { final LongRunningJob<?> treeJob = (LongRunningJob<?>) job; LongRunningMethod<?> method = treeJob.getMethod(); final boolean expand = (method instanceof StatisticTreeJob) && ((StatisticTreeJob) method).isExpand(); runningJobs.remove(treeJob); final Parent calc = ((TreeJob) method).getCalculated(); calc.startCalculating(false); checkViews(); synchronized (views) { for (TreeViewer view : views) { view.refresh(calc); if (expand) { view.expandToLevel(calc, 1); } } } } return Status.OK_STATUS; } }; refreshJob.setPriority(Job.INTERACTIVE); refreshJob.schedule(); } }
@Override public boolean prepareDecoration(Object element, String originalText) { final IFile f = (IFile) element; if (isImageFile(f)) { if (images.containsKey(f)) { return true; } else { final Display d = Display.getDefault(); UIJob prepareImage = new UIJob(d, "prepare Image") { @Override public IStatus runInUIThread(IProgressMonitor monitor) { try { images.put(f, prepareImage(d, f)); LabelProviderChangedEvent event = new LabelProviderChangedEvent(ImagePreviewDecorator.this, f); for (ILabelProviderListener x : listeners) { x.labelProviderChanged(event); } return Status.OK_STATUS; } catch (CoreException e) { return new Status( IStatus.ERROR, Activator.PLUGIN_ID, "failed to load image preview", e); } } }; prepareImage.setPriority(Job.DECORATE); prepareImage.schedule(); } return false; } return true; }
/** * Adds the scheduled job to the list of running jobs and gives the user optical feedback that the * requested node is being calculated. */ @Override public void scheduled(final IJobChangeEvent event) { UIJob refreshJob = new UIJob(REFRESH_STATISTICS_VIEW) { @Override public IStatus runInUIThread(IProgressMonitor monitor) { Job job = event.getJob(); if (job instanceof ITreeJob) { final LongRunningJob<?> treeJob = (LongRunningJob<?>) job; runningJobs.add(treeJob); Parent calc = ((TreeJob) treeJob.getMethod()).getCalculated(); calc.startCalculating(true); checkViews(); synchronized (views) { for (TreeViewer view : views) { view.refresh(calc); } } } return Status.OK_STATUS; } }; refreshJob.setPriority(Job.INTERACTIVE); refreshJob.schedule(); }
/** As soon as the reparse is done, this method is called to actually make the rename. */ public void parserChanged(ISimpleNode root, IAdaptable file, IDocument doc) { pyEdit.getParser().removeParseListener(this); // we'll only listen for this single parse /** * Create an ui job to actually make the rename (otherwise we can't make ui.enter() nor create * a PySelection.) */ UIJob job = new UIJob("Rename") { @Override public IStatus runInUIThread(IProgressMonitor monitor) { try { ISourceViewer viewer = pyEdit.getPySourceViewer(); IDocument document = viewer.getDocument(); PySelection ps = new PySelection(pyEdit); LinkedPositionGroup group = new LinkedPositionGroup(); if (!fillWithOccurrences(document, group, new NullProgressMonitor(), ps)) { return Status.OK_STATUS; } if (group.isEmpty()) { return Status.OK_STATUS; } LinkedModeModel model = new LinkedModeModel(); model.addGroup(group); if (model.tryInstall() && model.getTabStopSequence().size() > 0) { final LinkedModeUI ui = new EditorLinkedModeUI(model, viewer); Tuple<String, Integer> currToken = ps.getCurrToken(); ui.setCyclingMode(LinkedModeUI.CYCLE_ALWAYS); ui.setExitPosition( viewer, currToken.o2 + currToken.o1.length(), 0, 0 /*ordered so that 0 is current pos*/); ui.enter(); } } catch (BadLocationException e) { Log.log(e); } catch (Throwable e) { Log.log(e); } return Status.OK_STATUS; } }; job.setPriority(Job.INTERACTIVE); job.schedule(); }
private static void showErrorMessage( final String title, final String message, final Throwable exception) { if (Display.getCurrent() == null || exception != null) { UIJob job = new UIJob(message) { @Override public IStatus runInUIThread(IProgressMonitor monitor) { if (exception == null) { showErrorDialog(title, message); return Status.OK_STATUS; } return new Status(IStatus.ERROR, UIPlugin.PLUGIN_ID, null, exception); } }; job.setPriority(Job.INTERACTIVE); job.setUser(true); job.schedule(); } else { showErrorDialog(title, message); } }
public static boolean showPromptDialog(final String title, final String message) { if (Display.getCurrent() == null) { UIJob job = new UIJob(title) { @Override public IStatus runInUIThread(IProgressMonitor monitor) { if (showPromptDialogUI(title, message)) { return Status.OK_STATUS; } return Status.CANCEL_STATUS; } }; job.setPriority(Job.INTERACTIVE); job.setUser(true); job.schedule(); try { job.join(); } catch (InterruptedException e) { } return job.getResult() == Status.OK_STATUS; } else { return showPromptDialogUI(title, message); } }
private void setGrammarEditor(IWorkbenchPart activeEditor) { if (featureModelEditor == activeEditor) return; if (featureModelEditor != null) { featureModelEditor.getOriginalFeatureModel().removeListener(modelListener); featureModelEditor.getFeatureModel().removeListener(modelListener); featureModelEditor = null; } if (activeEditor instanceof FeatureModelEditor) { featureModelEditor = (FeatureModelEditor) activeEditor; featureModelEditor.getOriginalFeatureModel().addListener(modelListener); featureModelEditor.getFeatureModel().addListener(modelListener); if (evaluation == null && featureModelEditor != null && featureModelEditor .getGrammarFile() .getResource() .getProject() .getName() .startsWith("EvaluationTest")) { evaluation = new Job("Evaluation Test") { @Override protected IStatus run(IProgressMonitor monitor) { Evaluation.evaluate(featureModelEditor.getGrammarFile().getResource().getProject()); return Status.OK_STATUS; } }; evaluation.setPriority(Job.LONG); evaluation.schedule(); UIJob conversion = new UIJob("Converting Feature Models") { @Override public IStatus runInUIThread(IProgressMonitor monitor) { try { convertModelToBitmapTest( featureModelEditor .getGrammarFile() .getResource() .getProject() .getFolder("models")); } catch (Exception e) { e.printStackTrace(); } return Status.OK_STATUS; } public void convertModelToBitmapTest(IFolder folder) throws CoreException { for (IResource res : folder.members()) if (res instanceof IFile && res.getName().endsWith(".m")) { IFile fmFile = (IFile) res; try { FeatureModel fm = new FeatureModel(); FeatureModelReader reader = new FeatureModelReader(fm); reader.readFromFile(fmFile); String imageName = fmFile.getRawLocation().toOSString(); imageName = imageName.substring(0, imageName.length() - ".m".length()) + ".png"; createBitmap(fm, new File(imageName)); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedModelException e) { e.printStackTrace(); } } folder.refreshLocal(IResource.DEPTH_ONE, null); } private void createBitmap(FeatureModel featureModel, File file) { GraphicalViewerImpl graphicalViewer = new ScrollingGraphicalViewer(); graphicalViewer.createControl(viewer.getControl().getParent()); graphicalViewer.getControl().setBackground(GUIDefaults.DIAGRAM_BACKGROUND); graphicalViewer.setEditPartFactory(new GraphicalEditPartFactory()); ScalableFreeformRootEditPart rootEditPart = new ScalableFreeformRootEditPart(); ((ConnectionLayer) rootEditPart.getLayer(LayerConstants.CONNECTION_LAYER)) .setAntialias(SWT.ON); graphicalViewer.setRootEditPart(rootEditPart); graphicalViewer.setContents(featureModel); FeatureDiagramLayoutManager layoutManager = new LevelOrderLayout(); layoutManager.layout(featureModel); GEFImageWriter.writeToFile(graphicalViewer, file); } }; conversion.setPriority(Job.LONG); conversion.schedule(); } } refresh(); }