예제 #1
0
  public InstallPkgsWizard(
      final ITool rTool, final IRPkgManager.Ext manager, final int mode, final RPkgResolver plan) {
    fRTool = rTool;
    fRPkgManager = manager;

    fMode = mode;
    switch (fMode) {
      case MODE_INSTALL:
        fTitle = "Install Selected R Packages";
        break;
      case MODE_UPDATE:
        fTitle = "Update Selected R Packages";
        break;
      case MODE_REINSTALL:
        fTitle = "Reinstall R Packages";
        break;
      default:
        throw new IllegalArgumentException("mode"); // $NON-NLS-1$
    }
    fResolver = plan;

    setWindowTitle("R Package Manager");
    setNeedsProgressMonitor(true);

    setDialogSettings(
        DialogUtil.getDialogSettings(RUIPlugin.getDefault(), "pkgmanager/InstallPkgsWizard"));
  }
예제 #2
0
 @Override
 protected String getInitialFileContent(final IFile newFileHandle, final SubMonitor m) {
   final String lineDelimiter = TextUtil.getLineDelimiter(newFileHandle.getProject());
   final IRSourceUnit su =
       (IRSourceUnit)
           LTK.getSourceUnitManager()
               .getSourceUnit(
                   LTK.PERSISTENCE_CONTEXT,
                   newFileHandle,
                   getContentType(newFileHandle),
                   true,
                   m);
   try {
     final EvaluatedTemplate data = CodeGeneration.getNewRFileContent(su, lineDelimiter);
     if (data != null) {
       fInitialSelection = data.getRegionToSelect();
       return data.getContent();
     }
   } catch (final CoreException e) {
     RUIPlugin.logError(
         ICommonStatusConstants.INTERNAL_TEMPLATE,
         "An error occured when applying template to new R script file.",
         e); //$NON-NLS-1$
   } finally {
     if (su != null) {
       su.disconnect(m);
     }
   }
   return null;
 }
예제 #3
0
  /**
   * Generates initial content for a new R script file.
   *
   * @param su the R source unit to create the source for. The unit does not need to exist
   * @param lineDelimiter the line delimiter to be used
   * @return the new content or <code>null</code> if the template is undefined or empty
   * @throws CoreException thrown when the evaluation of the code template fails
   */
  public static EvaluatedTemplate getNewRFileContent(
      final RResourceUnit su, final String lineDelimiter) throws CoreException {
    final Template template =
        RUIPlugin.getDefault()
            .getRCodeGenerationTemplateStore()
            .findTemplate(RCodeTemplatesContextType.NEW_RSCRIPTFILE);
    if (template == null) {
      return null;
    }

    final RCodeTemplatesContext context =
        new RCodeTemplatesContext(
            RCodeTemplatesContextType.NEW_RSCRIPTFILE_CONTEXTTYPE, su, lineDelimiter);

    try {
      final TemplateBuffer buffer = context.evaluate(template);
      if (buffer == null) {
        return null;
      }
      return new TemplatesUtil.EvaluatedTemplate(buffer, lineDelimiter);
    } catch (final Exception e) {
      throw new CoreException(
          new Status(
              IStatus.ERROR,
              RUI.PLUGIN_ID,
              NLS.bind(
                  TemplateMessages.TemplateEvaluation_error_description, template.getDescription()),
              e));
    }
  }
 private int getNextLineOffset(final IDocument doc, final int endLine) {
   try {
     if (endLine >= 0 && endLine + 1 < doc.getNumberOfLines()) {
       return doc.getLineOffset(endLine + 1);
     } else {
       return -1;
     }
   } catch (final BadLocationException e) {
     // don't show an error
     RUIPlugin.logError(RUIPlugin.INTERNAL_ERROR, "Error while find next line.", e); // $NON-NLS-1$
     return -1;
   }
 }
예제 #5
0
 protected void updateSymbols(final Map<String, IToken> map) {
   final RIdentifierGroups groups = RUIPlugin.getDefault().getRIdentifierGroups();
   groups.getReadLock().lock();
   try {
     putAll(map, groups.getAssignmentIdentifiers(), getToken(IRTextTokens.SYMBOL_SUB_ASSIGN_KEY));
     putAll(map, groups.getLogicalIdentifiers(), getToken(IRTextTokens.SYMBOL_SUB_LOGICAL_KEY));
     putAll(
         map,
         groups.getFlowcontrolIdentifiers(),
         getToken(IRTextTokens.SYMBOL_SUB_FLOWCONTROL_KEY));
     putAll(map, groups.getCustom1Identifiers(), getToken(IRTextTokens.SYMBOL_SUB_CUSTOM1_KEY));
     putAll(map, groups.getCustom2Identifiers(), getToken(IRTextTokens.SYMBOL_SUB_CUSTOM2_KEY));
   } finally {
     groups.getReadLock().unlock();
   }
 }
예제 #6
0
 public NewRFileCreationWizard() {
   setDialogSettings(
       DialogUtil.getDialogSettings(RUIPlugin.getDefault(), "NewElementWizard")); // $NON-NLS-1$
   setDefaultPageImageDescriptor(RUI.getImageDescriptor(RUIPlugin.IMG_WIZBAN_NEWRFILE));
   setWindowTitle(Messages.NewRScriptFileWizard_title);
 }
예제 #7
0
 @Override
 public ContextTypeRegistry getContextTypeRegistry() {
   return RUIPlugin.getDefault().getRdCodeGenerationTemplateContextRegistry();
 }
예제 #8
0
 @Override
 public TemplateStore getTemplateStore() {
   return RUIPlugin.getDefault().getRdCodeGenerationTemplateStore();
 }
예제 #9
0
  /**
   * Generates content for the Roxygen comment for the given function definition
   *
   * @param rMethod function element
   * @param lineDelimiter the line delimiter to be used
   * @return
   * @throws CoreException thrown when the evaluation of the code template fails
   */
  public static EvaluatedTemplate getCommonFunctionRoxygenComment(
      final IRMethod rMethod, final String lineDelimiter) throws CoreException {
    final Template template =
        RUIPlugin.getDefault()
            .getRCodeGenerationTemplateStore()
            .findTemplate(RCodeTemplatesContextType.ROXYGEN_COMMONFUNCTION_TEMPLATE);
    if (template == null) {
      return null;
    }

    final ISourceUnit su = rMethod.getSourceUnit();
    final RCodeTemplatesContext context =
        new RCodeTemplatesContext(
            RCodeTemplatesContextType.ROXYGEN_COMMONFUNCTION_CONTEXTTYPE, su, lineDelimiter);
    context.setRElement(rMethod);

    try {
      final TemplateBuffer buffer = context.evaluate(template);
      if (buffer == null) {
        return null;
      }
      final EvaluatedTemplate data = new EvaluatedTemplate(buffer, lineDelimiter);

      final AbstractDocument content = data.startPostEdit();
      final StringBuilder tagBuffer = new StringBuilder(64);
      final TemplateVariable paramVariable =
          TemplatesUtil.findVariable(buffer, RCodeTemplatesContextType.ROXYGEN_PARAM_TAGS_VARIABLE);
      final Position[] paramPositions =
          new Position[(paramVariable != null) ? paramVariable.getOffsets().length : 0];
      for (int i = 0; i < paramPositions.length; i++) {
        paramPositions[i] = new Position(paramVariable.getOffsets()[i], paramVariable.getLength());
        content.addPosition(paramPositions[i]);
      }

      if (paramPositions.length > 0) {
        String[] tags = null;
        final ArgsDefinition args = rMethod.getArgsDefinition();
        if (args != null) {
          final int count = args.size();
          tags = new String[count];
          for (int i = 0; i < count; i++) {
            tagBuffer.append("@param "); // $NON-NLS-1$
            tagBuffer.append(args.get(i).name);
            tagBuffer.append(" "); // $NON-NLS-1$
            tags[i] = tagBuffer.toString();
            tagBuffer.setLength(0);
          }
        }
        for (final Position pos : paramPositions) {
          insertRoxygen(content, pos, tags);
        }
      }

      data.finishPostEdit();
      return data;
    } catch (final Exception e) {
      throw new CoreException(
          new Status(
              IStatus.ERROR,
              RUI.PLUGIN_ID,
              NLS.bind(
                  TemplateMessages.TemplateEvaluation_error_description, template.getDescription()),
              e));
    }
  }
예제 #10
0
  /**
   * Generates content for the Roxygen comment for the given method definition
   *
   * @param rMethod function element
   * @param lineDelimiter the line delimiter to be used
   * @return
   * @throws CoreException thrown when the evaluation of the code template fails
   */
  public static EvaluatedTemplate getMethodRoxygenComment(
      final IRMethod rMethod, final String lineDelimiter) throws CoreException {
    final Template template =
        RUIPlugin.getDefault()
            .getRCodeGenerationTemplateStore()
            .findTemplate(RCodeTemplatesContextType.ROXYGEN_S4METHOD_TEMPLATE);
    if (template == null) {
      return null;
    }

    final ISourceUnit su = rMethod.getSourceUnit();
    final RCodeTemplatesContext context =
        new RCodeTemplatesContext(
            RCodeTemplatesContextType.ROXYGEN_METHOD_CONTEXTTYPE, su, lineDelimiter);
    context.setRElement(rMethod);

    try {
      final TemplateBuffer buffer = context.evaluate(template);
      if (buffer == null) {
        return null;
      }
      final EvaluatedTemplate data = new EvaluatedTemplate(buffer, lineDelimiter);

      final AbstractDocument content = data.startPostEdit();
      final StringBuilder sb = new StringBuilder(64);

      final Position[] sigPositions;
      String sigText = null;
      {
        final TemplateVariable variable =
            TemplatesUtil.findVariable(buffer, RCodeTemplatesContextType.ROXYGEN_SIG_LIST_VARIABLE);
        sigPositions = new Position[(variable != null) ? variable.getOffsets().length : 0];
        for (int i = 0; i < sigPositions.length; i++) {
          sigPositions[i] = new Position(variable.getOffsets()[i], variable.getLength());
          content.addPosition(sigPositions[i]);
        }

        if (sigPositions.length > 0) {
          final ArgsDefinition args = rMethod.getArgsDefinition();
          if (args != null) {
            final int count = args.size();
            for (int i = 0; i < count; i++) {
              final Arg arg = args.get(i);
              if (arg.className == null || arg.className.equals("ANY")) { // $NON-NLS-1$
                break;
              }
              sb.append(arg.className);
              sb.append(","); // $NON-NLS-1$
            }
            if (sb.length() > 0) {
              sigText = sb.substring(0, sb.length() - 1);
              sb.setLength(0);
            }
          }
        }
      }
      final Position[] paramPositions;
      String[] paramTags = null;
      {
        final TemplateVariable variable =
            TemplatesUtil.findVariable(
                buffer, RCodeTemplatesContextType.ROXYGEN_PARAM_TAGS_VARIABLE);
        paramPositions = new Position[(variable != null) ? variable.getOffsets().length : 0];
        for (int i = 0; i < paramPositions.length; i++) {
          paramPositions[i] = new Position(variable.getOffsets()[i], variable.getLength());
          content.addPosition(paramPositions[i]);
        }

        if (paramPositions.length > 0) {
          String list = null;
          final ArgsDefinition args = rMethod.getArgsDefinition();
          if (args != null) {
            final int count = args.size();
            paramTags = new String[count];
            for (int i = 0; i < count; i++) {
              sb.append("@param "); // $NON-NLS-1$
              sb.append(args.get(i).name);
              sb.append(" "); // $NON-NLS-1$
              paramTags[i] = sb.toString();
              sb.setLength(0);
            }
          }
        }
      }

      if (sigPositions != null) {
        for (final Position pos : sigPositions) {
          insertRoxygen(content, pos, sigText);
        }
      }
      if (paramPositions != null) {
        for (final Position pos : paramPositions) {
          insertRoxygen(content, pos, paramTags);
        }
      }

      data.finishPostEdit();
      return data;
    } catch (final Exception e) {
      throw new CoreException(
          new Status(
              IStatus.ERROR,
              RUI.PLUGIN_ID,
              NLS.bind(
                  TemplateMessages.TemplateEvaluation_error_description, template.getDescription()),
              e));
    }
  }
예제 #11
0
  /**
   * Generates content for the Roxygen comment for the given class definition
   *
   * @param rClass class element
   * @param lineDelimiter the line delimiter to be used
   * @return
   * @throws CoreException thrown when the evaluation of the code template fails
   */
  public static EvaluatedTemplate getClassRoxygenComment(
      final IRClass rClass, final String lineDelimiter) throws CoreException {
    final Template template =
        RUIPlugin.getDefault()
            .getRCodeGenerationTemplateStore()
            .findTemplate(RCodeTemplatesContextType.ROXYGEN_S4CLASS_TEMPLATE);
    if (template == null) {
      return null;
    }

    final ISourceUnit su = rClass.getSourceUnit();
    final RCodeTemplatesContext context =
        new RCodeTemplatesContext(
            RCodeTemplatesContextType.ROXYGEN_CLASS_CONTEXTTYPE, su, lineDelimiter);
    context.setRElement(rClass);

    try {
      final TemplateBuffer buffer = context.evaluate(template);
      if (buffer == null) {
        return null;
      }
      final EvaluatedTemplate data = new EvaluatedTemplate(buffer, lineDelimiter);

      final AbstractDocument content = data.startPostEdit();
      final StringBuilder tagBuffer = new StringBuilder(64);
      final TemplateVariable slotVariable =
          TemplatesUtil.findVariable(buffer, RCodeTemplatesContextType.ROXYGEN_SLOT_TAGS_VARIABLE);
      final Position[] slotPositions =
          new Position[(slotVariable != null) ? slotVariable.getOffsets().length : 0];
      for (int i = 0; i < slotPositions.length; i++) {
        slotPositions[i] = new Position(slotVariable.getOffsets()[i], slotVariable.getLength());
        content.addPosition(slotPositions[i]);
      }

      if (slotPositions.length > 0) {
        String[] tags = null;
        final List<? extends IModelElement> slots =
            rClass.getModelChildren(IRElement.R_S4SLOT_FILTER);
        final int count = slots.size();
        tags = new String[count];
        for (int i = 0; i < count; i++) {
          final IRSlot slot = (IRSlot) slots.get(i);
          tagBuffer.append("@slot "); // $NON-NLS-1$
          tagBuffer.append(slot.getElementName().getDisplayName());
          tagBuffer.append(" "); // $NON-NLS-1$
          tags[i] = tagBuffer.toString();
          tagBuffer.setLength(0);
        }
        for (final Position pos : slotPositions) {
          insertRoxygen(content, pos, tags);
        }
      }

      data.finishPostEdit();
      return data;
    } catch (final Exception e) {
      throw new CoreException(
          new Status(
              IStatus.ERROR,
              RUI.PLUGIN_ID,
              NLS.bind(
                  TemplateMessages.TemplateEvaluation_error_description, template.getDescription()),
              e));
    }
  }
예제 #12
0
 public NewRProjectWizard() {
   setDialogSettings(
       DialogUtil.getDialogSettings(RUIPlugin.getDefault(), "NewElementWizard")); // $NON-NLS-1$
   setDefaultPageImageDescriptor(RUI.getImageDescriptor(RUIPlugin.IMG_WIZBAN_NEW_RPROJECT));
   setWindowTitle(Messages.NewRProjectWizard_title);
 }