Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2.4.4 #24

Merged
merged 5 commits into from
Jun 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>urban-spork</groupId>
<artifactId>urban-spork</artifactId>
<version>2.4.3</version>
<version>2.4.4</version>
<packaging>pom</packaging>
<modules>
<module>urban-spork-common</module>
Expand All @@ -14,7 +14,7 @@
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<urban-spork.version>2.4.3</urban-spork.version>
<urban-spork.version>2.4.4</urban-spork.version>
<maven-surefire-plugin.versioin>3.2.3</maven-surefire-plugin.versioin>
<maven-jar-plugin.version>3.3.0</maven-jar-plugin.version>
<maven-compiler-plugin.version>3.12.1</maven-compiler-plugin.version>
Expand All @@ -24,7 +24,7 @@
<jackson.version>2.16.1</jackson.version>
<logback.version>1.4.14</logback.version>
<netty.version>4.1.104.Final</netty.version>
<bouncycastle.version>1.78</bouncycastle.version>
<bouncycastle.version>2.73.6</bouncycastle.version>
<javafx.version>21.0.1</javafx.version>
<jfoenix.version>9.0.10</jfoenix.version>
</properties>
Expand Down Expand Up @@ -78,7 +78,7 @@
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
<artifactId>bcprov-lts8on</artifactId>
<version>${bouncycastle.version}</version>
</dependency>
<dependency>
Expand Down
2 changes: 1 addition & 1 deletion urban-spork-client-gui/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<parent>
<groupId>urban-spork</groupId>
<artifactId>urban-spork</artifactId>
<version>2.4.3</version>
<version>2.4.4</version>
</parent>
<groupId>urban-spork-client-gui</groupId>
<artifactId>urban-spork-client-gui</artifactId>
Expand Down
36 changes: 36 additions & 0 deletions urban-spork-client-gui/resource/console.css
Original file line number Diff line number Diff line change
Expand Up @@ -150,3 +150,39 @@ GridPane {
.text-area .content {
-fx-background-color: #000;
}

.chart-series-line {
-fx-stroke-width: 2;
}

.chart-legend {
-fx-background-color: transparent;
}

.chart-legend-item-symbol {
-fx-background-radius: 0;
}

.chart-plot-background {
-fx-background-color: transparent;
}

.default-color0.chart-series-line {
-fx-stroke: #0a84ff;
}

.default-color1.chart-series-line {
-fx-stroke: #ff9f0a;
}

.default-color0.chart-line-symbol {
-fx-background-color: #0a84ff;
-fx-shape: "M440-800v487L216-537l-56 57 320 320 320-320-56-57-224 224v-487h-80Z";
-fx-padding: 8;
}

.default-color1.chart-line-symbol {
-fx-background-color: #ff9f0a;
-fx-shape: "M440-160v-487L216-423l-56-57 320-320 320 320-56 57-224-224v487h-80Z";
-fx-padding: 8;
}
1 change: 1 addition & 0 deletions urban-spork-client-gui/resource/language_en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ tray.menu.language=Language
tray.menu.servers=Servers
console.tab0.text=Server Configuration
console.tab1.text=Log
console.tab2.text=Network
console.button.new=New
console.button.import=Import...
console.button.share=Share...
Expand Down
1 change: 1 addition & 0 deletions urban-spork-client-gui/resource/language_zh.properties
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ tray.menu.language=\u8BED\u8A00
tray.menu.servers=\u670D\u52A1\u5668
console.tab0.text=\u914D\u7F6E\u670D\u52A1\u5668
console.tab1.text=\u67E5\u770B\u65E5\u5FD7
console.tab2.text=\u7F51\u7EDC\u8FDE\u63A5
console.button.new=\u65B0\u5EFA
console.button.import=\u5BFC\u5165
console.button.share=\u5206\u4EAB
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

public final class Main {
public static void main(String[] args) {
System.setProperty("javafx.preloader", "com.urbanspork.client.gui.console.Console");
System.setProperty("javafx.preloader", "com.urbanspork.client.gui.console.ConsolePreloader");
Application.launch(Console.class, args);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,8 @@
import com.jfoenix.controls.JFXTabPane;
import com.jfoenix.controls.JFXTextField;
import com.jfoenix.validation.RequiredFieldValidator;
import com.urbanspork.client.Client;
import com.urbanspork.client.gui.Resource;
import com.urbanspork.client.gui.console.tray.ConsoleTray;
import com.urbanspork.client.gui.tray.Tray;
import com.urbanspork.client.gui.console.widget.ConsoleButton;
import com.urbanspork.client.gui.console.widget.ConsoleColumnConstraints;
import com.urbanspork.client.gui.console.widget.ConsoleLabel;
Expand All @@ -23,22 +22,24 @@
import com.urbanspork.client.gui.console.widget.NumericTextField;
import com.urbanspork.client.gui.console.widget.ServerConfigListView;
import com.urbanspork.client.gui.i18n.I18N;
import com.urbanspork.client.gui.tray.Unsupported;
import com.urbanspork.client.gui.traffic.TrafficCounterLineChart;
import com.urbanspork.client.gui.tray.Tray;
import com.urbanspork.common.codec.CipherKind;
import com.urbanspork.common.config.ClientConfig;
import com.urbanspork.common.config.ConfigHandler;
import com.urbanspork.common.config.ServerConfig;
import com.urbanspork.common.config.shadowsocks.ShareableServerConfig;
import com.urbanspork.common.protocol.Protocol;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.application.Preloader;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
Expand All @@ -60,22 +61,22 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.awt.*;
import java.io.IOException;
import java.net.URI;
import java.util.Arrays;
import java.util.List;

public class Console extends Preloader {
public class Console extends Application {
private static final Logger logger = LoggerFactory.getLogger(Console.class);
private static final ClientConfig CLIENT_CONFIG = Resource.config();
private static final RequiredFieldValidator REQUIRED_FIELD_VALIDATOR = new RequiredFieldValidator(I18N.getString(I18N.CONSOLE_VALIDATOR_REQUIRED_FIELD_MESSAGE));

private Tray tray;
private Proxy proxy;
Tray tray;
Proxy proxy;
ObjectProperty<Client.Instance> instance = new SimpleObjectProperty<>();

private Stage primaryStage;
private Parent root;
private JFXTabPane root;
private TextArea logTextarea;
private JFXListView<ServerConfig> serverConfigJFXListView;
private Button newServerConfigButton;
Expand All @@ -98,16 +99,6 @@ public class Console extends Preloader {
private NumericTextField clientConfigPortTextField;
private ObservableList<ServerConfig> serverConfigObservableList;

@Override
public void handleStateChangeNotification(StateChangeNotification info) {
if (info.getType().equals(StateChangeNotification.Type.BEFORE_INIT)
&& info.getApplication() instanceof Console console) {
console.tray = SystemTray.isSupported() ? new ConsoleTray(console) : new Unsupported();
console.proxy = new Proxy(console.tray);
console.proxy.launch();
}
}

@Override
public void init() {
initModule();
Expand Down Expand Up @@ -245,7 +236,7 @@ public void confirmServerConfig() {
CLIENT_CONFIG.setPort(clientConfigPortTextField.getIntValue());
CLIENT_CONFIG.setIndex(selectionModel.getSelectedIndex());
saveConfig();
proxy.launch();
launchProxy();
}
}

Expand Down Expand Up @@ -333,37 +324,51 @@ private JFXTabPane initTabPane() {
Tab tab0 = new Tab(I18N.getString(I18N.CONSOLE_TAB0_TEXT));
tab0.setContent(gridPane0);
tab0.setClosable(false);
// ====================
// tab1 gridPane1
// ====================
GridPane gridPane1 = new GridPane();
// ----------- ColumnConstraints -----------
ObservableList<ColumnConstraints> cConstraints1 = gridPane1.getColumnConstraints();
ColumnConstraints cContainer2 = new ColumnConstraints();
cContainer2.setHgrow(Priority.ALWAYS);
cConstraints1.add(cGap1);
cConstraints1.add(cContainer2);
cConstraints1.add(cGap1);
// ----------- RowConstraints -----------
ObservableList<RowConstraints> rConstraints1 = gridPane1.getRowConstraints();
rConstraints1.add(rGap1);
rConstraints1.add(rContainer2);
rConstraints1.add(rGap1);
// grid children
gridPane1.add(logTextarea, 1, 1);
// tab1
Tab tab1 = new Tab(I18N.getString(I18N.CONSOLE_TAB1_TEXT));
tab1.setContent(gridPane1);
tab1.setClosable(false);
Tab tab1 = newSingleNodeTab(logTextarea, I18N.getString(I18N.CONSOLE_TAB1_TEXT));
//
Tab tab2 = newSingleNodeTab(new TrafficCounterLineChart(instance).init(), I18N.getString(I18N.CONSOLE_TAB2_TEXT));
// ====================
// main tab pane
// ====================
JFXTabPane tabPane = new JFXTabPane();
tabPane.getTabs().addAll(tab0, tab1);
tabPane.getTabs().addAll(tab0, tab1, tab2);
tabPane.getStylesheets().add(Resource.CONSOLE_CSS.toExternalForm());
return tabPane;
}

private Tab newSingleNodeTab(Node node, String tabTitle) {
// ====================
// tab gridPane
// ====================
GridPane gridPane = new GridPane();
// ----------- GapConstraints -----------
ColumnConstraints cGap = new ColumnConstraints(10);
RowConstraints rGap = new RowConstraints(10);
// ----------- NodeConstraints -----------
ColumnConstraints cAlways = new ColumnConstraints();
cAlways.setHgrow(Priority.ALWAYS);
RowConstraints rAlways = new RowConstraints();
rAlways.setVgrow(Priority.ALWAYS);
// ----------- ColumnConstraints -----------
ObservableList<ColumnConstraints> columnConstraints = gridPane.getColumnConstraints();
columnConstraints.add(cGap);
columnConstraints.add(cAlways);
columnConstraints.add(cGap);
// ----------- RowConstraints -----------
ObservableList<RowConstraints> rowConstraints = gridPane.getRowConstraints();
rowConstraints.add(rGap);
rowConstraints.add(rAlways);
rowConstraints.add(rGap);
// grid children
gridPane.add(node, 1, 1);
// tab
Tab tab = new Tab(tabTitle);
tab.setContent(gridPane);
tab.setClosable(false);
return tab;
}

private void addGridPane0Children(GridPane gridPane0) {
// ---------- Grid Children ----------
gridPane0.add(wrap(moveUpServerConfigButton), 1, 13);
Expand Down Expand Up @@ -424,7 +429,7 @@ private void initClientConfigPortTextField() {
int port = clientConfigPortTextField.getIntValue();
if (CLIENT_CONFIG.getPort() != port) {
CLIENT_CONFIG.setPort(port);
proxy.launch();
launchProxy();
saveConfig();
}
});
Expand Down Expand Up @@ -596,6 +601,6 @@ private void saveConfig() {
}

public void launchProxy() {
proxy.launch();
proxy.launch().ifPresent(instance::set);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.urbanspork.client.gui.console;

import com.urbanspork.client.gui.console.tray.ConsoleTray;
import com.urbanspork.client.gui.tray.Unsupported;
import javafx.application.Preloader;
import javafx.stage.Stage;

import java.awt.*;

public class ConsolePreloader extends Preloader {
@Override
public void handleStateChangeNotification(StateChangeNotification info) {
if (info.getType().equals(StateChangeNotification.Type.BEFORE_INIT)
&& info.getApplication() instanceof Console console) {
console.tray = SystemTray.isSupported() ? new ConsoleTray(console) : new Unsupported();
console.proxy = new Proxy(console.tray);
console.proxy.launch().ifPresent(console.instance::set);
}
}

@Override
public void start(Stage primaryStage) {
// skip
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.urbanspork.common.config.ServerConfig;

import java.awt.TrayIcon.MessageType;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
Expand All @@ -23,11 +24,11 @@ public Proxy(Tray tray) {
this.tray = tray;
}

public void launch() {
public Optional<Client.Instance> launch() {
ServerConfig current = config.getCurrent();
if (current == null) {
tray.displayMessage("Proxy is not running", "Please set up a proxy server first", MessageType.INFO);
return;
return Optional.empty();
}
if (client != null) {
client.close();
Expand All @@ -46,6 +47,7 @@ public void launch() {
tray.displayMessage("Error", message, MessageType.ERROR);
tray.setToolTip(message);
}
return client == null ? Optional.empty() : Optional.of(client);
}

public void exit() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.urbanspork.common.config.ClientConfig;
import com.urbanspork.common.config.ConfigHandler;
import com.urbanspork.common.config.ServerConfig;
import javafx.application.Platform;

import javax.swing.*;
import java.awt.TrayIcon.MessageType;
Expand Down Expand Up @@ -47,7 +48,11 @@ private ItemListener createItemListener(JRadioButtonMenuItem item, ClientConfig
return event -> {
if (item.isSelected()) {
config.setIndex(index);
console.getServerConfigJFXListView().getSelectionModel().select(index);
if (Platform.isFxApplicationThread()) {
console.getServerConfigJFXListView().getSelectionModel().select(index);
} else {
Platform.runLater(() -> console.getServerConfigJFXListView().getSelectionModel().select(index));
}
try {
ConfigHandler.DEFAULT.save(config);
} catch (Exception e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public interface I18N {
String TRAY_MENU_SERVERS = "tray.menu.servers";
String CONSOLE_TAB0_TEXT = "console.tab0.text";
String CONSOLE_TAB1_TEXT = "console.tab1.text";
String CONSOLE_TAB2_TEXT = "console.tab2.text";
String CONSOLE_BUTTON_NEW = "console.button.new";
String CONSOLE_BUTTON_IMPORT = "console.button.import";
String CONSOLE_BUTTON_SHARE = "console.button.share";
Expand Down
Loading
Loading