(no message)

This commit is contained in:
Alexey Kudravtsev
2005-02-14 18:15:51 +03:00
parent 1c1ca09c79
commit 540df4e821
2 changed files with 31 additions and 26 deletions
@@ -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;
}
@@ -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) {