mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
prefer first applicable titled handler; ensure available if directory corresponds to known package (IDEA-170012)
This commit is contained in:
+5
-8
@@ -41,16 +41,14 @@ import com.intellij.psi.impl.file.PsiPackageBase;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.refactoring.BaseRefactoringProcessor;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author yole
|
||||
@@ -87,14 +85,13 @@ public abstract class DirectoryAsPackageRenameHandlerBase<T extends PsiDirectory
|
||||
return false;
|
||||
}
|
||||
|
||||
private static PsiElement adjustForRename(DataContext dataContext, PsiElement element) {
|
||||
private PsiElement adjustForRename(DataContext dataContext, PsiElement element) {
|
||||
if (element instanceof PsiDirectoryContainer) {
|
||||
final Module module = LangDataKeys.MODULE.getData(dataContext);
|
||||
if (module != null) {
|
||||
final PsiDirectory[] directories = ((PsiDirectoryContainer)element).getDirectories(GlobalSearchScope.moduleScope(module));
|
||||
if (directories.length >= 1) {
|
||||
element = directories[0];
|
||||
}
|
||||
PsiDirectory[] directories = ((PsiDirectoryContainer)element).getDirectories(GlobalSearchScope.moduleScope(module));
|
||||
Optional<PsiDirectory> directoryWithPackage = Arrays.stream(directories).filter(directory -> getPackage(directory) != null).findFirst();
|
||||
return directoryWithPackage.orElse(null);
|
||||
}
|
||||
}
|
||||
return element;
|
||||
|
||||
@@ -73,14 +73,10 @@ public class RenameHandlerRegistry {
|
||||
public RenameHandler getRenameHandler(DataContext dataContext) {
|
||||
final Map<String, RenameHandler> availableHandlers = new TreeMap<>();
|
||||
for (RenameHandler renameHandler : Extensions.getExtensions(RenameHandler.EP_NAME)) {
|
||||
if (renameHandler.isRenaming(dataContext)) {
|
||||
availableHandlers.put(getHandlerTitle(renameHandler), renameHandler);
|
||||
}
|
||||
checkHandler(renameHandler, dataContext, availableHandlers);
|
||||
}
|
||||
for (RenameHandler renameHandler : myHandlers) {
|
||||
if (renameHandler.isRenaming(dataContext)) {
|
||||
availableHandlers.put(getHandlerTitle(renameHandler), renameHandler);
|
||||
}
|
||||
checkHandler(renameHandler, dataContext, availableHandlers);
|
||||
}
|
||||
if (availableHandlers.size() == 1) return availableHandlers.values().iterator().next();
|
||||
for (Iterator<Map.Entry<String, RenameHandler>> iterator = availableHandlers.entrySet().iterator(); iterator.hasNext(); ) {
|
||||
@@ -103,6 +99,15 @@ public class RenameHandlerRegistry {
|
||||
return myDefaultElementRenameHandler.isRenaming(dataContext) ? myDefaultElementRenameHandler : null;
|
||||
}
|
||||
|
||||
private static void checkHandler(RenameHandler renameHandler, DataContext dataContext, Map<String, RenameHandler> availableHandlers) {
|
||||
if (renameHandler.isRenaming(dataContext)) {
|
||||
String title = getHandlerTitle(renameHandler);
|
||||
if (!availableHandlers.containsKey(title)) {
|
||||
availableHandlers.put(title, renameHandler);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static String getHandlerTitle(RenameHandler renameHandler) {
|
||||
return renameHandler instanceof TitledHandler ? StringUtil.capitalize(((TitledHandler)renameHandler).getActionTitle().toLowerCase()) : renameHandler.toString();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user