Skip to content

Commit cca818f

Browse files
committed
Feat: Add empty state placeholders for versions
1 parent 241c9c4 commit cca818f

9 files changed

Lines changed: 60 additions & 0 deletions

File tree

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import javafx.geometry.Insets;
3434
import javafx.geometry.Pos;
3535
import javafx.scene.Node;
36+
import javafx.scene.control.Label;
3637
import javafx.scene.control.SelectionMode;
3738
import javafx.scene.control.SkinBase;
3839
import javafx.scene.image.Image;
@@ -193,6 +194,13 @@ final class DataPackListPageSkin extends SkinBase<DataPackListPage> {
193194

194195
listView.setCellFactory(x -> new DataPackInfoListCell(listView, getSkinnable().readOnly));
195196
listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
197+
198+
StackPane placeholderContainer = new StackPane();
199+
placeholderContainer.getStyleClass().add("notice-pane");
200+
Label placeholderLabel = new Label(i18n("datapack.empty"));
201+
placeholderContainer.getChildren().add(placeholderLabel);
202+
listView.setPlaceholder(placeholderContainer);
203+
196204
this.listView.setItems(filteredList);
197205
listView.getItems().addListener(listener);
198206

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,13 @@ final class ModListPageSkin extends SkinBase<ModListPage> {
219219

220220
listView.setCellFactory(x -> new ModInfoListCell(listView));
221221
listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
222+
223+
StackPane placeholderContainer = new StackPane();
224+
placeholderContainer.getStyleClass().add("notice-pane");
225+
Label placeholderLabel = new Label(i18n("mods.empty"));
226+
placeholderContainer.getChildren().add(placeholderLabel);
227+
listView.setPlaceholder(placeholderContainer);
228+
222229
Bindings.bindContent(listView.getItems(), skinnable.getItems());
223230
skinnable.getItems().addListener((ListChangeListener<? super ModInfoObject>) c -> {
224231
if (isSearching) {

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,13 @@ private ResourcePackListPageSkin(ResourcePackListPage control) {
371371

372372
listView.setCellFactory(x -> new ResourcePackListCell(listView, control));
373373
listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
374+
375+
StackPane placeholderContainer = new StackPane();
376+
placeholderContainer.getStyleClass().add("notice-pane");
377+
Label placeholderLabel = new Label(i18n("resourcepack.empty"));
378+
placeholderContainer.getChildren().add(placeholderLabel);
379+
listView.setPlaceholder(placeholderContainer);
380+
374381
Bindings.bindContent(listView.getItems(), control.getItems());
375382

376383
listView.setOnContextMenuRequested(event -> {

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -636,6 +636,12 @@ protected void updateItem(Item item, boolean empty) {
636636
private final class SchematicsPageSkin extends ToolbarListPageSkin<Item, SchematicsPage> {
637637
SchematicsPageSkin() {
638638
super(SchematicsPage.this);
639+
640+
StackPane placeholderContainer = new StackPane();
641+
placeholderContainer.getStyleClass().add("notice-pane");
642+
Label placeholderLabel = new Label(i18n("schematics.empty"));
643+
placeholderContainer.getChildren().add(placeholderLabel);
644+
listView.setPlaceholder(placeholderContainer);
639645
}
640646

641647
@Override

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import javafx.geometry.Pos;
2525
import javafx.scene.Node;
2626
import javafx.scene.control.Control;
27+
import javafx.scene.control.Label;
2728
import javafx.scene.control.Skin;
2829
import javafx.scene.control.SkinBase;
2930
import javafx.scene.layout.BorderPane;
@@ -162,6 +163,12 @@ private final class WorldBackupsPageSkin extends ToolbarListPageSkin<BackupInfo,
162163

163164
WorldBackupsPageSkin() {
164165
super(WorldBackupsPage.this);
166+
167+
StackPane placeholderContainer = new StackPane();
168+
placeholderContainer.getStyleClass().add("notice-pane");
169+
Label placeholderLabel = new Label(i18n("world.backup.empty"));
170+
placeholderContainer.getChildren().add(placeholderLabel);
171+
listView.setPlaceholder(placeholderContainer);
165172
}
166173

167174
@Override

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import javafx.geometry.Insets;
2828
import javafx.geometry.Pos;
2929
import javafx.scene.Node;
30+
import javafx.scene.control.Label;
3031
import javafx.scene.control.ListCell;
3132
import javafx.scene.control.Skin;
3233
import javafx.scene.control.Tooltip;
@@ -216,6 +217,12 @@ private final class WorldListPageSkin extends ToolbarListPageSkin<World, WorldLi
216217

217218
WorldListPageSkin() {
218219
super(WorldListPage.this);
220+
221+
StackPane placeholderContainer = new StackPane();
222+
placeholderContainer.getStyleClass().add("notice-pane");
223+
Label placeholderLabel = new Label(i18n("world.empty"));
224+
placeholderContainer.getChildren().add(placeholderLabel);
225+
listView.setPlaceholder(placeholderContainer);
219226
}
220227

221228
@Override

HMCL/src/main/resources/assets/lang/I18N.properties

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1151,6 +1151,7 @@ mods.disable=Disable
11511151
mods.download=Download Mod
11521152
mods.download.title=Download Mod - %1s
11531153
mods.download.recommend=Recommended Mod Version - Minecraft %1s
1154+
mods.empty=No Mods
11541155
mods.enable=Enable
11551156
mods.game.version=Game Version
11561157
mods.manage=Mods
@@ -1184,6 +1185,7 @@ nbt.title=View File - %s
11841185
datapack=Data Packs
11851186
datapack.add=Add
11861187
datapack.add.title=Choose data pack archive you want to add
1188+
datapack.empty=No Data Packs
11871189
datapack.reload.toast=Minecraft is running. Use the /reload command to reload data packs
11881190
datapack.title=World [%s] - Data Packs
11891191

@@ -1202,6 +1204,7 @@ world.backup.create.new_one=New Backup
12021204
world.backup.create.failed=Failed to create backup.\n%s
12031205
world.backup.create.success=Successfully created a new backup: %s
12041206
world.backup.delete=Delete this backup
1207+
world.backup.empty=No Backup
12051208
world.backup.processing=Backing up ...
12061209
world.chunkbase=Chunk Base
12071210
world.chunkbase.end_city=End City
@@ -1221,6 +1224,7 @@ world.delete=Delete the World
12211224
world.delete.failed=Failed to delete world.\n%s
12221225
world.download=Download
12231226
world.download.title=Download World - %1s
1227+
world.empty=No Worlds
12241228
world.export=Export the World
12251229
world.export.title=Choose the directory for this exported world
12261230
world.export.location=Save As
@@ -1295,6 +1299,7 @@ resourcepack.add.title=Choose resource pack archive you want to add
12951299
resourcepack.delete.failed=Failed to delete resource pack
12961300
resourcepack.download=Download
12971301
resourcepack.download.title=Download Resource Pack - %1s
1302+
resourcepack.empty=No Resource Packs
12981303
resourcepack.manage=Resource Packs
12991304
resourcepack.update_in_modpack.warning=Updating resource packs in a modpack can lead to irreparable results, possibly leading to incorrect textures and sounds. Are you sure you want to update?
13001305
resourcepack.warning.invalid=Invalid pack meta
@@ -1317,6 +1322,7 @@ schematics.create_directory.failed=Failed to create directory
13171322
schematics.create_directory.failed.already_exists=Directory already exists
13181323
schematics.create_directory.failed.empty_name=Name cannot be empty
13191324
schematics.create_directory.failed.invalid_name=Name contains invalid characters
1325+
schematics.empty=No Schematics
13201326
schematics.info.description=Description
13211327
schematics.info.enclosing_size=Enclosing Size
13221328
schematics.info.name=Name

HMCL/src/main/resources/assets/lang/I18N_zh.properties

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -948,6 +948,7 @@ mods.disable=停用
948948
mods.download=模組下載
949949
mods.download.title=模組下載 - %1s
950950
mods.download.recommend=推薦版本 - Minecraft %1s
951+
mods.empty=沒有模組
951952
mods.enable=啟用
952953
mods.game.version=遊戲版本
953954
mods.manage=模組管理
@@ -981,6 +982,7 @@ nbt.title=查看檔案 - %s
981982
datapack=資料包
982983
datapack.add=新增資料包
983984
datapack.add.title=選取要新增的資料包壓縮檔
985+
datapack.empty=沒有資料包
984986
datapack.reload.toast=Minecraft 正在執行,請使用 /reload 指令重新載入資料包
985987
datapack.title=世界 [%s] - 資料包
986988

@@ -999,6 +1001,7 @@ world.backup.create.new_one=建立新備份
9991001
world.backup.create.failed=建立備份失敗。\n%s
10001002
world.backup.create.success=成功建立新備份:%s
10011003
world.backup.delete=刪除此備份
1004+
world.backup.empty=沒有備份
10021005
world.backup.processing=正在備份中……
10031006
world.chunkbase=世界地圖
10041007
world.chunkbase.end_city=終界城地圖
@@ -1018,6 +1021,7 @@ world.delete=刪除此世界
10181021
world.delete.failed=刪除世界失敗。\n%s
10191022
world.download=下載世界
10201023
world.download.title=世界下載 - %1s
1024+
world.empty=沒有世界
10211025
world.export=匯出此世界
10221026
world.export.title=選取該世界的儲存位置
10231027
world.export.location=儲存到
@@ -1088,6 +1092,7 @@ resourcepack.add.title=選取要新增的資源包壓縮檔
10881092
resourcepack.delete.failed=刪除資源包失敗
10891093
resourcepack.download=下載資源包
10901094
resourcepack.download.title=資源包下載 - %1s
1095+
resourcepack.empty=沒有資源包
10911096
resourcepack.manage=資源包管理
10921097
resourcepack.update_in_modpack.warning=更新模組包中的資源包可能導致模組包損壞,使遊戲紋理和音效異常。你確定要更新嗎?
10931098
resourcepack.warning.invalid=資源包中繼資料無效
@@ -1110,6 +1115,7 @@ schematics.create_directory.failed=建立目錄失敗
11101115
schematics.create_directory.failed.already_exists=目錄已存在
11111116
schematics.create_directory.failed.empty_name=名稱不能為空
11121117
schematics.create_directory.failed.invalid_name=名稱中包含無效字元
1118+
schematics.empty=沒有投影檔
11131119
schematics.info.description=描述
11141120
schematics.info.enclosing_size=框大小
11151121
schematics.info.name=名稱

HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -953,6 +953,7 @@ mods.disable=禁用
953953
mods.download=模组下载
954954
mods.download.title=模组下载 - %1s
955955
mods.download.recommend=推荐版本 - Minecraft %1s
956+
mods.empty=没有模组
956957
mods.enable=启用
957958
mods.game.version=游戏版本
958959
mods.manage=模组管理
@@ -986,6 +987,7 @@ nbt.title=查看文件 - %s
986987
datapack=数据包
987988
datapack.add=添加数据包
988989
datapack.add.title=选择要添加的数据包压缩包
990+
datapack.empty=没有数据包
989991
datapack.reload.toast=Minecraft 正在运行,请使用 /reload 命令重新加载数据包
990992
datapack.title=世界 [%s] - 数据包
991993

@@ -1004,6 +1006,7 @@ world.backup.create.new_one=创建新备份
10041006
world.backup.create.failed=创建备份失败。\n%s
10051007
world.backup.create.success=成功创建新备份:%s
10061008
world.backup.delete=删除此备份
1009+
world.backup.empty=没有备份
10071010
world.backup.processing=正在备份中……
10081011
world.chunkbase=世界地图
10091012
world.chunkbase.end_city=末地城地图
@@ -1023,6 +1026,7 @@ world.delete=删除此世界
10231026
world.delete.failed=删除世界失败。\n%s
10241027
world.download=下载世界
10251028
world.download.title=世界下载 - %1s
1029+
world.empty=没有世界
10261030
world.export=导出此世界
10271031
world.export.title=选择该世界的存储位置
10281032
world.export.location=保存到
@@ -1093,6 +1097,7 @@ resourcepack.add.title=选择要添加的资源包压缩包
10931097
resourcepack.delete.failed=删除资源包失败
10941098
resourcepack.download=下载资源包
10951099
resourcepack.download.title=资源包下载 - %1s
1100+
resourcepack.empty=没有资源包
10961101
resourcepack.manage=资源包管理
10971102
resourcepack.update_in_modpack.warning=更新整合包中的资源包可能导致整合包损坏,使游戏纹理和音效异常。你确定要更新吗?
10981103
resourcepack.warning.invalid=资源包元数据无效
@@ -1115,6 +1120,7 @@ schematics.create_directory.failed=创建文件夹失败
11151120
schematics.create_directory.failed.already_exists=文件夹已存在
11161121
schematics.create_directory.failed.empty_name=名称不能为空
11171122
schematics.create_directory.failed.invalid_name=名称中包含非法字符
1123+
schematics.empty=没有原理图
11181124
schematics.info.description=描述
11191125
schematics.info.enclosing_size=包围盒尺寸
11201126
schematics.info.name=名称

0 commit comments

Comments
 (0)