示例#1
0
 public SearchResults getAffectedNodes(final RefactoringContext refactoringContext) {
   SearchResults searchResults = new SearchResults();
   for (SNode selNode : ListSequence.fromList(refactoringContext.getSelectedNodes())) {
     searchResults.addAll(
         FindUtils.getSearchResults(
             new EmptyProgressMonitor(),
             selNode,
             GlobalScope.getInstance(),
             "jetbrains.mps.lang.structure.findUsages.NodeAndDescendantsUsages_Finder"));
   }
   return searchResults;
 }
示例#2
0
 public void refactor(final RefactoringContext refactoringContext) {
   List<SNode> nodes = refactoringContext.getSelectedNodes();
   SModel targetModel = null;
   List<SNode> movedNodes = null;
   if (((Object) refactoringContext.getParameter("target")) instanceof SModel) {
     targetModel = ((SModel) ((Object) refactoringContext.getParameter("target")));
     movedNodes = refactoringContext.moveNodesToModel(nodes, targetModel);
   }
   if (((Object) refactoringContext.getParameter("target")) instanceof SNode) {
     SNode targetNode = (SNode) ((Object) refactoringContext.getParameter("target"));
     movedNodes =
         refactoringContext.moveNodesToNode(
             nodes, ListSequence.fromList(nodes).first().getRoleInParent(), targetNode);
     targetModel = SNodeOperations.getModel(targetNode);
   }
   if (targetModel != null) {
     refactoringContext.setParameter("nodeToOpen", ListSequence.fromList(movedNodes).first());
   }
 }
示例#3
0
  public ModelOrNodeChooser(final RefactoringContext context) {
    super();
    this.myTree = new ProjectTree(context.getSelectedProject());
    this.setViewportView(this.myTree);
    ThreadUtils.runInUIThreadNoWait(
        new Runnable() {
          public void run() {
            ModelOrNodeChooser.this.myTree.rebuildNow();
            ModelOrNodeChooser.this.myTree.runWithoutExpansion(
                new Runnable() {
                  public void run() {
                    MPSTreeNode treeNode =
                        ModelOrNodeChooser.this.myHelper.findMostSuitableModelTreeNode(
                            context.getSelectedModel());
                    if (treeNode == null) {
                      return;
                    }

                    ModelOrNodeChooser.this.myTree.selectNode(treeNode);
                  }
                });
          }
        });
  }
  @Override
  public boolean testRefactoring(
      final Project project,
      final SModel sandbox1,
      final SModel sandbox2,
      final Language testRefactoringLanguage,
      final Language testRefactoringTargetLanguage) {
    final String newConceptName = "MyVeryGoodConcept2";
    final ModelAccess modelAccess = project.getRepository().getModelAccess();
    final Wrappers._T<IRefactoring> refactoring = new Wrappers._T<IRefactoring>();
    modelAccess.runReadAction(
        new Runnable() {
          public void run() {
            refactoring.value =
                RefactoringUtil.getRefactoringByClassName(
                    BehaviorReflection.invokeVirtual(
                        String.class,
                        SNodeOperations.getNode(
                            "r:de5b7214-45ee-4f6d-89bf-acde59cdb050(jetbrains.mps.lang.structure.refactorings)",
                            "1347577327951781517"),
                        "virtual_getFqName_1213877404258",
                        new Object[] {}));
          }
        });

    final RefactoringContext refactoringContext =
        new RefactoringContext(project, refactoring.value);
    refactoringContext.setCurrentOperationContext(new ProjectOperationContext(project));

    modelAccess.runReadAction(
        new Runnable() {
          public void run() {
            final SModel structureModelDescriptor =
                testRefactoringLanguage.getStructureModelDescriptor();
            refactoringContext.setParameter(
                RenameConceptRefactoringTester.STRMD, structureModelDescriptor);
            SModel model = structureModelDescriptor;
            SNode concept = SModelOperations.getRootByName(model, "MyVeryGoodConcept1");
            refactoringContext.setSelectedNode(concept);
            refactoringContext.setSelectedModel(structureModelDescriptor);
            refactoringContext.setParameter("newName", newConceptName);
          }
        });
    new RefactoringTestFacade().doExecuteInTest(refactoringContext);
    final boolean[] result = new boolean[] {false};
    ThreadUtils.runInUIThreadAndWait(
        new Runnable() {
          @Override
          public void run() {
            modelAccess.runReadAction(
                new Runnable() {
                  public void run() {
                    try {
                      if (sandbox1.isLoaded()) {
                        System.err.println(
                            "test environment is invalid: model sandbox1 is already initialized, should be not");
                        result[0] = false;
                        return;
                      }
                      SModel sModel = sandbox1;
                      String conceptFqName =
                          sModel.getRootNodes().iterator().next().getConcept().getConceptId();
                      SModel structureModelDescriptor =
                          (SModel)
                              refactoringContext.getParameter(RenameConceptRefactoringTester.STRMD);
                      result[0] =
                          conceptFqName.equals(
                              structureModelDescriptor.getReference().getModelName()
                                  + "."
                                  + newConceptName);
                    } catch (Throwable t) {
                      t.printStackTrace();
                      result[0] = false;
                    }
                  }
                });
          }
        });
    return result[0];
  }
示例#5
0
 public void refactor(final RefactoringContext refactoringContext) {
   new ConvertAnonymousRefactoring(
           refactoringContext.getSelectedNode(),
           ((String) refactoringContext.getParameter("name")))
       .doRefactor();
 }