corrected file chooser behaviour for 'JRE' path in run configurations

This commit is contained in:
nik
2015-10-01 13:22:13 +03:00
parent 9d66d04c4a
commit 5fd7c83268
2 changed files with 17 additions and 2 deletions
@@ -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<JComboBox> TEXT_COMPONENT_ACCESSOR = new JreComboBoxTextComponentAccessor();
private final SortedComboBoxModel<JrePathEditor.JreComboBoxItem> myComboBoxModel;
public JreComboboxEditor(SortedComboBoxModel<JrePathEditor.JreComboBoxItem> comboBoxModel) {
@@ -61,4 +64,17 @@ class JreComboboxEditor extends BasicComboBoxEditor {
public JBTextField getEditorComponent() {
return (JBTextField)super.getEditorComponent();
}
private static class JreComboBoxTextComponentAccessor implements TextComponentAccessor<JComboBox> {
@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)));
}
}
}
@@ -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");