Add DialogAware & Improve add auth server dialog
This commit is contained in:
@@ -20,6 +20,7 @@ package org.jackhuang.hmcl.ui.account;
|
|||||||
import com.jfoenix.controls.JFXButton;
|
import com.jfoenix.controls.JFXButton;
|
||||||
import com.jfoenix.controls.JFXDialogLayout;
|
import com.jfoenix.controls.JFXDialogLayout;
|
||||||
import com.jfoenix.controls.JFXTextField;
|
import com.jfoenix.controls.JFXTextField;
|
||||||
|
|
||||||
import javafx.beans.binding.Bindings;
|
import javafx.beans.binding.Bindings;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
@@ -29,6 +30,7 @@ import org.jackhuang.hmcl.task.Schedulers;
|
|||||||
import org.jackhuang.hmcl.task.Task;
|
import org.jackhuang.hmcl.task.Task;
|
||||||
import org.jackhuang.hmcl.ui.animation.ContainerAnimations;
|
import org.jackhuang.hmcl.ui.animation.ContainerAnimations;
|
||||||
import org.jackhuang.hmcl.ui.animation.TransitionHandler;
|
import org.jackhuang.hmcl.ui.animation.TransitionHandler;
|
||||||
|
import org.jackhuang.hmcl.ui.construct.DialogAware;
|
||||||
import org.jackhuang.hmcl.ui.construct.DialogCloseEvent;
|
import org.jackhuang.hmcl.ui.construct.DialogCloseEvent;
|
||||||
import org.jackhuang.hmcl.ui.construct.SpinnerPane;
|
import org.jackhuang.hmcl.ui.construct.SpinnerPane;
|
||||||
import org.jackhuang.hmcl.util.io.NetworkUtils;
|
import org.jackhuang.hmcl.util.io.NetworkUtils;
|
||||||
@@ -37,9 +39,10 @@ import java.io.IOException;
|
|||||||
|
|
||||||
import static org.jackhuang.hmcl.setting.ConfigHolder.config;
|
import static org.jackhuang.hmcl.setting.ConfigHolder.config;
|
||||||
import static org.jackhuang.hmcl.ui.FXUtils.loadFXML;
|
import static org.jackhuang.hmcl.ui.FXUtils.loadFXML;
|
||||||
|
import static org.jackhuang.hmcl.util.Lang.thread;
|
||||||
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
|
|
||||||
public class AddAuthlibInjectorServerPane extends StackPane {
|
public class AddAuthlibInjectorServerPane extends StackPane implements DialogAware {
|
||||||
|
|
||||||
@FXML private StackPane addServerContainer;
|
@FXML private StackPane addServerContainer;
|
||||||
@FXML private Label lblServerUrl;
|
@FXML private Label lblServerUrl;
|
||||||
@@ -70,6 +73,14 @@ public class AddAuthlibInjectorServerPane extends StackPane {
|
|||||||
btnAddNext.disableProperty().bind(
|
btnAddNext.disableProperty().bind(
|
||||||
Bindings.createBooleanBinding(txtServerUrl::validate, txtServerUrl.textProperty()).not());
|
Bindings.createBooleanBinding(txtServerUrl::validate, txtServerUrl.textProperty()).not());
|
||||||
nextPane.hideSpinner();
|
nextPane.hideSpinner();
|
||||||
|
|
||||||
|
txtServerUrl.setText("https://");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDialogShown() {
|
||||||
|
txtServerUrl.requestFocus();
|
||||||
|
txtServerUrl.selectEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String fixInputUrl(String url) {
|
private String fixInputUrl(String url) {
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ import javafx.animation.KeyValue;
|
|||||||
import javafx.animation.Timeline;
|
import javafx.animation.Timeline;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.beans.binding.Bindings;
|
import javafx.beans.binding.Bindings;
|
||||||
|
import javafx.beans.value.ChangeListener;
|
||||||
|
import javafx.beans.value.ObservableValue;
|
||||||
import javafx.event.EventHandler;
|
import javafx.event.EventHandler;
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
import javafx.scene.Cursor;
|
import javafx.scene.Cursor;
|
||||||
@@ -303,6 +305,23 @@ public class DecoratorController {
|
|||||||
EventHandler<DialogCloseEvent> handler = event -> closeDialog(node);
|
EventHandler<DialogCloseEvent> handler = event -> closeDialog(node);
|
||||||
node.getProperties().put(PROPERTY_DIALOG_CLOSE_HANDLER, handler);
|
node.getProperties().put(PROPERTY_DIALOG_CLOSE_HANDLER, handler);
|
||||||
node.addEventHandler(DialogCloseEvent.CLOSE, handler);
|
node.addEventHandler(DialogCloseEvent.CLOSE, handler);
|
||||||
|
|
||||||
|
if (node instanceof DialogAware) {
|
||||||
|
DialogAware dialogAware = (DialogAware) node;
|
||||||
|
if (dialog.isVisible()) {
|
||||||
|
dialogAware.onDialogShown();
|
||||||
|
} else {
|
||||||
|
dialog.visibleProperty().addListener(new ChangeListener<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
|
||||||
|
if (newValue) {
|
||||||
|
dialogAware.onDialogShown();
|
||||||
|
observable.removeListener(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
|||||||
Reference in New Issue
Block a user