From 94377b8dcce885241ebedc8472f4e4d27e97100c Mon Sep 17 00:00:00 2001 From: "Dmitry.Krasilschikov" Date: Mon, 7 Nov 2016 17:46:37 +0300 Subject: [PATCH] get rid of duplicated code - move JdkComboBox model reloading logic into the model itself --- .../roots/ui/configuration/JdkComboBox.java | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/JdkComboBox.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/JdkComboBox.java index 2080eea2d3f6..f3195d9c3e4c 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/JdkComboBox.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/JdkComboBox.java @@ -42,10 +42,7 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; -import java.util.List; /** * @author Eugene Zhuravlev @@ -60,6 +57,7 @@ public class JdkComboBox extends ComboBoxWithWidePopup { @Nullable private final Condition myCreationFilter; private JButton mySetUpButton; + private Condition mySdkTypeFilter; public JdkComboBox(@NotNull final ProjectSdksModel jdkModel) { this(jdkModel, null); @@ -77,6 +75,7 @@ public class JdkComboBox extends ComboBoxWithWidePopup { boolean addSuggestedItems) { super(new JdkComboBoxModel(jdkModel, sdkTypeFilter, filter, addSuggestedItems)); myFilter = filter; + mySdkTypeFilter = sdkTypeFilter; myCreationFilter = creationFilter; setRenderer(new ProjectJdkListRenderer() { @Override @@ -272,27 +271,28 @@ public class JdkComboBox extends ComboBoxWithWidePopup { } public void reloadModel(JdkComboBoxItem firstItem, @Nullable Project project) { - final DefaultComboBoxModel model = ((DefaultComboBoxModel)getModel()); + final JdkComboBoxModel model = (JdkComboBoxModel)getModel(); if (project == null) { model.addElement(firstItem); return; } - model.removeAllElements(); - model.addElement(firstItem); - final ProjectSdksModel projectJdksModel = ProjectStructureConfigurable.getInstance(project).getProjectJdksModel(); - List projectJdks = new ArrayList<>(projectJdksModel.getProjectSdks().values()); - if (myFilter != null) { - projectJdks = ContainerUtil.filter(projectJdks, myFilter); - } - Collections.sort(projectJdks, (o1, o2) -> o1.getName().compareToIgnoreCase(o2.getName())); - for (Sdk projectJdk : projectJdks) { - model.addElement(new ActualJdkComboBoxItem(projectJdk)); - } + model.reload(firstItem, ProjectStructureConfigurable.getInstance(project).getProjectJdksModel(), mySdkTypeFilter, myFilter, false); } private static class JdkComboBoxModel extends DefaultComboBoxModel { - public JdkComboBoxModel(final ProjectSdksModel jdksModel, @Nullable Condition sdkTypeFilter, + public JdkComboBoxModel(@NotNull final ProjectSdksModel jdksModel, @Nullable Condition sdkTypeFilter, @Nullable Condition sdkFilter, boolean addSuggested) { + reload(null, jdksModel, sdkTypeFilter, sdkFilter, addSuggested); + } + + public void reload(@Nullable final JdkComboBoxItem firstItem, + @NotNull final ProjectSdksModel jdksModel, + @Nullable Condition sdkTypeFilter, + @Nullable Condition sdkFilter, + boolean addSuggested) { + removeAllElements(); + if (firstItem != null) addElement(firstItem); + Sdk[] jdks = jdksModel.getSdks(); Arrays.sort(jdks, (s1, s2) -> s1.getName().compareToIgnoreCase(s2.getName())); for (Sdk jdk : jdks) {