Skip to content

Commit 1d92be6

Browse files
committed
Replace deprecated ComboBoxWithBrowserButton
1 parent af54479 commit 1d92be6

File tree

2 files changed

+38
-18
lines changed

2 files changed

+38
-18
lines changed

flutter-idea/src/io/flutter/sdk/FlutterSettingsConfigurable.form

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
<text resource-bundle="io/flutter/FlutterBundle" key="flutter.sdk.path.label"/>
3636
</properties>
3737
</component>
38-
<component id="83a87" class="com.intellij.ui.ComboboxWithBrowseButton" binding="mySdkCombo" custom-create="true">
38+
<component id="83a87" class="com.intellij.openapi.ui.ComboBox" binding="mySdkCombo" custom-create="true">
3939
<constraints>
4040
<grid row="0" column="1" row-span="1" col-span="2" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
4141
</constraints>

flutter-idea/src/io/flutter/sdk/FlutterSettingsConfigurable.java

+37-17
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
package io.flutter.sdk;
77

88
import com.intellij.execution.process.ProcessOutput;
9+
import com.intellij.icons.AllIcons;
910
import com.intellij.ide.actions.ShowSettingsUtilImpl;
1011
import com.intellij.ide.actionsOnSave.ActionsOnSaveConfigurable;
1112
import com.intellij.notification.Notification;
@@ -14,24 +15,29 @@
1415
import com.intellij.openapi.actionSystem.ActionToolbar;
1516
import com.intellij.openapi.application.ApplicationManager;
1617
import com.intellij.openapi.application.ModalityState;
18+
import com.intellij.openapi.fileChooser.FileChooser;
19+
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
1720
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
1821
import com.intellij.openapi.ide.CopyPasteManager;
1922
import com.intellij.openapi.options.ConfigurationException;
2023
import com.intellij.openapi.options.SearchableConfigurable;
2124
import com.intellij.openapi.project.Project;
2225
import com.intellij.openapi.ui.ComboBox;
2326
import com.intellij.openapi.ui.FixedSizeButton;
24-
import com.intellij.openapi.ui.TextComponentAccessor;
2527
import com.intellij.openapi.util.io.FileUtil;
2628
import com.intellij.openapi.util.io.FileUtilRt;
2729
import com.intellij.openapi.util.text.StringUtil;
28-
import com.intellij.ui.ComboboxWithBrowseButton;
30+
import com.intellij.openapi.vfs.VirtualFile;
2931
import com.intellij.ui.DocumentAdapter;
3032
import com.intellij.ui.components.ActionLink;
3133
import com.intellij.ui.components.JBLabel;
34+
import com.intellij.ui.components.fields.ExtendableTextComponent;
35+
import com.intellij.ui.components.fields.ExtendableTextField;
3236
import com.intellij.util.PlatformIcons;
3337
import icons.FlutterIcons;
34-
import io.flutter.*;
38+
import io.flutter.FlutterBundle;
39+
import io.flutter.FlutterConstants;
40+
import io.flutter.FlutterMessages;
3541
import io.flutter.bazel.Workspace;
3642
import io.flutter.bazel.WorkspaceCache;
3743
import io.flutter.font.FontPreviewProcessor;
@@ -44,6 +50,7 @@
4450

4551
import javax.swing.*;
4652
import javax.swing.event.DocumentEvent;
53+
import javax.swing.plaf.basic.BasicComboBoxEditor;
4754
import javax.swing.text.JTextComponent;
4855
import java.awt.datatransfer.StringSelection;
4956
import java.util.List;
@@ -57,7 +64,7 @@ public class FlutterSettingsConfigurable implements SearchableConfigurable {
5764
private static final String FLUTTER_SETTINGS_HELP_TOPIC = "flutter.settings.help";
5865

5966
private JPanel mainPanel;
60-
private ComboboxWithBrowseButton mySdkCombo;
67+
private ComboBox<String> mySdkCombo;
6168
private JBLabel myVersionLabel;
6269
private JCheckBox myHotReloadOnSaveCheckBox;
6370
private JCheckBox myEnableVerboseLoggingCheckBox;
@@ -104,7 +111,7 @@ private void init() {
104111
if (sdk != null) {
105112
previousSdkVersion = sdk.getVersion();
106113
}
107-
mySdkCombo.getComboBox().setEditable(true);
114+
mySdkCombo.setEditable(true);
108115

109116
myCopyButton.setSize(ActionToolbar.DEFAULT_MINIMUM_BUTTON_SIZE);
110117
myCopyButton.setIcon(PlatformIcons.COPY_ICON);
@@ -114,7 +121,7 @@ private void init() {
114121
}
115122
});
116123

117-
final JTextComponent sdkEditor = (JTextComponent)mySdkCombo.getComboBox().getEditor().getEditorComponent();
124+
final JTextComponent sdkEditor = (JTextComponent)mySdkCombo.getEditor().getEditorComponent();
118125
sdkEditor.getDocument().addDocumentListener(new DocumentAdapter() {
119126
@Override
120127
protected void textChanged(@NotNull final DocumentEvent e) {
@@ -123,13 +130,7 @@ protected void textChanged(@NotNull final DocumentEvent e) {
123130
}
124131
}
125132
});
126-
127133
workspaceCache.subscribe(this::onVersionChanged);
128-
129-
mySdkCombo.addBrowseFolderListener("Select Flutter SDK Path", null, null,
130-
FileChooserDescriptorFactory.createSingleFolderDescriptor(),
131-
TextComponentAccessor.STRING_COMBOBOX_WHOLE_TEXT);
132-
133134
myFormatCodeOnSaveCheckBox.addChangeListener(
134135
(e) -> myOrganizeImportsOnSaveCheckBox.setEnabled(myFormatCodeOnSaveCheckBox.isSelected()));
135136
myShowStructuredErrors.addChangeListener(
@@ -139,7 +140,26 @@ protected void textChanged(@NotNull final DocumentEvent e) {
139140
}
140141

141142
private void createUIComponents() {
142-
mySdkCombo = new ComboboxWithBrowseButton(new ComboBox<>());
143+
ExtendableTextComponent.Extension browseExtension =
144+
ExtendableTextComponent.Extension.create(
145+
AllIcons.General.OpenDisk,
146+
AllIcons.General.OpenDiskHover,
147+
"Select Flutter SDK Path",
148+
() -> {
149+
FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor();
150+
VirtualFile file = FileChooser.chooseFile(descriptor, mySdkCombo, null, null);
151+
mySdkCombo.setItem(file.getPath());
152+
});
153+
mySdkCombo = new ComboBox<>();
154+
mySdkCombo.setEditor(new BasicComboBoxEditor() {
155+
@Override
156+
protected JTextField createEditorComponent() {
157+
ExtendableTextField ecbEditor = new ExtendableTextField();
158+
ecbEditor.addExtension(browseExtension);
159+
ecbEditor.setBorder(null);
160+
return ecbEditor;
161+
}
162+
});
143163
settingsLink = ActionsOnSaveConfigurable.createGoToActionsOnSavePageLink();
144164
}
145165

@@ -293,8 +313,8 @@ public void reset() {
293313
// (This can happen if the user changed the Dart SDK.)
294314
try {
295315
ignoringSdkChanges = true;
296-
FlutterSdkUtil.addKnownSDKPathsToCombo(mySdkCombo.getComboBox());
297-
mySdkCombo.getComboBox().getEditor().setItem(FileUtil.toSystemDependentName(path));
316+
FlutterSdkUtil.addKnownSDKPathsToCombo(mySdkCombo);
317+
mySdkCombo.getEditor().setItem(FileUtil.toSystemDependentName(path));
298318
}
299319
finally {
300320
ignoringSdkChanges = false;
@@ -356,7 +376,7 @@ private void onVersionChanged() {
356376
assert (workspace != null);
357377

358378
mySdkCombo.setEnabled(false);
359-
mySdkCombo.getComboBox().getEditor()
379+
mySdkCombo.getEditor()
360380
.setItem(workspace.getRoot().getPath() + '/' + workspace.getSdkHome() + " <set by bazel project>");
361381
}
362382
}
@@ -442,7 +462,7 @@ public String getHelpTopic() {
442462

443463
@NotNull
444464
private String getSdkPathText() {
445-
return FileUtilRt.toSystemIndependentName(mySdkCombo.getComboBox().getEditor().getItem().toString().trim());
465+
return FileUtilRt.toSystemIndependentName(mySdkCombo.getEditor().getItem().toString().trim());
446466
}
447467

448468
private void checkFontPackages(String value, String previous) {

0 commit comments

Comments
 (0)