diff --git a/java/execution/impl/src/com/intellij/execution/ui/CommonJavaParametersPanel.java b/java/execution/impl/src/com/intellij/execution/ui/CommonJavaParametersPanel.java index 409fe62b9a59..dd0684151873 100644 --- a/java/execution/impl/src/com/intellij/execution/ui/CommonJavaParametersPanel.java +++ b/java/execution/impl/src/com/intellij/execution/ui/CommonJavaParametersPanel.java @@ -45,9 +45,8 @@ public class CommonJavaParametersPanel extends CommonProgramParametersPanel { @Override protected void initMacroSupport() { super.initMacroSupport(); - addMacroSupport(myVMParametersComponent.getComponent().getEditorField(), MacrosDialog.Filters.ALL, getPathMacros()); - addMacroSupport((ExtendableTextField)myInputRedirectPanel.getComponent().getTextField(), MacrosDialog.Filters.ANY_PATH, - getPathMacros()); + addMacroSupport(myVMParametersComponent.getComponent().getEditorField(), MacrosDialog.Filters.ALL); + addMacroSupport((ExtendableTextField)myInputRedirectPanel.getComponent().getTextField(), MacrosDialog.Filters.ANY_PATH); } public void setVMParameters(String text) { diff --git a/platform/execution-impl/src/com/intellij/execution/ui/CommonProgramParametersPanel.java b/platform/execution-impl/src/com/intellij/execution/ui/CommonProgramParametersPanel.java index 0dc862bb3968..ee00577be517 100644 --- a/platform/execution-impl/src/com/intellij/execution/ui/CommonProgramParametersPanel.java +++ b/platform/execution-impl/src/com/intellij/execution/ui/CommonProgramParametersPanel.java @@ -30,6 +30,7 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Predicate; @@ -43,6 +44,7 @@ public class CommonProgramParametersPanel extends JPanel implements PanelWithAnc private Module myModuleContext = null; private boolean myHasModuleMacro; + protected final Map myMacrosMap = new HashMap<>(); public CommonProgramParametersPanel() { this(true); @@ -114,7 +116,7 @@ public class CommonProgramParametersPanel extends JPanel implements PanelWithAnc button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - final List macros = ContainerUtil.map(getPathMacros().keySet(), s -> s.startsWith("%") ? s : "$" + s + "$"); + final List macros = ContainerUtil.map(myMacrosMap.keySet(), s -> s.startsWith("%") ? s : "$" + s + "$"); JBPopupFactory.getInstance() .createPopupChooserBuilder(macros) .setItemChosenCallback((value) -> textAccessor.setText(value)) @@ -148,8 +150,9 @@ public class CommonProgramParametersPanel extends JPanel implements PanelWithAnc } protected void initMacroSupport() { - addMacroSupport(myProgramParametersComponent.getComponent().getEditorField(), MacrosDialog.Filters.ALL, getPathMacros()); - addMacroSupport((ExtendableTextField)myWorkingDirectoryField.getTextField(), MacrosDialog.Filters.DIRECTORY_PATH, getPathMacros()); + updatePathMacros(); + addMacroSupport(myProgramParametersComponent.getComponent().getEditorField(), MacrosDialog.Filters.ALL); + addMacroSupport((ExtendableTextField)myWorkingDirectoryField.getTextField(), MacrosDialog.Filters.DIRECTORY_PATH); } public static void addMacroSupport(@NotNull ExtendableTextField textField) { @@ -157,10 +160,9 @@ public class CommonProgramParametersPanel extends JPanel implements PanelWithAnc } protected void addMacroSupport(@NotNull ExtendableTextField textField, - @NotNull Predicate macroFilter, - @Nullable Map userMacros) { + @NotNull Predicate macroFilter) { final Predicate commonMacroFilter = getCommonMacroFilter(); - doAddMacroSupport(textField, t -> commonMacroFilter.test(t) && macroFilter.test(t), userMacros); + doAddMacroSupport(textField, t -> commonMacroFilter.test(t) && macroFilter.test(t), myMacrosMap); } protected @NotNull Predicate getCommonMacroFilter() { @@ -175,10 +177,6 @@ public class CommonProgramParametersPanel extends JPanel implements PanelWithAnc } } - protected @NotNull Map getPathMacros() { - return MacrosDialog.getPathMacros(myModuleContext != null || myHasModuleMacro); - } - protected void copyDialogCaption(final LabeledComponent component) { final RawCommandLineEditor rawCommandLineEditor = component.getComponent(); rawCommandLineEditor.setDialogCaption(component.getRawText()); @@ -204,12 +202,20 @@ public class CommonProgramParametersPanel extends JPanel implements PanelWithAnc public void setModuleContext(Module moduleContext) { myModuleContext = moduleContext; + updatePathMacros(); } public void setHasModuleMacro() { myHasModuleMacro = true; + updatePathMacros(); } + protected void updatePathMacros() { + myMacrosMap.clear(); + myMacrosMap.putAll(MacrosDialog.getPathMacros(myModuleContext != null || myHasModuleMacro)); + } + + public LabeledComponent getProgramParametersComponent() { return myProgramParametersComponent; }