Skip to content

Commit 20e321f

Browse files
authored
优化原理图管理&世界管理输入校验 (#5923)
1 parent 00b323e commit 20e321f

2 files changed

Lines changed: 10 additions & 28 deletions

File tree

HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/SchematicsPage.java

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@
2323
import javafx.geometry.Insets;
2424
import javafx.geometry.Pos;
2525
import javafx.scene.Node;
26-
import javafx.scene.control.*;
26+
import javafx.scene.control.Label;
27+
import javafx.scene.control.ListCell;
28+
import javafx.scene.control.Skin;
29+
import javafx.scene.control.Tooltip;
2730
import javafx.scene.image.Image;
2831
import javafx.scene.image.PixelWriter;
2932
import javafx.scene.image.WritableImage;
@@ -157,20 +160,9 @@ public void onCreateDirectory() {
157160
return;
158161

159162
Path parent = currentDirectory.path;
160-
Controllers.dialog(new InputDialogPane(
163+
Controllers.prompt(
161164
i18n("schematics.create_directory.prompt"),
162-
"",
163165
(result, handler) -> {
164-
if (StringUtils.isBlank(result)) {
165-
handler.reject(i18n("schematics.create_directory.failed.empty_name"));
166-
return;
167-
}
168-
169-
if (result.contains("/") || result.contains("\\") || !FileUtils.isNameValid(result)) {
170-
handler.reject(i18n("schematics.create_directory.failed.invalid_name"));
171-
return;
172-
}
173-
174166
Path targetDir = parent.resolve(result);
175167
if (Files.exists(targetDir)) {
176168
handler.reject(i18n("schematics.create_directory.failed.already_exists"));
@@ -185,7 +177,7 @@ public void onCreateDirectory() {
185177
LOG.warning("Failed to create directory: " + targetDir, e);
186178
handler.reject(i18n("schematics.create_directory.failed", targetDir));
187179
}
188-
}));
180+
}, "", new RequiredValidator(), new Validator(i18n("schematics.create_directory.failed.invalid_name"), FileUtils::isNameValid));
189181
}
190182

191183
private DirItem loadAll(Path dir, @Nullable DirItem parent) {

HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/WorldManageUIUtils.java

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@
2323
import org.jackhuang.hmcl.task.Schedulers;
2424
import org.jackhuang.hmcl.task.Task;
2525
import org.jackhuang.hmcl.ui.Controllers;
26-
import org.jackhuang.hmcl.ui.construct.InputDialogPane;
2726
import org.jackhuang.hmcl.ui.construct.MessageDialogPane;
27+
import org.jackhuang.hmcl.ui.construct.RequiredValidator;
28+
import org.jackhuang.hmcl.ui.construct.Validator;
2829
import org.jackhuang.hmcl.ui.wizard.SinglePageWizardProvider;
2930
import org.jackhuang.hmcl.util.StringUtils;
3031
import org.jackhuang.hmcl.util.io.FileUtils;
@@ -89,20 +90,9 @@ public static void export(World world, FileChannel sessionLockChannel) {
8990

9091
public static void copyWorld(World world, Runnable runnable) {
9192
Path worldPath = world.getFile();
92-
Controllers.dialog(new InputDialogPane(
93+
Controllers.prompt(
9394
i18n("world.duplicate.prompt"),
94-
"",
9595
(result, handler) -> {
96-
if (StringUtils.isBlank(result)) {
97-
handler.reject(i18n("world.duplicate.failed.empty_name"));
98-
return;
99-
}
100-
101-
if (result.contains("/") || result.contains("\\") || !FileUtils.isNameValid(result)) {
102-
handler.reject(i18n("world.duplicate.failed.invalid_name"));
103-
return;
104-
}
105-
10696
Path targetDir = worldPath.resolveSibling(result);
10797
if (Files.exists(targetDir)) {
10898
handler.reject(i18n("world.duplicate.failed.already_exists"));
@@ -125,7 +115,7 @@ public static void copyWorld(World world, Runnable runnable) {
125115
}
126116
})
127117
.start();
128-
}));
118+
}, "", new RequiredValidator(), new Validator(i18n("world.duplicate.failed.invalid_name"), FileUtils::isNameValid));
129119
}
130120

131121
public static void closeSessionLockChannel(World world, FileChannel sessionLockChannel) throws IOException {

0 commit comments

Comments
 (0)