mirror of
https://github.com/octopusYan/alist-gui.git
synced 2025-12-11 10:31:57 +08:00
feat: 主界面调整、日志打印
This commit is contained in:
@ -6,6 +6,7 @@ import cn.octopusyan.alistgui.controller.MainController;
|
||||
import cn.octopusyan.alistgui.controller.RootController;
|
||||
import cn.octopusyan.alistgui.controller.SetupController;
|
||||
import cn.octopusyan.alistgui.manager.ConfigManager;
|
||||
import cn.octopusyan.alistgui.manager.ConsoleLog;
|
||||
import cn.octopusyan.alistgui.util.FxmlUtil;
|
||||
import javafx.application.Platform;
|
||||
import javafx.beans.binding.StringBinding;
|
||||
@ -112,6 +113,10 @@ public class Context {
|
||||
Locale.setDefault(locale);
|
||||
ConfigManager.language(locale);
|
||||
LANGUAGE_RESOURCE_FACTORY.setResourceBundle(ResourceBundle.getBundle(LANGUAGE_RESOURCE_NAME, locale));
|
||||
|
||||
log.info("language changed to {}", locale);
|
||||
if (ConsoleLog.isInit())
|
||||
ConsoleLog.info(STR."language changed to \{locale}");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
package cn.octopusyan.alistgui.controller;
|
||||
|
||||
import cn.octopusyan.alistgui.base.BaseController;
|
||||
import cn.octopusyan.alistgui.manager.ConsoleLog;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.ScrollPane;
|
||||
import javafx.scene.layout.VBox;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -16,6 +18,10 @@ public class MainController extends BaseController<VBox> {
|
||||
|
||||
@FXML
|
||||
public VBox mainView;
|
||||
@FXML
|
||||
public VBox logArea;
|
||||
@FXML
|
||||
public ScrollPane logAreaSp;
|
||||
|
||||
@Override
|
||||
public VBox getRootPanel() {
|
||||
@ -24,7 +30,7 @@ public class MainController extends BaseController<VBox> {
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
|
||||
ConsoleLog.init(logAreaSp, logArea);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
103
src/main/java/cn/octopusyan/alistgui/manager/ConsoleLog.java
Normal file
103
src/main/java/cn/octopusyan/alistgui/manager/ConsoleLog.java
Normal file
@ -0,0 +1,103 @@
|
||||
package cn.octopusyan.alistgui.manager;
|
||||
|
||||
import atlantafx.base.util.BBCodeParser;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import javafx.application.Platform;
|
||||
import javafx.scene.Node;
|
||||
import javafx.scene.control.ScrollPane;
|
||||
import javafx.scene.layout.VBox;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.time.DateFormatUtils;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 模拟控制台输出
|
||||
*
|
||||
* @author octopus_yan
|
||||
*/
|
||||
public class ConsoleLog {
|
||||
public static final String format = "yyyy/MM/dd hh:mm:ss";
|
||||
private volatile static ConsoleLog log;
|
||||
private final ScrollPane logAreaSp;
|
||||
private final VBox textArea;
|
||||
|
||||
private ConsoleLog(ScrollPane logAreaSp, VBox textArea) {
|
||||
this.textArea = textArea;
|
||||
this.logAreaSp = logAreaSp;
|
||||
|
||||
textArea.maxWidthProperty().bind(logAreaSp.prefWidthProperty());
|
||||
|
||||
textArea.heightProperty().subscribe(() -> {
|
||||
logAreaSp.vvalueProperty().setValue(1);
|
||||
});
|
||||
}
|
||||
|
||||
public static ConsoleLog getInstance() {
|
||||
if (log == null) {
|
||||
throw new RuntimeException("are you ready ?");
|
||||
}
|
||||
return log;
|
||||
}
|
||||
|
||||
public static void init(ScrollPane logAreaSp, VBox textArea) {
|
||||
synchronized (ConsoleLog.class) {
|
||||
log = new ConsoleLog(logAreaSp, textArea);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isInit() {
|
||||
return log != null;
|
||||
}
|
||||
|
||||
public static void info(String message, Object... param) {
|
||||
info("", message, param);
|
||||
}
|
||||
|
||||
public static void warning(String message, Object... param) {
|
||||
warning("", message, param);
|
||||
}
|
||||
|
||||
public static void error(String message, Object... param) {
|
||||
error("", message, param);
|
||||
}
|
||||
|
||||
public static void info(String tag, String message, Object... param) {
|
||||
printLog(tag, "INFO", message, param);
|
||||
}
|
||||
|
||||
public static void warning(String tag, String message, Object... param) {
|
||||
printLog(tag, "[color=-color-chart-2]WARN[/color]", message, param);
|
||||
}
|
||||
|
||||
public static void error(String tag, String message, Object... param) {
|
||||
printLog(tag, "[color=-color-chart-3]ERROR[/color]", message, param);
|
||||
}
|
||||
|
||||
public static void msg(String message, Object... param) {
|
||||
Node text = BBCodeParser.createFormattedText(STR."\{StrUtil.format(message, param)}\n\n");
|
||||
Platform.runLater(() -> log.textArea.getChildren().add(text));
|
||||
}
|
||||
|
||||
public static void printLog(String tag, String level, String message, Object... param) {
|
||||
|
||||
String time = DateFormatUtils.format(new Date(), format);
|
||||
time = STR."[color=-color-accent-emphasis]\{time}[/color]";
|
||||
|
||||
String levelStr = StringUtils.substringBetween(level, "]", "[");
|
||||
if (levelStr == null) levelStr = level;
|
||||
level = StringUtils.replace(level, levelStr, StringUtils.center(levelStr, 5));
|
||||
|
||||
tag = StringUtils.isEmpty(tag) ? "" : STR."\{tag}: ";
|
||||
|
||||
String msg = STR."[color=-color-fg-muted]\{StrUtil.format(message, param)}[/color]";
|
||||
|
||||
Node text;
|
||||
if (msg.contains("\n")) {
|
||||
text = BBCodeParser.createLayout(STR."\{time} \{level} \{tag}\{msg}");
|
||||
} else {
|
||||
text = BBCodeParser.createFormattedText(STR."\{time} \{level} \{tag}\{msg}");
|
||||
}
|
||||
Platform.runLater(() -> log.textArea.getChildren().add(text));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user