@Override public void beforeMove(@NotNull Editor editor, @NotNull MoveInfo info, boolean down) { if (parametersOrArgsToMove != null) { PsiElement element1 = parametersOrArgsToMove.first; PsiElement element2 = parametersOrArgsToMove.second; fixCommaIfNeeded(element1, down && isLastOfItsKind(element2, true)); fixCommaIfNeeded(element2, !down && isLastOfItsKind(element1, true)); //noinspection ConstantConditions PsiDocumentManager.getInstance(editor.getProject()) .doPostponedOperationsAndUnblockDocument(editor.getDocument()); } }
public static void addImportDirectiveOrChangeToFqName( @NotNull FqName importFqn, @NotNull JetFile file, int refOffset, @NotNull PsiElement targetElement) { PsiReference reference = file.findReferenceAt(refOffset); if (reference instanceof JetPsiReference) { PsiElement target = reference.resolve(); if (target != null) { boolean same = file.getManager().areElementsEquivalent(target, targetElement); if (!same) { same = target instanceof PsiClass && importFqn.getFqName().equals(((PsiClass) target).getQualifiedName()); } if (!same) { if (target instanceof PsiMethod) { PsiMethod method = (PsiMethod) target; same = (method.isConstructor() && file.getManager() .areElementsEquivalent(method.getContainingClass(), targetElement)); } } if (!same) { if (target instanceof JetObjectDeclarationName) { same = file.getManager().areElementsEquivalent(target.getParent(), targetElement); } } if (!same) { Document document = PsiDocumentManager.getInstance(file.getProject()).getDocument(file); TextRange refRange = reference.getElement().getTextRange(); document.replaceString( refRange.getStartOffset(), refRange.getEndOffset(), importFqn.getFqName()); } return; } } addImportDirective(new ImportPath(importFqn, false), null, file); }