diff --git a/java/execution/impl/src/com/intellij/execution/ui/JreComboboxEditor.java b/java/execution/impl/src/com/intellij/execution/ui/JreComboboxEditor.java index ee32962dfdf1..e3528fcd1390 100644 --- a/java/execution/impl/src/com/intellij/execution/ui/JreComboboxEditor.java +++ b/java/execution/impl/src/com/intellij/execution/ui/JreComboboxEditor.java @@ -15,10 +15,12 @@ */ package com.intellij.execution.ui; +import com.intellij.openapi.ui.TextComponentAccessor; import com.intellij.openapi.util.io.FileUtil; import com.intellij.ui.SortedComboBoxModel; import com.intellij.ui.components.JBTextField; import com.intellij.util.ui.StatusText; +import org.jetbrains.annotations.NotNull; import javax.swing.*; import javax.swing.plaf.basic.BasicComboBoxEditor; @@ -27,6 +29,7 @@ import javax.swing.plaf.basic.BasicComboBoxEditor; * @author nik */ class JreComboboxEditor extends BasicComboBoxEditor { + public static final TextComponentAccessor TEXT_COMPONENT_ACCESSOR = new JreComboBoxTextComponentAccessor(); private final SortedComboBoxModel myComboBoxModel; public JreComboboxEditor(SortedComboBoxModel comboBoxModel) { @@ -61,4 +64,17 @@ class JreComboboxEditor extends BasicComboBoxEditor { public JBTextField getEditorComponent() { return (JBTextField)super.getEditorComponent(); } + + private static class JreComboBoxTextComponentAccessor implements TextComponentAccessor { + @Override + public String getText(JComboBox component) { + Object item = component.getEditor().getItem(); + return item != null ? ((JrePathEditor.JreComboBoxItem)item).getPresentableText() : ""; + } + + @Override + public void setText(JComboBox component, @NotNull String text) { + component.getEditor().setItem(new JrePathEditor.CustomJreItem(FileUtil.toSystemIndependentName(text))); + } + } } diff --git a/java/execution/impl/src/com/intellij/execution/ui/JrePathEditor.java b/java/execution/impl/src/com/intellij/execution/ui/JrePathEditor.java index 7d24016a1ccd..454f08814697 100644 --- a/java/execution/impl/src/com/intellij/execution/ui/JrePathEditor.java +++ b/java/execution/impl/src/com/intellij/execution/ui/JrePathEditor.java @@ -22,7 +22,6 @@ import com.intellij.openapi.projectRoots.ProjectJdkTable; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.roots.ui.OrderEntryAppearanceService; import com.intellij.openapi.ui.ComboBox; -import com.intellij.openapi.ui.TextComponentAccessor; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; @@ -119,7 +118,7 @@ public class JrePathEditor extends JPanel implements PanelWithAnchor { myPathField.addBrowseFolderListener(ExecutionBundle.message("run.configuration.select.alternate.jre.label"), ExecutionBundle.message("run.configuration.select.jre.dir.label"), null, BrowseFilesListener.SINGLE_DIRECTORY_DESCRIPTOR, - TextComponentAccessor.STRING_COMBOBOX_WHOLE_TEXT); + JreComboboxEditor.TEXT_COMPONENT_ACCESSOR); setLayout(new MigLayout("ins 0, gap 10, fill, flowx")); add(myLabel, "shrinkx");