Java 类com.intellij.lang.surroundWith.Surrounder 实例源码

项目:intellij-ce-playground    文件:SurroundWithHandler.java   
private static void invokeSurrounderInTests(Project project,
                                            Editor editor,
                                            PsiFile file,
                                            Surrounder surrounder,
                                            int startOffset,
                                            int endOffset, List<SurroundDescriptor> surroundDescriptors) {
  assert ApplicationManager.getApplication().isUnitTestMode();
  for (SurroundDescriptor descriptor : surroundDescriptors) {
    final PsiElement[] elements = descriptor.getElementsToSurround(file, startOffset, endOffset);
    if (elements.length > 0) {
      for (Surrounder descriptorSurrounder : descriptor.getSurrounders()) {
        if (surrounder.getClass().equals(descriptorSurrounder.getClass())) {
          doSurround(project, editor, surrounder, elements);
          return;
        }
      }
    }
  }
}
项目:tools-idea    文件:SurroundWithHandler.java   
private static void invokeSurrounderInTests(Project project,
                                            Editor editor,
                                            PsiFile file,
                                            Surrounder surrounder,
                                            int startOffset,
                                            int endOffset, List<SurroundDescriptor> surroundDescriptors) {
  assert ApplicationManager.getApplication().isUnitTestMode();
  for (SurroundDescriptor descriptor : surroundDescriptors) {
    final PsiElement[] elements = descriptor.getElementsToSurround(file, startOffset, endOffset);
    if (elements.length > 0) {
      for (Surrounder descriptorSurrounder : descriptor.getSurrounders()) {
        if (surrounder.getClass().equals(descriptorSurrounder.getClass())) {
          doSurround(project, editor, surrounder, elements);
          return;
        }
      }
    }
  }
}
项目:intellij-haxe    文件:HaxeSurroundTest.java   
protected void doTest(final Surrounder surrounder) throws Exception {
  myFixture.configureByFile(getTestName(false) + ".hx");

  WriteCommandAction.runWriteCommandAction(getProject(), new Runnable() {
    @Override
    public void run() {
      SurroundWithHandler.invoke(getProject(), myFixture.getEditor(), myFixture.getFile(), surrounder);
      PsiDocumentManager.getInstance(getProject()).doPostponedOperationsAndUnblockDocument(myFixture.getDocument(myFixture.getFile()));
      CodeStyleManager.getInstance(myFixture.getProject()).reformat(myFixture.getFile());
    }
  });
    /*CommandProcessor.getInstance().executeCommand(getProject(), new Runnable() {
        @Override
        public void run() {
            SurroundWithHandler.invoke(getProject(), myFixture.getEditor(), myFixture.getFile(), surrounder);
            PsiDocumentManager.getInstance(getProject()).doPostponedOperationsAndUnblockDocument(myFixture.getDocument(myFixture.getFile()));
            CodeStyleManager.getInstance(myFixture.getProject()).reformat(myFixture.getFile());
        }
    }, null, null);*/

  myFixture.checkResultByFile(getTestName(false) + "_after.hx");
}
项目:consulo    文件:SurroundWithHandler.java   
private static void invokeSurrounderInTests(Project project,
                                            Editor editor,
                                            PsiFile file,
                                            Surrounder surrounder,
                                            int startOffset,
                                            int endOffset, List<SurroundDescriptor> surroundDescriptors) {
  assert ApplicationManager.getApplication().isUnitTestMode();
  for (SurroundDescriptor descriptor : surroundDescriptors) {
    final PsiElement[] elements = descriptor.getElementsToSurround(file, startOffset, endOffset);
    if (elements.length > 0) {
      for (Surrounder descriptorSurrounder : descriptor.getSurrounders()) {
        if (surrounder.getClass().equals(descriptorSurrounder.getClass())) {
          doSurround(project, editor, surrounder, elements);
          return;
        }
      }
    }
  }
}
项目:intellij-ce-playground    文件:JavaExpressionSurroundDescriptor.java   
@Override
@NotNull public Surrounder[] getSurrounders() {
  if (mySurrounders == null) {
    final ArrayList<Surrounder> list = new ArrayList<Surrounder>();
    Collections.addAll(list, SURROUNDERS);
    Collections.addAll(list, Extensions.getExtensions(JavaExpressionSurrounder.EP_NAME));
    mySurrounders = list.toArray(new Surrounder[list.size()]);
  }
  return mySurrounders;
}
项目:intellij-ce-playground    文件:JavaSurroundWithTest.java   
private void doTest(@NotNull String fileName, Surrounder surrounder) {
  configureByFile(BASE_PATH + fileName + ".java");

  SurroundDescriptor item = ContainerUtil.getFirstItem(LanguageSurrounders.INSTANCE.allForLanguage(JavaLanguage.INSTANCE));
  assertNotNull(item);
  SelectionModel selectionModel = getEditor().getSelectionModel();
  PsiElement[] elements = item.getElementsToSurround(getFile(), selectionModel.getSelectionStart(), selectionModel.getSelectionEnd());
  assertTrue(surrounder.isApplicable(elements));

  SurroundWithHandler.invoke(getProject(), getEditor(), getFile(), surrounder);
  checkResultByFile(BASE_PATH + fileName + "_after.java");
}
项目:intellij-ce-playground    文件:JavaSurroundWithTest.java   
private void doTestWithTemplateFinish(@NotNull String fileName, Surrounder surrounder, @Nullable String textToType) {
  TemplateManagerImpl.setTemplateTesting(getProject(), getTestRootDisposable());
  configureByFile(BASE_PATH + fileName + ".java");
  SurroundWithHandler.invoke(getProject(), getEditor(), getFile(), surrounder);
  if (textToType != null) {
    type(textToType);
  }
  TemplateState templateState = TemplateManagerImpl.getTemplateState(getEditor());
  assertNotNull(templateState);
  templateState.nextTab();
  checkResultByFile(BASE_PATH + fileName + "_after.java");
}
项目:intellij-ce-playground    文件:CodeInsightTestUtil.java   
public static void doSurroundWithTest(@NotNull final CodeInsightTestFixture fixture, @NotNull final Surrounder surrounder,
                                      @NotNull final String before, @NotNull final String after) {
  fixture.configureByFile(before);
  new WriteCommandAction.Simple(fixture.getProject()) {
    @Override
    protected void run() throws Throwable {
      SurroundWithHandler.invoke(fixture.getProject(), fixture.getEditor(), fixture.getFile(), surrounder);
    }
  }.execute();
  fixture.checkResultByFile(after, false);
}
项目:intellij-ce-playground    文件:SurroundWithHandler.java   
public static void invoke(@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile file, Surrounder surrounder) {
  if (!CodeInsightUtilBase.prepareEditorForWrite(editor)) return;
  if (file instanceof PsiCompiledElement) {
    HintManager.getInstance().showErrorHint(editor, "Can't modify decompiled code");
    return;
  }

  List<AnAction> applicable = buildSurroundActions(project, editor, file, surrounder);
  if (applicable != null) {
    showPopup(editor, applicable);
  }
  else if (!ApplicationManager.getApplication().isUnitTestMode()) {
    HintManager.getInstance().showErrorHint(editor, "Couldn't find Surround With variants applicable to the current context");
  }
}
项目:intellij-ce-playground    文件:SurroundWithHandler.java   
static void doSurround(final Project project, final Editor editor, final Surrounder surrounder, final PsiElement[] elements) {
  if (!FileDocumentManager.getInstance().requestWriting(editor.getDocument(), project)) {
    return;
  }

  try {
    PsiDocumentManager.getInstance(project).commitAllDocuments();
    int col = editor.getCaretModel().getLogicalPosition().column;
    int line = editor.getCaretModel().getLogicalPosition().line;
    if (!editor.getCaretModel().supportsMultipleCarets()) {
      LogicalPosition pos = new LogicalPosition(0, 0);
      editor.getCaretModel().moveToLogicalPosition(pos);
    }
    TextRange range = surrounder.surroundElements(project, editor, elements);
    if (TemplateManager.getInstance(project).getActiveTemplate(editor) == null && InplaceRefactoring.getActiveInplaceRenamer(editor) == null) {
      LogicalPosition pos1 = new LogicalPosition(line, col);
      editor.getCaretModel().moveToLogicalPosition(pos1);
    }
    if (range != null) {
      int offset = range.getStartOffset();
      editor.getCaretModel().removeSecondaryCarets();
      editor.getCaretModel().moveToOffset(offset);
      editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
      editor.getSelectionModel().setSelection(range.getStartOffset(), range.getEndOffset());
    }
  }
  catch (IncorrectOperationException e) {
    LOG.error(e);
  }
}
项目:intellij-ce-playground    文件:SurroundWithHandler.java   
public InvokeSurrounderAction(Surrounder surrounder, Project project, Editor editor, PsiElement[] elements, char mnemonic) {
  super(UIUtil.MNEMONIC + String.valueOf(mnemonic) + ". " + surrounder.getTemplateDescription());
  mySurrounder = surrounder;
  myProject = project;
  myEditor = editor;
  myElements = elements;
}
项目:intellij-ce-playground    文件:PostfixTemplatesUtils.java   
@Nullable
public static TextRange surround(@NotNull Surrounder surrounder,
                                 @NotNull Editor editor,
                                 @NotNull PsiElement expr) {
  Project project = expr.getProject();
  PsiElement[] elements = {expr};
  if (surrounder.isApplicable(elements)) {
    return surrounder.surroundElements(project, editor, elements);
  }
  else {
    showErrorHint(project, editor);
  }
  return null;
}
项目:intellij-ce-playground    文件:PySurroundWithTest.java   
private void doTest(final Surrounder surrounder) throws Exception {
  String baseName = "/surround/" + getTestName(false);
  myFixture.configureByFile(baseName + ".py");
  new WriteCommandAction.Simple(myFixture.getProject()) {
    @Override
    protected void run() throws Throwable {
      SurroundWithHandler.invoke(myFixture.getProject(), myFixture.getEditor(), myFixture.getFile(), surrounder);
    }
  }.execute();
  myFixture.checkResultByFile(baseName + "_after.py", true);
}
项目:tools-idea    文件:JavaExpressionSurroundDescriptor.java   
@Override
@NotNull public Surrounder[] getSurrounders() {
  if (mySurrounders == null) {
    final ArrayList<Surrounder> list = new ArrayList<Surrounder>();
    Collections.addAll(list, SURROUNDERS);
    Collections.addAll(list, Extensions.getExtensions(JavaExpressionSurrounder.EP_NAME));
    mySurrounders = list.toArray(new Surrounder[list.size()]);
  }
  return mySurrounders;
}
项目:tools-idea    文件:JavaSurroundWithTest.java   
private void doTestWithTemplateFinish(@NotNull String fileName, final Surrounder surrounder, @Nullable String textToType)
  throws Exception {
  TemplateManagerImpl.setTemplateTesting(getProject(), getTestRootDisposable());
  configureByFile(BASE_PATH + fileName + ".java");
  SurroundWithHandler.invoke(getProject(), getEditor(), getFile(), surrounder);
  if (textToType != null) {
    type(textToType);
  }
  TemplateState templateState = TemplateManagerImpl.getTemplateState(getEditor());
  assertNotNull(templateState);
  templateState.nextTab();
  checkResultByFile(BASE_PATH + fileName + "_after.java");
}
项目:tools-idea    文件:CodeInsightTestUtil.java   
public static void doSurroundWithTest(@NotNull final CodeInsightTestFixture fixture, @NotNull final Surrounder surrounder,
                                      @NotNull final String before, @NotNull final String after) {
  fixture.configureByFile(before);
  new WriteCommandAction.Simple(fixture.getProject()) {
    @Override
    protected void run() throws Throwable {
      SurroundWithHandler.invoke(fixture.getProject(), fixture.getEditor(), fixture.getFile(), surrounder);
    }
  }.execute();
  fixture.checkResultByFile(after, false);
}
项目:tools-idea    文件:SurroundWithHandler.java   
public static void invoke(@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile file, Surrounder surrounder) {
  if (!CodeInsightUtilBase.prepareEditorForWrite(editor)) return;
  if (file instanceof PsiCompiledElement) {
    HintManager.getInstance().showErrorHint(editor, "Can't modify decompiled code");
    return;
  }

  List<AnAction> applicable = buildSurroundActions(project, editor, file, surrounder);
  if (applicable != null) {
    showPopup(editor, applicable);
  }
  else if (!ApplicationManager.getApplication().isUnitTestMode()) {
    HintManager.getInstance().showErrorHint(editor, "Couldn't find Surround With variants applicable to the current context");
  }
}
项目:tools-idea    文件:SurroundWithHandler.java   
static void doSurround(final Project project, final Editor editor, final Surrounder surrounder, final PsiElement[] elements) {
  if (!FileDocumentManager.getInstance().requestWriting(editor.getDocument(), project)) {
    return;
  }

  try {
    PsiDocumentManager.getInstance(project).commitAllDocuments();
    int col = editor.getCaretModel().getLogicalPosition().column;
    int line = editor.getCaretModel().getLogicalPosition().line;
    LogicalPosition pos = new LogicalPosition(0, 0);
    editor.getCaretModel().moveToLogicalPosition(pos);
    TextRange range = surrounder.surroundElements(project, editor, elements);
    if (TemplateManager.getInstance(project).getActiveTemplate(editor) == null) {
      LogicalPosition pos1 = new LogicalPosition(line, col);
      editor.getCaretModel().moveToLogicalPosition(pos1);
    }
    if (range != null) {
      int offset = range.getStartOffset();
      editor.getCaretModel().moveToOffset(offset);
      editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
      editor.getSelectionModel().setSelection(range.getStartOffset(), range.getEndOffset());
    }
  }
  catch (IncorrectOperationException e) {
    LOG.error(e);
  }
}
项目:tools-idea    文件:SurroundWithHandler.java   
public InvokeSurrounderAction(Surrounder surrounder, Project project, Editor editor, PsiElement[] elements, char mnemonic) {
  super(UIUtil.MNEMONIC + String.valueOf(mnemonic) + ". " + surrounder.getTemplateDescription());
  mySurrounder = surrounder;
  myProject = project;
  myEditor = editor;
  myElements = elements;
}
项目:intellij-haxe    文件:HaxeSurroundDescriptor.java   
@NotNull
@Override
public Surrounder[] getSurrounders() {
  return new Surrounder[]{
    new HaxeIfSurrounder(),
    new HaxeIfElseSurrounder(),
    new HaxeWhileSurrounder(),
    new HaxeDoWhileSurrounder(),
    new HaxeTryCatchSurrounder()
  };
}
项目:consulo-haxe    文件:HaxeSurroundDescriptor.java   
@NotNull
@Override
public Surrounder[] getSurrounders() {
  return new Surrounder[]{
    new HaxeIfSurrounder(),
    new HaxeIfElseSurrounder(),
    new HaxeWhileSurrounder(),
    new HaxeDoWhileSurrounder(),
    new HaxeTryCatchSurrounder()
  };
}
项目:consulo-haxe    文件:HaxeSurroundTest.java   
protected void doTest(final Surrounder surrounder) throws Exception {
  myFixture.configureByFile(getTestName(false) + ".hx");

  ApplicationManager.getApplication().runWriteAction(new Runnable() {
    public void run() {
      SurroundWithHandler.invoke(getProject(), myFixture.getEditor(), myFixture.getFile(), surrounder);
      PsiDocumentManager.getInstance(getProject()).doPostponedOperationsAndUnblockDocument(myFixture.getDocument(myFixture.getFile()));
      CodeStyleManager.getInstance(myFixture.getProject()).reformat(myFixture.getFile());
    }
  });

  myFixture.checkResultByFile(getTestName(false) + "_after.hx");
}
项目:consulo    文件:CodeInsightTestUtil.java   
public static void doSurroundWithTest(@Nonnull final CodeInsightTestFixture fixture, @Nonnull final Surrounder surrounder,
                                      @Nonnull final String before, @Nonnull final String after) {
  fixture.configureByFile(before);
  new WriteCommandAction.Simple(fixture.getProject()) {
    @Override
    protected void run() throws Throwable {
      SurroundWithHandler.invoke(fixture.getProject(), fixture.getEditor(), fixture.getFile(), surrounder);
    }
  }.execute();
  fixture.checkResultByFile(after, false);
}
项目:consulo    文件:SurroundWithHandler.java   
public static void invoke(@Nonnull Project project, @Nonnull Editor editor, @Nonnull PsiFile file, Surrounder surrounder) {
  if (!CodeInsightUtilBase.prepareEditorForWrite(editor)) return;
  if (file instanceof PsiCompiledElement) {
    HintManager.getInstance().showErrorHint(editor, "Can't modify decompiled code");
    return;
  }

  List<AnAction> applicable = buildSurroundActions(project, editor, file, surrounder);
  if (applicable != null) {
    showPopup(editor, applicable);
  }
  else if (!ApplicationManager.getApplication().isUnitTestMode()) {
    HintManager.getInstance().showErrorHint(editor, "Couldn't find Surround With variants applicable to the current context");
  }
}
项目:consulo    文件:SurroundWithHandler.java   
static void doSurround(final Project project, final Editor editor, final Surrounder surrounder, final PsiElement[] elements) {
  if (!FileDocumentManager.getInstance().requestWriting(editor.getDocument(), project)) {
    return;
  }

  try {
    PsiDocumentManager.getInstance(project).commitAllDocuments();
    int col = editor.getCaretModel().getLogicalPosition().column;
    int line = editor.getCaretModel().getLogicalPosition().line;
    if (!editor.getCaretModel().supportsMultipleCarets()) {
      LogicalPosition pos = new LogicalPosition(0, 0);
      editor.getCaretModel().moveToLogicalPosition(pos);
    }
    TextRange range = surrounder.surroundElements(project, editor, elements);
    if (range != CARET_IS_OK) {
      if (TemplateManager.getInstance(project).getActiveTemplate(editor) == null &&
          InplaceRefactoring.getActiveInplaceRenamer(editor) == null) {
        LogicalPosition pos1 = new LogicalPosition(line, col);
        editor.getCaretModel().moveToLogicalPosition(pos1);
      }
      if (range != null) {
        int offset = range.getStartOffset();
        editor.getCaretModel().removeSecondaryCarets();
        editor.getCaretModel().moveToOffset(offset);
        editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
        editor.getSelectionModel().setSelection(range.getStartOffset(), range.getEndOffset());
      }
    }
  }
  catch (IncorrectOperationException e) {
    LOG.error(e);
  }
}
项目:consulo    文件:SurroundWithHandler.java   
public InvokeSurrounderAction(Surrounder surrounder, Project project, Editor editor, PsiElement[] elements, char mnemonic) {
  super(UIUtil.MNEMONIC + String.valueOf(mnemonic) + ". " + surrounder.getTemplateDescription());
  mySurrounder = surrounder;
  myProject = project;
  myEditor = editor;
  myElements = elements;
}
项目:consulo    文件:PostfixTemplatesUtils.java   
@Nullable
public static TextRange surround(@Nonnull Surrounder surrounder,
                                 @Nonnull Editor editor,
                                 @Nonnull PsiElement expr) {
  Project project = expr.getProject();
  PsiElement[] elements = {expr};
  if (surrounder.isApplicable(elements)) {
    return surrounder.surroundElements(project, editor, elements);
  }
  else {
    showErrorHint(project, editor);
  }
  return null;
}
项目:consulo-java    文件:JavaExpressionSurroundDescriptor.java   
@Override
@NotNull public Surrounder[] getSurrounders() {
  if (mySurrounders == null) {
    final ArrayList<Surrounder> list = new ArrayList<Surrounder>();
    Collections.addAll(list, SURROUNDERS);
    Collections.addAll(list, Extensions.getExtensions(JavaExpressionSurrounder.EP_NAME));
    mySurrounders = list.toArray(new Surrounder[list.size()]);
  }
  return mySurrounders;
}
项目:consulo-java    文件:JavaSurroundWithTest.java   
private void doTestWithTemplateFinish(@NotNull String fileName, final Surrounder surrounder, @Nullable String textToType)
  throws Exception {
  TemplateManagerImpl.setTemplateTesting(getProject(), getTestRootDisposable());
  configureByFile(BASE_PATH + fileName + ".java");
  SurroundWithHandler.invoke(getProject(), getEditor(), getFile(), surrounder);
  if (textToType != null) {
    type(textToType);
  }
  TemplateState templateState = TemplateManagerImpl.getTemplateState(getEditor());
  assertNotNull(templateState);
  templateState.nextTab();
  checkResultByFile(BASE_PATH + fileName + "_after.java");
}
项目:lua-for-idea    文件:LuaSurroundDescriptor.java   
@Override
@NotNull
public Surrounder[] getSurrounders() {
    return ourSurrounders;
}
项目:HakunaMatataIntelliJPlugin    文件:IfElseStatementPostfixTemplate.java   
@NotNull
@Override
protected Surrounder getSurrounder() {
    return new JavaWithIfElseExpressionSurrounder();
}
项目:HakunaMatataIntelliJPlugin    文件:IfElseIfStatementPostfixTemplate.java   
@NotNull
@Override
protected Surrounder getSurrounder() {
    return new JavaWithIfElseIfExpressionSurrounder();
}
项目:intellij-ce-playground    文件:JavaStatementsSurroundDescriptor.java   
@Override
@NotNull
public Surrounder[] getSurrounders() {
  return SURROUNDERS;
}
项目:intellij-ce-playground    文件:ElseStatementPostfixTemplate.java   
@NotNull
@Override
protected Surrounder getSurrounder() {
  return new JavaWithIfExpressionSurrounder();
}
项目:intellij-ce-playground    文件:NotNullCheckPostfixTemplate.java   
@NotNull
@Override
protected Surrounder getSurrounder() {
  return new JavaWithIfExpressionSurrounder();
}
项目:intellij-ce-playground    文件:IfStatementPostfixTemplate.java   
@NotNull
@Override
protected Surrounder getSurrounder() {
  return new JavaWithIfExpressionSurrounder();
}
项目:intellij-ce-playground    文件:IsNullCheckPostfixTemplate.java   
@NotNull
@Override
protected Surrounder getSurrounder() {
  return new JavaWithIfExpressionSurrounder();
}
项目:intellij-ce-playground    文件:JavaSurroundWithTest.java   
SurroundType(Surrounder surrounder) {
  mySurrounder = surrounder;
}
项目:intellij-ce-playground    文件:JavaSurroundWithTest.java   
public Surrounder getSurrounder() {
  return mySurrounder;
}
项目:intellij-ce-playground    文件:JavaSurroundWithTest.java   
private void doTest(Surrounder surrounder) {
  doTest(getTestName(false), surrounder);
}