Skip to content

Commit 0a87b41

Browse files
gdaleckaFylmTM
authored andcommitted
Parameters json editor (#34)
* changed editor for parameters panel * Add header for editor in parameters panel
1 parent 6306a04 commit 0a87b41

File tree

4 files changed

+54
-24
lines changed

4 files changed

+54
-24
lines changed

graph-database-support-plugin/src/main/resources/META-INF/plugin.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@
128128
<projectService serviceInterface="com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.params.ParametersService"
129129
serviceImplementation="com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.params.ParametersService"/>
130130
<scratch.rootType implementation="com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.datasource.interactions.GraphDbEditorsConsoleRootType"/>
131+
<scratch.rootType implementation="com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.params.ParameterRootType"/>
131132
<applicationConfigurable groupId="tools"
132133
instance="com.neueda.jetbrains.plugin.graphdb.jetbrains.configuration.GraphDatabaseSupportConfiguration"/>
133134

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.params;
2+
3+
import com.intellij.execution.console.ConsoleRootType;
4+
import org.jetbrains.annotations.NotNull;
5+
6+
public class ParameterRootType extends ConsoleRootType {
7+
8+
@NotNull
9+
public static ParameterRootType getInstance() {
10+
return findByClass(ParameterRootType.class);
11+
}
12+
13+
ParameterRootType() {
14+
super("graphdb-parameters", "Graph Database parameters");
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,48 @@
11
package com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.params;
22

3+
import com.google.common.base.Throwables;
34
import com.intellij.codeInsight.hint.HintManager;
45
import com.intellij.json.JsonFileType;
56
import com.intellij.openapi.application.ApplicationManager;
67
import com.intellij.openapi.components.ServiceManager;
78
import com.intellij.openapi.editor.Document;
9+
import com.intellij.openapi.editor.Editor;
10+
import com.intellij.openapi.editor.EditorFactory;
811
import com.intellij.openapi.fileEditor.FileDocumentManager;
912
import com.intellij.openapi.project.Project;
1013
import com.intellij.openapi.vfs.VirtualFile;
11-
import com.intellij.ui.EditorTextField;
1214
import com.intellij.util.messages.MessageBus;
1315
import com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.GraphConsoleView;
1416
import com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.event.QueryParametersRetrievalErrorEvent;
1517
import com.neueda.jetbrains.plugin.graphdb.jetbrains.util.FileUtil;
1618

19+
import javax.swing.*;
1720
import java.awt.*;
18-
import java.io.IOException;
1921

2022
import static com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.event.QueryParametersRetrievalErrorEvent.*;
2123

2224
public class ParametersPanel implements ParametersProvider {
2325

2426
private static final FileDocumentManager FILE_DOCUMENT_MANAGER = FileDocumentManager.getInstance();
2527

26-
private EditorTextField editor;
28+
private Editor editor;
29+
private GraphConsoleView graphConsoleView;
30+
private MessageBus messageBus;
31+
private ParametersService service;
2732

2833
public void initialize(GraphConsoleView graphConsoleView, Project project) {
29-
MessageBus messageBus = project.getMessageBus();
30-
31-
editor = getJsonEditorFromScratchFile(project);
32-
setInitialContent(editor.getDocument());
34+
this.graphConsoleView = graphConsoleView;
35+
this.messageBus = project.getMessageBus();
36+
this.service = ServiceManager.getService(project, ParametersService.class);
37+
setupEditor(project);
38+
}
3339

34-
graphConsoleView.getParametersTab().add(editor, BorderLayout.CENTER);
40+
public String getParametersJson() {
41+
return editor.getDocument().getText();
42+
}
3543

36-
ParametersService service = ServiceManager.getService(project, ParametersService.class);
44+
private void initializeUi() {
45+
graphConsoleView.getParametersTab().add(editor.getComponent(), BorderLayout.CENTER);
3746
service.registerParametersProvider(this);
3847

3948
messageBus.connect().subscribe(QueryParametersRetrievalErrorEvent.QUERY_PARAMETERS_RETRIEVAL_ERROR_EVENT_TOPIC,
@@ -48,28 +57,31 @@ public void initialize(GraphConsoleView graphConsoleView, Project project) {
4857
});
4958
}
5059

51-
private static EditorTextField getJsonEditorFromScratchFile(Project project) {
52-
VirtualFile file;
53-
try {
54-
file = FileUtil.getScratchFile(project, "Neo4jGraphDbConsoleParametersPanel");
55-
} catch (IOException e) {
56-
throw new RuntimeException(e);
57-
}
58-
Document document = FILE_DOCUMENT_MANAGER.getDocument(file);
59-
60-
return new EditorTextField(document, project, new JsonFileType(), false, false);
60+
private void setupEditor(Project project) {
61+
ApplicationManager.getApplication().runWriteAction(() -> {
62+
try {
63+
VirtualFile file = FileUtil.getScratchFile(project, "Neo4jGraphDbConsoleParametersPanel.json");
64+
Document document = FILE_DOCUMENT_MANAGER.getDocument(file);
65+
editor = createEditor(project, document);
66+
editor.setHeaderComponent(new JLabel("Provide query parameters in JSON format here:"));
67+
setInitialContent(document);
68+
initializeUi();
69+
} catch (Throwable e) {
70+
throw Throwables.propagate(e);
71+
}
72+
});
6173
}
6274

6375
private void setInitialContent(Document document) {
6476
if (document.getText().isEmpty()) {
65-
final Runnable setTextRunner = () -> document.setText("// Provide query parameters in JSON format here:");
77+
final Runnable setTextRunner = () -> document.setText("{}");
6678
ApplicationManager.getApplication()
6779
.invokeLater(() -> ApplicationManager.getApplication().runWriteAction(setTextRunner));
6880
}
6981
}
7082

71-
public String getParametersJson() {
72-
return editor.getText();
83+
private static Editor createEditor(Project project, Document document) {
84+
return EditorFactory.getInstance().createEditor(document, project, new JsonFileType(), false);
7385
}
7486

7587
}

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/util/FileUtil.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.intellij.openapi.project.Project;
77
import com.intellij.openapi.vfs.VirtualFile;
88
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.state.DataSourceApi;
9+
import com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.params.ParameterRootType;
910
import com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.datasource.interactions.GraphDbEditorsConsoleRootType;
1011

1112
import java.io.IOException;
@@ -22,8 +23,8 @@ public static VirtualFile getDataSourceFile(Project project, DataSourceApi dataS
2223

2324
public static VirtualFile getScratchFile(Project project, String fileName) throws IOException {
2425
return ScratchFileService.getInstance().findFile(
25-
GraphDbEditorsConsoleRootType.getInstance(),
26-
fileName + project.getName(),
26+
ParameterRootType.getInstance(),
27+
project.getName() + fileName,
2728
ScratchFileService.Option.create_if_missing
2829
);
2930
}

0 commit comments

Comments
 (0)