package nl.pascaldevink.intellij.thesaurus.extension; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiNamedElement; import com.intellij.psi.codeStyle.SuggestedNameInfo; import com.intellij.refactoring.rename.NameSuggestionProvider; import com.intellij.util.containers.ContainerUtil; import com.jetbrains.php.lang.PhpLanguage; import nl.pascaldevink.intellij.thesaurus.config.Configuration; import nl.pascaldevink.intellij.thesaurus.downloader.BigHugeThesaurusDownloader; import nl.pascaldevink.intellij.thesaurus.downloader.ThesaurusDownloader; import org.jetbrains.annotations.Nullable; import java.io.IOException; import java.util.Set; public class ThesaurusSuggestionProvider implements NameSuggestionProvider { @Nullable public SuggestedNameInfo getSuggestedNames(PsiElement element, @Nullable PsiElement nameSuggestionContext, Set<String> results) { if (null == nameSuggestionContext) { return null; } String text = nameSuggestionContext.getText(); if(nameSuggestionContext instanceof PsiNamedElement) { text = ((PsiNamedElement)element).getName(); } if (element.getLanguage().getID().equals("PHP")) { text = text.replace("$", ""); } if(text == null) { return null; } try { ThesaurusDownloader downloader = new BigHugeThesaurusDownloader(Configuration.BIG_HUGE_THESAURUS_API_KEY); ContainerUtil.addAllNotNull(results, downloader.downloadThesaurusList(text)); return SuggestedNameInfo.NULL_INFO; } catch (IOException e) { e.printStackTrace(); } return null; } }