Skip to content

Commit 2577d98

Browse files
committed
Fix the refreshed cluster not matching selection issue
Signed-off-by: Wei Zhang <[email protected]>
1 parent 2bb0abb commit 2577d98

File tree

1 file changed

+28
-11
lines changed

1 file changed

+28
-11
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/hdinsight/spark/ui/SparkSubmissionContentPanelConfigurable.java

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,8 @@ private void createUIComponents() {
6969

7070
ManifestFileUtil.setupMainClassField(myProject, submissionPanel.getMainClassTextField());
7171

72-
this.submissionPanel.addClusterListRefreshActionListener(e -> {
73-
List<IClusterDetail> clusterDetails = ClusterManagerEx.getInstance().getClusterDetails();
74-
Optional<String> selectedClusterTitle = submitModel.getSelectedClusterDetail()
75-
.map(IClusterDetail::getTitle);
76-
resetClusterDetailsToComboBoxModel(submitModel, clusterDetails);
77-
selectedClusterTitle.ifPresent(selectedTitle -> setSelectedClusterByTitle(submitModel, selectedTitle));
78-
});
72+
this.submissionPanel.addClusterListRefreshActionListener(e ->
73+
refreshClusterSelection(ClusterManagerEx.getInstance().getClusterDetails()));
7974

8075
this.submissionPanel.addJobConfigurationLoadButtonActionListener(e -> {
8176
FileChooserDescriptor fileChooserDescriptor = new FileChooserDescriptor(
@@ -118,6 +113,17 @@ public JComponent getComponent() {
118113
return submissionPanel;
119114
}
120115

116+
private void refreshClusterSelection(List<IClusterDetail> clusters) {
117+
Optional<String> selectedClusterTitle = submitModel.getSelectedClusterDetail()
118+
.map(IClusterDetail::getTitle);
119+
resetClusterDetailsToComboBoxModel(submitModel, clusters);
120+
if (selectedClusterTitle.isPresent()) {
121+
setSelectedClusterByTitle(submitModel, selectedClusterTitle.get());
122+
} else {
123+
setSelectedClusterByName(submitModel, submitModel.getSubmissionParameter().getClusterName());
124+
}
125+
}
126+
121127
private void refreshClusterListAsync() {
122128
submissionPanel.setClustersListRefreshEnabled(false);
123129

@@ -139,10 +145,7 @@ private void refreshClusterListAsync() {
139145
HDInsightUtil.showErrorMessageOnSubmissionMessageWindow(myProject, "Error: Failed to list additional cluster");
140146
}
141147

142-
Optional<String> selectedClusterTitle = submitModel.getSelectedClusterDetail()
143-
.map(IClusterDetail::getTitle);
144-
resetClusterDetailsToComboBoxModel(submitModel, cachedClusters);
145-
selectedClusterTitle.ifPresent(selectedTitle -> setSelectedClusterByTitle(submitModel, selectedTitle));
148+
refreshClusterSelection(cachedClusters);
146149

147150
submissionPanel.setClustersListRefreshEnabled(true);
148151
submissionPanel.getClusterSelectedSubject().onNext((String) submissionPanel.getClustersListComboBox().getComboBox().getSelectedItem());
@@ -187,6 +190,20 @@ private void setSelectedClusterByTitle(SparkSubmitModel destSubmitModel, String
187190
});
188191
}
189192

193+
private void setSelectedClusterByName(SparkSubmitModel destSubmitModel, String clusterNameToSelect) {
194+
final DefaultComboBoxModel<String> clusterComboBoxModel = destSubmitModel.getClusterComboBoxModel();
195+
196+
destSubmitModel.getCachedClusterDetails().stream()
197+
.filter(clusterDetail -> clusterDetail.getName().equals(clusterNameToSelect))
198+
.map(IClusterDetail::getTitle)
199+
.findFirst()
200+
.ifPresent(clusterTitle -> {
201+
if (clusterComboBoxModel.getIndexOf(clusterTitle) >= 0) {
202+
clusterComboBoxModel.setSelectedItem(clusterTitle);
203+
}
204+
});
205+
}
206+
190207
@Override
191208
public void setData(@NotNull SparkSubmitModel data) {
192209
// Data -> Component

0 commit comments

Comments
 (0)