diff --git a/pom.xml b/pom.xml index 4e9606e..ccc832b 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.faforever faf-moderator-client - 0.1.0 + 0.1.1 jar faf-moderator-client diff --git a/src/main/java/com/faforever/moderatorclient/api/rest/FafApiCommunicationService.java b/src/main/java/com/faforever/moderatorclient/api/rest/FafApiCommunicationService.java index 4d842c0..69af688 100644 --- a/src/main/java/com/faforever/moderatorclient/api/rest/FafApiCommunicationService.java +++ b/src/main/java/com/faforever/moderatorclient/api/rest/FafApiCommunicationService.java @@ -74,7 +74,7 @@ public FafApiCommunicationService(ResourceConverter resourceConverter, RestTempl @SneakyThrows private void authorize(String username, String password) { - log.debug("Configuring OAuth2 login with user = '{}', password=[hidden]"); + log.debug("Configuring OAuth2 login with user = '{}', password=[hidden]", username); ResourceOwnerPasswordResourceDetails details = new ResourceOwnerPasswordResourceDetails(); details.setClientId(apiClientId); details.setClientSecret(apiClientSecret); diff --git a/src/main/java/com/faforever/moderatorclient/api/rest/domain/MapService.java b/src/main/java/com/faforever/moderatorclient/api/rest/domain/MapService.java index 8e91a18..29d7e9c 100644 --- a/src/main/java/com/faforever/moderatorclient/api/rest/domain/MapService.java +++ b/src/main/java/com/faforever/moderatorclient/api/rest/domain/MapService.java @@ -22,7 +22,8 @@ public MapService(FafApiCommunicationService fafApi) { public List findMaps(String mapNamePattern) { log.debug("Searching for maps with pattern: {}", mapNamePattern); - ElideRouteBuilder routeBuilder = ElideRouteBuilder.of(Map.class); + ElideRouteBuilder routeBuilder = ElideRouteBuilder.of(Map.class) + .addInclude("versions"); if (mapNamePattern != null && mapNamePattern.length() > 0) { routeBuilder.filter(ElideRouteBuilder.qBuilder().string("displayName").eq(mapNamePattern)); diff --git a/src/main/java/com/faforever/moderatorclient/ui/MainController.java b/src/main/java/com/faforever/moderatorclient/ui/MainController.java index 7c8fee8..df8e745 100644 --- a/src/main/java/com/faforever/moderatorclient/ui/MainController.java +++ b/src/main/java/com/faforever/moderatorclient/ui/MainController.java @@ -155,6 +155,7 @@ public void display() { private void refreshLadderPool() { ladderPoolView.getRoot().getChildren().clear(); + ladderPoolView.getSortOrder().clear(); mapService.findMapsInLadder1v1Pool() .forEach(map -> { TreeItem mapItem = new TreeItem<>(new MapTableItemAdapter(map)); @@ -166,24 +167,31 @@ private void refreshLadderPool() { private void refreshAvatars() { avatarTableView.getItems().clear(); + avatarTableView.getSortOrder().clear(); avatarTableView.getItems().addAll( avatarService.getAll() ); } - private void refreshRecentActivity() { + public void refreshRecentActivity() { userRegistrationFeedTableView.getItems().clear(); + userRegistrationFeedTableView.getSortOrder().clear(); userRegistrationFeedTableView.getItems().addAll(userService.findLatestRegistrations()); teamkillFeedTableView.getItems().clear(); + userRegistrationFeedTableView.getSortOrder().clear(); teamkillFeedTableView.getItems().addAll(userService.findLatestTeamkills()); } private void onSelectedUser(ObservableValue observable, Player oldValue, Player newValue) { userNameHistoryTableView.getItems().clear(); + userNameHistoryTableView.getSortOrder().clear(); userBansTableView.getItems().clear(); + userBansTableView.getSortOrder().clear(); userTeamkillsTableView.getItems().clear(); + userTeamkillsTableView.getSortOrder().clear(); userAvatarsTableView.getItems().clear(); + userAvatarsTableView.getSortOrder().clear(); if (newValue != null) { userNameHistoryTableView.getItems().addAll(newValue.getNames()); @@ -197,6 +205,7 @@ private void onSelectedUser(ObservableValue observable, Player public void onUserSearch() { userSearchTableView.getItems().clear(); + userSearchTableView.getSortOrder().clear(); Collection usersFound = Collections.emptyList(); String searchPattern = userSearchTextField.getText(); @@ -233,6 +242,7 @@ public void onAddToLadderPool() { public void onSearchMapVault() { mapVaultView.getRoot().getChildren().clear(); + mapVaultView.getSortOrder().clear(); String mapNamePattern = null; if (filterByMapNameCheckBox.isSelected()) { @@ -245,6 +255,7 @@ public void onSearchMapVault() { public void onSearchAvatars() { avatarTableView.getItems().clear(); + avatarTableView.getSortOrder().clear(); Collection avatars; String pattern = searchAvatarsTextField.getText(); diff --git a/src/main/java/com/faforever/moderatorclient/ui/MapTableItemAdapter.java b/src/main/java/com/faforever/moderatorclient/ui/MapTableItemAdapter.java index 9391d73..8f39832 100644 --- a/src/main/java/com/faforever/moderatorclient/ui/MapTableItemAdapter.java +++ b/src/main/java/com/faforever/moderatorclient/ui/MapTableItemAdapter.java @@ -34,12 +34,8 @@ public String getId() { return isMap() ? map.getId() : mapVersion.getId(); } - public String getName() { - return isMap() ? map.getDisplayName() : null; - } - - public String getDescription() { - return isMapVersion() ? mapVersion.getDescription() : null; + public String getNameOrDescription() { + return isMap() ? map.getDisplayName() : mapVersion.getDescription(); } public ComparableVersion getVersion() { diff --git a/src/main/java/com/faforever/moderatorclient/ui/UrlImageViewTableCell.java b/src/main/java/com/faforever/moderatorclient/ui/UrlImageViewTableCell.java index ce5d245..203caef 100644 --- a/src/main/java/com/faforever/moderatorclient/ui/UrlImageViewTableCell.java +++ b/src/main/java/com/faforever/moderatorclient/ui/UrlImageViewTableCell.java @@ -4,18 +4,21 @@ import javafx.scene.image.Image; import javafx.scene.image.ImageView; +import java.util.Objects; + public class UrlImageViewTableCell extends TableCell { ImageView imageView = new ImageView(); + String currentUrl; @Override protected void updateItem(String item, boolean empty) { super.updateItem(item, empty); if (item != null) { - if (imageView.getImage() == null) { + if (!Objects.equals(currentUrl, item)) { + currentUrl = item; imageView.setImage(new Image(item)); } - setGraphic(imageView); } else { setGraphic(null); diff --git a/src/main/java/com/faforever/moderatorclient/ui/ViewHelper.java b/src/main/java/com/faforever/moderatorclient/ui/ViewHelper.java index 523f5e2..653992c 100644 --- a/src/main/java/com/faforever/moderatorclient/ui/ViewHelper.java +++ b/src/main/java/com/faforever/moderatorclient/ui/ViewHelper.java @@ -12,6 +12,7 @@ import java.net.URL; import java.time.OffsetDateTime; +import java.util.Comparator; import java.util.Optional; import java.util.stream.Stream; @@ -39,6 +40,7 @@ static void bindMapTreeViewToImageView(TreeTableView mapTre static void buildAvatarTableView(TableView tableView) { TableColumn idColumn = new TableColumn<>("ID"); idColumn.setCellValueFactory(new PropertyValueFactory<>("id")); + idColumn.setComparator(Comparator.comparingInt(Integer::parseInt)); idColumn.setMinWidth(50); tableView.getColumns().add(idColumn); @@ -68,6 +70,7 @@ static void buildAvatarTableView(TableView tableView) { static void buildAvatarAssignmentTableView(TableView tableView) { TableColumn idColumn = new TableColumn<>("ID"); idColumn.setCellValueFactory(new PropertyValueFactory<>("id")); + idColumn.setComparator(Comparator.comparingInt(Integer::parseInt)); idColumn.setMinWidth(50); idColumn.setEditable(false); tableView.getColumns().add(idColumn); @@ -79,6 +82,7 @@ static void buildAvatarAssignmentTableView(TableView tableView .map(avatarAssignment -> avatarAssignment.getPlayer().getId()) .orElse("")) ); + userIdColumn.setComparator(Comparator.comparingInt(Integer::parseInt)); userIdColumn.setMinWidth(50); idColumn.setEditable(true); tableView.getColumns().add(userIdColumn); @@ -114,6 +118,7 @@ static void buildAvatarAssignmentTableView(TableView tableView static void buildBanTableView(TableView tableView) { TableColumn idColumn = new TableColumn<>("ID"); idColumn.setCellValueFactory(new PropertyValueFactory<>("id")); + idColumn.setComparator(Comparator.comparingInt(Integer::parseInt)); idColumn.setMinWidth(50); tableView.getColumns().add(idColumn); @@ -179,6 +184,7 @@ static void buildBanTableView(TableView tableView) { static void buildNameHistoryTableView(TableView tableView) { TableColumn idColumn = new TableColumn<>("ID"); idColumn.setCellValueFactory(new PropertyValueFactory<>("id")); + idColumn.setComparator(Comparator.comparingInt(Integer::parseInt)); idColumn.setMinWidth(50); tableView.getColumns().add(idColumn); @@ -196,6 +202,7 @@ static void buildNameHistoryTableView(TableView tableView) { static void buildTeamkillTableView(javafx.scene.control.TableView tableView, boolean showKiller) { TableColumn idColumn = new TableColumn<>("ID"); idColumn.setCellValueFactory(new PropertyValueFactory<>("id")); + idColumn.setComparator(Comparator.comparingInt(Integer::parseInt)); idColumn.setMinWidth(50); tableView.getColumns().add(idColumn); @@ -211,10 +218,11 @@ static void buildTeamkillTableView(javafx.scene.control.TableView tabl victimColumn.setMinWidth(180); tableView.getColumns().add(victimColumn); - TableColumn banStatusColumn = new TableColumn<>("Game ID"); - banStatusColumn.setCellValueFactory(param -> new SimpleObjectProperty<>(param.getValue().getGame().getId())); - banStatusColumn.setMinWidth(100); - tableView.getColumns().add(banStatusColumn); + TableColumn gameIdColumn = new TableColumn<>("Game ID"); + gameIdColumn.setCellValueFactory(param -> new SimpleObjectProperty<>(param.getValue().getGame().getId())); + gameIdColumn.setComparator(Comparator.comparingInt(Integer::parseInt)); + gameIdColumn.setMinWidth(100); + tableView.getColumns().add(gameIdColumn); TableColumn gameTimeColumn = new TableColumn<>("Game Time"); gameTimeColumn.setCellValueFactory(new PropertyValueFactory<>("gameTime")); @@ -230,6 +238,7 @@ static void buildTeamkillTableView(javafx.scene.control.TableView tabl static void buildUserTableView(TableView tableView) { TableColumn idColumn = new TableColumn<>("ID"); idColumn.setCellValueFactory(new PropertyValueFactory<>("id")); + idColumn.setComparator(Comparator.comparingInt(Integer::parseInt)); idColumn.setMinWidth(50); tableView.getColumns().add(idColumn); @@ -251,6 +260,7 @@ static void buildUserTableView(TableView tableView) { static void buildUserAvatarsTableView(TableView tableView) { TableColumn idColumn = new TableColumn<>("Assignment ID"); + idColumn.setComparator(Comparator.comparingInt(Integer::parseInt)); idColumn.setCellValueFactory(new PropertyValueFactory<>("id")); idColumn.setMinWidth(140); tableView.getColumns().add(idColumn); @@ -259,6 +269,7 @@ static void buildUserAvatarsTableView(TableView tableView) { avatarIdColumn.setCellValueFactory(param -> new SimpleObjectProperty<>( param.getValue().getAvatar().getId() )); + avatarIdColumn.setComparator(Comparator.comparingInt(Integer::parseInt)); avatarIdColumn.setMinWidth(50); tableView.getColumns().add(avatarIdColumn); @@ -266,6 +277,7 @@ static void buildUserAvatarsTableView(TableView tableView) { previewColumn.setCellValueFactory(param -> new SimpleObjectProperty<>( param.getValue().getAvatar().getUrl() )); + previewColumn.setCellFactory(param -> new UrlImageViewTableCell<>()); previewColumn.setMinWidth(50); tableView.getColumns().add(previewColumn); @@ -292,26 +304,27 @@ static void buildUserAvatarsTableView(TableView tableView) { static void buildMapTreeView(TreeTableView mapTreeView) { TreeTableColumn idColumn = new TreeTableColumn<>("ID"); idColumn.setCellValueFactory(new TreeItemPropertyValueFactory<>("id")); + idColumn.setComparator(Comparator.comparingInt(Integer::parseInt)); + idColumn.setMinWidth(100); mapTreeView.getColumns().add(idColumn); - TreeTableColumn nameColumn = new TreeTableColumn<>("Name"); - nameColumn.setCellValueFactory(new TreeItemPropertyValueFactory<>("name")); + TreeTableColumn nameColumn = new TreeTableColumn<>("Name / Description"); + nameColumn.setCellValueFactory(new TreeItemPropertyValueFactory<>("nameOrDescription")); + nameColumn.setMinWidth(300); mapTreeView.getColumns().add(nameColumn); TreeTableColumn versionColumn = new TreeTableColumn<>("Version"); versionColumn.setCellValueFactory(new TreeItemPropertyValueFactory<>("version")); mapTreeView.getColumns().add(versionColumn); - TreeTableColumn descriptionColumn = new TreeTableColumn<>("Description"); - descriptionColumn.setCellValueFactory(new TreeItemPropertyValueFactory<>("description")); - mapTreeView.getColumns().add(descriptionColumn); - TreeTableColumn sizeColumn = new TreeTableColumn<>("Size"); sizeColumn.setCellValueFactory(new TreeItemPropertyValueFactory<>("size")); + sizeColumn.setMinWidth(130); mapTreeView.getColumns().add(sizeColumn); TreeTableColumn filenameColumn = new TreeTableColumn<>("Filename"); filenameColumn.setCellValueFactory(new TreeItemPropertyValueFactory<>("filename")); + filenameColumn.setMinWidth(300); mapTreeView.getColumns().add(filenameColumn); TreeTableColumn isRankedColumn = new TreeTableColumn<>("Ranked"); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 1778f57..8b47fa1 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -7,7 +7,7 @@ faforever: max-page-size: 10_000 logging: level: - com.faforever.moderatorclient: INFO + com.faforever.moderatorclient: DEBUG spring: jackson: serialization: diff --git a/src/main/resources/login.fxml b/src/main/resources/login.fxml index fb6c55b..1137177 100644 --- a/src/main/resources/login.fxml +++ b/src/main/resources/login.fxml @@ -6,13 +6,13 @@ - - - + + @@ -30,12 +30,12 @@ GridPane.rowIndex="2"/> - - + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/media/appicon.png b/src/main/resources/media/appicon.png new file mode 100644 index 0000000..dc873cd Binary files /dev/null and b/src/main/resources/media/appicon.png differ