mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
(no message)
This commit is contained in:
@@ -5,6 +5,7 @@ import com.intellij.codeInsight.CodeInsightActionHandler;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.*;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
@@ -16,8 +17,9 @@ public class AutoIndentLinesHandler implements CodeInsightActionHandler {
|
||||
PsiDocumentManager.getInstance(project).commitAllDocuments();
|
||||
|
||||
if (!file.isWritable()){
|
||||
(editor.getDocument()).fireReadOnlyModificationAttempt();
|
||||
return;
|
||||
if (!FileDocumentManager.fileForDocumentCheckedOutSuccessfully(editor.getDocument(), project)){
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Document document = editor.getDocument();
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.StdFileTypes;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
||||
@@ -281,8 +282,9 @@ public class CommentByBlockCommentHandler implements CodeInsightActionHandler, B
|
||||
myDocument = editor.getDocument();
|
||||
|
||||
if (!myFile.isWritable()) {
|
||||
myDocument.fireReadOnlyModificationAttempt();
|
||||
return;
|
||||
if (!FileDocumentManager.fileForDocumentCheckedOutSuccessfully(getDocument(), project)){
|
||||
return;
|
||||
}
|
||||
}
|
||||
FeatureUsageTracker.getInstance().triggerFeatureUsed("codeassists.comment.block");
|
||||
final SelectionModel selectionModel = myEditor.getSelectionModel();
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.StdFileTypes;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
@@ -90,8 +91,9 @@ public class CommentByLineCommentHandler implements CodeInsightActionHandler, Li
|
||||
myDocument = myEditor.getDocument();
|
||||
|
||||
if (!myFile.isWritable()) {
|
||||
myDocument.fireReadOnlyModificationAttempt();
|
||||
return;
|
||||
if (!FileDocumentManager.fileForDocumentCheckedOutSuccessfully(getDocument(), project)){
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
FeatureUsageTracker.getInstance().triggerFeatureUsed("codeassists.comment.line");
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.ScrollType;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.infos.CandidateInfo;
|
||||
@@ -27,8 +28,9 @@ public class GenerateDelegateHandler implements CodeInsightActionHandler {
|
||||
|
||||
public void invoke(final Project project, final Editor editor, final PsiFile file) {
|
||||
if (!file.isWritable()) {
|
||||
(editor.getDocument()).fireReadOnlyModificationAttempt();
|
||||
return;
|
||||
if (!FileDocumentManager.fileForDocumentCheckedOutSuccessfully(editor.getDocument(), project)){
|
||||
return;
|
||||
}
|
||||
}
|
||||
PsiDocumentManager.getInstance(project).commitAllDocuments();
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.LogicalPosition;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
@@ -30,9 +31,10 @@ abstract class GenerateMembersHandlerBase implements CodeInsightActionHandler {
|
||||
public final void invoke(final Project project, final Editor editor, PsiFile file) {
|
||||
Document document = editor.getDocument();
|
||||
if (!file.isWritable()){
|
||||
document.fireReadOnlyModificationAttempt();
|
||||
return;
|
||||
}
|
||||
if (!FileDocumentManager.fileForDocumentCheckedOutSuccessfully(editor.getDocument(), project)){
|
||||
return;
|
||||
}
|
||||
}
|
||||
PsiDocumentManager.getInstance(project).commitAllDocuments();
|
||||
|
||||
int offset = editor.getCaretModel().getOffset();
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.intellij.codeInsight.generation;
|
||||
import com.intellij.codeInsight.CodeInsightActionHandler;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiFile;
|
||||
@@ -11,8 +12,9 @@ public class ImplementMethodsHandler implements CodeInsightActionHandler{
|
||||
public final void invoke(final Project project, final Editor editor, PsiFile file) {
|
||||
Document document = editor.getDocument();
|
||||
if (!file.isWritable()){
|
||||
document.fireReadOnlyModificationAttempt();
|
||||
return;
|
||||
if (!FileDocumentManager.fileForDocumentCheckedOutSuccessfully(document, project)){
|
||||
return;
|
||||
}
|
||||
}
|
||||
PsiClass aClass = OverrideImplementUtil.getContextClass(project, editor, file);
|
||||
if (aClass != null) {
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.intellij.codeInsight.CodeInsightActionHandler;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiFile;
|
||||
|
||||
@@ -11,8 +12,9 @@ public class OverrideMethodsHandler implements CodeInsightActionHandler{
|
||||
public final void invoke(final Project project, final Editor editor, PsiFile file) {
|
||||
Document document = editor.getDocument();
|
||||
if (!file.isWritable()){
|
||||
document.fireReadOnlyModificationAttempt();
|
||||
return;
|
||||
if (!FileDocumentManager.fileForDocumentCheckedOutSuccessfully(document, project)){
|
||||
return;
|
||||
}
|
||||
}
|
||||
PsiClass aClass = OverrideImplementUtil.getContextClass(project, editor, file);
|
||||
if (aClass != null) {
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.intellij.openapi.editor.LogicalPosition;
|
||||
import com.intellij.openapi.editor.ScrollType;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiExpression;
|
||||
@@ -87,8 +88,9 @@ public class SurroundWithHandler implements CodeInsightActionHandler{
|
||||
|
||||
public void invoke(final Project project, final Editor editor, PsiFile file, Object handler){
|
||||
if (!file.isWritable()){
|
||||
(editor.getDocument()).fireReadOnlyModificationAttempt();
|
||||
return;
|
||||
if (!FileDocumentManager.fileForDocumentCheckedOutSuccessfully(editor.getDocument(), project)){
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!editor.getSelectionModel().hasSelection()) {
|
||||
|
||||
@@ -18,6 +18,7 @@ import com.intellij.openapi.editor.LogicalPosition;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.ui.ex.MessagesEx;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.PsiSearchHelper;
|
||||
@@ -104,9 +105,10 @@ public class ImplementAbstractMethodHandler {
|
||||
private void implementInClass(final PsiClass psiClass) {
|
||||
if (!psiClass.isValid()) return;
|
||||
if (!psiClass.isWritable()) {
|
||||
MessagesEx.fileIsReadOnly(myProject, psiClass.getContainingFile().getVirtualFile()).showNow();
|
||||
PsiDocumentManager.getInstance(myProject).getDocument(psiClass.getContainingFile()).fireReadOnlyModificationAttempt();
|
||||
return;
|
||||
if (!FileDocumentManager.fileForDocumentCheckedOutSuccessfully(PsiDocumentManager.getInstance(myProject).getDocument(psiClass.getContainingFile()), myProject)){
|
||||
MessagesEx.fileIsReadOnly(myProject, psiClass.getContainingFile().getVirtualFile()).showNow();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
CommandProcessor.getInstance().executeCommand(myProject, new Runnable() {
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.intellij.openapi.editor.*;
|
||||
import com.intellij.openapi.editor.event.EditorFactoryAdapter;
|
||||
import com.intellij.openapi.editor.event.EditorFactoryEvent;
|
||||
import com.intellij.openapi.editor.event.EditorFactoryListener;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.FileTypeManager;
|
||||
import com.intellij.openapi.fileTypes.StdFileTypes;
|
||||
@@ -175,8 +176,9 @@ public class TemplateManagerImpl extends TemplateManager implements ProjectCompo
|
||||
return false;
|
||||
}
|
||||
if (!editor.getDocument().isWritable()) {
|
||||
editor.getDocument().fireReadOnlyModificationAttempt();
|
||||
return false;
|
||||
if (!FileDocumentManager.fileForDocumentCheckedOutSuccessfully(editor.getDocument(), myProject)){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
final int wordStart0 = wordStart;
|
||||
final TemplateImpl template0 = template;
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.intellij.openapi.editor.markup.RangeHighlighter;
|
||||
import com.intellij.openapi.editor.markup.TextAttributes;
|
||||
import com.intellij.openapi.fileEditor.FileEditor;
|
||||
import com.intellij.openapi.fileEditor.TextEditor;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.fileEditor.ex.IdeDocumentHistory;
|
||||
import com.intellij.openapi.keymap.KeymapUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -317,61 +318,62 @@ public class FindUtil {
|
||||
Document document = editor.getDocument();
|
||||
int caretOffset = offset;
|
||||
|
||||
if (document.isWritable()) {
|
||||
document.startGuardedBlockChecking();
|
||||
try {
|
||||
FindManager findManager = FindManager.getInstance(project);
|
||||
boolean toPrompt = model.isPromptOnReplace();
|
||||
model = (FindModel)model.clone();
|
||||
while (offset >= 0 && offset < editor.getDocument().getTextLength()) {
|
||||
caretOffset = offset;
|
||||
FindResult result = doSearch(project, editor, offset, !isReplaced, model, toPrompt);
|
||||
if (result == null) {
|
||||
break;
|
||||
}
|
||||
int startResultOffset = result.getStartOffset();
|
||||
model.setFromCursor(true);
|
||||
if (toPrompt) {
|
||||
int promptResult = findManager.showPromptDialog(model, "Replace");
|
||||
if (promptResult == PromptResult.SKIP) {
|
||||
offset = model.isForward() ? result.getEndOffset() : startResultOffset;
|
||||
continue;
|
||||
}
|
||||
if (promptResult == PromptResult.CANCEL) {
|
||||
break;
|
||||
}
|
||||
if (promptResult == PromptResult.ALL) {
|
||||
toPrompt = false;
|
||||
}
|
||||
}
|
||||
|
||||
int startOffset = result.getStartOffset(), endOffset = result.getEndOffset();
|
||||
String foundString = document.getCharsSequence().subSequence(startOffset, endOffset).toString();
|
||||
String toReplace = findManager.getStringToReplace(foundString, model);
|
||||
if (model.isForward()) {
|
||||
offset = doReplace(document, model, result, toReplace).getEndOffset();
|
||||
}
|
||||
else {
|
||||
offset = doReplace(document, model, result, toReplace).getStartOffset();
|
||||
}
|
||||
|
||||
//[SCR 7258]
|
||||
if (!isReplaced) {
|
||||
editor.getCaretModel().moveToOffset(0);
|
||||
}
|
||||
|
||||
isReplaced = true;
|
||||
}
|
||||
}
|
||||
catch (ReadOnlyFragmentModificationException e) {
|
||||
EditorActionManager.getInstance().getReadonlyFragmentModificationHandler().handle(e);
|
||||
}
|
||||
finally {
|
||||
document.stopGuardedBlockChecking();
|
||||
if (!document.isWritable()) {
|
||||
if (!FileDocumentManager.fileForDocumentCheckedOutSuccessfully(document, project)){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
editor.getDocument().fireReadOnlyModificationAttempt();
|
||||
|
||||
document.startGuardedBlockChecking();
|
||||
try {
|
||||
FindManager findManager = FindManager.getInstance(project);
|
||||
boolean toPrompt = model.isPromptOnReplace();
|
||||
model = (FindModel)model.clone();
|
||||
while (offset >= 0 && offset < editor.getDocument().getTextLength()) {
|
||||
caretOffset = offset;
|
||||
FindResult result = doSearch(project, editor, offset, !isReplaced, model, toPrompt);
|
||||
if (result == null) {
|
||||
break;
|
||||
}
|
||||
int startResultOffset = result.getStartOffset();
|
||||
model.setFromCursor(true);
|
||||
if (toPrompt) {
|
||||
int promptResult = findManager.showPromptDialog(model, "Replace");
|
||||
if (promptResult == PromptResult.SKIP) {
|
||||
offset = model.isForward() ? result.getEndOffset() : startResultOffset;
|
||||
continue;
|
||||
}
|
||||
if (promptResult == PromptResult.CANCEL) {
|
||||
break;
|
||||
}
|
||||
if (promptResult == PromptResult.ALL) {
|
||||
toPrompt = false;
|
||||
}
|
||||
}
|
||||
|
||||
int startOffset = result.getStartOffset(), endOffset = result.getEndOffset();
|
||||
String foundString = document.getCharsSequence().subSequence(startOffset, endOffset).toString();
|
||||
String toReplace = findManager.getStringToReplace(foundString, model);
|
||||
if (model.isForward()) {
|
||||
offset = doReplace(document, model, result, toReplace).getEndOffset();
|
||||
}
|
||||
else {
|
||||
offset = doReplace(document, model, result, toReplace).getStartOffset();
|
||||
}
|
||||
|
||||
//[SCR 7258]
|
||||
if (!isReplaced) {
|
||||
editor.getCaretModel().moveToOffset(0);
|
||||
}
|
||||
|
||||
isReplaced = true;
|
||||
}
|
||||
}
|
||||
catch (ReadOnlyFragmentModificationException e) {
|
||||
EditorActionManager.getInstance().getReadonlyFragmentModificationHandler().handle(e);
|
||||
}
|
||||
finally {
|
||||
document.stopGuardedBlockChecking();
|
||||
}
|
||||
|
||||
if (isReplaced) {
|
||||
|
||||
@@ -1,21 +1,20 @@
|
||||
|
||||
package com.intellij.openapi.editor.actions;
|
||||
|
||||
import com.intellij.aspects.psi.PsiAspectFile;
|
||||
import com.intellij.codeInsight.CodeInsightActionHandler;
|
||||
import com.intellij.codeInsight.actions.BaseCodeInsightAction;
|
||||
import com.intellij.codeInsight.generation.AutoIndentLinesHandler;
|
||||
import com.intellij.openapi.editor.*;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiJavaFile;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.LogicalPosition;
|
||||
import com.intellij.openapi.editor.ScrollType;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.jsp.JspFile;
|
||||
import com.intellij.psi.xml.XmlFile;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.ide.util.JavaUtil;
|
||||
|
||||
public class EmacsStyleIndentAction extends BaseCodeInsightAction{
|
||||
|
||||
@@ -40,8 +39,9 @@ public class EmacsStyleIndentAction extends BaseCodeInsightAction{
|
||||
PsiDocumentManager.getInstance(project).commitAllDocuments();
|
||||
|
||||
if (!file.isWritable()){
|
||||
(editor.getDocument()).fireReadOnlyModificationAttempt();
|
||||
return;
|
||||
if (!FileDocumentManager.fileForDocumentCheckedOutSuccessfully(editor.getDocument(), project)){
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
final Document document = editor.getDocument();
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.intellij.openapi.actionSystem.ex.DataConstantsEx;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.EditorFactory;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.ide.CopyPasteManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
@@ -59,8 +60,9 @@ public class MultiplePasteAction extends AnAction {
|
||||
|
||||
if (editor != null) {
|
||||
if (!editor.getDocument().isWritable()) {
|
||||
editor.getDocument().fireReadOnlyModificationAttempt();
|
||||
return;
|
||||
if (!FileDocumentManager.fileForDocumentCheckedOutSuccessfully(editor.getDocument(), project)){
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
final AnAction pasteAction = ActionManager.getInstance().getAction(IdeActions.ACTION_PASTE);
|
||||
|
||||
@@ -40,7 +40,7 @@ public class RefactoringMessageUtil {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
final ReadonlyStatusHandler.OperationStatus status = ReadonlyStatusHandler.getInstance(project).ensureFilesWriteable(new VirtualFile[]{vFile});
|
||||
final ReadonlyStatusHandler.OperationStatus status = ReadonlyStatusHandler.getInstance(project).ensureFilesWritable(new VirtualFile[]{vFile});
|
||||
if (status.hasReadonlyFiles()) {
|
||||
String message1 = messagePrefix + ".\n Directory " + vFile.getPresentableUrl() + " is read-only.";
|
||||
showErrorMessage("Read-only Directory", message1, null, project);
|
||||
@@ -64,7 +64,7 @@ public class RefactoringMessageUtil {
|
||||
}
|
||||
}
|
||||
}
|
||||
final ReadonlyStatusHandler.OperationStatus status = ReadonlyStatusHandler.getInstance(project).ensureFilesWriteable(readOnlyDirs.toArray(new VirtualFile[readOnlyDirs.size()]));
|
||||
final ReadonlyStatusHandler.OperationStatus status = ReadonlyStatusHandler.getInstance(project).ensureFilesWritable(readOnlyDirs.toArray(new VirtualFile[readOnlyDirs.size()]));
|
||||
failedDirs.addAll(Arrays.asList(status.getReadonlyFiles()));
|
||||
if (failedDirs.size() > 0) {
|
||||
StringBuffer message = new StringBuffer(messagePrefix);
|
||||
@@ -112,7 +112,7 @@ public class RefactoringMessageUtil {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
final ReadonlyStatusHandler.OperationStatus status = ReadonlyStatusHandler.getInstance(project).ensureFilesWriteable(new VirtualFile[]{vFile});
|
||||
final ReadonlyStatusHandler.OperationStatus status = ReadonlyStatusHandler.getInstance(project).ensureFilesWritable(new VirtualFile[]{vFile});
|
||||
if (status.hasReadonlyFiles()) {
|
||||
String message1 = messagePrefix + ".\n File " + vFile.getPresentableUrl() + " is read-only.";
|
||||
showErrorMessage("Read-only File", message1, null, project);
|
||||
|
||||
Reference in New Issue
Block a user