This commit is contained in:
Alexey Kudravtsev
2014-08-29 13:57:19 +04:00
parent 00ad38aecc
commit 572ae96421
3 changed files with 13 additions and 16 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2013 JetBrains s.r.o.
* Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,15 +17,11 @@ package com.intellij.codeInsight.hint.actions;
import com.intellij.codeInsight.TargetElementUtilBase;
import com.intellij.codeInsight.daemon.impl.PsiElementListNavigator;
import com.intellij.codeInsight.documentation.DocumentationManager;
import com.intellij.ide.util.MethodCellRenderer;
import com.intellij.ide.util.PsiClassListCellRenderer;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.fileEditor.FileEditor;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.fileEditor.TextEditor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.popup.JBPopup;
import com.intellij.psi.*;
@@ -36,8 +32,6 @@ import com.intellij.util.Consumer;
import org.jetbrains.annotations.Nullable;
public class ShowSiblingsAction extends ShowImplementationsAction {
private static final Logger LOG = Logger.getInstance("#" + ShowSiblingsAction.class.getName());
public ShowSiblingsAction() {
super();
}
@@ -125,13 +125,12 @@ public class ImplementationSearcher {
public static class FirstImplementationsSearcher extends ImplementationSearcher {
@Override
protected PsiElement[] searchDefinitions(final PsiElement element, final Editor editor) {
final PsiElement[][] result = new PsiElement[1][];
if (canShowPopupWithOneItem(element)) {
return new PsiElement[]{element};
}
final PsiElementProcessor.CollectElementsWithLimit<PsiElement> collectProcessor = new PsiElementProcessor.CollectElementsWithLimit<PsiElement>(2, new THashSet<PsiElement>());
final PsiElement[][] result = new PsiElement[1][];
if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(new Runnable() {
@Override
public void run() {
@@ -139,8 +138,7 @@ public class ImplementationSearcher {
DefinitionsScopedSearch.search(element, getSearchScope(element, editor)).forEach(new PsiElementProcessorAdapter<PsiElement>(collectProcessor){
@Override
public boolean processInReadAction(PsiElement element) {
if (!accept(element)) return true;
return super.processInReadAction(element);
return !accept(element) || super.processInReadAction(element);
}
});
result[0] = collectProcessor.toArray();
@@ -165,7 +163,7 @@ public class ImplementationSearcher {
}
}
public static abstract class BackgroundableImplementationSearcher extends ImplementationSearcher {
public abstract static class BackgroundableImplementationSearcher extends ImplementationSearcher {
@Override
protected PsiElement[] searchDefinitions(final PsiElement element, Editor editor) {
final CommonProcessors.CollectProcessor<PsiElement> processor = new CommonProcessors.CollectProcessor<PsiElement>() {
@@ -20,7 +20,7 @@ import com.intellij.openapi.components.AbstractProjectComponent;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.encoding.EncodingManager;
import com.intellij.psi.search.FileTypeIndex;
@@ -44,20 +44,24 @@ public class PropertiesFilesManager extends AbstractProjectComponent {
super(project);
}
@Override
public void projectOpened() {
final PropertyChangeListener myListener = new PropertyChangeListener() {
@Override
public void propertyChange(final PropertyChangeEvent evt) {
String propertyName = evt.getPropertyName();
if (EncodingManager.PROP_NATIVE2ASCII_SWITCH.equals(propertyName) ||
EncodingManager.PROP_PROPERTIES_FILES_ENCODING.equals(propertyName)
) {
DumbService.getInstance(myProject).smartInvokeLater(new Runnable(){
@Override
public void run() {
ApplicationManager.getApplication().runWriteAction(new Runnable(){
@Override
public void run() {
Collection<VirtualFile> filesToRefresh = FileBasedIndex.getInstance()
.getContainingFiles(FileTypeIndex.NAME, PropertiesFileType.INSTANCE, GlobalSearchScope.allScope(myProject));
VirtualFile[] virtualFiles = VfsUtil.toVirtualFileArray(filesToRefresh);
VirtualFile[] virtualFiles = VfsUtilCore.toVirtualFileArray(filesToRefresh);
FileDocumentManager.getInstance().saveAllDocuments();
//force to re-detect encoding
@@ -75,6 +79,7 @@ public class PropertiesFilesManager extends AbstractProjectComponent {
EncodingManager.getInstance().addPropertyChangeListener(myListener,myProject);
}
@Override
@NotNull
public String getComponentName() {
return "PropertiesFileManager";