package com.intellij.ui; import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.components.PathMacroManager; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.TextBrowseFolderListener; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class MacroAwareTextBrowseFolderListener extends TextBrowseFolderListener { public MacroAwareTextBrowseFolderListener(@NotNull FileChooserDescriptor fileChooserDescriptor, @Nullable Project project) { super(fileChooserDescriptor, project); } @NotNull @Override protected String expandPath(@NotNull String path) { Project project = getProject(); if (project != null) { path = PathMacroManager.getInstance(project).expandPath(path); } Module module = myFileChooserDescriptor.getUserData(LangDataKeys.MODULE_CONTEXT); if (module == null) { module = myFileChooserDescriptor.getUserData(LangDataKeys.MODULE); } if (module != null) { path = PathMacroManager.getInstance(module).expandPath(path); } return super.expandPath(path); } }