/* * @see IContentProvider#inputChanged(Viewer, Object, Object) */ @Override public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) { final boolean isModule = newInput instanceof IErlModule; // ErlLogger.debug("content set input:: " + newInput); if (isModule && fListener == null) { // TODO fixme fListener = new ElementChangedListener(null); ErlModelManager.getErlangModel().addElementChangedListener(fListener); } else if (!isModule && fListener != null) { ErlModelManager.getErlangModel().removeElementChangedListener(fListener); fListener = null; } }
@Override public void dispose() { if (fListener != null) { ErlModelManager.getErlangModel().removeElementChangedListener(fListener); fListener = null; } }
private void findRefs( final IErlModule theModule, final ITextSelection aSelection, final boolean hasChanged) { final IBackend ideBackend = BackendCore.getBackendManager().getIdeBackend(); fRefs = null; if (fCanceled) { return; } try { final int offset = aSelection.getOffset(); final OpenResult res = ErlideOpen.open( ideBackend.getRpcSite(), theModule, offset, ModelUtils.getImportsAsList(theModule), "", ErlModelManager.getErlangModel().getPathVars()); final ErlangSearchPattern pattern = SearchUtil.getSearchPatternFromOpenResultAndLimitTo( theModule, offset, res, LimitTo.ALL_OCCURRENCES, false); if (fCanceled) { return; } if (pattern != null) { final ErlSearchScope scope = new ErlSearchScope(); scope.addModule(theModule); final List<ModuleLineFunctionArityRef> findRefs = Lists.newArrayList(); // TODO: run in background? for large files, this can take // seconds final OtpErlangObject refs = ErlideSearchServer.findRefs( ideBackend.getRpcSite(), pattern, scope, erlangEditor.getStateDir(), true); if (refs != null) { SearchUtil.addSearchResult(findRefs, refs); fRefs = erlangEditor.markOccurencesHandler.getErlangRefs(theModule, findRefs); } } } catch (final RpcTimeoutException e) { if (!ideBackend.isStopped()) { ErlLogger.warn(e); } } catch (final RpcException e) { ErlLogger.debug(e); } catch (final ErlModelException e) { ErlLogger.debug(e); } catch (final OtpErlangRangeException e) { ErlLogger.debug(e); } if (fRefs == null) { if (!erlangEditor.markOccurencesHandler.fStickyOccurrenceAnnotations) { erlangEditor.markOccurencesHandler.removeOccurrenceAnnotations(); } else if (hasChanged) { erlangEditor.markOccurencesHandler.removeOccurrenceAnnotations(); } } }
@Override public Image getColumnImage(final Object element, final int columnIndex) { Image img = null; final ICoverageObject statsEl = (ICoverageObject) element; switch (columnIndex) { case 0: final ObjectType type = statsEl.getType(); switch (type) { case FUNCTION: img = Activator.getImageDescriptor(Images.FUNCTION).createImage(); break; case MODULE: IErlModule m; try { m = ErlModelManager.getErlangModel().findModule(statsEl.getLabel()); } catch (final ErlModelException e) { e.printStackTrace(); return null; } img = ErlangElementImageProvider.getErlImageDescriptor( m, ErlangElementImageProvider.SMALL_ICONS) .createImage(); break; case FOLDER: img = PlatformUI.getWorkbench() .getSharedImages() .getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER) .createImage(); break; case PROJECT: img = PlatformUI.getWorkbench() .getSharedImages() .getImageDescriptor(IDE.SharedImages.IMG_OBJ_PROJECT) .createImage(); break; } break; case 3: img = drawPercentage(statsEl.getPercentage()); break; default: } return img; }
@Override public void launch(final ISelection selection, final String mode) { ErlLogger.debug("** Launch:: " + selection.toString()); if (selection.isEmpty()) { return; } if (!(selection instanceof IStructuredSelection)) { return; } final Set<IErlProject> projects = Sets.newHashSet(); final IStructuredSelection structuredSelection = (IStructuredSelection) selection; for (final Object element : structuredSelection.toArray()) { if (!(element instanceof IResource)) { return; } final IErlElement erlElement = ErlModelManager.getErlangModel().findElement((IResource) element); final IErlProject project = ModelUtils.getProject(erlElement); if (project != null) { projects.add(project); } } if (projects.isEmpty()) { return; } projects.addAll(getDependentProjects(projects)); final List<IErlProject> projectList = Lists.newArrayList(projects); Collections.sort( projectList, new Comparator<IErlProject>() { @Override public int compare(final IErlProject o1, final IErlProject o2) { return o1.getName().compareTo(o2.getName()); } }); try { doLaunch(mode, projectList); } catch (final CoreException e) { final IWorkbench workbench = PlatformUI.getWorkbench(); final Shell shell = workbench.getActiveWorkbenchWindow().getShell(); MessageDialog.openError(shell, "Error", e.getStatus().getMessage()); } }