update timi-inject
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,3 +1,8 @@
|
|||||||
|
/.claude
|
||||||
|
/CLAUDE.md
|
||||||
|
/AGENTS.md
|
||||||
|
/logs
|
||||||
|
|
||||||
target/
|
target/
|
||||||
!.mvn/wrapper/maven-wrapper.jar
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
!**/src/main/**/target/
|
!**/src/main/**/target/
|
||||||
|
|||||||
18
pom.xml
18
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>com.imyeyu.fx.ui</groupId>
|
<groupId>com.imyeyu.fx.ui</groupId>
|
||||||
<artifactId>timi-fx-ui</artifactId>
|
<artifactId>timi-fx-ui</artifactId>
|
||||||
<version>0.0.1</version>
|
<version>0.0.2</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<maven.test.skip>true</maven.test.skip>
|
<maven.test.skip>true</maven.test.skip>
|
||||||
@ -19,7 +19,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.imyeyu.fx</groupId>
|
<groupId>com.imyeyu.fx</groupId>
|
||||||
<artifactId>timi-fx</artifactId>
|
<artifactId>timi-fx</artifactId>
|
||||||
<version>0.0.1</version>
|
<version>0.0.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.imyeyu.fx.icon</groupId>
|
<groupId>com.imyeyu.fx.icon</groupId>
|
||||||
@ -29,7 +29,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.imyeyu.lang</groupId>
|
<groupId>com.imyeyu.lang</groupId>
|
||||||
<artifactId>timi-lang</artifactId>
|
<artifactId>timi-lang</artifactId>
|
||||||
<version>0.0.1</version>
|
<version>0.0.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- 演示程序依赖 -->
|
<!-- 演示程序依赖 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -41,13 +41,13 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.imyeyu.network</groupId>
|
<groupId>com.imyeyu.network</groupId>
|
||||||
<artifactId>timi-network</artifactId>
|
<artifactId>timi-network</artifactId>
|
||||||
<version>0.0.1</version>
|
<version>0.0.2</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.imyeyu.config</groupId>
|
<groupId>com.imyeyu.config</groupId>
|
||||||
<artifactId>timi-config</artifactId>
|
<artifactId>timi-config</artifactId>
|
||||||
<version>0.0.1</version>
|
<version>0.0.2</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -59,7 +59,13 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.imyeyu.inject</groupId>
|
<groupId>com.imyeyu.inject</groupId>
|
||||||
<artifactId>timi-inject</artifactId>
|
<artifactId>timi-inject</artifactId>
|
||||||
<version>0.0.1</version>
|
<version>0.0.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ch.qos.logback</groupId>
|
||||||
|
<artifactId>logback-classic</artifactId>
|
||||||
|
<version>1.5.24</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|||||||
@ -150,7 +150,7 @@ public abstract class VersionLabel<T> extends VBox implements TimiFXUI, TimiFXUI
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onException(Throwable e) {
|
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));
|
version.setOnMouseClicked(event -> checkVersion(nowVersion));
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -183,7 +183,7 @@ public abstract class AbstractAlertFile extends AbstractAlert implements TimiFXU
|
|||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
tree.selectItem(file);
|
tree.selectItem(file);
|
||||||
} else {
|
} 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"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,20 +1,17 @@
|
|||||||
package com.imyeyu.fx.ui.examples;
|
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.config.ConfigLoader;
|
||||||
import com.imyeyu.fx.config.BindingsConfig;
|
import com.imyeyu.fx.config.BindingsConfig;
|
||||||
import com.imyeyu.fx.ui.TimiFXUI;
|
import com.imyeyu.fx.ui.TimiFXUI;
|
||||||
import com.imyeyu.fx.ui.examples.bean.Config;
|
import com.imyeyu.fx.ui.examples.bean.Config;
|
||||||
import com.imyeyu.fx.ui.examples.ctrl.Main;
|
import com.imyeyu.fx.ui.examples.ctrl.Main;
|
||||||
|
import com.imyeyu.inject.TimiInject;
|
||||||
import com.imyeyu.inject.annotation.TimiInjectApplication;
|
import com.imyeyu.inject.annotation.TimiInjectApplication;
|
||||||
import com.imyeyu.java.bean.Language;
|
import com.imyeyu.java.bean.Language;
|
||||||
import com.imyeyu.lang.multi.ResourcesMultilingual;
|
import com.imyeyu.lang.multi.ResourcesMultilingual;
|
||||||
|
import javafx.application.Application;
|
||||||
import java.util.Map;
|
import lombok.Getter;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TimiFX 示例程序
|
* TimiFX 示例程序
|
||||||
@ -36,31 +33,23 @@ public class TimiFXExamples {
|
|||||||
private static ConfigLoader<Config> configLoader;
|
private static ConfigLoader<Config> configLoader;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private static InjectApp injectApp;
|
public static TimiInject inject;
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
try {
|
{
|
||||||
injectApp = new InjectApp(TimiFXExamples.class);
|
configLoader = new ConfigLoader<>("TimiFXExamples.yaml", Config.class);
|
||||||
{
|
BindingsConfig.addAllFXConverter(configLoader);
|
||||||
configLoader = new ConfigLoader<>("TimiFXExamples.yaml", Config.class);
|
config = configLoader.load();
|
||||||
for (Map.Entry<Class<?>, BindingsConfig.PropertyConverter<?, ?>> item : BindingsConfig.DEFAULT_CONVERTER_MAP.entrySet()) {
|
|
||||||
configLoader.addConverter(item.getKey(), item.getValue());
|
|
||||||
}
|
|
||||||
configLoader.addConverter(ObjectProperty.class, BindingsConfig.OBJECT);
|
|
||||||
config = configLoader.load();
|
|
||||||
|
|
||||||
ResourcesMultilingual multilingual = TimiFXUI.MULTILINGUAL;
|
ResourcesMultilingual multilingual = TimiFXUI.MULTILINGUAL;
|
||||||
multilingual.addAll("lang/timi-fx-ui/%s.lang");
|
multilingual.addAll("lang/timi-fx-ui/%s.lang");
|
||||||
multilingual.addAll("lang/%s.lang");
|
multilingual.addAll("lang/%s.lang");
|
||||||
multilingual.setActivated(Language.zh_CN);
|
multilingual.setActivated(Language.Enum.zh_CN);
|
||||||
|
|
||||||
// 禁止系统 DPI 缩放
|
// 禁止系统 DPI 缩放
|
||||||
System.setProperty("prism.allowhidpi", "false");
|
System.setProperty("prism.allowhidpi", "false");
|
||||||
System.setProperty("glass.win.minHiDPI", "1");
|
System.setProperty("glass.win.minHiDPI", "1");
|
||||||
}
|
|
||||||
Application.launch(Main.class);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("fatal error", e);
|
|
||||||
}
|
}
|
||||||
|
Application.launch(Main.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
package com.imyeyu.fx.ui.examples.bean;
|
package com.imyeyu.fx.ui.examples.bean;
|
||||||
|
|
||||||
|
import com.imyeyu.java.bean.Language;
|
||||||
import javafx.beans.property.DoubleProperty;
|
import javafx.beans.property.DoubleProperty;
|
||||||
import javafx.beans.property.ObjectProperty;
|
import javafx.beans.property.ObjectProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import com.imyeyu.java.bean.Language;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author 夜雨
|
* @author 夜雨
|
||||||
@ -12,7 +12,7 @@ import com.imyeyu.java.bean.Language;
|
|||||||
@Data
|
@Data
|
||||||
public class Config {
|
public class Config {
|
||||||
|
|
||||||
private ObjectProperty<Language> language;
|
private ObjectProperty<Language.Enum> language;
|
||||||
|
|
||||||
private DoubleProperty width;
|
private DoubleProperty width;
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,6 @@
|
|||||||
package com.imyeyu.fx.ui.examples.component;
|
package com.imyeyu.fx.ui.examples.component;
|
||||||
|
|
||||||
import com.imyeyu.fx.ui.TimiFXUI;
|
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;
|
import javafx.scene.layout.BorderPane;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -13,12 +9,8 @@ import javafx.scene.layout.BorderPane;
|
|||||||
* @author 夜雨
|
* @author 夜雨
|
||||||
* @since 2022-08-26 14:55
|
* @since 2022-08-26 14:55
|
||||||
*/
|
*/
|
||||||
@StaticInject
|
|
||||||
public abstract class AbstractPane extends BorderPane implements TimiFXUI {
|
public abstract class AbstractPane extends BorderPane implements TimiFXUI {
|
||||||
|
|
||||||
@Inject
|
|
||||||
private static PageService pageService;
|
|
||||||
|
|
||||||
/** 显示时触发,UI 线程 */
|
/** 显示时触发,UI 线程 */
|
||||||
protected void onShow() {
|
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() {
|
public final void show() {
|
||||||
onShow();
|
onShow();
|
||||||
|
|||||||
@ -2,9 +2,9 @@ package com.imyeyu.fx.ui.examples.component;
|
|||||||
|
|
||||||
import com.imyeyu.fx.ui.TimiFXUI;
|
import com.imyeyu.fx.ui.TimiFXUI;
|
||||||
import com.imyeyu.fx.ui.examples.component.sidebar.Sidebar;
|
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.Component;
|
||||||
import com.imyeyu.inject.annotation.Inject;
|
import com.imyeyu.inject.annotation.PostConstruct;
|
||||||
import com.imyeyu.inject.annotation.InvokeForInjected;
|
|
||||||
import javafx.scene.layout.BorderPane;
|
import javafx.scene.layout.BorderPane;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -16,15 +16,26 @@ import javafx.scene.layout.BorderPane;
|
|||||||
@Component
|
@Component
|
||||||
public class RootLayout extends BorderPane implements TimiFXUI {
|
public class RootLayout extends BorderPane implements TimiFXUI {
|
||||||
|
|
||||||
@Inject
|
private final Sidebar sidebar;
|
||||||
private Sidebar sidebar;
|
private final PageService pageService;
|
||||||
|
|
||||||
public RootLayout() {
|
public RootLayout(Sidebar sidebar, PageService pageService) {
|
||||||
|
this.sidebar = sidebar;
|
||||||
|
this.pageService = pageService;
|
||||||
setBorder(Stroke.TOP);
|
setBorder(Stroke.TOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
@InvokeForInjected
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
setLeft(sidebar);
|
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();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,6 @@ import com.imyeyu.fx.ui.TimiFXUI;
|
|||||||
import com.imyeyu.fx.ui.components.Navigation;
|
import com.imyeyu.fx.ui.components.Navigation;
|
||||||
import com.imyeyu.fx.ui.examples.service.PageService;
|
import com.imyeyu.fx.ui.examples.service.PageService;
|
||||||
import com.imyeyu.inject.annotation.Component;
|
import com.imyeyu.inject.annotation.Component;
|
||||||
import com.imyeyu.inject.annotation.Inject;
|
|
||||||
import javafx.scene.control.ToggleButton;
|
import javafx.scene.control.ToggleButton;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -16,10 +15,8 @@ import javafx.scene.control.ToggleButton;
|
|||||||
@Component
|
@Component
|
||||||
public class Sidebar extends Navigation {
|
public class Sidebar extends Navigation {
|
||||||
|
|
||||||
@Inject
|
public Sidebar(PageService pageService) {
|
||||||
private PageService pageService;
|
|
||||||
|
|
||||||
public Sidebar() {
|
|
||||||
Item welcome = new Item(SidebarItem.WELCOME);
|
Item welcome = new Item(SidebarItem.WELCOME);
|
||||||
Item style = new Item(SidebarItem.STYLE);
|
Item style = new Item(SidebarItem.STYLE);
|
||||||
Item extendTools = new Item(SidebarItem.EXTEND_TOOLS);
|
Item extendTools = new Item(SidebarItem.EXTEND_TOOLS);
|
||||||
@ -37,25 +34,7 @@ public class Sidebar extends Navigation {
|
|||||||
addGroup(TimiFXUI.MULTILINGUAL.text("animation"), interpolator, smoothScroll);
|
addGroup(TimiFXUI.MULTILINGUAL.text("animation"), interpolator, smoothScroll);
|
||||||
|
|
||||||
// 组件
|
// 组件
|
||||||
SidebarItem[] components = {
|
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.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];
|
Item[] componentItems = new Item[components.length];
|
||||||
for (int i = 0; i < componentItems.length; i++) {
|
for (int i = 0; i < componentItems.length; i++) {
|
||||||
componentItems[i] = new Item(components[i]);
|
componentItems[i] = new Item(components[i]);
|
||||||
@ -101,7 +80,7 @@ public class Sidebar extends Navigation {
|
|||||||
* 列表项
|
* 列表项
|
||||||
*
|
*
|
||||||
* @author 夜雨
|
* @author 夜雨
|
||||||
* @since 2022-02-22 19:45
|
* @since 2022-02-22 19:45
|
||||||
*/
|
*/
|
||||||
private static class Item extends ToggleButton {
|
private static class Item extends ToggleButton {
|
||||||
|
|
||||||
|
|||||||
@ -155,6 +155,6 @@ public enum SidebarItem {
|
|||||||
|
|
||||||
/** @return 从 TimiInject 控制反转对象获取该页面 */
|
/** @return 从 TimiInject 控制反转对象获取该页面 */
|
||||||
public Node getIOCPage() {
|
public Node getIOCPage() {
|
||||||
return TimiFXExamples.getInjectApp().injector().di(page);
|
return TimiFXExamples.getInject().getBean(page);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,15 +1,13 @@
|
|||||||
package com.imyeyu.fx.ui.examples.ctrl;
|
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.components.TrayFX;
|
||||||
import com.imyeyu.fx.ui.examples.TimiFXExamples;
|
import com.imyeyu.fx.ui.examples.TimiFXExamples;
|
||||||
import com.imyeyu.fx.ui.examples.component.sidebar.Sidebar;
|
import com.imyeyu.fx.ui.examples.component.sidebar.Sidebar;
|
||||||
import com.imyeyu.fx.ui.examples.component.sidebar.SidebarItem;
|
import com.imyeyu.fx.ui.examples.component.sidebar.SidebarItem;
|
||||||
import com.imyeyu.fx.ui.examples.service.PageService;
|
import com.imyeyu.fx.ui.examples.service.PageService;
|
||||||
import com.imyeyu.fx.ui.examples.view.ViewMain;
|
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.Inject;
|
||||||
import com.imyeyu.inject.annotation.SuperInject;
|
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
|
|
||||||
import java.awt.SplashScreen;
|
import java.awt.SplashScreen;
|
||||||
@ -20,7 +18,6 @@ import java.awt.SplashScreen;
|
|||||||
* @author 夜雨
|
* @author 夜雨
|
||||||
* @since 2022-05-03 15:43
|
* @since 2022-05-03 15:43
|
||||||
*/
|
*/
|
||||||
@SuperInject
|
|
||||||
public class Main extends ViewMain {
|
public class Main extends ViewMain {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@ -38,7 +35,7 @@ public class Main extends ViewMain {
|
|||||||
public void start(Stage stage) {
|
public void start(Stage stage) {
|
||||||
this.stage = stage;
|
this.stage = stage;
|
||||||
|
|
||||||
TimiInject.run(TimiFXExamples.getInjectApp()).ioc(this);
|
TimiFXExamples.inject = FXTimiInject.run(TimiFXExamples.class, this, stage);
|
||||||
super.start(stage);
|
super.start(stage);
|
||||||
|
|
||||||
sidebar.setSelected(SidebarItem.WELCOME);
|
sidebar.setSelected(SidebarItem.WELCOME);
|
||||||
@ -58,10 +55,4 @@ public class Main extends ViewMain {
|
|||||||
trayFX.remove();
|
trayFX.remove();
|
||||||
stage.close();
|
stage.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 主窗体 */
|
|
||||||
@IOCReturn
|
|
||||||
public Stage getStage() {
|
|
||||||
return stage;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,14 +1,10 @@
|
|||||||
package com.imyeyu.fx.ui.examples.service;
|
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.fx.ui.examples.component.sidebar.SidebarItem;
|
||||||
import com.imyeyu.inject.annotation.Inject;
|
|
||||||
import com.imyeyu.inject.annotation.Service;
|
import com.imyeyu.inject.annotation.Service;
|
||||||
import javafx.beans.property.ObjectProperty;
|
import javafx.beans.property.ObjectProperty;
|
||||||
import javafx.beans.property.ReadOnlyObjectProperty;
|
import javafx.beans.property.ReadOnlyObjectProperty;
|
||||||
import javafx.beans.property.SimpleObjectProperty;
|
import javafx.beans.property.SimpleObjectProperty;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 页面服务
|
* 页面服务
|
||||||
@ -16,13 +12,9 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
* @author 夜雨
|
* @author 夜雨
|
||||||
* @since 2021-12-26 10:57
|
* @since 2021-12-26 10:57
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
|
||||||
@Service
|
@Service
|
||||||
public class PageService {
|
public class PageService {
|
||||||
|
|
||||||
@Inject
|
|
||||||
private RootLayout root;
|
|
||||||
|
|
||||||
private SidebarItem prev;
|
private SidebarItem prev;
|
||||||
|
|
||||||
private final ObjectProperty<SidebarItem> activatedPageProperty;
|
private final ObjectProperty<SidebarItem> activatedPageProperty;
|
||||||
@ -31,13 +23,6 @@ public class PageService {
|
|||||||
activatedPageProperty = new SimpleObjectProperty<>();
|
activatedPageProperty = new SimpleObjectProperty<>();
|
||||||
activatedPageProperty.addListener((obs, prev, now) -> {
|
activatedPageProperty.addListener((obs, prev, now) -> {
|
||||||
this.prev = prev;
|
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();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,8 @@ import com.imyeyu.fx.ui.TimiFXUI;
|
|||||||
import com.imyeyu.fx.ui.components.TrayFX;
|
import com.imyeyu.fx.ui.components.TrayFX;
|
||||||
import com.imyeyu.fx.ui.examples.TimiFXExamples;
|
import com.imyeyu.fx.ui.examples.TimiFXExamples;
|
||||||
import com.imyeyu.fx.ui.examples.bean.Config;
|
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;
|
import javafx.scene.image.Image;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -13,19 +14,19 @@ import javafx.scene.image.Image;
|
|||||||
* @author 夜雨
|
* @author 夜雨
|
||||||
* @since 2022-08-26 15:23
|
* @since 2022-08-26 15:23
|
||||||
*/
|
*/
|
||||||
@com.imyeyu.inject.annotation.Resources
|
@Configuration
|
||||||
public class Resources implements TimiFXUI {
|
public class Resources implements TimiFXUI {
|
||||||
|
|
||||||
public static final Image ICON_X64 = new Image(RESOURCE + "icon.png", 64, 64, true, false);
|
public static final Image ICON_X64 = new Image(RESOURCE + "icon.png", 64, 64, true, false);
|
||||||
|
|
||||||
/** @return 配置 */
|
/** @return 配置 */
|
||||||
@IOCReturn
|
@Bean
|
||||||
public Config config() {
|
public Config config() {
|
||||||
return TimiFXExamples.getConfig();
|
return TimiFXExamples.getConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return 托盘 */
|
/** @return 托盘 */
|
||||||
@IOCReturn
|
@Bean
|
||||||
public TrayFX trayFX() {
|
public TrayFX trayFX() {
|
||||||
return TrayFX.getInstance();
|
return TrayFX.getInstance();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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.ui.examples.ctrl.Main;
|
||||||
import com.imyeyu.fx.utils.AnimationRenderer;
|
import com.imyeyu.fx.utils.AnimationRenderer;
|
||||||
import com.imyeyu.fx.utils.Column;
|
import com.imyeyu.fx.utils.Column;
|
||||||
import com.imyeyu.inject.TimiInject;
|
|
||||||
import com.imyeyu.inject.annotation.Component;
|
import com.imyeyu.inject.annotation.Component;
|
||||||
import com.imyeyu.io.IO;
|
import com.imyeyu.io.IO;
|
||||||
import com.imyeyu.utils.OS;
|
import com.imyeyu.utils.OS;
|
||||||
@ -154,7 +153,7 @@ fps.valueProperty().addListener((obs, o, newFps) -> {
|
|||||||
String jar = IO.getJarAbsolutePath(getClass());
|
String jar = IO.getJarAbsolutePath(getClass());
|
||||||
// 重启
|
// 重启
|
||||||
try {
|
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) {
|
} catch (Exception ex) {
|
||||||
AlertTips.error(getScene().getWindow(), TimiFXUI.MULTILINGUAL.text("tips.restart.error"));
|
AlertTips.error(getScene().getWindow(), TimiFXUI.MULTILINGUAL.text("tips.restart.error"));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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.AbstractDemoPane;
|
||||||
import com.imyeyu.fx.ui.examples.component.sidebar.SidebarItem;
|
import com.imyeyu.fx.ui.examples.component.sidebar.SidebarItem;
|
||||||
import com.imyeyu.inject.annotation.Component;
|
import com.imyeyu.inject.annotation.Component;
|
||||||
import com.imyeyu.inject.annotation.Inject;
|
import com.imyeyu.inject.annotation.PostConstruct;
|
||||||
import com.imyeyu.inject.annotation.InvokeForInjected;
|
|
||||||
import javafx.beans.binding.Bindings;
|
import javafx.beans.binding.Bindings;
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
@ -27,12 +26,11 @@ import javafx.scene.layout.VBox;
|
|||||||
@Component
|
@Component
|
||||||
public class BindingsConfigDemo extends AbstractDemoPane {
|
public class BindingsConfigDemo extends AbstractDemoPane {
|
||||||
|
|
||||||
@Inject
|
private final Config config;
|
||||||
private Config config;
|
|
||||||
|
|
||||||
private final Label stageSize, interpolatorDuration;
|
private final Label stageSize, interpolatorDuration;
|
||||||
|
|
||||||
public BindingsConfigDemo() {
|
public BindingsConfigDemo(Config config) {
|
||||||
|
this.config = config;
|
||||||
title.setText(SidebarItem.BINDING_CONFIG.getText());
|
title.setText(SidebarItem.BINDING_CONFIG.getText());
|
||||||
document.sync("https://doc.imyeyu.net/timi-fx/net/imyeyu/timifx/config/BindingsConfig.html");
|
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");
|
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
|
@PostConstruct
|
||||||
private void config() {
|
private void init() {
|
||||||
stageSize.textProperty().bind(Bindings.createStringBinding(() -> "[%s, %s]".formatted(config.getWidth().get(), config.getHeight().get()), config.getWidth(), config.getHeight()));
|
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());
|
interpolatorDuration.textProperty().bind(config.getInterpolator().getDuration().asString());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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.ctrl.Main;
|
||||||
import com.imyeyu.fx.ui.examples.util.Resources;
|
import com.imyeyu.fx.ui.examples.util.Resources;
|
||||||
import com.imyeyu.fx.utils.Column;
|
import com.imyeyu.fx.utils.Column;
|
||||||
import com.imyeyu.inject.TimiInject;
|
|
||||||
import com.imyeyu.inject.annotation.Component;
|
import com.imyeyu.inject.annotation.Component;
|
||||||
import com.imyeyu.inject.annotation.Inject;
|
import com.imyeyu.inject.annotation.PostConstruct;
|
||||||
import com.imyeyu.inject.annotation.InvokeForInjected;
|
|
||||||
import com.imyeyu.io.IO;
|
import com.imyeyu.io.IO;
|
||||||
import com.imyeyu.java.bean.Language;
|
import com.imyeyu.java.bean.Language;
|
||||||
import com.imyeyu.utils.OS;
|
import com.imyeyu.utils.OS;
|
||||||
import com.imyeyu.utils.Time;
|
|
||||||
import javafx.geometry.HPos;
|
import javafx.geometry.HPos;
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
import javafx.geometry.Pos;
|
import javafx.geometry.Pos;
|
||||||
@ -31,11 +28,8 @@ import javafx.scene.layout.GridPane;
|
|||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import javafx.scene.text.TextAlignment;
|
import javafx.scene.text.TextAlignment;
|
||||||
import javafx.stage.Stage;
|
|
||||||
import javafx.util.StringConverter;
|
import javafx.util.StringConverter;
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 欢迎页
|
* 欢迎页
|
||||||
*
|
*
|
||||||
@ -45,15 +39,11 @@ import java.util.Date;
|
|||||||
@Component
|
@Component
|
||||||
public class Welcome extends AbstractPane implements OS.FileSystem {
|
public class Welcome extends AbstractPane implements OS.FileSystem {
|
||||||
|
|
||||||
@Inject
|
private final Config config;
|
||||||
private Config config;
|
private final ComboBox<Language.Enum> language;
|
||||||
|
|
||||||
@Inject
|
public Welcome(Config config) {
|
||||||
private Stage stage;
|
this.config = config;
|
||||||
|
|
||||||
private final ComboBox<Language> language;
|
|
||||||
|
|
||||||
public Welcome() {
|
|
||||||
Label title = new Label(TimiFXUI.MULTILINGUAL.text("fx.example.title"), new ImageView(Resources.ICON_X64));
|
Label title = new Label(TimiFXUI.MULTILINGUAL.text("fx.example.title"), new ImageView(Resources.ICON_X64));
|
||||||
title.setMaxWidth(Double.MAX_VALUE);
|
title.setMaxWidth(Double.MAX_VALUE);
|
||||||
title.setAlignment(Pos.CENTER);
|
title.setAlignment(Pos.CENTER);
|
||||||
@ -76,16 +66,16 @@ public class Welcome extends AbstractPane implements OS.FileSystem {
|
|||||||
labelLang.setTextFill(Colorful.GRAY);
|
labelLang.setTextFill(Colorful.GRAY);
|
||||||
|
|
||||||
language = new ComboBox<>();
|
language = new ComboBox<>();
|
||||||
language.getItems().addAll(Language.values());
|
language.getItems().addAll(Language.Enum.values());
|
||||||
language.setConverter(new StringConverter<>() {
|
language.setConverter(new StringConverter<>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString(Language language) {
|
public String toString(Language.Enum language) {
|
||||||
return language.getName();
|
return language.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Language fromString(String string) {
|
public Language.Enum fromString(String string) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -95,13 +85,13 @@ public class Welcome extends AbstractPane implements OS.FileSystem {
|
|||||||
license.setTextAlignment(TextAlignment.CENTER);
|
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);
|
develop.setAlignment(Pos.CENTER);
|
||||||
TextFlower blog = new TextFlower().matcher(TimiFXUI.MULTILINGUAL.text("blog"));
|
TextFlower blog = new TextFlower().matcher(TimiFXUI.MULTILINGUAL.text("blog"));
|
||||||
blog.setTextAlignment(TextAlignment.CENTER);
|
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);
|
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()) {{
|
TimiVersionLabel version = new TimiVersionLabel(TimiFXExamples.VERSION, TimiFXExamples.class.getSimpleName()) {{
|
||||||
version.setGraphic(new Label(TimiFXUI.MULTILINGUAL.text("fx.example.welcome.version")));
|
version.setGraphic(new Label(TimiFXUI.MULTILINGUAL.text("fx.example.welcome.version")));
|
||||||
}};
|
}};
|
||||||
@ -145,8 +135,8 @@ public class Welcome extends AbstractPane implements OS.FileSystem {
|
|||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
|
|
||||||
@InvokeForInjected
|
@PostConstruct
|
||||||
private void injected() {
|
private void init() {
|
||||||
language.valueProperty().bind(config.getLanguage());
|
language.valueProperty().bind(config.getLanguage());
|
||||||
|
|
||||||
// 修改语言
|
// 修改语言
|
||||||
@ -163,7 +153,7 @@ public class Welcome extends AbstractPane implements OS.FileSystem {
|
|||||||
String jar = IO.getJarAbsolutePath(getClass());
|
String jar = IO.getJarAbsolutePath(getClass());
|
||||||
// 重启
|
// 重启
|
||||||
try {
|
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) {
|
} catch (Exception ex) {
|
||||||
AlertTips.error(this, TimiFXUI.MULTILINGUAL.text("tips.restart.error"));
|
AlertTips.error(this, TimiFXUI.MULTILINGUAL.text("tips.restart.error"));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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.ui.examples.component.sidebar.SidebarItem;
|
||||||
import com.imyeyu.fx.utils.SmoothScroll;
|
import com.imyeyu.fx.utils.SmoothScroll;
|
||||||
import com.imyeyu.inject.annotation.Component;
|
import com.imyeyu.inject.annotation.Component;
|
||||||
import com.imyeyu.inject.annotation.Inject;
|
import com.imyeyu.inject.annotation.PostConstruct;
|
||||||
import com.imyeyu.inject.annotation.InvokeForInjected;
|
|
||||||
import javafx.beans.binding.Bindings;
|
import javafx.beans.binding.Bindings;
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
import javafx.geometry.Pos;
|
import javafx.geometry.Pos;
|
||||||
@ -32,12 +31,11 @@ import javafx.util.StringConverter;
|
|||||||
@Component
|
@Component
|
||||||
public class InterpolatorDemo extends AbstractDemoPane {
|
public class InterpolatorDemo extends AbstractDemoPane {
|
||||||
|
|
||||||
@Inject
|
private final Config config;
|
||||||
private Config config;
|
|
||||||
|
|
||||||
private final Slider duration;
|
private final Slider duration;
|
||||||
|
|
||||||
public InterpolatorDemo() {
|
public InterpolatorDemo(Config config) {
|
||||||
|
this.config = config;
|
||||||
title.setText(SidebarItem.INTERPOLATOR.getText());
|
title.setText(SidebarItem.INTERPOLATOR.getText());
|
||||||
document.sync("https://doc.imyeyu.net/timi-fx/net/imyeyu/timifx/bean/Interpolators.html");
|
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");
|
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
|
@PostConstruct
|
||||||
private void config() {
|
private void init() {
|
||||||
duration.valueProperty().bindBidirectional(config.getInterpolator().getDuration());
|
duration.valueProperty().bindBidirectional(config.getInterpolator().getDuration());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.imyeyu.fx.ui.examples.view.pages.animation;
|
package com.imyeyu.fx.ui.examples.view.pages.animation;
|
||||||
|
|
||||||
|
import com.imyeyu.fx.TimiFX;
|
||||||
import com.imyeyu.fx.task.RunAsyncScheduled;
|
import com.imyeyu.fx.task.RunAsyncScheduled;
|
||||||
import com.imyeyu.fx.ui.TimiFXUI;
|
import com.imyeyu.fx.ui.TimiFXUI;
|
||||||
import com.imyeyu.fx.ui.examples.component.AbstractDemoPane;
|
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.TableColumn;
|
||||||
import javafx.scene.control.TableView;
|
import javafx.scene.control.TableView;
|
||||||
import javafx.scene.control.TextArea;
|
import javafx.scene.control.TextArea;
|
||||||
|
import javafx.scene.input.ScrollEvent;
|
||||||
import javafx.scene.layout.GridPane;
|
import javafx.scene.layout.GridPane;
|
||||||
import javafx.scene.layout.StackPane;
|
import javafx.scene.layout.StackPane;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
|
|||||||
@ -82,7 +82,7 @@ public class EditableTableCellDemo extends AbstractDemoPane {
|
|||||||
* 数据对象
|
* 数据对象
|
||||||
*
|
*
|
||||||
* @author 夜雨
|
* @author 夜雨
|
||||||
* @since 2022-08-29 21:10
|
* @since 2022-08-29 21:10
|
||||||
*/
|
*/
|
||||||
public static class Item {
|
public static class Item {
|
||||||
|
|
||||||
|
|||||||
@ -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.component.sidebar.SidebarItem;
|
||||||
import com.imyeyu.fx.ui.examples.ctrl.Main;
|
import com.imyeyu.fx.ui.examples.ctrl.Main;
|
||||||
import com.imyeyu.inject.annotation.Component;
|
import com.imyeyu.inject.annotation.Component;
|
||||||
import com.imyeyu.inject.annotation.Inject;
|
import com.imyeyu.inject.annotation.PostConstruct;
|
||||||
import com.imyeyu.inject.annotation.InvokeForInjected;
|
import javafx.stage.Stage;
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
import javafx.geometry.VPos;
|
import javafx.geometry.VPos;
|
||||||
import javafx.scene.control.Button;
|
import javafx.scene.control.Button;
|
||||||
@ -30,18 +30,17 @@ import java.awt.TrayIcon;
|
|||||||
* @author 夜雨
|
* @author 夜雨
|
||||||
* @since 2022-09-01 14:39
|
* @since 2022-09-01 14:39
|
||||||
*/
|
*/
|
||||||
@Component
|
|
||||||
public class TrayFXDemo extends AbstractDemoPane {
|
public class TrayFXDemo extends AbstractDemoPane {
|
||||||
|
|
||||||
@Inject
|
private final Main main;
|
||||||
private Main main;
|
private final Stage stage;
|
||||||
|
private final TrayFX trayFX;
|
||||||
@Inject
|
|
||||||
private TrayFX trayFX;
|
|
||||||
|
|
||||||
private final Button show, hide;
|
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());
|
title.setText(SidebarItem.TRAY.getText());
|
||||||
document.sync("https://doc.imyeyu.net/timi-fx/net/imyeyu/timifx/util/TrayFX.html");
|
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");
|
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() {
|
public void init() {
|
||||||
show.disableProperty().bind(trayFX.showingProperty());
|
show.disableProperty().bind(trayFX.showingProperty());
|
||||||
hide.disableProperty().bind(trayFX.showingProperty().not());
|
hide.disableProperty().bind(trayFX.showingProperty().not());
|
||||||
@ -111,7 +110,7 @@ public class TrayFXDemo extends AbstractDemoPane {
|
|||||||
MenuItem show = new MenuItem(TimiFXUI.MULTILINGUAL.text("show"));
|
MenuItem show = new MenuItem(TimiFXUI.MULTILINGUAL.text("show"));
|
||||||
MenuItem exit = new MenuItem(TimiFXUI.MULTILINGUAL.text("exit"), TimiFXIcon.fromName("FAIL", Colorful.RED));
|
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());
|
exit.setOnAction(e -> main.stop());
|
||||||
|
|
||||||
trayFX.addMenu(0, show, TimiFXUI.sep(), exit);
|
trayFX.addMenu(0, show, TimiFXUI.sep(), exit);
|
||||||
|
|||||||
Reference in New Issue
Block a user