Skip to content

Commit c6cb854

Browse files
committed
Persist endpoint selection to project configuration.
(cherry picked from commit ef5bed3)
1 parent 44123b2 commit c6cb854

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

src/main/com/intellij/lang/jsgraphql/ide/endpoints/JSGraphQLEndpointsModel.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,40 @@
77
*/
88
package com.intellij.lang.jsgraphql.ide.endpoints;
99

10+
import com.intellij.ide.util.PropertiesComponent;
1011
import org.jdesktop.swingx.combobox.ListComboBoxModel;
1112

13+
import javax.swing.event.ListDataEvent;
14+
import javax.swing.event.ListDataListener;
1215
import java.util.List;
1316

1417
public class JSGraphQLEndpointsModel extends ListComboBoxModel<JSGraphQLEndpoint> {
1518

16-
public JSGraphQLEndpointsModel(List<JSGraphQLEndpoint> list) {
19+
private final static String INDEX_PROPERTY_NAME = JSGraphQLEndpointsModel.class.getName() + ".index";
20+
21+
public JSGraphQLEndpointsModel(List<JSGraphQLEndpoint> list, PropertiesComponent propertiesComponent) {
1722
super(list);
23+
if(!list.isEmpty()) {
24+
int defaultSelectedIndex = propertiesComponent.getInt(INDEX_PROPERTY_NAME, 0);
25+
if(defaultSelectedIndex >= 0 && defaultSelectedIndex < list.size()) {
26+
setSelectedItem(list.get(defaultSelectedIndex));
27+
}
28+
}
29+
this.addListDataListener(new ListDataListener() {
30+
@Override
31+
public void intervalAdded(ListDataEvent listDataEvent) {}
32+
33+
@Override
34+
public void intervalRemoved(ListDataEvent listDataEvent) {}
35+
36+
@Override
37+
public void contentsChanged(ListDataEvent listDataEvent) {
38+
final JSGraphQLEndpoint selectedItem = getSelectedItem();
39+
if(selectedItem != null) {
40+
propertiesComponent.setValue(INDEX_PROPERTY_NAME, list.indexOf(selectedItem), 0);
41+
}
42+
}
43+
});
1844
}
1945

2046
public void reload(List<JSGraphQLEndpoint> newEndpoints) {

src/main/com/intellij/lang/jsgraphql/ide/project/JSGraphQLLanguageUIProjectService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.intellij.icons.AllIcons;
2323
import com.intellij.ide.projectView.ProjectView;
2424
import com.intellij.ide.projectView.impl.ProjectViewPane;
25+
import com.intellij.ide.util.PropertiesComponent;
2526
import com.intellij.json.JsonFileType;
2627
import com.intellij.lang.javascript.psi.JSFile;
2728
import com.intellij.lang.jsgraphql.JSGraphQLFileType;
@@ -339,7 +340,7 @@ private JComponent createHeaderComponent(FileEditor fileEditor, Editor editor) {
339340

340341
// configured endpoints combo box
341342
final List<JSGraphQLEndpoint> endpoints = JSGraphQLConfigurationProvider.getService(myProject).getEndpoints();
342-
final JSGraphQLEndpointsModel endpointsModel = new JSGraphQLEndpointsModel(endpoints);
343+
final JSGraphQLEndpointsModel endpointsModel = new JSGraphQLEndpointsModel(endpoints, PropertiesComponent.getInstance(myProject));
343344
final ComboBox endpointComboBox = new ComboBox(endpointsModel);
344345
endpointComboBox.setToolTipText("GraphQL endpoint");
345346
editor.putUserData(JS_GRAPH_QL_ENDPOINTS_MODEL, endpointsModel);

0 commit comments

Comments
 (0)