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:
@@ -194,10 +194,7 @@ public class CopyPasteManagerEx extends CopyPasteManager implements ClipboardOwn
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < elements.length; i++) {
|
||||
PsiElement element = elements[i];
|
||||
if (!element.isWritable()) {
|
||||
if (RefactoringMessageUtil.checkReadOnlyStatus(myProject, element)) return;
|
||||
}
|
||||
if (RefactoringMessageUtil.checkReadOnlyStatusRecursively(myProject, elements[i])) return;
|
||||
}
|
||||
((CopyPasteManagerEx)CopyPasteManager.getInstance()).setElements(elements, false);
|
||||
updateView();
|
||||
|
||||
@@ -83,10 +83,7 @@ public class DeleteHandler {
|
||||
DeleteDialog dialog = new DeleteDialog(project, elements, new DeleteDialog.Callback() {
|
||||
public void run(final DeleteDialog dialog) {
|
||||
for (int i = 0; i < elements.length; i++) {
|
||||
PsiElement element = elements[i];
|
||||
if (!element.isWritable()) {
|
||||
if (!RefactoringMessageUtil.checkReadOnlyStatus(project, element)) return;
|
||||
}
|
||||
if (!RefactoringMessageUtil.checkReadOnlyStatusRecursively(project, elements[i])) return;
|
||||
}
|
||||
SafeDeleteProcessor.createInstance(project, new Runnable() {
|
||||
public void run() {
|
||||
@@ -144,7 +141,7 @@ public class DeleteHandler {
|
||||
VirtualFile virtualFile = ((PsiDirectory)elementToDelete).getVirtualFile();
|
||||
if (virtualFile.getFileSystem() instanceof LocalFileSystem) {
|
||||
|
||||
ArrayList readOnlyFiles = new ArrayList();
|
||||
ArrayList<VirtualFile> readOnlyFiles = new ArrayList<VirtualFile>();
|
||||
getReadOnlyVirtualFiles(virtualFile, readOnlyFiles);
|
||||
|
||||
if (readOnlyFiles.size() > 0) {
|
||||
@@ -158,7 +155,7 @@ public class DeleteHandler {
|
||||
|
||||
boolean success = true;
|
||||
for (int j = 0; j < readOnlyFiles.size(); j++) {
|
||||
VirtualFile file = (VirtualFile)readOnlyFiles.get(j);
|
||||
VirtualFile file = readOnlyFiles.get(j);
|
||||
success = clearReadOnlyFlag(file, project);
|
||||
if (!success) break;
|
||||
}
|
||||
@@ -243,7 +240,7 @@ public class DeleteHandler {
|
||||
/**
|
||||
* Fills readOnlyFiles with VirtualFiles
|
||||
*/
|
||||
private static void getReadOnlyVirtualFiles(VirtualFile file, ArrayList readOnlyFiles) {
|
||||
private static void getReadOnlyVirtualFiles(VirtualFile file, ArrayList<VirtualFile> readOnlyFiles) {
|
||||
if (!file.isWritable()) {
|
||||
readOnlyFiles.add(file);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ public class DeleteUtil {
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList filteredElements = new ArrayList();
|
||||
ArrayList<PsiElement> filteredElements = new ArrayList<PsiElement>();
|
||||
for (int i = 0; i < elements.length; i++) {
|
||||
PsiElement element = elements[i];
|
||||
filteredElements.add(element);
|
||||
@@ -45,10 +45,10 @@ public class DeleteUtil {
|
||||
int previousSize;
|
||||
do {
|
||||
previousSize = filteredElements.size();
|
||||
outer: for (Iterator iterator1 = filteredElements.iterator(); iterator1.hasNext();) {
|
||||
PsiElement element1 = (PsiElement)iterator1.next();
|
||||
for (Iterator iterator2 = filteredElements.iterator(); iterator2.hasNext();) {
|
||||
PsiElement element2 = (PsiElement)iterator2.next();
|
||||
outer: for (Iterator<PsiElement> iterator1 = filteredElements.iterator(); iterator1.hasNext();) {
|
||||
PsiElement element1 = iterator1.next();
|
||||
for (Iterator<PsiElement> iterator2 = filteredElements.iterator(); iterator2.hasNext();) {
|
||||
PsiElement element2 = iterator2.next();
|
||||
if (element1 == element2) continue;
|
||||
if (PsiTreeUtil.isAncestor(element1, element2, false)) {
|
||||
if (LOG.isDebugEnabled()) {
|
||||
@@ -62,13 +62,13 @@ public class DeleteUtil {
|
||||
} while (filteredElements.size() != previousSize);
|
||||
|
||||
if (LOG.isDebugEnabled()) {
|
||||
for (Iterator iterator = filteredElements.iterator(); iterator.hasNext();) {
|
||||
PsiElement element = (PsiElement)iterator.next();
|
||||
for (Iterator<PsiElement> iterator = filteredElements.iterator(); iterator.hasNext();) {
|
||||
PsiElement element = iterator.next();
|
||||
LOG.debug("filtered element = "+element);
|
||||
}
|
||||
}
|
||||
|
||||
return (PsiElement[])filteredElements.toArray(new PsiElement[filteredElements.size()]);
|
||||
return filteredElements.toArray(new PsiElement[filteredElements.size()]);
|
||||
}
|
||||
|
||||
public static String generateWarningMessage(String actionName, final PsiElement[] elements) {
|
||||
|
||||
+1
-3
@@ -47,9 +47,7 @@ public class MoveFilesOrDirectoriesUtil {
|
||||
if (element instanceof PsiDirectory) {
|
||||
PsiPackage aPackage = ((PsiDirectory)element).getPackage();
|
||||
LOG.assertTrue(aPackage == null);
|
||||
if (!element.isWritable()) {
|
||||
if (!RefactoringMessageUtil.checkReadOnlyStatus(project, element)) return;
|
||||
}
|
||||
if (!RefactoringMessageUtil.checkReadOnlyStatusRecursively(project, element)) return;
|
||||
}
|
||||
else if (element instanceof PsiFile) {
|
||||
PsiFile aFile = (PsiFile)element;
|
||||
|
||||
@@ -68,9 +68,7 @@ public class SafeDeleteHandler implements RefactoringActionHandler {
|
||||
|
||||
for (int i = 0; i < elementsToDelete.length; i++) {
|
||||
PsiElement psiElement = elementsToDelete[i];
|
||||
if (!psiElement.isWritable()) {
|
||||
if (!RefactoringMessageUtil.checkReadOnlyStatus(project, psiElement)) return;
|
||||
}
|
||||
if (!RefactoringMessageUtil.checkReadOnlyStatusRecursively(project, psiElement)) return;
|
||||
}
|
||||
|
||||
SafeDeleteDialog dialog = new SafeDeleteDialog(project, elementsToDelete, new SafeDeleteDialog.Callback() {
|
||||
|
||||
@@ -28,9 +28,19 @@ public class RefactoringMessageUtil {
|
||||
return checkReadOnlyStatus(element, project, "Refactoring cannot be performed");
|
||||
}
|
||||
|
||||
public static boolean checkReadOnlyStatus(PsiElement element,
|
||||
Project project,
|
||||
final String messagePrefix) {
|
||||
public static boolean checkReadOnlyStatus(PsiElement element, Project project, String messagePrefix) {
|
||||
return checkReadOnlyStatus(element, project, messagePrefix, false);
|
||||
}
|
||||
|
||||
public static boolean checkReadOnlyStatusRecursively (Project project, PsiElement element) {
|
||||
return checkReadOnlyStatus(element, project, "Refactoring cannot be performed", true);
|
||||
}
|
||||
|
||||
private static boolean checkReadOnlyStatus(PsiElement element,
|
||||
Project project,
|
||||
final String messagePrefix,
|
||||
boolean recursively
|
||||
) {
|
||||
if (element instanceof PsiDirectory) {
|
||||
PsiDirectory dir = (PsiDirectory)element;
|
||||
final VirtualFile vFile = dir.getVirtualFile();
|
||||
@@ -40,10 +50,18 @@ public class RefactoringMessageUtil {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
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);
|
||||
VirtualFile[] vFiles;
|
||||
if (recursively) {
|
||||
List<VirtualFile> list = new ArrayList<VirtualFile>();
|
||||
addVirtualFiles(vFile, list);
|
||||
vFiles = list.toArray(new VirtualFile[list.size()]);
|
||||
} else vFiles = new VirtualFile[]{vFile};
|
||||
final ReadonlyStatusHandler.OperationStatus status = ReadonlyStatusHandler.getInstance(project).ensureFilesWritable(vFiles);
|
||||
final VirtualFile[] readonlyFiles = status.getReadonlyFiles();
|
||||
if (readonlyFiles.length > 0) {
|
||||
String subj = readonlyFiles[0].isDirectory() ? "Directory" : "File";
|
||||
String message1 = messagePrefix + ".\n " + subj + " " + readonlyFiles[0].getPresentableUrl() + " is read-only.";
|
||||
showErrorMessage("Read-only " + subj, message1, null, project);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@@ -51,20 +69,31 @@ public class RefactoringMessageUtil {
|
||||
}
|
||||
else if (element instanceof PsiPackage) {
|
||||
final PsiDirectory[] directories = ((PsiPackage) element).getDirectories();
|
||||
final List<VirtualFile> readOnlyDirs = new ArrayList<VirtualFile>();
|
||||
final List<VirtualFile> readonlyList = new ArrayList<VirtualFile>();
|
||||
final List<VirtualFile> failedDirs = new ArrayList<VirtualFile>();
|
||||
for (int i = 0; i < directories.length; i++) {
|
||||
PsiDirectory directory = directories[i];
|
||||
if (!directory.isWritable()) {
|
||||
final VirtualFile virtualFile = directory.getVirtualFile();
|
||||
VirtualFile virtualFile = directory.getVirtualFile();
|
||||
if (recursively) {
|
||||
if (virtualFile.getFileSystem() instanceof JarFileSystem) {
|
||||
failedDirs.add(virtualFile);
|
||||
} else {
|
||||
readOnlyDirs.add(virtualFile);
|
||||
}
|
||||
else {
|
||||
addVirtualFiles(virtualFile, readonlyList);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!directory.isWritable()) {
|
||||
if (virtualFile.getFileSystem() instanceof JarFileSystem) {
|
||||
failedDirs.add(virtualFile);
|
||||
}
|
||||
else {
|
||||
readonlyList.add(virtualFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
final ReadonlyStatusHandler.OperationStatus status = ReadonlyStatusHandler.getInstance(project).ensureFilesWritable(readOnlyDirs.toArray(new VirtualFile[readOnlyDirs.size()]));
|
||||
final ReadonlyStatusHandler.OperationStatus status = ReadonlyStatusHandler.getInstance(project).ensureFilesWritable(readonlyList.toArray(new VirtualFile[readonlyList.size()]));
|
||||
failedDirs.addAll(Arrays.asList(status.getReadonlyFiles()));
|
||||
if (failedDirs.size() > 0) {
|
||||
StringBuffer message = new StringBuffer(messagePrefix);
|
||||
@@ -72,12 +101,12 @@ public class RefactoringMessageUtil {
|
||||
for (Iterator<VirtualFile> iterator = failedDirs.iterator(); iterator.hasNext();) {
|
||||
VirtualFile virtualFile = iterator.next();
|
||||
final String presentableUrl = virtualFile.getPresentableUrl();
|
||||
final String subj = virtualFile.isDirectory() ? "Directory " : "File ";
|
||||
if (virtualFile.getFileSystem() instanceof JarFileSystem) {
|
||||
message.append("Directory " + presentableUrl + " is located in a jar file.\n");
|
||||
message.append(subj + presentableUrl + " is located in a jar file.\n");
|
||||
}
|
||||
else {
|
||||
message.append("Directory " + presentableUrl + " is read-only.\n");
|
||||
readOnlyDirs.add(virtualFile);
|
||||
message.append(subj + presentableUrl + " is read-only.\n");
|
||||
}
|
||||
}
|
||||
return false;
|
||||
@@ -123,6 +152,18 @@ public class RefactoringMessageUtil {
|
||||
}
|
||||
}
|
||||
|
||||
private static void addVirtualFiles(final VirtualFile vFile, final List<VirtualFile> list) {
|
||||
if (!vFile.isWritable()) {
|
||||
list.add(vFile);
|
||||
}
|
||||
final VirtualFile[] children = vFile.getChildren();
|
||||
if (children != null) {
|
||||
for (int i = 0; i < children.length; i++) {
|
||||
addVirtualFiles(children[i], list);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static String getIncorrectIdentifierMessage(String identifierName) {
|
||||
return "'" + identifierName + "' is not a legal java identifier";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user