Skip to content

Commit 49cced6

Browse files
committed
Merge tag '4.3.0'
2 parents 011de60 + 7a6d437 commit 49cced6

29 files changed

Lines changed: 315 additions & 180 deletions

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>gr.sqlbrowserfx</groupId>
66
<artifactId>sqlbrowserfx</artifactId>
7-
<version>4.2.0</version>
7+
<version>4.3.0</version>
88

99
<properties>
1010
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1111
<maven.compiler.source>25</maven.compiler.source>
1212
<maven.compiler.target>25</maven.compiler.target>
1313
<attach.version>4.0.10</attach.version>
14-
<javafx.version>21.0.8</javafx.version>
14+
<javafx.version>25</javafx.version>
1515
<log4j.version>2.22.1</log4j.version>
1616
</properties>
1717

@@ -89,7 +89,7 @@
8989
<groupId>org.fxmisc.richtext</groupId>
9090
<artifactId>richtextfx</artifactId>
9191
<!-- 0.10.9 works better than 0.11.2 -->
92-
<version>0.11.6</version>
92+
<version>0.11.7</version>
9393
</dependency>
9494
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
9595
<dependency>

src/main/java/gr/sqlbrowserfx/SqlBrowserFXApp.java

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
import gr.sqlbrowserfx.dock.nodes.DSqlPane;
3333
import gr.sqlbrowserfx.factories.DialogFactory;
3434
import gr.sqlbrowserfx.nodes.ChatGptWebView;
35+
import gr.sqlbrowserfx.nodes.CustomHBox;
36+
import gr.sqlbrowserfx.nodes.CustomVBox;
3537
import gr.sqlbrowserfx.nodes.DBTreeView;
3638
import gr.sqlbrowserfx.nodes.DbConfigBox;
3739
import gr.sqlbrowserfx.nodes.FilesTreeView;
@@ -71,7 +73,6 @@
7173
import javafx.scene.input.KeyCode;
7274
import javafx.scene.input.KeyEvent;
7375
import javafx.scene.layout.BorderPane;
74-
import javafx.scene.layout.HBox;
7576
import javafx.scene.layout.Priority;
7677
import javafx.scene.layout.VBox;
7778
import javafx.scene.paint.Color;
@@ -142,12 +143,12 @@ private void createDBselectBox() {
142143
var selectedDBtext = new Label("No database selected");
143144
var openButton = new Button("Open", JavaFXUtils.createIcon("/icons/database.png"));
144145
openButton.setOnAction(actionEvent -> dbSelectionAction(selectedDBtext.getText()));
145-
var bottomBox = new HBox(selectedDBtext, openButton);
146+
var bottomBox = new CustomHBox(selectedDBtext, openButton);
146147
bottomBox.setPadding(new Insets(5));
147148
bottomBox.setSpacing(5);
148149
bottomBox.setAlignment(Pos.CENTER_RIGHT);
149150

150-
var rightBox = new VBox();
151+
var rightBox = new CustomVBox();
151152
var text = new Label("Browse system for database...");
152153
var fileChooserButton = new Button("Search", JavaFXUtils.createIcon("/icons/magnify.png"));
153154
fileChooserButton.setOnAction(actionEvent -> {
@@ -181,10 +182,8 @@ private void createDBselectBox() {
181182
dbSelectionAction(selectedDBtext.getText());
182183
}
183184
});
184-
var leftBox = new VBox(recentDBsText, recentDBsTableView);
185+
var leftBox = new CustomVBox(recentDBsText, recentDBsTableView);
185186
leftBox.setAlignment(Pos.CENTER);
186-
leftBox.setPadding(new Insets(5));
187-
leftBox.setSpacing(5);
188187

189188
var borderPane = new BorderPane();
190189
borderPane.setCenter(rightBox);
@@ -358,20 +357,19 @@ private void createAppView(SqlConnector sqlConnector) {
358357
// fixed size
359358
SplitPane.setResizableWithParent(ddbTreePane.asDockNode(), Boolean.FALSE);
360359

361-
var vbox = new VBox();
362-
vbox.setAlignment(Pos.CENTER);
363-
vbox.getChildren().addAll(menuBar, dockPane);
364-
VBox.setVgrow(dockPane, Priority.ALWAYS);
360+
var mainPane = new BorderPane();
361+
mainPane.setTop(menuBar);
362+
mainPane.setCenter(dockPane);
365363

366-
JavaFXUtils.addZoomInOutSupport(vbox);
364+
JavaFXUtils.addZoomInOutSupport(mainPane);
367365

368366
if (primaryScene == null) {
369-
primaryScene = new Scene(vbox);
367+
primaryScene = new Scene(mainPane);
370368
STAGE.setScene(primaryScene);
371369
primaryScene.getStylesheets().add(CSS_THEME);
372370
}
373371

374-
primaryScene.setRoot(vbox);
372+
primaryScene.setRoot(mainPane);
375373
STAGE.heightProperty().addListener((obs, oldVal, newVal) -> {
376374
SplitPane.setResizableWithParent(ddbTreePane.asDockNode(), Boolean.TRUE);
377375
for (SplitPane split : dockPane.getSplitPanes()) {
@@ -493,7 +491,7 @@ private MenuBar createMenu(DockPane dockPane) {
493491
menu2.getItems().addAll(restServiceStartItem, restServiceConfigItem);
494492

495493
var menu3 = new Menu();
496-
var customGraphic = new HBox(JavaFXUtils.createIcon("/icons/settings.png"), new Label("Internal DB"));
494+
var customGraphic = new CustomHBox(JavaFXUtils.createIcon("/icons/settings.png"), new Label("Internal DB"));
497495
customGraphic.setSpacing(5);
498496
menu3.setGraphic(customGraphic);
499497
menu3.getGraphic().setOnMouseClicked(mouseEvent -> {
@@ -531,7 +529,7 @@ private MenuBar createMenu(DockPane dockPane) {
531529
menu4.setDisable(true);
532530

533531
var menu5 = new Menu();
534-
customGraphic = new HBox(JavaFXUtils.createIcon("/icons/help.png"), new Label("Help"));
532+
customGraphic = new CustomHBox(JavaFXUtils.createIcon("/icons/help.png"), new Label("Help"));
535533
customGraphic.setSpacing(5);
536534
menu5.setGraphic(customGraphic);
537535
menu5.getGraphic().setOnMouseClicked(mouseEvent -> {
@@ -560,8 +558,7 @@ private void createRestServiceConfigBox() {
560558
var portField = new TextField(restServiceConfig.getPort().toString());
561559
var saveButton = new Button("Save", JavaFXUtils.createIcon("/icons/check.png"));
562560

563-
var vBox = new VBox(bottleLogo, ipLabel, ipField, portLabel, portField, saveButton);
564-
vBox.setPadding(new Insets(15));
561+
var vBox = new CustomVBox(bottleLogo, ipLabel, ipField, portLabel, portField, saveButton);
565562

566563
var stage = new Stage();
567564
var scene = new Scene(vBox);

src/main/java/gr/sqlbrowserfx/SqlBrowserFXAppWithoutDocking.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import gr.sqlbrowserfx.dock.nodes.DDBTreePane;
2020
import gr.sqlbrowserfx.dock.nodes.DSqlConsolePaneNH;
2121
import gr.sqlbrowserfx.factories.DialogFactory;
22+
import gr.sqlbrowserfx.nodes.CustomHBox;
23+
import gr.sqlbrowserfx.nodes.CustomVBox;
2224
import gr.sqlbrowserfx.nodes.MySqlConfigBox;
2325
import gr.sqlbrowserfx.nodes.SqlConsolePane;
2426
import gr.sqlbrowserfx.nodes.codeareas.Keyword;
@@ -52,7 +54,6 @@
5254
import javafx.scene.input.KeyCode;
5355
import javafx.scene.input.KeyEvent;
5456
import javafx.scene.layout.BorderPane;
55-
import javafx.scene.layout.HBox;
5657
import javafx.scene.layout.Priority;
5758
import javafx.scene.layout.VBox;
5859
import javafx.scene.text.Font;
@@ -126,12 +127,12 @@ private void createDBselectBox() {
126127
var selectedDBtext = new Label("No database selected");
127128
var openButton = new Button("Open", JavaFXUtils.createIcon("/icons/database.png"));
128129
openButton.setOnAction(actionEvent -> dbSelectionAction(selectedDBtext.getText()));
129-
var bottomBox = new HBox(selectedDBtext, openButton);
130+
var bottomBox = new CustomHBox(selectedDBtext, openButton);
130131
bottomBox.setPadding(new Insets(5));
131132
bottomBox.setSpacing(5);
132133
bottomBox.setAlignment(Pos.CENTER_RIGHT);
133134

134-
var rightBox = new VBox();
135+
var rightBox = new CustomVBox();
135136
var text = new Label("Browse system for database...");
136137
var fileChooserButton = new Button("Search", JavaFXUtils.createIcon("/icons/magnify.png"));
137138
fileChooserButton.setOnAction(actionEvent -> {
@@ -164,7 +165,7 @@ private void createDBselectBox() {
164165
dbSelectionAction(selectedDBtext.getText());
165166
}
166167
});
167-
var leftBox = new VBox(recentDBsText, recentDBsTableView);
168+
var leftBox = new CustomVBox(recentDBsText, recentDBsTableView);
168169
leftBox.setAlignment(Pos.CENTER);
169170
leftBox.setPadding(new Insets(5));
170171
leftBox.setSpacing(5);
@@ -315,7 +316,7 @@ private void createRestServiceConfigBox() {
315316
TextField portField = new TextField(restServiceConfig.getPort().toString());
316317
Button saveButton = new Button("Save", JavaFXUtils.createIcon("/icons/check.png"));
317318

318-
VBox vBox = new VBox(bottleLogo, ipLabel, ipField, portLabel, portField, saveButton);
319+
VBox vBox = new CustomVBox(bottleLogo, ipLabel, ipField, portLabel, portField, saveButton);
319320
vBox.setPadding(new Insets(15));
320321

321322
Stage stage = new Stage();
@@ -369,7 +370,7 @@ private void createAppView(SqlConnector sqlConnector) {
369370

370371
MenuBar menuBar = createMenu();
371372

372-
var vbox = new VBox();
373+
var vbox = new CustomVBox();
373374
vbox.setAlignment(Pos.CENTER);
374375
vbox.getChildren().addAll(menuBar, mainSp);
375376
VBox.setVgrow(mainSp, Priority.ALWAYS);

src/main/java/gr/sqlbrowserfx/dock/nodes/DDBTreePane.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import gr.sqlbrowserfx.conn.SqliteConnector;
1616
import gr.sqlbrowserfx.factories.DialogFactory;
1717
import gr.sqlbrowserfx.listeners.SimpleEvent;
18+
import gr.sqlbrowserfx.nodes.CustomFlowPane;
1819
import gr.sqlbrowserfx.nodes.InputMapOwner;
1920
import gr.sqlbrowserfx.nodes.TableCreationPane;
2021
import gr.sqlbrowserfx.nodes.ToolbarOwner;
@@ -107,7 +108,7 @@ public FlowPane createToolbar() {
107108
});
108109
refreshButton.setTooltip(new Tooltip("Refresh"));
109110

110-
FlowPane toolbar = new FlowPane(dbTreeView.getSearchBox(), addButton, refreshButton);
111+
FlowPane toolbar = new CustomFlowPane(dbTreeView.getSearchBox(), addButton, refreshButton);
111112
toolbar.setPrefWidth(addButton.getWidth());
112113
return toolbar;
113114
}

src/main/java/gr/sqlbrowserfx/dock/nodes/DSqlConsolePane.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import gr.sqlbrowserfx.SqlBrowserFXAppManager;
2020
import gr.sqlbrowserfx.conn.SqlConnector;
2121
import gr.sqlbrowserfx.factories.DialogFactory;
22+
import gr.sqlbrowserfx.nodes.CustomVBox;
2223
import gr.sqlbrowserfx.nodes.SqlConsolePane;
2324
import gr.sqlbrowserfx.nodes.codeareas.sql.HistorySqlCodeArea;
2425
import gr.sqlbrowserfx.nodes.codeareas.sql.SqlCodeArea;
@@ -64,7 +65,7 @@ public DSqlConsolePane(SqlConnector sqlConnector, SqlPane sqlPane) {
6465

6566
});
6667
VirtualizedScrollPane<SqlCodeArea> vsp = new VirtualizedScrollPane<>(historyCodeArea);
67-
historyBox = new VBox(datePicker, vsp);
68+
historyBox = new CustomVBox(datePicker, vsp);
6869
VBox.setVgrow(vsp, Priority.ALWAYS);
6970

7071
this.getQueriesHistory(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));

src/main/java/gr/sqlbrowserfx/factories/DialogFactory.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
import gr.sqlbrowserfx.LoggerConf;
1313
import gr.sqlbrowserfx.SqlBrowserFXApp;
14+
import gr.sqlbrowserfx.nodes.CustomHBox;
15+
import gr.sqlbrowserfx.nodes.CustomVBox;
1416
import gr.sqlbrowserfx.nodes.tableviews.MapTableViewRow;
1517
import gr.sqlbrowserfx.nodes.tableviews.SqlTableView;
1618
import gr.sqlbrowserfx.utils.JavaFXUtils;
@@ -66,7 +68,7 @@ public static void createErrorDialog(Throwable e, String stylesheet) {
6668
textArea.setWrapText(true);
6769

6870
VBox.setVgrow(textArea, Priority.ALWAYS);
69-
VBox expContent = new VBox(label,textArea);
71+
VBox expContent = new CustomVBox(label,textArea);
7072

7173
LoggerFactory.getLogger(LoggerConf.LOGGER_NAME).error(e.getMessage(), e);
7274
alert.getDialogPane().setExpandableContent(expContent);
@@ -159,10 +161,10 @@ public static int createDialogWithContent(Node owner, Node content, String messa
159161
dialog.initModality(Modality.NONE);
160162
dialog.initOwner(owner.getScene().getWindow());
161163

162-
HBox buttonBox = new HBox();
164+
HBox buttonBox = new CustomHBox();
163165
buttonBox.setAlignment(NOTIFICATION_POS);
164166

165-
VBox dialogVbox = new VBox();
167+
VBox dialogVbox = new CustomVBox();
166168
dialogVbox.setAlignment(Pos.CENTER);
167169

168170

src/main/java/gr/sqlbrowserfx/nodes/ChatGptWebView.java

Lines changed: 57 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.fxmisc.wellbehaved.event.Nodes;
66

77
import gr.sqlbrowserfx.utils.JavaFXUtils;
8+
import gr.sqlbrowserfx.utils.JavaFXUtils.CssType;
89
import javafx.scene.control.ContextMenu;
910
import javafx.scene.control.MenuItem;
1011
import javafx.scene.control.SeparatorMenuItem;
@@ -20,44 +21,83 @@
2021

2122
public class ChatGptWebView extends BorderPane implements ContextMenuOwner, InputMapOwner {
2223

23-
private final String darkModeCssJs = """
24+
private final String lightModeCssJs = """
2425
(function() {
2526
const style = document.createElement('style');
2627
style.textContent = `
2728
:root {
2829
color-scheme: dark;
29-
background-color: #222222 !important;
30+
background-color:#F7F7FB !important;
3031
color: #e0e0e0 !important;
3132
}
3233
html, body *:not(pre):not(pre *) {
33-
background-color: #222222 !important;
34+
background-color:#F7F7FB !important;
3435
color: #e0e0e0 !important;
3536
margin: 0 !important;
3637
box-shadow: none !important;
3738
text-shadow: none !important;
3839
}
3940
pre * {
40-
background-color: #2d2d2d !important;
41+
background-color: #F7F7FB !important;
4142
color: #e0e0e0 !important;
42-
border-radius: 5px !important;
43+
border-radius: 4px !important;
4344
}
4445
button {
45-
border-radius: 5px !important;
46+
border-radius: 4px !important;
4647
border-width: 2px !important;
47-
border-color: #2d2d2d !important;
48+
border-color: #F7F7FB !important;
4849
}
4950
button:hover {
50-
border-color: #196de3 !important;
51+
border-color: #c98fdb !important;
5152
}
5253
form {
53-
border-radius: 5px !important;
54+
border-radius: 4px !important;
5455
border-width: 2px !important;
55-
border-color: #2d2d2d !important;
56+
border-color: #F7F7FB !important;
5657
}
5758
`;
5859
document.documentElement.appendChild(style);
5960
})();
60-
""";
61+
""";
62+
63+
private final String darkModeCssJs = """
64+
(function() {
65+
const style = document.createElement('style');
66+
style.textContent = `
67+
:root {
68+
color-scheme: dark;
69+
background-color: #222222 !important;
70+
color: #e0e0e0 !important;
71+
}
72+
html, body *:not(pre):not(pre *) {
73+
background-color: #222222 !important;
74+
color: #e0e0e0 !important;
75+
margin: 0 !important;
76+
box-shadow: none !important;
77+
text-shadow: none !important;
78+
}
79+
pre * {
80+
background-color: #2d2d2d !important;
81+
color: #e0e0e0 !important;
82+
border-radius: 4px !important;
83+
}
84+
button {
85+
border-radius: 4px !important;
86+
border-width: 2px !important;
87+
border-color: #2d2d2d !important;
88+
}
89+
button:hover {
90+
border-color: #196de3 !important;
91+
}
92+
form {
93+
border-radius: 4px !important;
94+
border-width: 2px !important;
95+
border-color: #2d2d2d !important;
96+
}
97+
`;
98+
document.documentElement.appendChild(style);
99+
})();
100+
""";
61101
private final String selectedTextJs = """
62102
(function() {
63103
let text = "";
@@ -94,7 +134,12 @@ public ChatGptWebView() {
94134
// Load ChatGPT and then apply dark mode styling
95135
webEngine.getLoadWorker().stateProperty().addListener((obs, oldState, newState) -> {
96136
if (newState == javafx.concurrent.Worker.State.SUCCEEDED) {
97-
webEngine.executeScript(this.darkModeCssJs);
137+
if (JavaFXUtils.getCssType() == CssType.DARK) {
138+
webEngine.executeScript(this.darkModeCssJs);
139+
}
140+
else {
141+
webEngine.executeScript(this.lightModeCssJs);
142+
}
98143
}
99144
});
100145
webEngine.load("https://chatgpt.com/");
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package gr.sqlbrowserfx.nodes;
2+
3+
import javafx.geometry.Insets;
4+
import javafx.scene.Node;
5+
import javafx.scene.layout.FlowPane;
6+
7+
public class CustomFlowPane extends FlowPane {
8+
9+
public CustomFlowPane(Node... nodes) {
10+
super(4, 4, nodes);
11+
this.setPadding(new Insets(2));
12+
}
13+
14+
public CustomFlowPane() {
15+
super(4, 4);
16+
this.setPadding(new Insets(2));
17+
}
18+
}

0 commit comments

Comments
 (0)