diff --git a/.gitignore b/.gitignore
index cbc4d53..024424f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,8 @@
+/.claude
+/CLAUDE.md
+/AGENTS.md
+/logs
+
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
diff --git a/pom.xml b/pom.xml
index 7d15fb9..f9029c5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.imyeyu.fx.ui
timi-fx-ui
- 0.0.1
+ 0.0.2
true
@@ -19,7 +19,7 @@
com.imyeyu.fx
timi-fx
- 0.0.1
+ 0.0.2
com.imyeyu.fx.icon
@@ -29,7 +29,7 @@
com.imyeyu.lang
timi-lang
- 0.0.1
+ 0.0.2
@@ -41,13 +41,13 @@
com.imyeyu.network
timi-network
- 0.0.1
+ 0.0.2
test
com.imyeyu.config
timi-config
- 0.0.1
+ 0.0.2
test
@@ -59,7 +59,13 @@
com.imyeyu.inject
timi-inject
- 0.0.1
+ 0.0.2
+ test
+
+
+ ch.qos.logback
+ logback-classic
+ 1.5.24
test
diff --git a/src/main/java/com/imyeyu/fx/ui/components/VersionLabel.java b/src/main/java/com/imyeyu/fx/ui/components/VersionLabel.java
index edb44de..416a5b5 100644
--- a/src/main/java/com/imyeyu/fx/ui/components/VersionLabel.java
+++ b/src/main/java/com/imyeyu/fx/ui/components/VersionLabel.java
@@ -150,7 +150,7 @@ public abstract class VersionLabel extends VBox implements TimiFXUI, TimiFXUI
@Override
protected void onException(Throwable e) {
- version.setText(TimiFXUI.MULTILINGUAL.textArgs("version.fail", nowVersion));
+ version.setText(TimiFXUI.MULTILINGUAL.text("version.fail"));
version.setOnMouseClicked(event -> checkVersion(nowVersion));
e.printStackTrace();
}
diff --git a/src/main/java/com/imyeyu/fx/ui/components/alert/AbstractAlertFile.java b/src/main/java/com/imyeyu/fx/ui/components/alert/AbstractAlertFile.java
index c845316..0c1a43e 100644
--- a/src/main/java/com/imyeyu/fx/ui/components/alert/AbstractAlertFile.java
+++ b/src/main/java/com/imyeyu/fx/ui/components/alert/AbstractAlertFile.java
@@ -183,7 +183,7 @@ public abstract class AbstractAlertFile extends AbstractAlert implements TimiFXU
if (file.exists()) {
tree.selectItem(file);
} else {
- AlertTips.error(this, TimiFXUI.MULTILINGUAL.textArgs("file.tips.not_found_target", absolutePath.getText()));
+ AlertTips.error(this, TimiFXUI.MULTILINGUAL.text("file.tips.not_found_target"));
}
}
});
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/TimiFXExamples.java b/src/test/java/com/imyeyu/fx/ui/examples/TimiFXExamples.java
index faa3bce..f226789 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/TimiFXExamples.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/TimiFXExamples.java
@@ -1,20 +1,17 @@
package com.imyeyu.fx.ui.examples;
-import com.imyeyu.inject.InjectApp;
-import javafx.application.Application;
-import javafx.beans.property.ObjectProperty;
-import lombok.Getter;
-import lombok.extern.slf4j.Slf4j;
import com.imyeyu.config.ConfigLoader;
import com.imyeyu.fx.config.BindingsConfig;
import com.imyeyu.fx.ui.TimiFXUI;
import com.imyeyu.fx.ui.examples.bean.Config;
import com.imyeyu.fx.ui.examples.ctrl.Main;
+import com.imyeyu.inject.TimiInject;
import com.imyeyu.inject.annotation.TimiInjectApplication;
import com.imyeyu.java.bean.Language;
import com.imyeyu.lang.multi.ResourcesMultilingual;
-
-import java.util.Map;
+import javafx.application.Application;
+import lombok.Getter;
+import lombok.extern.slf4j.Slf4j;
/**
* TimiFX 示例程序
@@ -36,31 +33,23 @@ public class TimiFXExamples {
private static ConfigLoader configLoader;
@Getter
- private static InjectApp injectApp;
+ public static TimiInject inject;
public static void main(String[] args) {
- try {
- injectApp = new InjectApp(TimiFXExamples.class);
- {
- configLoader = new ConfigLoader<>("TimiFXExamples.yaml", Config.class);
- for (Map.Entry, BindingsConfig.PropertyConverter, ?>> item : BindingsConfig.DEFAULT_CONVERTER_MAP.entrySet()) {
- configLoader.addConverter(item.getKey(), item.getValue());
- }
- configLoader.addConverter(ObjectProperty.class, BindingsConfig.OBJECT);
- config = configLoader.load();
+ {
+ configLoader = new ConfigLoader<>("TimiFXExamples.yaml", Config.class);
+ BindingsConfig.addAllFXConverter(configLoader);
+ config = configLoader.load();
- ResourcesMultilingual multilingual = TimiFXUI.MULTILINGUAL;
- multilingual.addAll("lang/timi-fx-ui/%s.lang");
- multilingual.addAll("lang/%s.lang");
- multilingual.setActivated(Language.zh_CN);
+ ResourcesMultilingual multilingual = TimiFXUI.MULTILINGUAL;
+ multilingual.addAll("lang/timi-fx-ui/%s.lang");
+ multilingual.addAll("lang/%s.lang");
+ multilingual.setActivated(Language.Enum.zh_CN);
- // 禁止系统 DPI 缩放
- System.setProperty("prism.allowhidpi", "false");
- System.setProperty("glass.win.minHiDPI", "1");
- }
- Application.launch(Main.class);
- } catch (Exception e) {
- log.error("fatal error", e);
+ // 禁止系统 DPI 缩放
+ System.setProperty("prism.allowhidpi", "false");
+ System.setProperty("glass.win.minHiDPI", "1");
}
+ Application.launch(Main.class);
}
}
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/bean/Config.java b/src/test/java/com/imyeyu/fx/ui/examples/bean/Config.java
index 66b69f3..d465468 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/bean/Config.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/bean/Config.java
@@ -1,9 +1,9 @@
package com.imyeyu.fx.ui.examples.bean;
+import com.imyeyu.java.bean.Language;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.ObjectProperty;
import lombok.Data;
-import com.imyeyu.java.bean.Language;
/**
* @author 夜雨
@@ -12,7 +12,7 @@ import com.imyeyu.java.bean.Language;
@Data
public class Config {
- private ObjectProperty language;
+ private ObjectProperty language;
private DoubleProperty width;
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/component/AbstractPane.java b/src/test/java/com/imyeyu/fx/ui/examples/component/AbstractPane.java
index 50e42f6..bdb1ff2 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/component/AbstractPane.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/component/AbstractPane.java
@@ -1,10 +1,6 @@
package com.imyeyu.fx.ui.examples.component;
import com.imyeyu.fx.ui.TimiFXUI;
-import com.imyeyu.fx.ui.examples.component.sidebar.SidebarItem;
-import com.imyeyu.fx.ui.examples.service.PageService;
-import com.imyeyu.inject.annotation.Inject;
-import com.imyeyu.inject.annotation.StaticInject;
import javafx.scene.layout.BorderPane;
/**
@@ -13,12 +9,8 @@ import javafx.scene.layout.BorderPane;
* @author 夜雨
* @since 2022-08-26 14:55
*/
-@StaticInject
public abstract class AbstractPane extends BorderPane implements TimiFXUI {
- @Inject
- private static PageService pageService;
-
/** 显示时触发,UI 线程 */
protected void onShow() {
// 子类实现
@@ -29,15 +21,6 @@ public abstract class AbstractPane extends BorderPane implements TimiFXUI {
// 子类实现
}
- /**
- * 跳转页面
- *
- * @param page 页面
- */
- protected final void toPage(SidebarItem page) {
- pageService.to(page);
- }
-
/** 显示面板事件,由调用者触发,通常是侧边导航 */
public final void show() {
onShow();
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/component/RootLayout.java b/src/test/java/com/imyeyu/fx/ui/examples/component/RootLayout.java
index 46ab742..f49f3e7 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/component/RootLayout.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/component/RootLayout.java
@@ -2,9 +2,9 @@ package com.imyeyu.fx.ui.examples.component;
import com.imyeyu.fx.ui.TimiFXUI;
import com.imyeyu.fx.ui.examples.component.sidebar.Sidebar;
+import com.imyeyu.fx.ui.examples.service.PageService;
import com.imyeyu.inject.annotation.Component;
-import com.imyeyu.inject.annotation.Inject;
-import com.imyeyu.inject.annotation.InvokeForInjected;
+import com.imyeyu.inject.annotation.PostConstruct;
import javafx.scene.layout.BorderPane;
/**
@@ -16,15 +16,26 @@ import javafx.scene.layout.BorderPane;
@Component
public class RootLayout extends BorderPane implements TimiFXUI {
- @Inject
- private Sidebar sidebar;
+ private final Sidebar sidebar;
+ private final PageService pageService;
- public RootLayout() {
+ public RootLayout(Sidebar sidebar, PageService pageService) {
+ this.sidebar = sidebar;
+ this.pageService = pageService;
setBorder(Stroke.TOP);
}
- @InvokeForInjected
+ @PostConstruct
public void init() {
setLeft(sidebar);
+ pageService.activatedPageProperty().addListener((obs, prev, now) -> {
+ if (now != null && now.getIOCPage() instanceof AbstractPane pane) {
+ pane.show();
+ setCenter(pane);
+ }
+ if (prev != null && prev.getIOCPage() instanceof AbstractPane pane) {
+ pane.hide();
+ }
+ });
}
}
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/component/sidebar/Sidebar.java b/src/test/java/com/imyeyu/fx/ui/examples/component/sidebar/Sidebar.java
index 064a8a6..87f3a51 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/component/sidebar/Sidebar.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/component/sidebar/Sidebar.java
@@ -4,7 +4,6 @@ import com.imyeyu.fx.ui.TimiFXUI;
import com.imyeyu.fx.ui.components.Navigation;
import com.imyeyu.fx.ui.examples.service.PageService;
import com.imyeyu.inject.annotation.Component;
-import com.imyeyu.inject.annotation.Inject;
import javafx.scene.control.ToggleButton;
/**
@@ -16,10 +15,8 @@ import javafx.scene.control.ToggleButton;
@Component
public class Sidebar extends Navigation {
- @Inject
- private PageService pageService;
+ public Sidebar(PageService pageService) {
- public Sidebar() {
Item welcome = new Item(SidebarItem.WELCOME);
Item style = new Item(SidebarItem.STYLE);
Item extendTools = new Item(SidebarItem.EXTEND_TOOLS);
@@ -37,25 +34,7 @@ public class Sidebar extends Navigation {
addGroup(TimiFXUI.MULTILINGUAL.text("animation"), interpolator, smoothScroll);
// 组件
- SidebarItem[] components = {
- SidebarItem.CHECK_BOX_PICKER,
- SidebarItem.DATE_TIME_PICKER,
- SidebarItem.EDITABLE_TABLE_CELL,
- SidebarItem.FILE_TREE_VIEW,
- SidebarItem.ICON_BUTTON,
- SidebarItem.ICON_PICKER,
- SidebarItem.LABEL_PROGRESS_BAR,
- SidebarItem.NAVIGATION,
- SidebarItem.NUMBER_FIELD,
- SidebarItem.PROGRESS_SLIDER,
- SidebarItem.SELECTABLE_LABEL,
- SidebarItem.TEXT_AREA_EDITOR,
- SidebarItem.TITLE_LABEL,
- SidebarItem.TOGGLE_ICON,
- SidebarItem.X_PAGINATION,
- SidebarItem.X_TAB_PANE,
- SidebarItem.X_TREE_VIEW
- };
+ SidebarItem[] components = {SidebarItem.CHECK_BOX_PICKER, SidebarItem.DATE_TIME_PICKER, SidebarItem.EDITABLE_TABLE_CELL, SidebarItem.FILE_TREE_VIEW, SidebarItem.ICON_BUTTON, SidebarItem.ICON_PICKER, SidebarItem.LABEL_PROGRESS_BAR, SidebarItem.NAVIGATION, SidebarItem.NUMBER_FIELD, SidebarItem.PROGRESS_SLIDER, SidebarItem.SELECTABLE_LABEL, SidebarItem.TEXT_AREA_EDITOR, SidebarItem.TITLE_LABEL, SidebarItem.TOGGLE_ICON, SidebarItem.X_PAGINATION, SidebarItem.X_TAB_PANE, SidebarItem.X_TREE_VIEW};
Item[] componentItems = new Item[components.length];
for (int i = 0; i < componentItems.length; i++) {
componentItems[i] = new Item(components[i]);
@@ -101,7 +80,7 @@ public class Sidebar extends Navigation {
* 列表项
*
* @author 夜雨
- * @since 2022-02-22 19:45
+ * @since 2022-02-22 19:45
*/
private static class Item extends ToggleButton {
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/component/sidebar/SidebarItem.java b/src/test/java/com/imyeyu/fx/ui/examples/component/sidebar/SidebarItem.java
index c7df1ea..31cf6b3 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/component/sidebar/SidebarItem.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/component/sidebar/SidebarItem.java
@@ -155,6 +155,6 @@ public enum SidebarItem {
/** @return 从 TimiInject 控制反转对象获取该页面 */
public Node getIOCPage() {
- return TimiFXExamples.getInjectApp().injector().di(page);
+ return TimiFXExamples.getInject().getBean(page);
}
}
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/ctrl/Main.java b/src/test/java/com/imyeyu/fx/ui/examples/ctrl/Main.java
index aebb0d1..4fbbd72 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/ctrl/Main.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/ctrl/Main.java
@@ -1,15 +1,13 @@
package com.imyeyu.fx.ui.examples.ctrl;
+import com.imyeyu.fx.inject.FXTimiInject;
import com.imyeyu.fx.ui.components.TrayFX;
import com.imyeyu.fx.ui.examples.TimiFXExamples;
import com.imyeyu.fx.ui.examples.component.sidebar.Sidebar;
import com.imyeyu.fx.ui.examples.component.sidebar.SidebarItem;
import com.imyeyu.fx.ui.examples.service.PageService;
import com.imyeyu.fx.ui.examples.view.ViewMain;
-import com.imyeyu.inject.TimiInject;
-import com.imyeyu.inject.annotation.IOCReturn;
import com.imyeyu.inject.annotation.Inject;
-import com.imyeyu.inject.annotation.SuperInject;
import javafx.stage.Stage;
import java.awt.SplashScreen;
@@ -20,7 +18,6 @@ import java.awt.SplashScreen;
* @author 夜雨
* @since 2022-05-03 15:43
*/
-@SuperInject
public class Main extends ViewMain {
@Inject
@@ -38,7 +35,7 @@ public class Main extends ViewMain {
public void start(Stage stage) {
this.stage = stage;
- TimiInject.run(TimiFXExamples.getInjectApp()).ioc(this);
+ TimiFXExamples.inject = FXTimiInject.run(TimiFXExamples.class, this, stage);
super.start(stage);
sidebar.setSelected(SidebarItem.WELCOME);
@@ -58,10 +55,4 @@ public class Main extends ViewMain {
trayFX.remove();
stage.close();
}
-
- /** 主窗体 */
- @IOCReturn
- public Stage getStage() {
- return stage;
- }
}
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/service/PageService.java b/src/test/java/com/imyeyu/fx/ui/examples/service/PageService.java
index 808f76b..a20c6a9 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/service/PageService.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/service/PageService.java
@@ -1,14 +1,10 @@
package com.imyeyu.fx.ui.examples.service;
-import com.imyeyu.fx.ui.examples.component.AbstractPane;
-import com.imyeyu.fx.ui.examples.component.RootLayout;
import com.imyeyu.fx.ui.examples.component.sidebar.SidebarItem;
-import com.imyeyu.inject.annotation.Inject;
import com.imyeyu.inject.annotation.Service;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
-import lombok.extern.slf4j.Slf4j;
/**
* 页面服务
@@ -16,13 +12,9 @@ import lombok.extern.slf4j.Slf4j;
* @author 夜雨
* @since 2021-12-26 10:57
*/
-@Slf4j
@Service
public class PageService {
- @Inject
- private RootLayout root;
-
private SidebarItem prev;
private final ObjectProperty activatedPageProperty;
@@ -31,13 +23,6 @@ public class PageService {
activatedPageProperty = new SimpleObjectProperty<>();
activatedPageProperty.addListener((obs, prev, now) -> {
this.prev = prev;
- if (now != null && now.getIOCPage() instanceof AbstractPane pane) {
- pane.show();
- root.setCenter(pane);
- }
- if (prev != null && prev.getIOCPage() instanceof AbstractPane pane) {
- pane.hide();
- }
});
}
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/util/Resources.java b/src/test/java/com/imyeyu/fx/ui/examples/util/Resources.java
index aed2fa3..97862c2 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/util/Resources.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/util/Resources.java
@@ -4,7 +4,8 @@ import com.imyeyu.fx.ui.TimiFXUI;
import com.imyeyu.fx.ui.components.TrayFX;
import com.imyeyu.fx.ui.examples.TimiFXExamples;
import com.imyeyu.fx.ui.examples.bean.Config;
-import com.imyeyu.inject.annotation.IOCReturn;
+import com.imyeyu.inject.annotation.Bean;
+import com.imyeyu.inject.annotation.Configuration;
import javafx.scene.image.Image;
/**
@@ -13,19 +14,19 @@ import javafx.scene.image.Image;
* @author 夜雨
* @since 2022-08-26 15:23
*/
-@com.imyeyu.inject.annotation.Resources
+@Configuration
public class Resources implements TimiFXUI {
public static final Image ICON_X64 = new Image(RESOURCE + "icon.png", 64, 64, true, false);
/** @return 配置 */
- @IOCReturn
+ @Bean
public Config config() {
return TimiFXExamples.getConfig();
}
/** @return 托盘 */
- @IOCReturn
+ @Bean
public TrayFX trayFX() {
return TrayFX.getInstance();
}
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/view/pages/AnimationRendererDemo.java b/src/test/java/com/imyeyu/fx/ui/examples/view/pages/AnimationRendererDemo.java
index 37d029b..e0a1ecb 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/view/pages/AnimationRendererDemo.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/view/pages/AnimationRendererDemo.java
@@ -13,7 +13,6 @@ import com.imyeyu.fx.ui.examples.component.sidebar.SidebarItem;
import com.imyeyu.fx.ui.examples.ctrl.Main;
import com.imyeyu.fx.utils.AnimationRenderer;
import com.imyeyu.fx.utils.Column;
-import com.imyeyu.inject.TimiInject;
import com.imyeyu.inject.annotation.Component;
import com.imyeyu.io.IO;
import com.imyeyu.utils.OS;
@@ -154,7 +153,7 @@ fps.valueProperty().addListener((obs, o, newFps) -> {
String jar = IO.getJarAbsolutePath(getClass());
// 重启
try {
- TimiFX.doRestart(TimiFXExamples.getInjectApp().injector().di(Main.class), jre + param + jar);
+ TimiFX.doRestart(TimiFXExamples.getInject().getBean(Main.class), jre + param + jar);
} catch (Exception ex) {
AlertTips.error(getScene().getWindow(), TimiFXUI.MULTILINGUAL.text("tips.restart.error"));
}
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/view/pages/BindingsConfigDemo.java b/src/test/java/com/imyeyu/fx/ui/examples/view/pages/BindingsConfigDemo.java
index b3ff82a..8f22a30 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/view/pages/BindingsConfigDemo.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/view/pages/BindingsConfigDemo.java
@@ -9,8 +9,7 @@ import com.imyeyu.fx.ui.examples.bean.Config;
import com.imyeyu.fx.ui.examples.component.AbstractDemoPane;
import com.imyeyu.fx.ui.examples.component.sidebar.SidebarItem;
import com.imyeyu.inject.annotation.Component;
-import com.imyeyu.inject.annotation.Inject;
-import com.imyeyu.inject.annotation.InvokeForInjected;
+import com.imyeyu.inject.annotation.PostConstruct;
import javafx.beans.binding.Bindings;
import javafx.geometry.Insets;
import javafx.scene.control.Label;
@@ -27,12 +26,11 @@ import javafx.scene.layout.VBox;
@Component
public class BindingsConfigDemo extends AbstractDemoPane {
- @Inject
- private Config config;
-
+ private final Config config;
private final Label stageSize, interpolatorDuration;
- public BindingsConfigDemo() {
+ public BindingsConfigDemo(Config config) {
+ this.config = config;
title.setText(SidebarItem.BINDING_CONFIG.getText());
document.sync("https://doc.imyeyu.net/timi-fx/net/imyeyu/timifx/config/BindingsConfig.html");
source.sync("https://git.imyeyu.net/Timi/timi-fx/src/master/src/main/java/net/imyeyu/timifx/config/BindingsConfig.java");
@@ -95,8 +93,8 @@ BindingsConfig.cfg(config).bindDoubleProperty(duration, Config.section("Interpol
}});
}
- @InvokeForInjected
- private void config() {
+ @PostConstruct
+ private void init() {
stageSize.textProperty().bind(Bindings.createStringBinding(() -> "[%s, %s]".formatted(config.getWidth().get(), config.getHeight().get()), config.getWidth(), config.getHeight()));
interpolatorDuration.textProperty().bind(config.getInterpolator().getDuration().asString());
}
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/view/pages/Welcome.java b/src/test/java/com/imyeyu/fx/ui/examples/view/pages/Welcome.java
index ad9ee23..70e87d9 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/view/pages/Welcome.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/view/pages/Welcome.java
@@ -13,14 +13,11 @@ import com.imyeyu.fx.ui.examples.component.TimiVersionLabel;
import com.imyeyu.fx.ui.examples.ctrl.Main;
import com.imyeyu.fx.ui.examples.util.Resources;
import com.imyeyu.fx.utils.Column;
-import com.imyeyu.inject.TimiInject;
import com.imyeyu.inject.annotation.Component;
-import com.imyeyu.inject.annotation.Inject;
-import com.imyeyu.inject.annotation.InvokeForInjected;
+import com.imyeyu.inject.annotation.PostConstruct;
import com.imyeyu.io.IO;
import com.imyeyu.java.bean.Language;
import com.imyeyu.utils.OS;
-import com.imyeyu.utils.Time;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
@@ -31,11 +28,8 @@ import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.TextAlignment;
-import javafx.stage.Stage;
import javafx.util.StringConverter;
-import java.util.Date;
-
/**
* 欢迎页
*
@@ -45,15 +39,11 @@ import java.util.Date;
@Component
public class Welcome extends AbstractPane implements OS.FileSystem {
- @Inject
- private Config config;
+ private final Config config;
+ private final ComboBox language;
- @Inject
- private Stage stage;
-
- private final ComboBox language;
-
- public Welcome() {
+ public Welcome(Config config) {
+ this.config = config;
Label title = new Label(TimiFXUI.MULTILINGUAL.text("fx.example.title"), new ImageView(Resources.ICON_X64));
title.setMaxWidth(Double.MAX_VALUE);
title.setAlignment(Pos.CENTER);
@@ -76,16 +66,16 @@ public class Welcome extends AbstractPane implements OS.FileSystem {
labelLang.setTextFill(Colorful.GRAY);
language = new ComboBox<>();
- language.getItems().addAll(Language.values());
+ language.getItems().addAll(Language.Enum.values());
language.setConverter(new StringConverter<>() {
@Override
- public String toString(Language language) {
- return language.getName();
+ public String toString(Language.Enum language) {
+ return language.toString();
}
@Override
- public Language fromString(String string) {
+ public Language.Enum fromString(String string) {
return null;
}
});
@@ -95,13 +85,13 @@ public class Welcome extends AbstractPane implements OS.FileSystem {
license.setTextAlignment(TextAlignment.CENTER);
// 开发者
- Label develop = new Label(TimiFXUI.MULTILINGUAL.textArgs("developer.arg", "夜雨"));
+ Label develop = new Label(TimiFXUI.MULTILINGUAL.text("developer.arg"));
develop.setAlignment(Pos.CENTER);
TextFlower blog = new TextFlower().matcher(TimiFXUI.MULTILINGUAL.text("blog"));
blog.setTextAlignment(TextAlignment.CENTER);
- Label copyright = new Label(TimiFXUI.MULTILINGUAL.textArgs("copyright", "夜雨", Time.yearFull.format(new Date())));
+ Label copyright = new Label(TimiFXUI.MULTILINGUAL.text("copyright"));
copyright.setAlignment(Pos.CENTER);
- Label versionTimiFX = new Label(TimiFXUI.MULTILINGUAL.textArgs("fx.example.welcome.version.timifx", "0.0.1"));
+ Label versionTimiFX = new Label(TimiFXUI.MULTILINGUAL.text("fx.example.welcome.version.timifx"));
TimiVersionLabel version = new TimiVersionLabel(TimiFXExamples.VERSION, TimiFXExamples.class.getSimpleName()) {{
version.setGraphic(new Label(TimiFXUI.MULTILINGUAL.text("fx.example.welcome.version")));
}};
@@ -145,8 +135,8 @@ public class Welcome extends AbstractPane implements OS.FileSystem {
}});
}
- @InvokeForInjected
- private void injected() {
+ @PostConstruct
+ private void init() {
language.valueProperty().bind(config.getLanguage());
// 修改语言
@@ -163,7 +153,7 @@ public class Welcome extends AbstractPane implements OS.FileSystem {
String jar = IO.getJarAbsolutePath(getClass());
// 重启
try {
- TimiFX.doRestart(TimiFXExamples.getInjectApp().injector().di(Main.class), jre + param + jar);
+ TimiFX.doRestart(TimiFXExamples.getInject().getBean(Main.class), jre + param + jar);
} catch (Exception ex) {
AlertTips.error(this, TimiFXUI.MULTILINGUAL.text("tips.restart.error"));
}
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/view/pages/animation/InterpolatorDemo.java b/src/test/java/com/imyeyu/fx/ui/examples/view/pages/animation/InterpolatorDemo.java
index 0208de3..32def0e 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/view/pages/animation/InterpolatorDemo.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/view/pages/animation/InterpolatorDemo.java
@@ -8,8 +8,7 @@ import com.imyeyu.fx.ui.examples.component.animation.InterpolatorPane;
import com.imyeyu.fx.ui.examples.component.sidebar.SidebarItem;
import com.imyeyu.fx.utils.SmoothScroll;
import com.imyeyu.inject.annotation.Component;
-import com.imyeyu.inject.annotation.Inject;
-import com.imyeyu.inject.annotation.InvokeForInjected;
+import com.imyeyu.inject.annotation.PostConstruct;
import javafx.beans.binding.Bindings;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
@@ -32,12 +31,11 @@ import javafx.util.StringConverter;
@Component
public class InterpolatorDemo extends AbstractDemoPane {
- @Inject
- private Config config;
-
+ private final Config config;
private final Slider duration;
- public InterpolatorDemo() {
+ public InterpolatorDemo(Config config) {
+ this.config = config;
title.setText(SidebarItem.INTERPOLATOR.getText());
document.sync("https://doc.imyeyu.net/timi-fx/net/imyeyu/timifx/bean/Interpolators.html");
source.sync("https://git.imyeyu.net/Timi/timi-fx/src/master/src/main/java/net/imyeyu/timifx/bean/Interpolators.java");
@@ -125,8 +123,8 @@ public class InterpolatorDemo extends AbstractDemoPane {
});
}
- @InvokeForInjected
- private void config() {
+ @PostConstruct
+ private void init() {
duration.valueProperty().bindBidirectional(config.getInterpolator().getDuration());
}
}
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/view/pages/animation/SmoothScrollDemo.java b/src/test/java/com/imyeyu/fx/ui/examples/view/pages/animation/SmoothScrollDemo.java
index 24468e3..728b677 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/view/pages/animation/SmoothScrollDemo.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/view/pages/animation/SmoothScrollDemo.java
@@ -1,5 +1,6 @@
package com.imyeyu.fx.ui.examples.view.pages.animation;
+import com.imyeyu.fx.TimiFX;
import com.imyeyu.fx.task.RunAsyncScheduled;
import com.imyeyu.fx.ui.TimiFXUI;
import com.imyeyu.fx.ui.examples.component.AbstractDemoPane;
@@ -21,6 +22,7 @@ import javafx.scene.control.ScrollPane;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextArea;
+import javafx.scene.input.ScrollEvent;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/view/pages/component/EditableTableCellDemo.java b/src/test/java/com/imyeyu/fx/ui/examples/view/pages/component/EditableTableCellDemo.java
index 1614728..5004342 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/view/pages/component/EditableTableCellDemo.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/view/pages/component/EditableTableCellDemo.java
@@ -82,7 +82,7 @@ public class EditableTableCellDemo extends AbstractDemoPane {
* 数据对象
*
* @author 夜雨
- * @since 2022-08-29 21:10
+ * @since 2022-08-29 21:10
*/
public static class Item {
diff --git a/src/test/java/com/imyeyu/fx/ui/examples/view/pages/other/TrayFXDemo.java b/src/test/java/com/imyeyu/fx/ui/examples/view/pages/other/TrayFXDemo.java
index 3c37100..e7c1eff 100644
--- a/src/test/java/com/imyeyu/fx/ui/examples/view/pages/other/TrayFXDemo.java
+++ b/src/test/java/com/imyeyu/fx/ui/examples/view/pages/other/TrayFXDemo.java
@@ -10,8 +10,8 @@ import com.imyeyu.fx.ui.examples.component.AbstractDemoPane;
import com.imyeyu.fx.ui.examples.component.sidebar.SidebarItem;
import com.imyeyu.fx.ui.examples.ctrl.Main;
import com.imyeyu.inject.annotation.Component;
-import com.imyeyu.inject.annotation.Inject;
-import com.imyeyu.inject.annotation.InvokeForInjected;
+import com.imyeyu.inject.annotation.PostConstruct;
+import javafx.stage.Stage;
import javafx.geometry.Insets;
import javafx.geometry.VPos;
import javafx.scene.control.Button;
@@ -30,18 +30,17 @@ import java.awt.TrayIcon;
* @author 夜雨
* @since 2022-09-01 14:39
*/
-@Component
public class TrayFXDemo extends AbstractDemoPane {
- @Inject
- private Main main;
-
- @Inject
- private TrayFX trayFX;
-
+ private final Main main;
+ private final Stage stage;
+ private final TrayFX trayFX;
private final Button show, hide;
- public TrayFXDemo() {
+ public TrayFXDemo(Main main, Stage stage, TrayFX trayFX) {
+ this.main = main;
+ this.stage = stage;
+ this.trayFX = trayFX;
title.setText(SidebarItem.TRAY.getText());
document.sync("https://doc.imyeyu.net/timi-fx/net/imyeyu/timifx/util/TrayFX.html");
source.sync("https://git.imyeyu.net/Timi/timi-fx/src/master/src/main/java/net/imyeyu/timifx/util/TrayFX.java");
@@ -103,7 +102,7 @@ public class TrayFXDemo extends AbstractDemoPane {
});
}
- @InvokeForInjected
+ @PostConstruct
public void init() {
show.disableProperty().bind(trayFX.showingProperty());
hide.disableProperty().bind(trayFX.showingProperty().not());
@@ -111,7 +110,7 @@ public class TrayFXDemo extends AbstractDemoPane {
MenuItem show = new MenuItem(TimiFXUI.MULTILINGUAL.text("show"));
MenuItem exit = new MenuItem(TimiFXUI.MULTILINGUAL.text("exit"), TimiFXIcon.fromName("FAIL", Colorful.RED));
- show.setOnAction(e -> TimiFX.requestTop(main.getStage()));
+ show.setOnAction(e -> TimiFX.requestTop(stage));
exit.setOnAction(e -> main.stop());
trayFX.addMenu(0, show, TimiFXUI.sep(), exit);