diff --git a/.gitignore b/.gitignore index 024424f..961101c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ -/.claude -/CLAUDE.md +/.serena /AGENTS.md /logs diff --git a/.idea/misc.xml b/.idea/misc.xml index fdc35ea..2de1512 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/pom.xml b/pom.xml index f9029c5..9498996 100644 --- a/pom.xml +++ b/pom.xml @@ -6,66 +6,155 @@ com.imyeyu.fx.ui timi-fx-ui - 0.0.2 + 0.0.3 + 25.0.3 true - 21 - 21 + 25 + 25 UTF-8 + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.14.1 + + ${maven.compiler.source} + ${maven.compiler.target} + ${project.build.sourceEncoding} + + + org.projectlombok + lombok + 1.18.46 + + + + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.4 + + + org.apache.maven.plugins + maven-source-plugin + 3.4.0 + + + org.projectlombok + lombok-maven-plugin + 1.18.20.0 + + ${project.basedir}/src/main/java + ${project.build.directory}/delombok + false + UTF-8 + + + + generate-sources + + delombok + + + + + + org.projectlombok + lombok + 1.18.46 + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.12.0 + + ${project.build.directory}/delombok + UTF-8 + UTF-8 + UTF-8 + + + + + + + + timi_nexus + https://nexus.imyeyu.com/repository/maven-releases/ + + + + + + timi_nexus + https://nexus.imyeyu.com/repository/maven-public/ + + true + + + true + + + + com.imyeyu.fx timi-fx - 0.0.2 + 0.0.5 com.imyeyu.fx.icon timi-fx-icon - 0.0.1 + 0.0.2 com.imyeyu.lang timi-lang - 0.0.2 + 0.0.4 - org.projectlombok lombok - 1.18.36 - test + 1.18.46 + com.imyeyu.network timi-network - 0.0.2 + 0.0.10 test com.imyeyu.config timi-config - 0.0.2 + 0.0.3 test com.google.code.gson gson - 2.11.0 + 2.14.0 test com.imyeyu.inject timi-inject - 0.0.2 + 0.0.3 test ch.qos.logback logback-classic - 1.5.24 + 1.5.32 test diff --git a/src/main/java/com/imyeyu/fx/ui/ScreenIdentify.java b/src/main/java/com/imyeyu/fx/ui/ScreenIdentify.java index ac07492..3298d33 100644 --- a/src/main/java/com/imyeyu/fx/ui/ScreenIdentify.java +++ b/src/main/java/com/imyeyu/fx/ui/ScreenIdentify.java @@ -47,15 +47,15 @@ public class ScreenIdentify extends Stage implements TimiFXUI { while (c.next()) { if (c.wasAdded()) { List list = c.getAddedSubList(); - for (int i = 0; i < list.size(); i++) { - Rectangle2D r2d = list.get(i).screen.getBounds(); - list.get(i).show(this, r2d.getMinX() + 80, r2d.getMinY() + 80); + for (Identify identify : list) { + Rectangle2D r2d = identify.screen.getBounds(); + identify.show(this, r2d.getMinX() + 80, r2d.getMinY() + 80); } } if (c.wasRemoved()) { List list = c.getRemoved(); - for (int i = 0; i < list.size(); i++) { - list.get(i).hide(); + for (Identify identify : list) { + identify.hide(); } } } diff --git a/src/main/java/com/imyeyu/fx/ui/components/CheckBoxPicker.java b/src/main/java/com/imyeyu/fx/ui/components/CheckBoxPicker.java index d6316d4..3d7f5e6 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/CheckBoxPicker.java +++ b/src/main/java/com/imyeyu/fx/ui/components/CheckBoxPicker.java @@ -12,6 +12,7 @@ import javafx.scene.control.CheckBox; import javafx.scene.control.TextField; import javafx.scene.layout.TilePane; import javafx.stage.Popup; +import lombok.Getter; import java.util.ArrayList; import java.util.HashMap; @@ -26,6 +27,8 @@ import java.util.Map; */ public class CheckBoxPicker extends TextField implements TimiFXUI { + /** 数据列表 */ + @Getter private final ObservableList items; private final CheckBoxListPopup checkBoxListPopup; @@ -65,15 +68,6 @@ public class CheckBoxPicker extends TextField implements TimiFXUI { return checkBoxListPopup.selectedItems; } - /** - * 获取数据列表 - * - * @return 数据列表 - */ - public ObservableList getItems() { - return items; - } - /** * 复选框列表弹窗 * @@ -142,8 +136,8 @@ public class CheckBoxPicker extends TextField implements TimiFXUI { if (c.wasRemoved()) { // 移除 List list = c.getRemoved(); - for (int i = 0; i < list.size(); i++) { - root.getChildren().remove(cache.get(list.get(i))); + for (T t : list) { + root.getChildren().remove(cache.get(t)); } } } diff --git a/src/main/java/com/imyeyu/fx/ui/components/ContextMenu.java b/src/main/java/com/imyeyu/fx/ui/components/ContextMenu.java index 85727f3..130fd0b 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/ContextMenu.java +++ b/src/main/java/com/imyeyu/fx/ui/components/ContextMenu.java @@ -40,13 +40,13 @@ public class ContextMenu extends javafx.scene.control.ContextMenu { } private void updateMinWidth(List items) { - for (int i = 0; i < items.size(); i++) { - if (items.get(i) instanceof Menu menu) { + for (MenuItem item : items) { + if (item instanceof Menu menu) { if (!menu.getProperties().containsKey(NOT_EXTENDS_FLAG)) { boolean isItemsMenu = false; // 为 true 时表示子菜单是一般菜单项,继续应用最小宽度 ObservableList subItems = menu.getItems(); - for (int j = 0; j < subItems.size(); j++) { - if (subItems.get(j).getClass().equals(MenuItem.class)) { + for (MenuItem subItem : subItems) { + if (subItem.getClass().equals(MenuItem.class)) { isItemsMenu = true; break; } @@ -56,7 +56,7 @@ public class ContextMenu extends javafx.scene.control.ContextMenu { } } } else { - items.get(i).setStyle(STYLE_TEMPLATE.formatted(getMinWidth(), getMinWidth())); + item.setStyle(STYLE_TEMPLATE.formatted(getMinWidth(), getMinWidth())); } } } diff --git a/src/main/java/com/imyeyu/fx/ui/components/DateTimePicker.java b/src/main/java/com/imyeyu/fx/ui/components/DateTimePicker.java index a20a5a7..79299ec 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/DateTimePicker.java +++ b/src/main/java/com/imyeyu/fx/ui/components/DateTimePicker.java @@ -22,6 +22,7 @@ import javafx.scene.layout.BorderPane; import javafx.scene.layout.GridPane; import javafx.scene.layout.Region; import javafx.util.StringConverter; +import lombok.Getter; import java.time.LocalDate; import java.time.LocalTime; @@ -36,7 +37,8 @@ public class DateTimePicker extends Region implements TimiFXUI, TimiFXUI.Colorfu private static final String STYLE_CLASS = "date-time-picker"; - /** 选择器 */ + /** 日期选择器 */ + @Getter private final DatePicker datePicker; /** 当前值 */ @@ -270,13 +272,4 @@ public class DateTimePicker extends Region implements TimiFXUI, TimiFXUI.Colorfu public LongProperty valueProperty() { return value; } - - /** - * 获取日期选择器 - * - * @return 日期选择器 - */ - public DatePicker getDatePicker() { - return datePicker; - } } diff --git a/src/main/java/com/imyeyu/fx/ui/components/FileTreeView.java b/src/main/java/com/imyeyu/fx/ui/components/FileTreeView.java index 46e9056..d747bf0 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/FileTreeView.java +++ b/src/main/java/com/imyeyu/fx/ui/components/FileTreeView.java @@ -115,7 +115,7 @@ public class FileTreeView extends XTreeView implements TimiFXUI.Colorful { menuRefresh.disableProperty().bind(Bindings.createBooleanBinding(() -> { List> items = getSelectionModel().getSelectedItems(); // 没有选择、多选、选的不是文件时禁用 - return items == null || items.size() != 1 || items.get(0).getValue().isFile(); + return items == null || items.size() != 1 || items.getFirst().getValue().isFile(); }, getSelectionModel().selectedItemProperty())); menuRefresh.setOnAction(e -> refreshItem(getSelectionModel().getSelectedItem())); @@ -126,8 +126,8 @@ public class FileTreeView extends XTreeView implements TimiFXUI.Colorful { if (items.isEmpty()) { return true; } - for (int i = 0; i < items.size(); i++) { - if (roots.contains(items.get(i).getValue())) { + for (TreeItem item : items) { + if (roots.contains(item.getValue())) { return true; } } @@ -168,8 +168,8 @@ public class FileTreeView extends XTreeView implements TimiFXUI.Colorful { }); // 默认磁盘根目录 - for (int i = 0; i < roots.size(); i++) { - getRoots().add(new FileItem(roots.get(i))); + for (File root : roots) { + getRoots().add(new FileItem(root)); } } @@ -237,8 +237,8 @@ public class FileTreeView extends XTreeView implements TimiFXUI.Colorful { @Override protected TreeItem call() { List items = files.stream().map(TreeItem::getValue).toList(); - for (int i = 0; i < items.size(); i++) { - IO.destroy(items.get(i)); + for (File file : items) { + IO.destroy(file); } // 查找最高级节点刷新 int l = Integer.MAX_VALUE; @@ -319,16 +319,16 @@ public class FileTreeView extends XTreeView implements TimiFXUI.Colorful { parent = new File("./").getAbsoluteFile(); } do { - selectDeque.add(0, parent); + selectDeque.addFirst(parent); } while ((parent = parent.getParentFile()) != null); if (TimiJava.isNotEmpty(selectDeque)) { ObservableList> roots = getRoots(); - for (int i = 0; i < roots.size(); i++) { - roots.get(i).setExpanded(false); - if (roots.get(i).getValue().equals(selectDeque.get(0))) { - selectDeque.remove(0); - roots.get(i).setExpanded(true); + for (TreeItem root : roots) { + root.setExpanded(false); + if (root.getValue().equals(selectDeque.getFirst())) { + selectDeque.removeFirst(); + root.setExpanded(true); if (TimiJava.isEmpty(selectDeque)) { break; } @@ -439,13 +439,13 @@ public class FileTreeView extends XTreeView implements TimiFXUI.Colorful { // 过滤 list: - for (int i = 0; i < fileList.size(); i++) { - for (int j = 0; j < itemFilters.size(); j++) { - if (!itemFilters.get(j).handler(fileList.get(i))) { + for (File file : fileList) { + for (CallbackArgReturn itemFilter : itemFilters) { + if (!itemFilter.handler(file)) { continue list; } } - fileItems.add(new FileItem(fileList.get(i))); + fileItems.add(new FileItem(file)); } } return fileItems; @@ -453,11 +453,11 @@ public class FileTreeView extends XTreeView implements TimiFXUI.Colorful { getChildren().setAll(items); if (TimiJava.isNotEmpty(selectDeque)) { - File file = selectDeque.remove(0); - for (int i = 0; i < items.size(); i++) { - if (items.get(i).getValue().equals(file)) { - if (items.get(i).getValue().isDirectory()) { - items.get(i).setExpanded(true); + File file = selectDeque.removeFirst(); + for (FileItem item : items) { + if (item.getValue().equals(file)) { + if (item.getValue().isDirectory()) { + item.setExpanded(true); } break; } diff --git a/src/main/java/com/imyeyu/fx/ui/components/IconPicker.java b/src/main/java/com/imyeyu/fx/ui/components/IconPicker.java index 4dbced0..2db9f2d 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/IconPicker.java +++ b/src/main/java/com/imyeyu/fx/ui/components/IconPicker.java @@ -120,8 +120,6 @@ public class IconPicker extends TextField implements TimiFXUI { */ private static class IconPickerPopup extends Stage { - private static final String SEARCH_API = "https://api.timiserver.imyeyu.net/icon/search/label"; - final ToggleGroup group; final List icons; final Map nameMapping = TimiFXIcon.getNameMapping(); diff --git a/src/main/java/com/imyeyu/fx/ui/components/LabelProgressBar.java b/src/main/java/com/imyeyu/fx/ui/components/LabelProgressBar.java index d60bd6e..5ae2937 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/LabelProgressBar.java +++ b/src/main/java/com/imyeyu/fx/ui/components/LabelProgressBar.java @@ -6,6 +6,8 @@ import javafx.beans.property.StringProperty; import javafx.scene.control.Label; import javafx.scene.control.ProgressBar; import javafx.scene.layout.StackPane; +import lombok.Getter; +import lombok.Setter; /** * 标签进度。如果继承进度组件使用反射注入标签组件时,在设置标签文本会导致标签消失 @@ -13,17 +15,19 @@ import javafx.scene.layout.StackPane; * @author 夜雨 * @since 2022-08-09 10:48 */ +@Getter public class LabelProgressBar extends StackPane { private static final String STYLE_CLASS = "label-progress-bar"; - /** 标签 */ + /** 标签组件 */ protected final Label label; - /** 进度 */ + /** 进度组件 */ protected final ProgressBar bar; - /** 标签转换 */ + /** 标签转换回调,进度变换时触发回调 */ + @Setter protected CallbackArgReturn converter; /** 默认构造 */ @@ -73,15 +77,6 @@ public class LabelProgressBar extends StackPane { return label.textProperty(); } - /** - * 获取标签组件 - * - * @return 标签组件 - */ - public Label getLabel() { - return label; - } - /** * 设置进度值 * @@ -108,31 +103,4 @@ public class LabelProgressBar extends StackPane { public DoubleProperty progressProperty() { return bar.progressProperty(); } - - /** - * 获取进度组件 - * - * @return 进度组件 - */ - public ProgressBar getBar() { - return bar; - } - - /** - * 获取标签转换回调 - * - * @return 转换回调 - */ - public CallbackArgReturn getConverter() { - return converter; - } - - /** - * 设置标签转换回调,进度变换时触发回调 - * - * @param converter 标签转换回调 - */ - public void setConverter(CallbackArgReturn converter) { - this.converter = converter; - } } diff --git a/src/main/java/com/imyeyu/fx/ui/components/Navigation.java b/src/main/java/com/imyeyu/fx/ui/components/Navigation.java index 0d22645..ccfb7c2 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/Navigation.java +++ b/src/main/java/com/imyeyu/fx/ui/components/Navigation.java @@ -16,6 +16,7 @@ import javafx.scene.control.ToggleButton; import javafx.scene.control.ToggleGroup; import javafx.scene.input.MouseEvent; import javafx.scene.layout.VBox; +import lombok.Getter; import java.util.List; @@ -27,7 +28,8 @@ import java.util.List; */ public class Navigation extends ScrollPane implements TimiFXUI { - /** 导航列表项 */ + /** 导航数据列表 */ + @Getter protected final ObservableList items; /** 已选中监听 */ @@ -62,7 +64,7 @@ public class Navigation extends ScrollPane implements TimiFXUI { selectedItem.set(btn); } }); - ObservableList childrens = root.getChildren(); + ObservableList children = root.getChildren(); // 响应 TimiFXUI items.addListener((ListChangeListener) c -> { @@ -70,54 +72,54 @@ public class Navigation extends ScrollPane implements TimiFXUI { if (c.wasAdded()) { // 添加 List list = c.getAddedSubList(); - for (int i = 0; i < list.size(); i++) { - list.get(i).setMaxWidth(Double.MAX_VALUE); - list.get(i).getStyleClass().setAll(CSS.MINECRAFT, "navigation-button"); - list.get(i).addEventFilter(MouseEvent.MOUSE_PRESSED, TimiFX.EVENT_CONSUME_TG_BTN); + for (ToggleButton toggleButton : list) { + toggleButton.setMaxWidth(Double.MAX_VALUE); + toggleButton.getStyleClass().setAll(CSS.MINECRAFT, "navigation-button"); + toggleButton.addEventFilter(MouseEvent.MOUSE_PRESSED, TimiFX.EVENT_CONSUME_TG_BTN); - if (list.get(i).getProperties().get("OWNER") instanceof TitledPane pane) { + if (toggleButton.getProperties().get("OWNER") instanceof TitledPane pane) { // 存在所属组 - if (!childrens.contains(pane)) { + if (!children.contains(pane)) { // 未添加组 - childrens.add(pane); + children.add(pane); } if (pane.getContent() instanceof VBox box) { - box.getChildren().add(list.get(i)); + box.getChildren().add(toggleButton); } } else { // 单独项 - if (!childrens.isEmpty()) { - if (childrens.get(childrens.size() - 1) instanceof TitledPane) { + if (!children.isEmpty()) { + if (children.getLast() instanceof TitledPane) { // 上一项是组导航,添加上边框 - list.get(i).getStyleClass().add("after-group"); + toggleButton.getStyleClass().add("after-group"); } } - childrens.add(list.get(i)); + children.add(toggleButton); } // 归组 - group.getToggles().add(list.get(i)); + group.getToggles().add(toggleButton); } return; } if (c.wasRemoved()) { // 移除 List list = c.getRemoved(); - for (int i = 0; i < list.size(); i++) { - if (list.get(i).getProperties().get("OWNER") instanceof TitledPane pane) { + for (ToggleButton toggleButton : list) { + if (toggleButton.getProperties().get("OWNER") instanceof TitledPane pane) { // 存在所属组 if (pane.getContent() instanceof VBox box) { - box.getChildren().remove(list.get(i)); + box.getChildren().remove(toggleButton); if (box.getChildren().isEmpty()) { // 该组已没有列表项 - childrens.remove(box); + children.remove(box); } } } else { // 单独项 - childrens.remove(list.get(i)); + children.remove(toggleButton); } // 从组移除 - group.getToggles().remove(list.get(i)); + group.getToggles().remove(toggleButton); } } } @@ -185,9 +187,9 @@ public class Navigation extends ScrollPane implements TimiFXUI { pane.setExpanded(isExpanded); pane.getStyleClass().add("group-pane"); - for (int i = 0; i < buttons.length; i++) { - buttons[i].getProperties().put("OWNER", pane); - items.add(buttons[i]); + for (ToggleButton button : buttons) { + button.getProperties().put("OWNER", pane); + items.add(button); } return pane; } @@ -231,13 +233,4 @@ public class Navigation extends ScrollPane implements TimiFXUI { public ObjectProperty selectedItem() { return selectedItem; } - - /** - * 获取导航数据列表 - * - * @return 导航数据列表 - */ - public ObservableList getItems() { - return items; - } } diff --git a/src/main/java/com/imyeyu/fx/ui/components/NumberField.java b/src/main/java/com/imyeyu/fx/ui/components/NumberField.java index 2700440..07a0ed4 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/NumberField.java +++ b/src/main/java/com/imyeyu/fx/ui/components/NumberField.java @@ -56,7 +56,7 @@ public class NumberField extends TextField { addEventFilter(KeyEvent.KEY_PRESSED, e -> isBackSpace = e.getCode() == KeyCode.BACK_SPACE); setTextFormatter(new TextFormatter<>(c -> { String newText = c.getControlNewText(); - if (!newText.equals("")) { + if (TimiJava.isNotEmpty(newText)) { if (newText.equals("+") || newText.equals("-")) { return c; } diff --git a/src/main/java/com/imyeyu/fx/ui/components/ProgressSlider.java b/src/main/java/com/imyeyu/fx/ui/components/ProgressSlider.java index 71a036f..21000b4 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/ProgressSlider.java +++ b/src/main/java/com/imyeyu/fx/ui/components/ProgressSlider.java @@ -45,7 +45,7 @@ public class ProgressSlider extends Slider implements TimiFXUI { pb.progressProperty().bind(valueProperty().subtract(minProperty()).divide(maxProperty().subtract(minProperty()))); pb.prefWidthProperty().bind(track.widthProperty()); pb.setMouseTransparent(true); - track.getChildren().add(0, pb); + track.getChildren().addFirst(pb); } catch (IllegalAccessException e) { throw new RuntimeException(e); } diff --git a/src/main/java/com/imyeyu/fx/ui/components/SelectableLabel.java b/src/main/java/com/imyeyu/fx/ui/components/SelectableLabel.java index f8cd988..3108c86 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/SelectableLabel.java +++ b/src/main/java/com/imyeyu/fx/ui/components/SelectableLabel.java @@ -90,7 +90,7 @@ public class SelectableLabel extends TextArea implements TimiFXUI, TimiFXUI.Colo bindTextStyle(paragraphNodes.getChildren()); widthProperty().addListener((obs, oldValue, newValue) -> { if (oldValue.doubleValue() < newValue.doubleValue()) { - if (paragraphNodes.getChildren().get(0) instanceof Text text) { + if (paragraphNodes.getChildren().getFirst() instanceof Text text) { setPrefHeight(Utils.computeTextHeight(getFont(), getText(), getWidth(), text.getBoundsType())); } } @@ -108,8 +108,8 @@ public class SelectableLabel extends TextArea implements TimiFXUI, TimiFXUI.Colo * @param list 文本节点,必须是 {@link Text} */ private void bindTextStyle(List list) { - for (int i = 0; i < list.size(); i++) { - if (list.get(i) instanceof Text text) { + for (Node node : list) { + if (node instanceof Text text) { text.fillProperty().bind(textFillProperty); text.textAlignmentProperty().bind(textAlignmentProperty); } diff --git a/src/main/java/com/imyeyu/fx/ui/components/TextAreaEditor.java b/src/main/java/com/imyeyu/fx/ui/components/TextAreaEditor.java index c240971..fe69024 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/TextAreaEditor.java +++ b/src/main/java/com/imyeyu/fx/ui/components/TextAreaEditor.java @@ -47,6 +47,7 @@ import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; import javafx.scene.shape.Path; import javafx.scene.text.Text; +import lombok.Getter; import java.util.HashMap; import java.util.Map; @@ -61,28 +62,36 @@ public class TextAreaEditor extends TextArea implements TimiFXUI { private static final String STYLE_CLASS = "text-area-editor"; - /** 主要控制区,此面板在 {@link #header} 的中部 */ + /** 控制区面板,此面板在 */ + @Getter protected final HBox ctrl; - /** 顶部控制区 */ + /** 顶部控制区面板 */ + @Getter protected final BorderPane header; /** 撤销按钮 */ + @Getter protected final IconButton undo; /** 重做按钮 */ + @Getter protected final IconButton redo; /** 复制按钮 */ + @Getter protected final IconButton copy; /** 剪切按钮 */ + @Getter protected final IconButton cut; /** 粘贴按钮 */ + @Getter protected final IconButton paste; /** 换行按钮 */ + @Getter protected final ToggleIcon wrap; /** 显示行号 */ @@ -269,7 +278,7 @@ public class TextAreaEditor extends TextArea implements TimiFXUI { Group paragraphNodes = Ref.getClassFieldValue(skin, TextAreaSkin.class, "paragraphNodes", Group.class); Callback lineNumberParser = () -> { wraps.clear(); - if (isWrapText() && paragraphNodes.getChildren().get(0) instanceof Text text) { + if (isWrapText() && paragraphNodes.getChildren().getFirst() instanceof Text text) { // 计算段落被渲染换行数 double wrappingWidth = scrollPane.getWidth() - 12; for (int i = 0, l = getParagraphs().size(); i < l; i++) { @@ -319,78 +328,6 @@ public class TextAreaEditor extends TextArea implements TimiFXUI { return skin; } - /** - * 获取控制区面板,此面板在 {@link #getHeader()} 的中部 - * - * @return 控制区面板 - */ - public HBox getCtrl() { - return ctrl; - } - - /** - * 获取顶部控制区面板 - * - * @return 顶部控制区面板 - */ - public BorderPane getHeader() { - return header; - } - - /** - * 获取撤销按钮 - * - * @return 撤销按钮 - */ - public IconButton getUndo() { - return undo; - } - - /** - * 获取重做按钮 - * - * @return 重做按钮 - */ - public IconButton getRedo() { - return redo; - } - - /** - * 获取复制按钮 - * - * @return 复制按钮 - */ - public IconButton getCopy() { - return copy; - } - - /** - * 获取剪切按钮 - * - * @return 剪切按钮 - */ - public IconButton getCut() { - return cut; - } - - /** - * 获取粘贴按钮 - * - * @return 粘贴按钮 - */ - public IconButton getPaste() { - return paste; - } - - /** - * 获取换行按钮 - * - * @return 换行按钮 - */ - public ToggleIcon getWrap() { - return wrap; - } - /** * 获取是否显示行号 * @@ -767,7 +704,7 @@ public class TextAreaEditor extends TextArea implements TimiFXUI { @Override protected void layoutChildren(double contentX, double contentY, double contentWidth, double contentHeight) { - getChildren().get(0).resizeRelocate(contentX, contentY, contentWidth, contentHeight); + getChildren().getFirst().resizeRelocate(contentX, contentY, contentWidth, contentHeight); } } } diff --git a/src/main/java/com/imyeyu/fx/ui/components/TextAreaEditorField.java b/src/main/java/com/imyeyu/fx/ui/components/TextAreaEditorField.java index ea9838b..f0c8930 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/TextAreaEditorField.java +++ b/src/main/java/com/imyeyu/fx/ui/components/TextAreaEditorField.java @@ -16,6 +16,8 @@ import javafx.scene.control.skin.TextFieldSkin; import javafx.scene.layout.BorderPane; import javafx.scene.layout.Pane; import javafx.stage.Stage; +import lombok.Getter; +import lombok.Setter; /** * 复杂文本域编辑器 {@link TextAreaEditor} 的文本框显示方式,需要时弹出文本域编辑器 @@ -25,10 +27,13 @@ import javafx.stage.Stage; */ public class TextAreaEditorField extends TextField implements TimiFXUI { - /** 显示编辑器事件 */ + /** 显示编辑器回调事件,触发时窗体并未显示 */ + @Getter + @Setter private CallbackArg onShowEditorEvent; - /** 编辑器窗体 */ + /** 编辑器弹窗 */ + @Getter private final EditorStage editorStage; /** 标题 */ @@ -93,33 +98,6 @@ public class TextAreaEditorField extends TextField implements TimiFXUI { return skin; } - /** - * 获取显示编辑器回调事件 - * - * @return 显示编辑器回调事件 - */ - public CallbackArg getOnShowEditorEvent() { - return onShowEditorEvent; - } - - /** - * 设置显示编辑器回调事件,触发时窗体并未显示 - * - * @param onShowEditorEvent 显示编辑器回调事件 - */ - public void setOnShowEditorEvent(CallbackArg onShowEditorEvent) { - this.onShowEditorEvent = onShowEditorEvent; - } - - /** - * 获取编辑器的弹窗 - * - * @return 编辑器弹窗 - */ - public EditorStage getEditorStage() { - return editorStage; - } - /** * 获取编辑器标题 * @@ -151,7 +129,7 @@ public class TextAreaEditorField extends TextField implements TimiFXUI { * 编辑器弹窗 * * @author 夜雨 - * @since 2022-07-26 16:54 + * @since 2022-07-26 16:54 */ public static class EditorStage extends Stage { diff --git a/src/main/java/com/imyeyu/fx/ui/components/TextFlower.java b/src/main/java/com/imyeyu/fx/ui/components/TextFlower.java index e926c51..a6b6743 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/TextFlower.java +++ b/src/main/java/com/imyeyu/fx/ui/components/TextFlower.java @@ -125,7 +125,7 @@ public class TextFlower extends TextFlow implements TimiFXUI { * @return 本实例 */ public TextFlower asLink(String link) { - Node text = getChildren().remove(getChildren().size() - 1); + Node text = getChildren().removeLast(); if (text instanceof Text t) { getChildren().add(new XHyperlink(t.getText(), link)); } @@ -156,7 +156,7 @@ public class TextFlower extends TextFlow implements TimiFXUI { * 富文本匹配 * * @author 夜雨 - * @since 2022-10-10 11:23 + * @since 2022-10-10 11:23 */ private static class RichMatcher { @@ -164,7 +164,7 @@ public class TextFlower extends TextFlow implements TimiFXUI { * 匹配正则 * * @author 夜雨 - * @since 2022-10-10 11:58 + * @since 2022-10-10 11:58 */ private enum Regex { @@ -185,7 +185,7 @@ public class TextFlower extends TextFlow implements TimiFXUI { * 重点内容样式 * * @author 夜雨 - * @since 2022-10-10 11:58 + * @since 2022-10-10 11:58 */ private enum Style { @@ -199,11 +199,11 @@ public class TextFlower extends TextFlow implements TimiFXUI { static Style fromMatcher(String matcher) { Style[] values = values(); - for (int i = 0; i < values.length; i++) { - String[] matches = values[i].matches; - for (int j = 0; j < matches.length; j++) { - if (matches[j].equalsIgnoreCase(matcher)) { - return values[i]; + for (Style value : values) { + String[] matches = value.matches; + for (String match : matches) { + if (match.equalsIgnoreCase(matcher)) { + return value; } } } @@ -315,10 +315,10 @@ public class TextFlower extends TextFlow implements TimiFXUI { } else { Text text = new Text(value.substring(sp + 1).trim()); String[] styles = value.substring(0, sp).trim().split(" "); - for (int i = 0; i < styles.length; i++) { - Style style = Style.fromMatcher(styles[i]); + for (String s : styles) { + Style style = Style.fromMatcher(s); if (style == null) { - text.setFill(Paint.valueOf(styles[i])); + text.setFill(Paint.valueOf(s)); } else { if (style == Style.UNDERLINE) { text.setUnderline(true); diff --git a/src/main/java/com/imyeyu/fx/ui/components/TitleLabel.java b/src/main/java/com/imyeyu/fx/ui/components/TitleLabel.java index 4835768..4febc7a 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/TitleLabel.java +++ b/src/main/java/com/imyeyu/fx/ui/components/TitleLabel.java @@ -1,6 +1,5 @@ package com.imyeyu.fx.ui.components; -import com.imyeyu.fx.TimiFX; import com.imyeyu.fx.ui.TimiFXUI; import com.sun.javafx.scene.control.LabeledText; import javafx.beans.binding.Bindings; @@ -57,7 +56,7 @@ public class TitleLabel extends Label implements TimiFXUI { line.setHeight(1); line.fillProperty().bind(lineColor); line.translateYProperty().bind(heightProperty().multiply(.5).subtract(1)); - Node node = skin.getChildren().get(0); + Node node = skin.getChildren().getFirst(); if (node instanceof LabeledText text) { line.widthProperty().bind(Bindings.createDoubleBinding(() -> { double textWidth = text.getLayoutBounds().getWidth(); @@ -69,11 +68,11 @@ public class TitleLabel extends Label implements TimiFXUI { }, spacing, text.layoutBoundsProperty())); } skin.getChildren().addListener((ListChangeListener) c -> { - if (skin.getChildren().get(0) != line) { - skin.getChildren().add(0, line); + if (skin.getChildren().getFirst() != line) { + skin.getChildren().addFirst(line); } }); - skin.getChildren().add(0, line); + skin.getChildren().addFirst(line); } return defaultSkin; } @@ -81,7 +80,7 @@ public class TitleLabel extends Label implements TimiFXUI { /** * 获取当前分割线颜色 * - * @return 分割线颜色,默认 {@link TimiFX.Colorful#BORDER} + * @return 分割线颜色,默认 {@link TimiFXUI.Colorful#BORDER} */ public Paint getLineColor() { return lineColor.get(); diff --git a/src/main/java/com/imyeyu/fx/ui/components/TrayFX.java b/src/main/java/com/imyeyu/fx/ui/components/TrayFX.java index 516f9cf..ffc15b6 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/TrayFX.java +++ b/src/main/java/com/imyeyu/fx/ui/components/TrayFX.java @@ -18,6 +18,7 @@ import javafx.scene.layout.StackPane; import javafx.stage.Screen; import javafx.stage.Stage; import javafx.stage.StageStyle; +import lombok.Getter; import javax.swing.SwingUtilities; import java.awt.Image; @@ -54,10 +55,16 @@ public final class TrayFX implements TimiFXUI { /** 菜单寄主窗体 */ private final Stage stage; + /** 根节点,修改这个节点的内容可以完全自定义右键菜单内容 */ + @Getter private final StackPane root; + + /** 菜单进行修改 */ + @Getter private final ContextMenu menu; /** 托盘对象 */ + @Getter private final SystemTray tray; /** 文本提示 */ @@ -70,6 +77,7 @@ public final class TrayFX implements TimiFXUI { private final ObjectProperty icon; /** 托盘图标 */ + @Getter private TrayIcon trayIcon; private final List> showMenuListeners; @@ -157,30 +165,12 @@ public final class TrayFX implements TimiFXUI { * @param menu 菜单 */ public void addMenu(int sort, MenuItem... menu) { - for (int i = 0; i < menu.length; i++) { - menu[i].getProperties().put(SORT_KEY, sort); + for (MenuItem menuItem : menu) { + menuItem.getProperties().put(SORT_KEY, sort); } this.menu.getItems().addAll(menu); } - /** - * 获取菜单进行修改(添加菜单建议通过 {@link #addMenu(int, MenuItem...)},可以手动排序 - * - * @return 菜单 - */ - public ContextMenu getMenu() { - return menu; - } - - /** - * 获取根节点,修改这个节点的内容可以完全自定义右键菜单内容 - * - * @return 根节点 - */ - public StackPane getRoot() { - return root; - } - /** * 显示图标到托盘 * @@ -209,8 +199,8 @@ public final class TrayFX implements TimiFXUI { @Override public void mouseReleased(MouseEvent e) { Platform.runLater(() -> { - for (int i = 0; i < clickListeners.size(); i++) { - clickListeners.get(i).handler(e); + for (CallbackArg clickListener : clickListeners) { + clickListener.handler(e); } if (SwingUtilities.isRightMouseButton(e)) { Point p = e.getLocationOnScreen(); @@ -224,8 +214,8 @@ public final class TrayFX implements TimiFXUI { menu.setY(p.getY()); menu.show(stage); stage.sizeToScene(); - for (int i = 0; i < showMenuListeners.size(); i++) { - showMenuListeners.get(i).handler(stage); + for (CallbackArg showMenuListener : showMenuListeners) { + showMenuListener.handler(stage); } } }); @@ -374,22 +364,4 @@ public final class TrayFX implements TimiFXUI { public void addShowMenuListener(CallbackArg listener) { showMenuListeners.add(listener); } - - /** - * 获取托盘图标 - * - * @return 托盘图标 - */ - public TrayIcon getTrayIcon() { - return trayIcon; - } - - /** - * 获取托盘对象 - * - * @return 托盘对象 - */ - public SystemTray getTray() { - return tray; - } } 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 416a5b5..53f6ba4 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/VersionLabel.java +++ b/src/main/java/com/imyeyu/fx/ui/components/VersionLabel.java @@ -11,6 +11,9 @@ import javafx.scene.Cursor; import javafx.scene.control.Label; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; import java.awt.Desktop; import java.io.IOException; @@ -30,6 +33,7 @@ public abstract class VersionLabel extends VBox implements TimiFXUI, TimiFXUI * @author 夜雨 * @since 2022-11-27 16:13 */ + @AllArgsConstructor protected enum Status { /** 一般 */ @@ -44,23 +48,12 @@ public abstract class VersionLabel extends VBox implements TimiFXUI, TimiFXUI /** 错误 */ ERROR(RED); - Color textColor; - - Status(Color textColor) { - this.textColor = textColor; - } - - /** - * 设置该状态的文本颜色 - * - * @param textColor 颜色 - */ - public void setTextColor(Color textColor) { - this.textColor = textColor; - } + final Color textColor; } /** 更新链接 */ + @Setter + @Getter protected String updateURL; /** 版本标签 */ @@ -187,22 +180,4 @@ public abstract class VersionLabel extends VBox implements TimiFXUI, TimiFXUI * @return 显示文本 */ protected abstract String failText(Throwable e); - - /** - * 获取更新链接 - * - * @return 更新链接 - */ - public String getUpdateURL() { - return updateURL; - } - - /** - * 设置更新链接 - * - * @param updateURL 更新链接 - */ - public void setUpdateURL(String updateURL) { - this.updateURL = updateURL; - } } diff --git a/src/main/java/com/imyeyu/fx/ui/components/XPagination.java b/src/main/java/com/imyeyu/fx/ui/components/XPagination.java index e49695f..85d9311 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/XPagination.java +++ b/src/main/java/com/imyeyu/fx/ui/components/XPagination.java @@ -161,9 +161,9 @@ public class XPagination extends HBox implements TimiFXUI { // ---------- 事件 ---------- new ToggleGroup().getToggles().addAll(pageButtons); - for (int i = 0; i < pageButtons.size(); i++) { + for (PageButton button : pageButtons) { // 阻止取消选择 - pageButtons.get(i).addEventFilter(MouseEvent.MOUSE_PRESSED, EVENT_TOGGLE_BUTTON); + button.addEventFilter(MouseEvent.MOUSE_PRESSED, EVENT_TOGGLE_BUTTON); } // 数据变动更新 @@ -176,10 +176,10 @@ public class XPagination extends HBox implements TimiFXUI { ip.set(0); } // 主动选中 - for (int i = 0; i < pageButtons.size(); i++) { + for (PageButton pageButton : pageButtons) { // 分页存在预设页码,只作触发事件用(如前置页的第五第六页),需要主动计算激活的按钮 - if (ip.get() == pageButtons.get(i).indexProperty.get() && pageButtons.get(i).isVisible()) { - pageButtons.get(i).setSelected(true); + if (ip.get() == pageButton.indexProperty.get() && pageButton.isVisible()) { + pageButton.setSelected(true); return; } } diff --git a/src/main/java/com/imyeyu/fx/ui/components/XTabPane.java b/src/main/java/com/imyeyu/fx/ui/components/XTabPane.java index 033bf8e..7c9e37e 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/XTabPane.java +++ b/src/main/java/com/imyeyu/fx/ui/components/XTabPane.java @@ -15,6 +15,7 @@ import javafx.scene.control.TabPane; import javafx.scene.control.skin.TabPaneSkin; import javafx.scene.layout.StackPane; import javafx.util.Duration; +import lombok.Getter; import java.util.List; @@ -24,6 +25,7 @@ import java.util.List; * @author 夜雨 * @since 2022-07-24 10:54 */ +@Getter public class XTabPane extends TabPane implements TimiFXUI, TimiFXUI.Colorful { /** 添加按钮 */ @@ -36,15 +38,6 @@ public class XTabPane extends TabPane implements TimiFXUI, TimiFXUI.Colorful { add.setPrefWidth(20); } - /** - * 获取添加按钮 - * - * @return 添加按钮 - */ - public IconButton getAdd() { - return add; - } - @Override protected Skin createDefaultSkin() { Skin skin = super.createDefaultSkin(); @@ -93,8 +86,8 @@ public class XTabPane extends TabPane implements TimiFXUI, TimiFXUI.Colorful { } }; ObservableList tabList = headersRegion.getChildren(); - for (int i = 0; i < tabList.size(); i++) { - resizeCloseButton.handler(tabList.get(i)); + for (Node node : tabList) { + resizeCloseButton.handler(node); } headersRegion.getChildren().addListener((ListChangeListener) c -> { if (c.next()) { diff --git a/src/main/java/com/imyeyu/fx/ui/components/alert/AbstractAlert.java b/src/main/java/com/imyeyu/fx/ui/components/alert/AbstractAlert.java index f66f926..c28ad1b 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/alert/AbstractAlert.java +++ b/src/main/java/com/imyeyu/fx/ui/components/alert/AbstractAlert.java @@ -20,6 +20,8 @@ import javafx.stage.Screen; import javafx.stage.Stage; import javafx.stage.Window; import javafx.stage.WindowEvent; +import lombok.Getter; +import lombok.Setter; import java.util.ArrayList; import java.util.List; @@ -38,28 +40,40 @@ public abstract class AbstractAlert extends Stage implements TimiFXUI, TimiFXUI. /** 默认内容边距 */ protected static final Insets PADDING_CONTENT = new Insets(8, 16, 8, 16); - /** 左侧按钮 */ + /** 按钮布局面板的左侧面板(如果按钮布局主面板被修改,此面板无效) */ + @Getter protected final HBox leftButtons; - /** 中部按钮 */ + /** 按钮布局面板的中间面板(如果按钮布局主面板被修改,此面板无效) */ + @Getter protected final HBox centerButtons; - /** 右侧按钮 */ + /** 按钮布局面板的右侧面板(如果按钮布局主面板被修改,此面板无效) */ + @Getter protected final HBox rightButtons; - /** 根面板 */ + /** 根布局(BorderPane 下部分为按钮面板) */ + @Getter protected final BorderPane root; /** 按钮面板,{@link #leftButtons}、{@link #centerButtons} 、{@link #rightButtons} 在此面板中 */ + @Getter protected final BorderPane btnPane; private final ObjectProperty typeProperty; private final List> shownListeners; + /** 最近用户动作 */ + @Getter private AlertButton.Action action; + + /** 弹窗动作事件 */ + @Setter private CallbackArgReturn onActionEvent; - /** 窗体尺寸是否适应场景尺寸,显示前设置有效,默认 true */ + /** true 为窗体尺寸适应场景尺寸 */ + @Setter + @Getter protected boolean enableSizeToScene = true; /** 默认构造 */ @@ -293,11 +307,11 @@ public abstract class AbstractAlert extends Stage implements TimiFXUI, TimiFXUI. /** * 设置左侧弹窗按钮 * - * @param btns 按钮 + * @param buttons 按钮 */ - public void setLeftButtons(AlertButton... btns) { + public void setLeftButtons(AlertButton... buttons) { leftButtons.getChildren().clear(); - putButtons(leftButtons, btns); + putButtons(leftButtons, buttons); } /** @@ -364,85 +378,4 @@ public abstract class AbstractAlert extends Stage implements TimiFXUI, TimiFXUI. public void addShownListener(CallbackArg callback) { shownListeners.add(callback); } - - /** - * 设置弹窗动作事件(用户点击带有动作的弹窗按钮) - * - * @param onActionEvent 弹窗动作事件 - */ - public void setOnActionEvent(CallbackArgReturn onActionEvent) { - this.onActionEvent = onActionEvent; - } - - /** - * 获取最近用户动作(弹窗按钮事件动作) - * - * @return 最近用户动作 - */ - public AlertButton.Action getAction() { - return action; - } - - /** - * 获取窗体尺寸是否适应场景尺寸 - * - * @return true 为窗体尺寸是否适应场景尺寸 - */ - public boolean isEnableSizeToScene() { - return enableSizeToScene; - } - - /** - * 设置窗体尺寸是否适应场景尺寸,显示前设置有效,默认 true - * - * @param enableSizeToScene true 为窗体尺寸适应场景尺寸 - */ - public void setEnableSizeToScene(boolean enableSizeToScene) { - this.enableSizeToScene = enableSizeToScene; - } - - /** - * 获取按钮布局的主面板 - * - * @return 按钮布局主面板 - */ - public BorderPane getBtnPane() { - return btnPane; - } - - /** - * 获取按钮布局面板的左侧面板(如果按钮布局主面板被修改,此面板无效) - * - * @return 按钮布局左侧面板 - */ - public HBox getLeftButtons() { - return leftButtons; - } - - /** - * 获取按钮布局面板的中间面板(如果按钮布局主面板被修改,此面板无效) - * - * @return 按钮布局中间面板 - */ - public HBox getCenterButtons() { - return centerButtons; - } - - /** - * 获取按钮布局面板的右侧面板(如果按钮布局主面板被修改,此面板无效) - * - * @return 按钮布局右侧面板 - */ - public HBox getRightButtons() { - return rightButtons; - } - - /** - * 获取根布局(BorderPane 下部分为按钮面板) - * - * @return 根布局面板 - */ - public BorderPane getRoot() { - return root; - } } 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 0c1a43e..f2b6356 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 @@ -21,6 +21,8 @@ import javafx.scene.input.MouseEvent; import javafx.scene.layout.BorderPane; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; +import lombok.Getter; +import lombok.Setter; import java.io.File; import java.util.List; @@ -47,8 +49,12 @@ public abstract class AbstractAlertFile extends AbstractAlert implements TimiFXU protected final AlertButton cancel; /** 文件目录树 */ + @Getter protected final FileTreeView tree; + /** 确认事件,返回 true 自动关闭窗体 */ + @Setter + @Getter private CallbackArgReturn, Boolean> onConfirmEvent; /** @@ -163,8 +169,8 @@ public abstract class AbstractAlertFile extends AbstractAlert implements TimiFXU if (items.isEmpty()) { return true; } - for (int i = 0; i < items.size(); i++) { - if (roots.contains(items.get(i).getValue())) { + for (TreeItem item : items) { + if (roots.contains(item.getValue())) { return true; } } @@ -277,31 +283,4 @@ public abstract class AbstractAlertFile extends AbstractAlert implements TimiFXU public BooleanProperty showHideProperty() { return toggleHide.selectedProperty(); } - - /** - * 获取确认事件 - * - * @return 确认事件 - */ - public CallbackArgReturn, Boolean> getOnConfirmEvent() { - return onConfirmEvent; - } - - /** - * 设置确认事件,返回 true 自动关闭窗体 - * - * @param onConfirmEvent 确认事件 - */ - public void setOnConfirmEvent(CallbackArgReturn, Boolean> onConfirmEvent) { - this.onConfirmEvent = onConfirmEvent; - } - - /** - * 获取文件目录树 - * - * @return 文件目录树 - */ - public FileTreeView getTree() { - return tree; - } } diff --git a/src/main/java/com/imyeyu/fx/ui/components/alert/AbstractAlertInput.java b/src/main/java/com/imyeyu/fx/ui/components/alert/AbstractAlertInput.java index 2f925b0..b5c485f 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/alert/AbstractAlertInput.java +++ b/src/main/java/com/imyeyu/fx/ui/components/alert/AbstractAlertInput.java @@ -6,6 +6,7 @@ import javafx.scene.control.Label; import javafx.scene.control.TextInputControl; import javafx.scene.layout.BorderPane; import javafx.scene.layout.Region; +import lombok.Getter; /** * 抽象输入弹窗 @@ -16,9 +17,11 @@ import javafx.scene.layout.Region; public abstract class AbstractAlertInput extends AbstractAlert { /** 输入组件 */ + @Getter protected final T input; - /** 提示文本 */ + /** 提示标签组件 */ + @Getter protected final Label tips; /** 内容面板 */ @@ -42,9 +45,9 @@ public abstract class AbstractAlertInput extends Abs * @param title 标题 * @param content 内容 * @param text 预设输入框文本 - * @param btns 可控按钮 + * @param buttons 可控按钮 */ - public AbstractAlertInput(T t, AlertType type, String title, String content, String text, AlertButton... btns) { + public AbstractAlertInput(T t, AlertType type, String title, String content, String text, AlertButton... buttons) { tips = new Label(content); tips.setTextFill(GRAY); tips.setWrapText(true); @@ -70,7 +73,7 @@ public abstract class AbstractAlertInput extends Abs if (TimiJava.isNotEmpty(title)) { setTitle(title); } - putButtons(btns); + putButtons(buttons); } /** @@ -90,22 +93,4 @@ public abstract class AbstractAlertInput extends Abs public void setTips(String tips) { this.tips.setText(tips); } - - /** - * 获取提示标签组件 - * - * @return 提示标签组件 - */ - public Label getTips() { - return tips; - } - - /** - * 获取输入组件 - * - * @return 输入组件 - */ - public T getInput() { - return input; - } } diff --git a/src/main/java/com/imyeyu/fx/ui/components/alert/AlertButton.java b/src/main/java/com/imyeyu/fx/ui/components/alert/AlertButton.java index dc1eb43..6ca685e 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/alert/AlertButton.java +++ b/src/main/java/com/imyeyu/fx/ui/components/alert/AlertButton.java @@ -3,6 +3,8 @@ package com.imyeyu.fx.ui.components.alert; import com.imyeyu.fx.ui.TimiFXUI; import javafx.geometry.HPos; import javafx.scene.control.Button; +import lombok.Data; +import lombok.EqualsAndHashCode; /** * 弹窗按钮 @@ -10,13 +12,15 @@ import javafx.scene.control.Button; * @author 夜雨 * @since 2022-01-07 09:37 */ +@Data +@EqualsAndHashCode(callSuper = true) public class AlertButton extends Button { /** * 按钮通用动作,用于标记,具体事件由调用决定 * * @author 夜雨 - * @since 2022-01-20 00:55 + * @since 2022-01-20 00:55 */ public enum Action { @@ -60,7 +64,10 @@ public class AlertButton extends Button { OTHER } + /** 按钮所属位置 */ HPos pos; + + /** 按钮动作 */ Action action; /** @@ -85,60 +92,6 @@ public class AlertButton extends Button { this.action = action; } - /** - * 获取按钮所属位置 - * - * @return 按钮所属位置 - */ - public HPos getPos() { - return pos; - } - - /** - * 设置按钮所属位置 - * - * @param pos 按钮所属位置 - */ - public void setPos(HPos pos) { - this.pos = pos; - } - - /** - * 获取按钮动作 - * - * @return 按钮动作 - */ - public Action getAction() { - return action; - } - - /** - * 设置按钮动作 - * - * @param action 按钮动作 - */ - public void setAction(Action action) { - this.action = action; - } - - /** - * 按钮动作是否一致 - * - * @param o 比较对象 - * @return true 为按钮动作 AlertButton.Action 相同 - */ - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - AlertButton that = (AlertButton) o; - return action == that.action; - } - /** * 快速构造应用按钮 * diff --git a/src/main/java/com/imyeyu/fx/ui/components/alert/AlertConfirm.java b/src/main/java/com/imyeyu/fx/ui/components/alert/AlertConfirm.java index b0b3af0..e08a209 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/alert/AlertConfirm.java +++ b/src/main/java/com/imyeyu/fx/ui/components/alert/AlertConfirm.java @@ -41,10 +41,10 @@ public abstract class AlertConfirm extends AlertTips { * * @param type 类型 * @param content 提示内容 - * @param btns 按钮 + * @param buttons 按钮 */ - public AlertConfirm(AlertType type, String content, AlertButton... btns) { - super(type, btns); + public AlertConfirm(AlertType type, String content, AlertButton... buttons) { + super(type, buttons); setTips(content); setOnActionEvent(action -> { diff --git a/src/main/java/com/imyeyu/fx/ui/components/alert/AlertFileSelector.java b/src/main/java/com/imyeyu/fx/ui/components/alert/AlertFileSelector.java index 493435c..77a346d 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/alert/AlertFileSelector.java +++ b/src/main/java/com/imyeyu/fx/ui/components/alert/AlertFileSelector.java @@ -11,6 +11,7 @@ import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; import javafx.scene.control.SelectionMode; import javafx.scene.control.TreeItem; +import lombok.Getter; import java.io.File; @@ -23,6 +24,7 @@ import java.io.File; public class AlertFileSelector extends AbstractAlertFile { /** 格式过滤列表 */ + @Getter protected final ObservableList formatFilters; private String[] formatFiltersCache; @@ -75,13 +77,4 @@ public class AlertFileSelector extends AbstractAlertFile { public void removeFormatFilters(String... formats) { formatFilters.removeAll(formats); } - - /** - * 获取格式过滤列表 - * - * @return 格式过滤列表 - */ - public ObservableList getFormatFilters() { - return formatFilters; - } } diff --git a/src/main/java/com/imyeyu/fx/ui/components/alert/AlertPassword.java b/src/main/java/com/imyeyu/fx/ui/components/alert/AlertPassword.java index eb3d897..5ddba7a 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/alert/AlertPassword.java +++ b/src/main/java/com/imyeyu/fx/ui/components/alert/AlertPassword.java @@ -23,10 +23,10 @@ public class AlertPassword extends AbstractAlertInput { * 密码输入弹窗 * * @param content 内容 - * @param btns 可控按钮 + * @param buttons 可控按钮 */ - public AlertPassword(String content, AlertButton... btns) { - this(AlertType.INFORMATION, AlertType.INFORMATION.getTitle(), content, "", btns); + public AlertPassword(String content, AlertButton... buttons) { + this(AlertType.INFORMATION, AlertType.INFORMATION.getTitle(), content, "", buttons); } /** @@ -36,9 +36,9 @@ public class AlertPassword extends AbstractAlertInput { * @param title 标题 * @param content 内容 * @param text 预设输入框文本 - * @param btns 可控按钮 + * @param buttons 可控按钮 */ - public AlertPassword(AlertType type, String title, String content, String text, AlertButton... btns) { - super(new PasswordField(), type, title, content, text, btns); + public AlertPassword(AlertType type, String title, String content, String text, AlertButton... buttons) { + super(new PasswordField(), type, title, content, text, buttons); } } diff --git a/src/main/java/com/imyeyu/fx/ui/components/alert/AlertTextArea.java b/src/main/java/com/imyeyu/fx/ui/components/alert/AlertTextArea.java index 069b8f0..0932630 100644 --- a/src/main/java/com/imyeyu/fx/ui/components/alert/AlertTextArea.java +++ b/src/main/java/com/imyeyu/fx/ui/components/alert/AlertTextArea.java @@ -11,6 +11,7 @@ import javafx.geometry.Insets; import javafx.scene.control.TextArea; import javafx.scene.layout.Border; import javafx.stage.Window; +import lombok.Getter; import java.io.PrintWriter; import java.io.StringWriter; @@ -23,7 +24,8 @@ import java.io.StringWriter; */ public class AlertTextArea extends AbstractAlertInput