Skip to content

Commit 877e7aa

Browse files
authored
Merge pull request #17 from neueda/query-exec-error-hint
show error hint in editor if query execution fails
2 parents 7605d65 + 5907aca commit 877e7aa

File tree

10 files changed

+55
-42
lines changed

10 files changed

+55
-42
lines changed

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/actions/execute/ChooseDataSourceAction.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.intellij.openapi.actionSystem.AnAction;
44
import com.intellij.openapi.actionSystem.AnActionEvent;
5+
import com.intellij.openapi.actionSystem.CommonDataKeys;
6+
import com.intellij.openapi.editor.Editor;
57
import com.intellij.util.messages.MessageBus;
68
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.DataSourcesComponent;
79
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.state.DataSourceApi;
@@ -23,6 +25,7 @@ public ChooseDataSourceAction(DataSourceApi dataSource, DataSourcesComponent com
2325
@Override
2426
public void actionPerformed(AnActionEvent e) {
2527
ExecuteQueryEvent executeQueryEvent = messageBus.syncPublisher(ExecuteQueryEvent.EXECUTE_QUERY_TOPIC);
28+
Editor editor = e.getData(CommonDataKeys.EDITOR_EVEN_IF_INACTIVE);
2629
executeQueryEvent.executeQuery(dataSource, executeQueryPayload);
2730
}
2831
}

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/actions/execute/ExecuteQueryAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public void actionPerformed(AnActionEvent e) {
8080
return;
8181
}
8282

83-
ExecuteQueryPayload executeQueryPayload = new ExecuteQueryPayload(content);
83+
ExecuteQueryPayload executeQueryPayload = new ExecuteQueryPayload(content, editor);
8484
ConsoleToolWindow.ensureOpen(project);
8585

8686
if (virtualFile != null) {
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,27 @@
11
package com.neueda.jetbrains.plugin.graphdb.jetbrains.actions.execute;
22

3+
import com.intellij.openapi.editor.Editor;
34
import org.jetbrains.annotations.NotNull;
45

56
public class ExecuteQueryPayload {
67

78
private final String content;
89

9-
public ExecuteQueryPayload(String content) {
10+
private final Editor editor;
11+
12+
public ExecuteQueryPayload(String content, Editor editor) {
1013
this.content = content;
14+
this.editor = editor;
1115
}
1216

1317
@NotNull
1418
public String getContent() {
1519
return content;
1620
}
21+
22+
@NotNull
23+
public Editor getEditor() {
24+
return editor;
25+
}
26+
1727
}

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/database/QueryExecutionService.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,14 @@ private synchronized void executeInBackground(DataSourceApi dataSource, ExecuteQ
5858
GraphQueryResult result = database.execute(payload.getContent());
5959

6060
ApplicationManager.getApplication().invokeLater(() -> {
61-
event.resultReceived(result);
62-
event.postResultReceived();
63-
event.executionCompleted();
61+
event.resultReceived(payload, result);
62+
event.postResultReceived(payload);
63+
event.executionCompleted(payload);
6464
});
6565
} catch (Exception e) {
6666
ApplicationManager.getApplication().invokeLater(() -> {
67-
event.handleError(e);
68-
event.executionCompleted();
67+
event.handleError(payload, e);
68+
event.executionCompleted(payload);
6969
});
7070
}
7171
});

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/console/event/QueryExecutionProcessEvent.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ public interface QueryExecutionProcessEvent {
1111

1212
void executionStarted(ExecuteQueryPayload payload);
1313

14-
void resultReceived(GraphQueryResult result);
14+
void resultReceived(ExecuteQueryPayload payload, GraphQueryResult result);
1515

16-
void postResultReceived();
16+
void postResultReceived(ExecuteQueryPayload payload);
1717

18-
void handleError(Exception exception);
18+
void handleError(ExecuteQueryPayload payload, Exception exception);
1919

20-
void executionCompleted();
20+
void executionCompleted(ExecuteQueryPayload payload);
2121
}

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/console/graph/GraphPanel.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,11 @@
2525

2626
import javax.swing.tree.DefaultTreeModel;
2727
import javax.swing.tree.TreePath;
28-
import java.awt.Color;
29-
import java.awt.Container;
30-
import java.awt.Point;
28+
import java.awt.*;
3129
import java.awt.event.MouseEvent;
3230
import java.util.Enumeration;
3331

34-
import static com.neueda.jetbrains.plugin.graphdb.visualization.util.DisplayUtil.getTooltipText;
35-
import static com.neueda.jetbrains.plugin.graphdb.visualization.util.DisplayUtil.getTooltipTitle;
32+
import static com.neueda.jetbrains.plugin.graphdb.visualization.util.DisplayUtil.*;
3633

3734
public class GraphPanel {
3835

@@ -73,19 +70,19 @@ public void executionStarted(ExecuteQueryPayload payload) {
7370
}
7471

7572
@Override
76-
public void resultReceived(GraphQueryResult result) {
73+
public void resultReceived(ExecuteQueryPayload payload, GraphQueryResult result) {
7774
}
7875

7976
@Override
80-
public void postResultReceived() {
77+
public void postResultReceived(ExecuteQueryPayload payload) {
8178
}
8279

8380
@Override
84-
public void handleError(Exception exception) {
81+
public void handleError(ExecuteQueryPayload payload, Exception exception) {
8582
}
8683

8784
@Override
88-
public void executionCompleted() {
85+
public void executionCompleted(ExecuteQueryPayload payload) {
8986
}
9087
});
9188

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/console/graph/GraphPanelInteractions.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.graph;
22

3+
import com.intellij.codeInsight.hint.HintManager;
34
import com.intellij.util.messages.MessageBus;
45
import com.neueda.jetbrains.plugin.graphdb.database.api.query.GraphQueryResult;
56
import com.neueda.jetbrains.plugin.graphdb.jetbrains.actions.execute.ExecuteQueryEvent;
@@ -47,24 +48,27 @@ public void executionStarted(ExecuteQueryPayload payload) {
4748
}
4849

4950
@Override
50-
public void resultReceived(GraphQueryResult result) {
51+
public void resultReceived(ExecuteQueryPayload payload, GraphQueryResult result) {
5152
result.getNodes().forEach(visualization::addNode);
5253
result.getRelationships().forEach(visualization::addRelation);
5354
}
5455

5556
@Override
56-
public void postResultReceived() {
57+
public void postResultReceived(ExecuteQueryPayload payload) {
5758
visualization.paint();
5859
}
5960

6061
@Override
61-
public void handleError(Exception exception) {
62+
public void handleError(ExecuteQueryPayload payload, Exception exception) {
63+
String errorMessage = exception.getMessage() == null ? "Error occurred" : "Error occurred: " + exception.getMessage();
64+
HintManager.getInstance().showErrorHint(payload.getEditor(), errorMessage);
65+
6266
visualization.stop();
6367
visualization.clear();
6468
}
6569

6670
@Override
67-
public void executionCompleted() {
71+
public void executionCompleted(ExecuteQueryPayload payload) {
6872
}
6973
});
7074
}

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/console/log/LogPanel.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.event.QueryExecutionProcessEvent;
1515
import com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.datasource.metadata.MetadataRetrieveEvent;
1616

17-
import java.awt.BorderLayout;
17+
import java.awt.*;
1818

1919
public class LogPanel implements Disposable {
2020

@@ -38,23 +38,23 @@ public void executionStarted(ExecuteQueryPayload payload) {
3838
}
3939

4040
@Override
41-
public void resultReceived(GraphQueryResult result) {
41+
public void resultReceived(ExecuteQueryPayload payload, GraphQueryResult result) {
4242
info(String.format("Query executed in %sms. %s", result.getExecutionTimeMs(), result.getResultSummary()));
4343
newLine();
4444
}
4545

4646
@Override
47-
public void postResultReceived() {
47+
public void postResultReceived(ExecuteQueryPayload payload) {
4848
}
4949

5050
@Override
51-
public void handleError(Exception exception) {
51+
public void handleError(ExecuteQueryPayload payload, Exception exception) {
5252
error("Error occurred: ");
5353
printException(exception);
5454
}
5555

5656
@Override
57-
public void executionCompleted() {
57+
public void executionCompleted(ExecuteQueryPayload payload) {
5858
newLine();
5959
}
6060
});

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/console/status/ExecutionStatusBarWidget.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,8 @@
1010
import org.jetbrains.annotations.NotNull;
1111
import org.jetbrains.annotations.Nullable;
1212

13-
import javax.swing.JComponent;
14-
import javax.swing.JPanel;
15-
import java.awt.BorderLayout;
13+
import javax.swing.*;
14+
import java.awt.*;
1615

1716
public class ExecutionStatusBarWidget extends JPanel implements CustomStatusBarWidget {
1817

@@ -34,21 +33,21 @@ public void executionStarted(ExecuteQueryPayload payload) {
3433
}
3534

3635
@Override
37-
public void resultReceived(GraphQueryResult result) {
36+
public void resultReceived(ExecuteQueryPayload payload, GraphQueryResult result) {
3837
setVisible(false);
3938
}
4039

4140
@Override
42-
public void postResultReceived() {
41+
public void postResultReceived(ExecuteQueryPayload payload) {
4342
}
4443

4544
@Override
46-
public void handleError(Exception exception) {
45+
public void handleError(ExecuteQueryPayload payload, Exception exception) {
4746
setVisible(false);
4847
}
4948

5049
@Override
51-
public void executionCompleted() {
50+
public void executionCompleted(ExecuteQueryPayload payload) {
5251
}
5352
});
5453
}

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/console/table/TablePanel.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
import com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.table.editor.CompositeTableCellEditor;
1212
import com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.table.renderer.CompositeTableCellRenderer;
1313

14-
import javax.swing.JTable;
14+
import javax.swing.*;
1515
import javax.swing.table.TableCellRenderer;
1616
import javax.swing.table.TableColumn;
17-
import java.awt.Component;
17+
import java.awt.*;
1818
import java.util.ArrayList;
1919
import java.util.List;
2020

@@ -47,7 +47,7 @@ public void executionStarted(ExecuteQueryPayload payload) {
4747
}
4848

4949
@Override
50-
public void resultReceived(GraphQueryResult result) {
50+
public void resultReceived(ExecuteQueryPayload payload, GraphQueryResult result) {
5151
List<GraphQueryResultColumn> columns = result.getColumns();
5252
columns.forEach((column) -> tableModel.addColumn(column.getName()));
5353

@@ -63,17 +63,17 @@ public void resultReceived(GraphQueryResult result) {
6363
}
6464

6565
@Override
66-
public void postResultReceived() {
66+
public void postResultReceived(ExecuteQueryPayload payload) {
6767
updateColumnWidths();
6868
updateRowHeights();
6969
}
7070

7171
@Override
72-
public void handleError(Exception exception) {
72+
public void handleError(ExecuteQueryPayload payload, Exception exception) {
7373
}
7474

7575
@Override
76-
public void executionCompleted() {
76+
public void executionCompleted(ExecuteQueryPayload payload) {
7777
}
7878
});
7979
}

0 commit comments

Comments
 (0)