diff --git a/source/com/intellij/ide/projectView/impl/DirectoryUrl.java b/source/com/intellij/ide/projectView/impl/DirectoryUrl.java index 7fbc7ba5ecad..79d651e201c9 100644 --- a/source/com/intellij/ide/projectView/impl/DirectoryUrl.java +++ b/source/com/intellij/ide/projectView/impl/DirectoryUrl.java @@ -18,6 +18,14 @@ public class DirectoryUrl extends AbstractUrl { public DirectoryUrl(String url, String moduleName) { super(url, moduleName,ELEMENT_TYPE); } + public static DirectoryUrl create(PsiDirectory directory) { + Project project = directory.getProject(); + final VirtualFile virtualFile = directory.getVirtualFile(); + if (virtualFile == null) return null; + final Module module = ModuleUtil.getModuleForFile(project, virtualFile); + if (module == null) return null; + return new DirectoryUrl(virtualFile.getUrl(), module.getName()); + } public Object[] createPath(Project project) { final Module module = moduleName != null ? ModuleManager.getInstance(project).findModuleByName(moduleName) : null; @@ -36,12 +44,7 @@ public class DirectoryUrl extends AbstractUrl { public AbstractUrl createUrlByElement(Object element) { if (element instanceof PsiDirectory) { - Project project = ((PsiDirectory)element).getProject(); - final VirtualFile virtualFile = ((PsiDirectory)element).getVirtualFile(); - if (virtualFile == null) return null; - final Module module = ModuleUtil.getModuleForFile(project, virtualFile); - if (module == null) return null; - return new DirectoryUrl(virtualFile.getUrl(), module.getName()); + return create((PsiDirectory)element); } return null; } diff --git a/source/com/intellij/openapi/editor/actions/MoveStatementHandler.java b/source/com/intellij/openapi/editor/actions/MoveStatementHandler.java index c983d2e89ae8..b1864264b5fb 100644 --- a/source/com/intellij/openapi/editor/actions/MoveStatementHandler.java +++ b/source/com/intellij/openapi/editor/actions/MoveStatementHandler.java @@ -4,10 +4,9 @@ package com.intellij.openapi.editor.actions; import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.*; -import com.intellij.openapi.editor.actionSystem.EditorActionHandler; +import com.intellij.openapi.editor.actionSystem.EditorWriteActionHandler; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; import com.intellij.psi.*; @@ -15,7 +14,7 @@ import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.IncorrectOperationException; -class MoveStatementHandler extends EditorActionHandler { +class MoveStatementHandler extends EditorWriteActionHandler { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.editor.actions.MoveStatementHandler"); private final boolean isDown; @@ -24,7 +23,7 @@ class MoveStatementHandler extends EditorActionHandler { isDown = down; } - public void execute(final Editor editor, final DataContext dataContext) { + public void executeWriteAction(Editor editor, DataContext dataContext) { final Project project = editor.getProject(); final PsiDocumentManager documentManager = PsiDocumentManager.getInstance(project); final Document document = editor.getDocument(); @@ -49,25 +48,28 @@ class MoveStatementHandler extends EditorActionHandler { final int selectionEnd = selectionModel.getSelectionEnd(); final boolean hasSelection = selectionModel.hasSelection(); - ApplicationManager.getApplication().runWriteAction(new Runnable() { - public void run() { - document.deleteString(start, end); - document.insertString(insStart, toInsert); - documentManager.commitDocument(document); + document.deleteString(start, end); + document.insertString(insStart, toInsert); + documentManager.commitDocument(document); - caretModel.moveToLogicalPosition(new LogicalPosition(caretLine + (isDown ? 1 : -1), caretColumn)); - if (hasSelection) { - restoreSelection(editor, selectionStart, selectionEnd, start, insStart); - } + caretModel.moveToLogicalPosition(new LogicalPosition(caretLine + (isDown ? 1 : -1), caretColumn)); + if (hasSelection) { + restoreSelection(editor, selectionStart, selectionEnd, start, insStart); + } - try { - CodeStyleManager.getInstance(project).reformatRange(file, insStart, insEnd); - } - catch (IncorrectOperationException e) { - LOG.error(e); - } + try { + final CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(project); + final int line1 = editor.offsetToLogicalPosition(insStart).line; + final int line2 = editor.offsetToLogicalPosition(insEnd).line; + for (int line = line1; line <= line2; line++) { + int lineStart = document.getLineStartOffset(line); + codeStyleManager.adjustLineIndent(file, lineStart); } - }); + //codeStyleManager.reformatRange(file, insStart, insEnd); + } + catch (IncorrectOperationException e) { + LOG.error(e); + } } private static void restoreSelection(final Editor editor, final int selectionStart, final int selectionEnd, final int moveOffset, int insOffset) {