From d2114c144e836d471106b1a292022502c4ff414a Mon Sep 17 00:00:00 2001 From: Sheikah45 Date: Mon, 9 Oct 2023 18:27:21 -0400 Subject: [PATCH] Clean up fxml --- build.gradle | 10 +++++++--- .../client/chat/UrlPreviewResolverImpl.java | 6 +++--- .../client/config/ClientProperties.java | 11 ++++++++++ ...ctColorPickerCustomMenuItemController.java | 20 +++++++++++++++++++ ...ryColorPickerCustomMenuItemController.java | 7 +------ ...erColorPickerCustomMenuItemController.java | 7 +------ .../leaderboard/LeaderboardController.java | 2 +- .../leaderboard/SubDivisionTabController.java | 1 + .../client/map/MapDetailController.java | 16 +++++++-------- .../client/mod/ModDetailController.java | 16 +++++++-------- .../client/replay/ReplayDetailController.java | 16 +++++++-------- .../com/faforever/client/theme/UiService.java | 20 +++++++------------ .../vault/VaultEntityShowRoomController.java | 1 + src/main/resources/theme/chat/chat.fxml | 3 +-- .../theme/chat/color_picker_menu_item.fxml | 7 ++++--- src/main/resources/theme/filter/filter.fxml | 1 + .../theme/filter/range_slider_filter.fxml | 1 + src/main/resources/theme/image_preview.fxml | 5 ----- ...DivisionTab.fxml => sub_division_tab.fxml} | 2 +- .../resources/theme/play/create_game.fxml | 4 +++- .../resources/theme/vault/vault_entity.fxml | 1 + .../theme/vault/vault_entity_show_room.fxml | 2 +- .../LeaderboardControllerTest.java | 4 ++-- .../SubDivisionTabControllerTest.java | 2 +- 24 files changed, 93 insertions(+), 72 deletions(-) create mode 100644 src/main/java/com/faforever/client/fx/contextmenu/AbstractColorPickerCustomMenuItemController.java delete mode 100644 src/main/resources/theme/image_preview.fxml rename src/main/resources/theme/leaderboard/{subDivisionTab.fxml => sub_division_tab.fxml} (88%) diff --git a/build.gradle b/build.gradle index 85f10d25d1..7b410c2981 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { mavenCentral() } dependencies { - classpath files('../fx2j/gradle-plugin/build/libs/gradle-plugin-all.jar') + classpath files('../fx2j/gradle-plugin/build/libs/fx2j-gradle-plugin-unspecified.jar') } } @@ -21,7 +21,7 @@ plugins { } apply plugin: 'io.spring.dependency-management' -apply plugin: 'com.github.sheikah45.fx2j' +apply plugin: 'io.github.sheikah45.fx2j' // source: https://github.com/mendhak/Gradle-Travis-Colored-Output/blob/master/ColoredOutput.gradle tasks.withType(Test).configureEach { @@ -214,6 +214,10 @@ install4j { } } +fx2j { + basePackage = "com.faforever.client.fx2j" +} + tasks.register('buildInstall4jMediaFiles', Install4jTask) { group "distribution" description 'Creates install4j media files' @@ -345,8 +349,8 @@ dependencies { implementation("org.javassist:javassist:3.29.2-GA") + implementation(files("../fx2j/api/build/libs/fx2j-api-unspecified.jar")) implementation("com.install4j:install4j-runtime:10.0.6") - implementation(files("../fx2j/api/build/libs/api.jar")) testImplementation("com.squareup.okhttp3:okhttp") testImplementation("com.squareup.okhttp3:mockwebserver") diff --git a/src/main/java/com/faforever/client/chat/UrlPreviewResolverImpl.java b/src/main/java/com/faforever/client/chat/UrlPreviewResolverImpl.java index 8067ed723c..ae9a3665e2 100644 --- a/src/main/java/com/faforever/client/chat/UrlPreviewResolverImpl.java +++ b/src/main/java/com/faforever/client/chat/UrlPreviewResolverImpl.java @@ -4,7 +4,6 @@ import com.faforever.client.i18n.I18n; import com.faforever.client.theme.UiService; import com.google.common.net.MediaType; -import javafx.scene.Node; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import lombok.RequiredArgsConstructor; @@ -70,8 +69,9 @@ public CompletableFuture> resolvePreview(String urlString) { long contentLength = connection.getContentLengthLong(); String contentType = connection.getContentType(); - Node root = uiService.loadFxml("theme/image_preview.fxml"); - ImageView imageView = (ImageView) root.lookup("#imageView"); + ImageView imageView = new ImageView(); + imageView.setFitHeight(200.0); + imageView.setFitWidth(300.0); if (MediaType.JPEG.toString().equals(contentType) || MediaType.PNG.toString().equals(contentType)) { diff --git a/src/main/java/com/faforever/client/config/ClientProperties.java b/src/main/java/com/faforever/client/config/ClientProperties.java index 893541edc4..0391063946 100644 --- a/src/main/java/com/faforever/client/config/ClientProperties.java +++ b/src/main/java/com/faforever/client/config/ClientProperties.java @@ -6,6 +6,9 @@ import com.faforever.client.update.ClientConfiguration.UrlEndpoint; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.web.reactive.socket.WebSocketHandler; +import org.springframework.web.reactive.socket.WebSocketSession; +import reactor.core.publisher.Mono; import java.net.URI; import java.time.Duration; @@ -155,6 +158,14 @@ public void updateFromEndpoint(ServerEndpoints serverEndpoints) { server.setPort(lobby.getPort()); } + new WebSocketHandler() { + + @Override + public Mono handle(WebSocketSession session) { + return session.receive().map(message -> message.); + } + } + SocketEndpoint liveReplay = serverEndpoints.getLiveReplay(); if (liveReplay != null) { replay.setRemoteHost(liveReplay.getHost()); diff --git a/src/main/java/com/faforever/client/fx/contextmenu/AbstractColorPickerCustomMenuItemController.java b/src/main/java/com/faforever/client/fx/contextmenu/AbstractColorPickerCustomMenuItemController.java new file mode 100644 index 0000000000..b5fa558462 --- /dev/null +++ b/src/main/java/com/faforever/client/fx/contextmenu/AbstractColorPickerCustomMenuItemController.java @@ -0,0 +1,20 @@ +package com.faforever.client.fx.contextmenu; + +import javafx.scene.control.Button; +import javafx.scene.control.ColorPicker; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +@Slf4j +@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) +@Component +@RequiredArgsConstructor +public abstract class AbstractColorPickerCustomMenuItemController extends AbstractCustomMenuItemController { + + + public ColorPicker colorPicker; + public Button removeCustomColorButton; +} diff --git a/src/main/java/com/faforever/client/fx/contextmenu/ChatCategoryColorPickerCustomMenuItemController.java b/src/main/java/com/faforever/client/fx/contextmenu/ChatCategoryColorPickerCustomMenuItemController.java index b3f872465f..a3a249147c 100644 --- a/src/main/java/com/faforever/client/fx/contextmenu/ChatCategoryColorPickerCustomMenuItemController.java +++ b/src/main/java/com/faforever/client/fx/contextmenu/ChatCategoryColorPickerCustomMenuItemController.java @@ -4,8 +4,6 @@ import com.faforever.client.fx.JavaFxUtil; import com.faforever.client.preferences.ChatPrefs; import com.faforever.client.util.Assert; -import javafx.scene.control.Button; -import javafx.scene.control.ColorPicker; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.config.ConfigurableBeanFactory; @@ -19,13 +17,10 @@ @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @Component @RequiredArgsConstructor -public class ChatCategoryColorPickerCustomMenuItemController extends AbstractCustomMenuItemController { +public class ChatCategoryColorPickerCustomMenuItemController extends AbstractColorPickerCustomMenuItemController { private final ChatPrefs chatPrefs; - public ColorPicker colorPicker; - public Button removeCustomColorButton; - public void initialize() { removeCustomColorButton.setOnAction(event -> colorPicker.setValue(null)); removeCustomColorButton.visibleProperty().bind(chatPrefs.chatColorModeProperty().flatMap(chatColorMode -> colorPicker.valueProperty().isNotNull().map(isNotNull -> isNotNull && RANDOM != chatColorMode))); diff --git a/src/main/java/com/faforever/client/fx/contextmenu/ChatUserColorPickerCustomMenuItemController.java b/src/main/java/com/faforever/client/fx/contextmenu/ChatUserColorPickerCustomMenuItemController.java index d92c26a545..034f9228ad 100644 --- a/src/main/java/com/faforever/client/fx/contextmenu/ChatUserColorPickerCustomMenuItemController.java +++ b/src/main/java/com/faforever/client/fx/contextmenu/ChatUserColorPickerCustomMenuItemController.java @@ -5,8 +5,6 @@ import com.faforever.client.fx.JavaFxUtil; import com.faforever.client.preferences.ChatPrefs; import com.faforever.client.util.Assert; -import javafx.scene.control.Button; -import javafx.scene.control.ColorPicker; import javafx.scene.paint.Color; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -22,10 +20,7 @@ @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @RequiredArgsConstructor @Slf4j -public class ChatUserColorPickerCustomMenuItemController extends AbstractCustomMenuItemController { - - public ColorPicker colorPicker; - public Button removeCustomColorButton; +public class ChatUserColorPickerCustomMenuItemController extends AbstractColorPickerCustomMenuItemController { private final ChatPrefs chatPrefs; diff --git a/src/main/java/com/faforever/client/leaderboard/LeaderboardController.java b/src/main/java/com/faforever/client/leaderboard/LeaderboardController.java index 4bb2cc9778..baaf4324be 100644 --- a/src/main/java/com/faforever/client/leaderboard/LeaderboardController.java +++ b/src/main/java/com/faforever/client/leaderboard/LeaderboardController.java @@ -272,7 +272,7 @@ public void onMajorDivisionPicked() { .getDivision() .getIndex()) .forEach(subdivision -> { - SubDivisionTabController controller = uiService.loadFxml("theme/leaderboard/subDivisionTab.fxml"); + SubDivisionTabController controller = uiService.loadFxml("theme/leaderboard/sub_division_tab.fxml"); controller.getRoot().setUserData(subdivision.getIndex()); controller.populate(subdivision); fxApplicationThreadExecutor.execute(() -> { diff --git a/src/main/java/com/faforever/client/leaderboard/SubDivisionTabController.java b/src/main/java/com/faforever/client/leaderboard/SubDivisionTabController.java index fc35b7177c..5df98eb839 100644 --- a/src/main/java/com/faforever/client/leaderboard/SubDivisionTabController.java +++ b/src/main/java/com/faforever/client/leaderboard/SubDivisionTabController.java @@ -63,6 +63,7 @@ public void initialize() { nameColumn.setCellValueFactory(param -> param.getValue().getPlayer().usernameProperty()); nameColumn.setCellFactory(param -> new StringCell<>(name -> name)); + nameColumn.prefWidthProperty().bind(ratingTable.widthProperty().subtract(250)); gamesPlayedColumn.setCellValueFactory(param -> param.getValue().gamesPlayedProperty()); gamesPlayedColumn.setCellFactory(param -> new StringCell<>(count -> i18n.number(count.intValue()))); diff --git a/src/main/java/com/faforever/client/map/MapDetailController.java b/src/main/java/com/faforever/client/map/MapDetailController.java index 9573a94d0f..7395605dbd 100644 --- a/src/main/java/com/faforever/client/map/MapDetailController.java +++ b/src/main/java/com/faforever/client/map/MapDetailController.java @@ -73,7 +73,7 @@ public class MapDetailController implements Controller { private final ContextMenuBuilder contextMenuBuilder; private final ObjectProperty mapVersion = new SimpleObjectProperty<>(); - private final ObservableList reviews = FXCollections.observableArrayList(); + private final ObservableList mapReviews = FXCollections.observableArrayList(); public Label progressLabel; public Button uninstallButton; @@ -192,13 +192,13 @@ private void initializeReviewsController() { review.setMapVersion(mapVersion.get()); return review; }); - reviewsController.bindReviews(reviews); + reviewsController.bindReviews(mapReviews); } private void onMapVersionChanged(MapVersionBean newValue) { if (newValue == null) { reviewsController.setCanWriteReview(false); - reviews.clear(); + mapReviews.clear(); installButton.setText(""); return; } @@ -215,7 +215,7 @@ private void onMapVersionChanged(MapVersionBean newValue) { reviewService.getMapReviews(newValue.getMap()) .collectList() .publishOn(fxApplicationThreadExecutor.asScheduler()) - .subscribe(reviews::setAll, throwable -> log.error("Unable to populate reviews", throwable)); + .subscribe(mapReviews::setAll, throwable -> log.error("Unable to populate reviews", throwable)); mapService.getFileSize(newValue).thenAcceptAsync(mapFileSize -> { if (mapFileSize > -1) { @@ -245,17 +245,17 @@ void onDeleteReview(MapVersionReviewBean review) { .subscribe(null, throwable -> { log.error("Review could not be deleted", throwable); notificationService.addImmediateErrorNotification(throwable, "review.delete.error"); - }, () -> reviews.remove(review)); + }, () -> mapReviews.remove(review)); } @VisibleForTesting void onSendReview(MapVersionReviewBean review) { reviewService.saveMapVersionReview(review) - .filter(savedReview -> !reviews.contains(savedReview)) + .filter(savedReview -> !mapReviews.contains(savedReview)) .publishOn(fxApplicationThreadExecutor.asScheduler()) .subscribe(savedReview -> { - reviews.remove(review); - reviews.add(savedReview); + mapReviews.remove(review); + mapReviews.add(savedReview); }, throwable -> { log.error("Review could not be saved", throwable); notificationService.addImmediateErrorNotification(throwable, "review.save.error"); diff --git a/src/main/java/com/faforever/client/mod/ModDetailController.java b/src/main/java/com/faforever/client/mod/ModDetailController.java index 10dd494e6c..d77a452b24 100644 --- a/src/main/java/com/faforever/client/mod/ModDetailController.java +++ b/src/main/java/com/faforever/client/mod/ModDetailController.java @@ -61,7 +61,7 @@ public class ModDetailController implements Controller { private final FxApplicationThreadExecutor fxApplicationThreadExecutor; private final ObjectProperty modVersion = new SimpleObjectProperty<>(); - private final ObservableList reviews = FXCollections.observableArrayList(); + private final ObservableList modReviews = FXCollections.observableArrayList(); public Label updatedLabel; public Label sizeLabel; @@ -157,7 +157,7 @@ public void setModVersion(ModVersionBean modVersion) { private void onModVersionChanged(ModVersionBean newValue) { if (newValue == null) { reviewsController.setCanWriteReview(false); - reviews.clear(); + modReviews.clear(); installButton.setText(""); return; } @@ -172,7 +172,7 @@ private void onModVersionChanged(ModVersionBean newValue) { reviewService.getModReviews(newValue.getMod()) .collectList() .publishOn(fxApplicationThreadExecutor.asScheduler()) - .subscribe(reviews::setAll, throwable -> log.error("Unable to populate reviews", throwable)); + .subscribe(modReviews::setAll, throwable -> log.error("Unable to populate reviews", throwable)); modService.getFileSize(newValue) .thenAcceptAsync(modFileSize -> { @@ -197,7 +197,7 @@ private void initializeReviewsController() { review.setModVersion(modVersion.get()); return review; }); - reviewsController.bindReviews(reviews); + reviewsController.bindReviews(modReviews); } @VisibleForTesting @@ -207,17 +207,17 @@ void onDeleteReview(ModVersionReviewBean review) { .subscribe(null, throwable -> { log.error("Review could not be deleted", throwable); notificationService.addImmediateErrorNotification(throwable, "review.delete.error"); - }, () -> reviews.remove(review)); + }, () -> modReviews.remove(review)); } @VisibleForTesting void onSendReview(ModVersionReviewBean review) { reviewService.saveModVersionReview(review) - .filter(savedReview -> !reviews.contains(savedReview)) + .filter(savedReview -> !modReviews.contains(savedReview)) .publishOn(fxApplicationThreadExecutor.asScheduler()) .subscribe(savedReview -> { - reviews.remove(review); - reviews.add(savedReview); + modReviews.remove(review); + modReviews.add(savedReview); }, throwable -> { log.error("Review could not be saved", throwable); notificationService.addImmediateErrorNotification(throwable, "review.save.error"); diff --git a/src/main/java/com/faforever/client/replay/ReplayDetailController.java b/src/main/java/com/faforever/client/replay/ReplayDetailController.java index 6b4bb8ea70..f3f098253b 100644 --- a/src/main/java/com/faforever/client/replay/ReplayDetailController.java +++ b/src/main/java/com/faforever/client/replay/ReplayDetailController.java @@ -110,7 +110,7 @@ public class ReplayDetailController implements Controller { private final ArrayList teamCardControllers = new ArrayList<>(); private final ObjectProperty replay = new SimpleObjectProperty<>(); - private final ObservableList reviews = FXCollections.observableArrayList(); + private final ObservableList replayReviews = FXCollections.observableArrayList(); private final ObjectProperty>> teams = new SimpleObjectProperty<>(); private final SimpleChangeListener>> teamsListener = this::populateTeamsContainer; @@ -293,7 +293,7 @@ private void bindProperties() { private void onReplayChanged(ReplayBean newValue) { if (newValue == null) { reviewsController.setCanWriteReview(false); - reviews.clear(); + replayReviews.clear(); return; } @@ -306,7 +306,7 @@ private void onReplayChanged(ReplayBean newValue) { reviewService.getReplayReviews(newValue) .collectList() .publishOn(fxApplicationThreadExecutor.asScheduler()) - .subscribe(reviews::setAll, throwable -> log.error("Unable to populate reviews", throwable)); + .subscribe(replayReviews::setAll, throwable -> log.error("Unable to populate reviews", throwable)); } public void setReplay(ReplayBean replay) { @@ -352,7 +352,7 @@ private void initializeReviewsController() { review.setReplay(replay.get()); return review; }); - reviewsController.bindReviews(reviews); + reviewsController.bindReviews(replayReviews); } @VisibleForTesting @@ -362,17 +362,17 @@ void onDeleteReview(ReplayReviewBean review) { .subscribe(null, throwable -> { log.error("Review could not be saved", throwable); notificationService.addImmediateErrorNotification(throwable, "review.delete.error"); - }, () -> reviews.remove(review)); + }, () -> replayReviews.remove(review)); } @VisibleForTesting void onSendReview(ReplayReviewBean review) { reviewService.saveReplayReview(review) - .filter(savedReview -> !reviews.contains(savedReview)) + .filter(savedReview -> !replayReviews.contains(savedReview)) .publishOn(fxApplicationThreadExecutor.asScheduler()) .subscribe(savedReview -> { - reviews.remove(review); - reviews.add(savedReview); + replayReviews.remove(review); + replayReviews.add(savedReview); }, throwable -> { log.error("Review could not be saved", throwable); notificationService.addImmediateErrorNotification(throwable, "review.save.error"); diff --git a/src/main/java/com/faforever/client/theme/UiService.java b/src/main/java/com/faforever/client/theme/UiService.java index 8f9fdf8713..b92ce259af 100644 --- a/src/main/java/com/faforever/client/theme/UiService.java +++ b/src/main/java/com/faforever/client/theme/UiService.java @@ -14,7 +14,7 @@ import com.faforever.client.ui.dialog.Dialog; import com.faforever.client.ui.dialog.Dialog.DialogTransition; import com.faforever.client.ui.dialog.DialogLayout; -import com.github.sheikah45.fx2j.api.Fx2jLoader; +import io.github.sheikah45.fx2j.api.Fx2jLoader; import javafx.beans.binding.BooleanExpression; import javafx.beans.property.ObjectProperty; import javafx.beans.property.ReadOnlyObjectProperty; @@ -298,12 +298,16 @@ private String getSceneStyleSheet() throws IOException { public String getThemeFile(String relativeFile) throws IOException { + return getThemeFileUrl(relativeFile).toString(); + } + + public URL getThemeFileUrl(String relativeFile) throws IOException { String strippedRelativeFile = relativeFile.replace("theme/", ""); Path externalFile = getThemeDirectory(currentTheme.get()).resolve(strippedRelativeFile); if (Files.notExists(externalFile)) { - return new ClassPathResource("/" + relativeFile).getURL().toString(); + return new ClassPathResource("/" + relativeFile).getURL(); } - return externalFile.toUri().toURL().toString(); + return externalFile.toUri().toURL(); } /** @@ -326,16 +330,6 @@ public Image getImage(String relativeImage) { return new Image(relativeImage, true); } - - public URL getThemeFileUrl(String relativeFile) throws IOException { - String themeFile = getThemeFile(relativeFile); - if (themeFile.startsWith("file:") || themeFile.startsWith("jar:")) { - return new URL(themeFile); - } - return new ClassPathResource(getThemeFile(relativeFile)).getURL(); - } - - public void setTheme(Theme theme) { stopWatchingOldThemes(); diff --git a/src/main/java/com/faforever/client/vault/VaultEntityShowRoomController.java b/src/main/java/com/faforever/client/vault/VaultEntityShowRoomController.java index 2a75c5ac5f..0d82eb8f52 100644 --- a/src/main/java/com/faforever/client/vault/VaultEntityShowRoomController.java +++ b/src/main/java/com/faforever/client/vault/VaultEntityShowRoomController.java @@ -27,6 +27,7 @@ public class VaultEntityShowRoomController implements Controller { @Override public void initialize() { JavaFxUtil.bindManagedToVisible(root); + label.prefWidthProperty().bind(root.widthProperty()); } public void setChildren(List children) { diff --git a/src/main/resources/theme/chat/chat.fxml b/src/main/resources/theme/chat/chat.fxml index c5450e75e1..67f49f8937 100644 --- a/src/main/resources/theme/chat/chat.fxml +++ b/src/main/resources/theme/chat/chat.fxml @@ -18,8 +18,7 @@ + + - - - + diff --git a/src/main/resources/theme/filter/filter.fxml b/src/main/resources/theme/filter/filter.fxml index ebfb8ab598..75169cfe70 100644 --- a/src/main/resources/theme/filter/filter.fxml +++ b/src/main/resources/theme/filter/filter.fxml @@ -1,5 +1,6 @@ + diff --git a/src/main/resources/theme/filter/range_slider_filter.fxml b/src/main/resources/theme/filter/range_slider_filter.fxml index 45749ef29a..49227a63cf 100644 --- a/src/main/resources/theme/filter/range_slider_filter.fxml +++ b/src/main/resources/theme/filter/range_slider_filter.fxml @@ -1,5 +1,6 @@ + diff --git a/src/main/resources/theme/image_preview.fxml b/src/main/resources/theme/image_preview.fxml deleted file mode 100644 index 8616082539..0000000000 --- a/src/main/resources/theme/image_preview.fxml +++ /dev/null @@ -1,5 +0,0 @@ - - - - diff --git a/src/main/resources/theme/leaderboard/subDivisionTab.fxml b/src/main/resources/theme/leaderboard/sub_division_tab.fxml similarity index 88% rename from src/main/resources/theme/leaderboard/subDivisionTab.fxml rename to src/main/resources/theme/leaderboard/sub_division_tab.fxml index faeff39066..6ed89f1741 100644 --- a/src/main/resources/theme/leaderboard/subDivisionTab.fxml +++ b/src/main/resources/theme/leaderboard/sub_division_tab.fxml @@ -10,7 +10,7 @@ - + diff --git a/src/main/resources/theme/play/create_game.fxml b/src/main/resources/theme/play/create_game.fxml index 67efc6f176..78ed4f5518 100644 --- a/src/main/resources/theme/play/create_game.fxml +++ b/src/main/resources/theme/play/create_game.fxml @@ -141,7 +141,9 @@ text="%game.generateMap"> diff --git a/src/main/resources/theme/vault/vault_entity.fxml b/src/main/resources/theme/vault/vault_entity.fxml index caf7b26a3b..b6f46ce206 100644 --- a/src/main/resources/theme/vault/vault_entity.fxml +++ b/src/main/resources/theme/vault/vault_entity.fxml @@ -1,5 +1,6 @@ + diff --git a/src/main/resources/theme/vault/vault_entity_show_room.fxml b/src/main/resources/theme/vault/vault_entity_show_room.fxml index 057ac781c3..c455cbf351 100644 --- a/src/main/resources/theme/vault/vault_entity_show_room.fxml +++ b/src/main/resources/theme/vault/vault_entity_show_room.fxml @@ -8,7 +8,7 @@ -