Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
Intellij Community
Commits
aa9a7b18
Commit
aa9a7b18
authored
11 years ago
by
Anna Kozlova
Browse files
Options
Download
Email Patches
Plain Diff
move: filter out nested dirs/files on actionPerformed, update should be fast (IDEA-111413)
parent
e887cc36
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
java/java-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/JavaMoveFilesOrDirectoriesHandler.java
+10
-9
...FilesOrDirectories/JavaMoveFilesOrDirectoriesHandler.java
platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesHandler.java
+11
-6
...moveFilesOrDirectories/MoveFilesOrDirectoriesHandler.java
with
21 additions
and
15 deletions
+21
-15
java/java-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/JavaMoveFilesOrDirectoriesHandler.java
+
10
-
9
View file @
aa9a7b18
...
...
@@ -36,14 +36,6 @@ import org.jetbrains.annotations.Nullable;
import
java.util.*
;
public
class
JavaMoveFilesOrDirectoriesHandler
extends
MoveFilesOrDirectoriesHandler
{
@Override
public
boolean
canMove
(
PsiElement
[]
elements
,
PsiElement
targetContainer
)
{
final
PsiElement
[]
srcElements
=
adjustForMove
(
null
,
elements
,
targetContainer
);
assert
srcElements
!=
null
;
return
super
.
canMove
(
srcElements
,
targetContainer
);
}
@Override
public
PsiElement
adjustTargetForMove
(
DataContext
dataContext
,
PsiElement
targetContainer
)
{
if
(
targetContainer
instanceof
PsiPackage
)
{
...
...
@@ -60,6 +52,11 @@ public class JavaMoveFilesOrDirectoriesHandler extends MoveFilesOrDirectoriesHan
@Override
public
PsiElement
[]
adjustForMove
(
Project
project
,
PsiElement
[]
sourceElements
,
PsiElement
targetElement
)
{
sourceElements
=
super
.
adjustForMove
(
project
,
sourceElements
,
targetElement
);
if
(
sourceElements
==
null
)
{
return
null
;
}
Set
<
PsiElement
>
result
=
new
LinkedHashSet
<
PsiElement
>();
for
(
PsiElement
sourceElement
:
sourceElements
)
{
result
.
add
(
sourceElement
instanceof
PsiClass
?
sourceElement
.
getContainingFile
()
:
sourceElement
);
...
...
@@ -70,6 +67,10 @@ public class JavaMoveFilesOrDirectoriesHandler extends MoveFilesOrDirectoriesHan
@Override
public
void
doMove
(
final
Project
project
,
PsiElement
[]
elements
,
PsiElement
targetContainer
,
MoveCallback
callback
)
{
elements
=
adjustForMove
(
project
,
elements
,
targetContainer
);
if
(
elements
==
null
)
{
return
;
}
MoveFilesOrDirectoriesUtil
.
doMove
(
project
,
elements
,
new
PsiElement
[]{
targetContainer
},
callback
,
new
Function
<
PsiElement
[],
PsiElement
[]>()
{
@Override
...
...
@@ -89,7 +90,7 @@ public class JavaMoveFilesOrDirectoriesHandler extends MoveFilesOrDirectoriesHan
adjustedElements
.
add
(
containingFile
);
continue
;
}
}
}
}
adjustedElements
.
add
(
element
);
}
...
...
This diff is collapsed.
Click to expand it.
platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesHandler.java
+
11
-
6
View file @
aa9a7b18
...
...
@@ -50,11 +50,6 @@ public class MoveFilesOrDirectoriesHandler extends MoveHandlerDelegate {
}
}
PsiElement
[]
filteredElements
=
PsiTreeUtil
.
filterAncestors
(
elements
);
if
(
filteredElements
.
length
!=
elements
.
length
)
{
// there are nested dirs
return
false
;
}
return
super
.
canMove
(
elements
,
targetContainer
);
}
...
...
@@ -72,13 +67,23 @@ public class MoveFilesOrDirectoriesHandler extends MoveHandlerDelegate {
doMove
(
project
,
elements
,
targetContainer
,
null
);
}
@Nullable
@Override
public
PsiElement
[]
adjustForMove
(
Project
project
,
PsiElement
[]
sourceElements
,
PsiElement
targetElement
)
{
return
PsiTreeUtil
.
filterAncestors
(
sourceElements
);
}
@Override
public
void
doMove
(
final
Project
project
,
final
PsiElement
[]
elements
,
final
PsiElement
targetContainer
,
@Nullable
final
MoveCallback
callback
)
{
if
(!
LOG
.
assertTrue
(
targetContainer
==
null
||
targetContainer
instanceof
PsiDirectory
||
targetContainer
instanceof
PsiDirectoryContainer
,
"container: "
+
targetContainer
+
"; elements: "
+
Arrays
.
toString
(
elements
)
+
"; working handler: "
+
toString
()))
{
return
;
}
MoveFilesOrDirectoriesUtil
.
doMove
(
project
,
adjustForMove
(
project
,
elements
,
targetContainer
),
new
PsiElement
[]
{
targetContainer
},
callback
);
final
PsiElement
[]
adjustedElements
=
adjustForMove
(
project
,
elements
,
targetContainer
);
if
(
adjustedElements
!=
null
)
{
MoveFilesOrDirectoriesUtil
.
doMove
(
project
,
adjustedElements
,
new
PsiElement
[]
{
targetContainer
},
callback
);
}
}
@Override
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help