Skip to content

Commit 37618c6

Browse files
committed
move ai access to syntax provider
1 parent 2801f62 commit 37618c6

5 files changed

Lines changed: 33 additions & 29 deletions

File tree

src/main/java/gr/sqlbrowserfx/SqlBrowserFXAppManager.java

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import gr.sqlbrowserfx.dock.nodes.DDBTreeView;
1111
import gr.sqlbrowserfx.dock.nodes.DSqlConsolePane;
1212
import gr.sqlbrowserfx.dock.nodes.DSqlPane;
13+
import gr.sqlbrowserfx.nodes.ChatGptWebView;
1314
import gr.sqlbrowserfx.nodes.sqlpane.SqlPane;
14-
import javafx.scene.web.WebEngine;
1515

1616
public class SqlBrowserFXAppManager {
1717

@@ -22,7 +22,7 @@ public class SqlBrowserFXAppManager {
2222
private static final List<SqlPane> SQL_PANES = new ArrayList<>();
2323
private static final List<DDBTreeView> DB_TREE_VIEWS = new ArrayList<>();
2424
private static String DB_TYPE = "sqlite";
25-
private static WebEngine chatGptWebEngine;
25+
private static ChatGptWebView chatGpt;
2626

2727
public static SqlConnector getConfigSqlConnector() {
2828
return SQL_CONNECTOR;
@@ -82,26 +82,18 @@ public static void unregisterDDBTreeView(DDBTreeView treeView) {
8282
DB_TREE_VIEWS.remove(treeView);
8383
}
8484

85-
public static void setChatGptWebEngine(WebEngine webEngine) {
86-
chatGptWebEngine = webEngine;
85+
public static void registerChatGpt(ChatGptWebView chatGpt) {
86+
SqlBrowserFXAppManager.chatGpt = chatGpt;
87+
}
88+
89+
public static void unregisterChatGpt() {
90+
SqlBrowserFXAppManager.chatGpt = null;
8791
}
8892

8993
public static void askChatGpt(String question) {
90-
String safeText = question.replace("\\", "\\\\").replace("\"", "\\\"")
91-
.replace("\n", "\\n").replace("\r", "");
92-
93-
String js = """
94-
(function() {
95-
const el = document.getElementById('prompt-textarea');
96-
el.innerText = "%s";
97-
setTimeout(() => {
98-
const btn = document.getElementById('composer-submit-button');
99-
btn.click();
100-
}, 500);
101-
102-
})();
103-
""".formatted(safeText);
104-
105-
chatGptWebEngine.executeScript(js);
94+
if (chatGpt == null) {
95+
throw new RuntimeException("ChatGPT is not open");
96+
}
97+
chatGpt.askChatGpt(question);
10698
}
10799
}

src/main/java/gr/sqlbrowserfx/nodes/codeareas/AutoCompleteCodeArea.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import org.fxmisc.wellbehaved.event.InputMap;
2222
import org.fxmisc.wellbehaved.event.Nodes;
2323

24-
import gr.sqlbrowserfx.SqlBrowserFXAppManager;
2524
import gr.sqlbrowserfx.factories.DialogFactory;
2625
import gr.sqlbrowserfx.nodes.ContextMenuOwner;
2726
import gr.sqlbrowserfx.nodes.InputMapOwner;
@@ -330,12 +329,6 @@ public ContextMenu createContextMenu() {
330329
var menuItemSuggestions = new MenuItem("Suggestions", JavaFXUtils.createIcon("/icons/suggestion.png"));
331330
menuItemSuggestions.setOnAction(event -> this.autoCompleteAction(this.simulateControlSpaceEvent()));
332331

333-
var menuItemAskChatGpt = new MenuItem("Ask ChatGpt", JavaFXUtils.createIcon("/icons/suggestion.png"));
334-
menuItemAskChatGpt.setOnAction(event -> {
335-
SqlBrowserFXAppManager.askChatGpt("Check fllowing sql code for errors, keep your answer short with mainly code examples: " + (this.getSelectedText() != null ? this.getSelectedText() : this.getText().toString()));
336-
});
337-
338-
339332
var menuItemSearchAndReplace = new MenuItem("Search...", JavaFXUtils.createIcon("/icons/magnify.png"));
340333
menuItemSearchAndReplace.setOnAction(action -> this.showSearchAndReplacePopup());
341334

@@ -381,7 +374,7 @@ public ContextMenu createContextMenu() {
381374
new SeparatorMenuItem(),
382375
menuItemFormat, menuItemFormat3,
383376
new SeparatorMenuItem(),
384-
menuItemSearchAndReplace, menuItemGoToLine, menuItemSuggestions, menuItemAskChatGpt,
377+
menuItemSearchAndReplace, menuItemGoToLine, menuItemSuggestions,
385378
new SeparatorMenuItem(),
386379
menuItemSaveAs);
387380
return menu;

src/main/java/gr/sqlbrowserfx/nodes/codeareas/CodeAreaSyntaxProvider.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,7 @@ public interface CodeAreaSyntaxProvider<T> {
1010
Matcher getPatternMatcher(String text);
1111
String format(String text);
1212
String format(String text, FormatterMode mode);
13+
default void getAiHelp(String question) {
14+
throw new RuntimeException("Not implemeted!");
15+
};
1316
}

src/main/java/gr/sqlbrowserfx/nodes/codeareas/sql/SqlCodeArea.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,18 @@ public ContextMenu createContextMenu() {
420420
menuItemShowSchema.setOnAction(action -> SqlCodeArea.this.showSchemaPopOver());
421421
menuItemShowSchema.disableProperty().bind(this.isTextSelectedProperty().not());
422422

423-
menu.getItems().addAll(new SeparatorMenuItem(), menuItemHistory, menuItemShowSchema);
423+
var menuItemCheckErrorsChatGpt = new MenuItem("Check For Erros (ChatGPT)", JavaFXUtils.createIcon("/icons/chatgpt.png"));
424+
menuItemCheckErrorsChatGpt.setOnAction(event -> syntaxProvider.getAiHelp("Check fllowing sql code for errors, keep your answer short with mainly code examples: " + (this.getSelectedText() != null ? this.getSelectedText() : this.getText())));
425+
menuItemCheckErrorsChatGpt.disableProperty().bind(this.isTextSelectedProperty().not());
426+
427+
var menuItemAskChatGpt = new MenuItem("Ask ChaGPT", JavaFXUtils.createIcon("/icons/chatgpt.png"));
428+
menuItemAskChatGpt.setOnAction(event -> syntaxProvider.getAiHelp(this.getSelectedText()));
429+
menuItemAskChatGpt.disableProperty().bind(this.isTextSelectedProperty().not());
430+
431+
432+
menu.getItems().addAll(
433+
new SeparatorMenuItem(), menuItemCheckErrorsChatGpt, menuItemAskChatGpt,
434+
new SeparatorMenuItem(), menuItemHistory, menuItemShowSchema);
424435

425436
return menu;
426437
}

src/main/java/gr/sqlbrowserfx/nodes/codeareas/sql/SqlCodeAreaSyntaxProvider.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,4 +138,9 @@ public String format(String text, FormatterMode mode) {
138138
return SqlFormatter.format(text);
139139
}
140140
}
141+
142+
@Override
143+
public void getAiHelp(String question) {
144+
SqlBrowserFXAppManager.askChatGpt(question);
145+
}
141146
}

0 commit comments

Comments
 (0)