public void setDocument(IDocument document) { URI uri = getURI(); if (uri == null) { clear(); return; } AbstractModelParser modelParser = null; IResource resource = getResource(); String name = uri.getPath(); if (resource != null) { modelParser = (AbstractModelParser) IDEParserFactory.getParser(resource); name = resource.getName(); } else modelParser = (AbstractModelParser) IDEParserFactory.getParser(uri); ANTLRDocumentStream documentStream = new ANTLRDocumentStream(document, name); /* * set the base url so that relative imports will work */ try { modelParser.setBaseURL(uri.toURL()); } catch (MalformedURLException e) { LOGGER.error("NewReconciler.setDocument threw MalformedURLException : ", e); } modelParser.setInput(documentStream); installPositionMarkers(modelParser, document); _compilationUnit = _editor.getCompilationUnit(); if (_compilationUnit instanceof IProjectCompilationUnit) _markJob = new CompilationUnitJob( "Marking", new MarkRunnable((IProjectCompilationUnit) _compilationUnit)); _parseJob = new ParseJob( new ParseRunnable((IMutableCompilationUnit) _compilationUnit, modelParser), documentStream); _parseJob.addJobChangeListener(_jobListener); _compileJob = new CompilationUnitJob( "Compiling", new CompileRunnable((IMutableCompilationUnit) _compilationUnit, new IDECompiler())); _compileJob.addJobChangeListener(_jobListener); }