Use MappedObservableList in AuthlibInjectorServersPage
This commit is contained in:
@@ -17,17 +17,18 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl.ui;
|
package org.jackhuang.hmcl.ui;
|
||||||
|
|
||||||
import static java.util.stream.Collectors.toList;
|
|
||||||
import static org.jackhuang.hmcl.ui.FXUtils.loadFXML;
|
import static org.jackhuang.hmcl.ui.FXUtils.loadFXML;
|
||||||
import static org.jackhuang.hmcl.ui.FXUtils.smoothScrolling;
|
import static org.jackhuang.hmcl.ui.FXUtils.smoothScrolling;
|
||||||
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
|
|
||||||
|
import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer;
|
||||||
import org.jackhuang.hmcl.ui.wizard.DecoratorPage;
|
import org.jackhuang.hmcl.ui.wizard.DecoratorPage;
|
||||||
|
import org.jackhuang.hmcl.util.MappedObservableList;
|
||||||
|
|
||||||
import javafx.beans.InvalidationListener;
|
import javafx.beans.binding.Bindings;
|
||||||
import javafx.beans.WeakInvalidationListener;
|
|
||||||
import javafx.beans.property.SimpleStringProperty;
|
import javafx.beans.property.SimpleStringProperty;
|
||||||
import javafx.beans.property.StringProperty;
|
import javafx.beans.property.StringProperty;
|
||||||
|
import javafx.collections.ObservableList;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.scene.control.ScrollPane;
|
import javafx.scene.control.ScrollPane;
|
||||||
import javafx.scene.layout.StackPane;
|
import javafx.scene.layout.StackPane;
|
||||||
@@ -42,26 +43,21 @@ public class AuthlibInjectorServersPage extends StackPane implements DecoratorPa
|
|||||||
@FXML private VBox listPane;
|
@FXML private VBox listPane;
|
||||||
@FXML private StackPane contentPane;
|
@FXML private StackPane contentPane;
|
||||||
|
|
||||||
private InvalidationListener serversListener;
|
private ObservableList<AuthlibInjectorServerItem> serverItems;
|
||||||
|
|
||||||
public AuthlibInjectorServersPage() {
|
public AuthlibInjectorServersPage() {
|
||||||
loadFXML(this, "/assets/fxml/authlib-injector-servers.fxml");
|
loadFXML(this, "/assets/fxml/authlib-injector-servers.fxml");
|
||||||
smoothScrolling(scrollPane);
|
smoothScrolling(scrollPane);
|
||||||
|
|
||||||
serversListener = observable -> updateServersList();
|
serverItems = MappedObservableList.create(CONFIG.getAuthlibInjectorServers(), this::createServerItem);
|
||||||
CONFIG.getAuthlibInjectorServers().addListener(new WeakInvalidationListener(serversListener));
|
Bindings.bindContent(listPane.getChildren(), serverItems);
|
||||||
updateServersList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateServersList() {
|
private AuthlibInjectorServerItem createServerItem(AuthlibInjectorServer server) {
|
||||||
listPane.getChildren().setAll(
|
return new AuthlibInjectorServerItem(server,
|
||||||
CONFIG.getAuthlibInjectorServers().stream()
|
item -> CONFIG.getAuthlibInjectorServers().remove(item.getServer()));
|
||||||
.map(server -> new AuthlibInjectorServerItem(server,
|
|
||||||
item -> CONFIG.getAuthlibInjectorServers().remove(item.getServer())))
|
|
||||||
.collect(toList()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private void onAdd() {
|
private void onAdd() {
|
||||||
Controllers.dialog(new AddAuthlibInjectorServerPane());
|
Controllers.dialog(new AddAuthlibInjectorServerPane());
|
||||||
|
|||||||
Reference in New Issue
Block a user