IDEA-239627 Macros $MODULE_WORKING_DIR$ and/or $MODULE_DIR$ are missing

GitOrigin-RevId: 653ef930a62e6401e831ef51f5886ea9f28db505
This commit is contained in:
Vassiliy.Kudryashov
2020-06-16 12:45:52 +03:00
committed by intellij-monorepo-bot
parent 9650fe13f5
commit 4f74daa42f
2 changed files with 18 additions and 13 deletions
@@ -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) {
@@ -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<String, String> 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<String> macros = ContainerUtil.map(getPathMacros().keySet(), s -> s.startsWith("%") ? s : "$" + s + "$");
final List<String> 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<? super Macro> macroFilter,
@Nullable Map<String, String> userMacros) {
@NotNull Predicate<? super Macro> macroFilter) {
final Predicate<? super Macro> 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<? super Macro> getCommonMacroFilter() {
@@ -175,10 +177,6 @@ public class CommonProgramParametersPanel extends JPanel implements PanelWithAnc
}
}
protected @NotNull Map<String, String> getPathMacros() {
return MacrosDialog.getPathMacros(myModuleContext != null || myHasModuleMacro);
}
protected void copyDialogCaption(final LabeledComponent<RawCommandLineEditor> 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<RawCommandLineEditor> getProgramParametersComponent() {
return myProgramParametersComponent;
}