예제 #1
0
  /**
   * Performs the reconcile and returns the AST if it was computed.
   *
   * @param unit the compilation unit
   * @param initialReconcile <code>true</code> if this is the initial reconcile
   * @return the AST or <code>null</code> if none
   * @throws JavaModelException if the original Java element does not exist
   * @since 3.4
   */
  private Program reconcile(ISourceModule unit, boolean initialReconcile) throws ModelException {
    /* fix for missing cancel flag communication */
    IProblemRequestorExtension extension = getProblemRequestorExtension();
    if (extension != null) {
      extension.setProgressMonitor(fProgressMonitor);
      extension.setIsActive(true);
    }

    try {
      final ASTProvider astProvider = PHPUiPlugin.getDefault().getASTProvider();

      synchronized (unit) {
        unit.reconcile(true, null, fProgressMonitor);
      }

      // read DOM AST from provider if avaiable
      Program createdAST = astProvider.getAST(unit, SharedASTProvider.WAIT_NO, fProgressMonitor);
      if (astProvider.isActive(unit) && createdAST != null) {
        return createdAST;
      }

      if (initialReconcile || astProvider.isActive(unit)) {
        PHPVersion phpVersion = ProjectOptions.getPhpVersion(unit.getScriptProject().getProject());
        ASTParser newParser = ASTParser.newParser(phpVersion, unit);
        createdAST = newParser.createAST(null);
        if (createdAST != null && document != null) {
          createdAST.setSourceModule(unit);
          createdAST.setSourceRange(0, document.getLength());
          createdAST.setLineEndTable(Util.lineEndTable(document));
        }
        return createdAST;
      }

    } catch (OperationCanceledException ex) {
      Assert.isTrue(fProgressMonitor == null || fProgressMonitor.isCanceled());

    } catch (Exception e) {
      throw new ModelException(e, IStatus.ERROR);

    } finally {
      /* fix for missing cancel flag communication */
      if (extension != null) {
        extension.setProgressMonitor(null);
        extension.setIsActive(false);
      }
    }

    return null;
  }
예제 #2
0
    public JavaScriptSupportGroup(Composite composite, WizardPage projectWizardFirstPage) {
      final int numColumns = 3;
      fGroup = new Group(composite, SWT.NONE);
      fGroup.setFont(composite.getFont());

      fGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
      fGroup.setLayout(initGridLayout(new GridLayout(numColumns, false), true));
      fGroup.setText(PHPUIMessages.JavaScriptSupportGroup_OptionBlockTitle); // $NON-NLS-1$

      fEnableJavaScriptSupport = new Button(fGroup, SWT.CHECK | SWT.RIGHT);
      fEnableJavaScriptSupport.setText(
          PHPUIMessages.JavaScriptSupportGroup_EnableSupport); // $NON-NLS-1$
      fEnableJavaScriptSupport.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
      fEnableJavaScriptSupport.addSelectionListener(this);
      fEnableJavaScriptSupport.setSelection(
          PHPUiPlugin.getDefault()
              .getPreferenceStore()
              .getBoolean((PreferenceConstants.JavaScriptSupportEnable)));
    }
예제 #3
0
 public boolean shouldSupportJavaScript() {
   return PHPUiPlugin.getDefault()
       .getPreferenceStore()
       .getBoolean((PreferenceConstants.JavaScriptSupportEnable));
 }