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);