完善公共组件无障碍交互
This commit is contained in:
@@ -25,6 +25,10 @@ public final class EmptyStatePane extends VBox {
|
||||
Objects.requireNonNull(content, "content");
|
||||
setAlignment(Pos.CENTER);
|
||||
getStyleClass().add("empty-state");
|
||||
setAccessibleText(content.description().isEmpty()
|
||||
? content.title()
|
||||
: content.title() + "。" + content.description());
|
||||
setFocusTraversable(false);
|
||||
|
||||
Label title = new Label(content.title());
|
||||
title.setFont(Theme.heading(fontSize));
|
||||
@@ -43,6 +47,8 @@ public final class EmptyStatePane extends VBox {
|
||||
}
|
||||
Button button = StyledButton.secondary(
|
||||
content.actionLabel(), Theme.base(fontSize - 1));
|
||||
button.setAccessibleText(content.actionLabel());
|
||||
button.setFocusTraversable(true);
|
||||
button.setOnAction(event -> action.run());
|
||||
getChildren().add(button);
|
||||
}
|
||||
|
||||
@@ -27,15 +27,21 @@ public final class OperationStatusPane extends HBox {
|
||||
getStyleClass().add("operation-status");
|
||||
|
||||
progressBar.setPrefWidth(240);
|
||||
progressBar.setAccessibleText("任务进度");
|
||||
messageLabel.setFont(Theme.base(fontSize));
|
||||
messageLabel.setTextFill(Theme.TEXT_SECONDARY);
|
||||
messageLabel.setAccessibleText("任务状态");
|
||||
HBox.setHgrow(messageLabel, Priority.ALWAYS);
|
||||
|
||||
cancelButton = com.example.workutils.system.ui.StyledButton.danger(
|
||||
"停止", Theme.base(fontSize));
|
||||
cancelButton.setAccessibleText("停止当前任务");
|
||||
cancelButton.setOnAction(event -> controller.cancel());
|
||||
|
||||
getChildren().addAll(progressBar, messageLabel, cancelButton);
|
||||
getChildren().addAll(progressBar, messageLabel);
|
||||
if (cancellable) {
|
||||
getChildren().add(cancelButton);
|
||||
}
|
||||
controller.snapshotProperty().addListener(
|
||||
(observable, oldValue, value) -> render(value));
|
||||
render(controller.snapshot());
|
||||
@@ -45,6 +51,10 @@ public final class OperationStatusPane extends HBox {
|
||||
progressBar.setProgress(snapshot.progress());
|
||||
messageLabel.setText(snapshot.message().isBlank() ? defaultMessage(snapshot.state())
|
||||
: snapshot.message());
|
||||
String stateDescription = "任务状态:" + messageLabel.getText();
|
||||
setAccessibleText(stateDescription);
|
||||
messageLabel.setAccessibleText(stateDescription);
|
||||
progressBar.setAccessibleText("任务进度:" + stateDescription);
|
||||
cancelButton.setVisible(cancellable
|
||||
&& snapshot.state() == OperationState.RUNNING);
|
||||
cancelButton.setManaged(cancelButton.isVisible());
|
||||
|
||||
@@ -13,6 +13,7 @@ import javafx.scene.control.TableCell;
|
||||
import javafx.scene.control.TableColumn;
|
||||
import javafx.scene.control.TableView;
|
||||
import javafx.scene.control.Tooltip;
|
||||
import javafx.scene.input.KeyCode;
|
||||
import javafx.scene.layout.HBox;
|
||||
import javafx.scene.layout.Priority;
|
||||
import javafx.scene.layout.VBox;
|
||||
@@ -45,6 +46,17 @@ public final class ExportHistoryPane extends VBox {
|
||||
Objects.requireNonNull(commands, "commands");
|
||||
|
||||
table.setItems(items);
|
||||
table.setAccessibleText("导出历史记录");
|
||||
table.setFocusTraversable(true);
|
||||
table.setOnKeyPressed(event -> {
|
||||
if (event.getCode() == KeyCode.ENTER) {
|
||||
HistoryItem selected = table.getSelectionModel().getSelectedItem();
|
||||
if (selected != null) {
|
||||
commands.openFile(selected.filePath());
|
||||
event.consume();
|
||||
}
|
||||
}
|
||||
});
|
||||
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
|
||||
table.setPlaceholder(new EmptyStatePane(
|
||||
new EmptyStatePane.Content(
|
||||
@@ -85,6 +97,7 @@ public final class ExportHistoryPane extends VBox {
|
||||
setText(empty ? null : value);
|
||||
HistoryItem row = empty ? null : getTableRow().getItem();
|
||||
setTooltip(row == null ? null : new Tooltip(row.filePath()));
|
||||
setAccessibleText(row == null ? null : "生成文件:" + row.filePath());
|
||||
}
|
||||
});
|
||||
return column;
|
||||
@@ -106,6 +119,8 @@ public final class ExportHistoryPane extends VBox {
|
||||
|
||||
{
|
||||
actions.setAlignment(Pos.CENTER);
|
||||
open.setAccessibleText("打开生成文件");
|
||||
folder.setAccessibleText("打开生成文件所在目录");
|
||||
folder.setTooltip(new Tooltip("打开文件所在目录"));
|
||||
MenuItem edit = new MenuItem("用系统编辑器打开");
|
||||
MenuItem copy = new MenuItem("复制文件路径");
|
||||
@@ -123,6 +138,7 @@ public final class ExportHistoryPane extends VBox {
|
||||
super.updateItem(value, empty);
|
||||
row = empty ? null : getTableRow().getItem();
|
||||
setGraphic(row == null ? null : actions);
|
||||
setAccessibleText(row == null ? null : "历史记录操作:" + row.filePath());
|
||||
}
|
||||
});
|
||||
return column;
|
||||
|
||||
Reference in New Issue
Block a user