add ctrl+s and ctrl+w

This commit is contained in:
Timi
2026-04-24 11:06:46 +08:00
parent 3941040362
commit 7d9967bbb5
2 changed files with 33 additions and 19 deletions

View File

@@ -5,8 +5,12 @@ import com.imyeyu.fx.ui.TimiFXUI;
import com.imyeyu.hosts.ui.ctrl.Main; import com.imyeyu.hosts.ui.ctrl.Main;
import com.imyeyu.inject.annotation.Inject; import com.imyeyu.inject.annotation.Inject;
import com.imyeyu.inject.annotation.TimiInjectApplication; import com.imyeyu.inject.annotation.TimiInjectApplication;
import javafx.application.Platform;
import javafx.application.Application; import javafx.application.Application;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyCodeCombination;
import javafx.scene.input.KeyCombination;
import javafx.stage.Stage; import javafx.stage.Stage;
/** /**
@@ -27,6 +31,11 @@ public class FXApplication extends Application implements TimiFXUI {
Scene scene = new Scene(main, 900, 560); Scene scene = new Scene(main, 900, 560);
scene.getStylesheets().addAll(CSS_STYLE, CSS_FONT, "style.css"); scene.getStylesheets().addAll(CSS_STYLE, CSS_FONT, "style.css");
scene.getAccelerators().put(new KeyCodeCombination(KeyCode.S, KeyCombination.CONTROL_DOWN), main::saveHosts);
scene.getAccelerators().put(new KeyCodeCombination(KeyCode.W, KeyCombination.CONTROL_DOWN), () -> {
stage.close();
Platform.exit();
});
stage.setTitle("TimiHosts"); stage.setTitle("TimiHosts");
stage.setScene(scene); stage.setScene(scene);
stage.show(); stage.show();

View File

@@ -37,18 +37,7 @@ public class Main extends MainView {
private void init() { private void init() {
add.setOnAction(e -> table.getItems().add(new Host())); add.setOnAction(e -> table.getItems().add(new Host()));
// 绑定保存按钮事件 // 绑定保存按钮事件
save.setOnAction(e -> { save.setOnAction(e -> saveHosts());
try {
int count = hostService.save();
labelTips.info("已保存 %d 条映射".formatted(count));
} catch (AccessDeniedException ex) {
log.error("写入 hosts 失败: 权限不足", ex);
labelTips.error("保存失败: 权限不足,请以管理员身份运行");
} catch (IOException ex) {
log.error("写入 hosts 失败", ex);
labelTips.error("保存失败: %s".formatted(ex.getMessage()));
}
});
// 加载初始数据 // 加载初始数据
try { try {
int count = hostService.refresh(); int count = hostService.refresh();
@@ -65,6 +54,22 @@ public class Main extends MainView {
} }
} }
/**
* 保存当前 hosts 映射。
*/
public void saveHosts() {
try {
int count = hostService.save();
labelTips.info("已保存 %d 条映射".formatted(count));
} catch (AccessDeniedException ex) {
log.error("写入 hosts 失败: 权限不足", ex);
labelTips.error("保存失败: 权限不足,请以管理员身份运行");
} catch (IOException ex) {
log.error("写入 hosts 失败", ex);
labelTips.error("保存失败: %s".formatted(ex.getMessage()));
}
}
@PostConstruct @PostConstruct
private void label() { private void label() {
Callback updateStatus = () -> { Callback updateStatus = () -> {