Пример #1
0
  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);
  }