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; } } } } }
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"); }
@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; }
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"); }
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"); }
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); }
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"); } }
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); } }
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; }
@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; }
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); }
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"); }
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); } }
@NotNull @Override public Surrounder[] getSurrounders() { return new Surrounder[]{ new HaxeIfSurrounder(), new HaxeIfElseSurrounder(), new HaxeWhileSurrounder(), new HaxeDoWhileSurrounder(), new HaxeTryCatchSurrounder() }; }
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"); }
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); }
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"); } }
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); } }
@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; }
@Override @NotNull public Surrounder[] getSurrounders() { return ourSurrounders; }
@NotNull @Override protected Surrounder getSurrounder() { return new JavaWithIfElseExpressionSurrounder(); }
@NotNull @Override protected Surrounder getSurrounder() { return new JavaWithIfElseIfExpressionSurrounder(); }
@Override @NotNull public Surrounder[] getSurrounders() { return SURROUNDERS; }
@NotNull @Override protected Surrounder getSurrounder() { return new JavaWithIfExpressionSurrounder(); }
SurroundType(Surrounder surrounder) { mySurrounder = surrounder; }
public Surrounder getSurrounder() { return mySurrounder; }
private void doTest(Surrounder surrounder) { doTest(getTestName(false), surrounder); }