mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-16 07:16:27 -04:00
Move add authentication server dialog to a new file
This commit is contained in:
parent
f259601397
commit
d0b994fa9d
@ -0,0 +1,131 @@
|
|||||||
|
/*
|
||||||
|
* Hello Minecraft! Launcher.
|
||||||
|
* Copyright (C) 2018 huangyuhui <huanghongxun2008@126.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see {http://www.gnu.org/licenses/}.
|
||||||
|
*/
|
||||||
|
package org.jackhuang.hmcl.ui;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.ui.FXUtils.loadFXML;
|
||||||
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer;
|
||||||
|
import org.jackhuang.hmcl.setting.Settings;
|
||||||
|
import org.jackhuang.hmcl.task.Schedulers;
|
||||||
|
import org.jackhuang.hmcl.task.Task;
|
||||||
|
import org.jackhuang.hmcl.ui.animation.ContainerAnimations;
|
||||||
|
import org.jackhuang.hmcl.ui.animation.TransitionHandler;
|
||||||
|
import org.jackhuang.hmcl.ui.construct.SpinnerPane;
|
||||||
|
import org.jackhuang.hmcl.util.NetworkUtils;
|
||||||
|
|
||||||
|
import com.jfoenix.controls.JFXButton;
|
||||||
|
import com.jfoenix.controls.JFXDialog;
|
||||||
|
import com.jfoenix.controls.JFXDialogLayout;
|
||||||
|
import com.jfoenix.controls.JFXTextField;
|
||||||
|
|
||||||
|
import javafx.beans.binding.Bindings;
|
||||||
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.scene.control.Label;
|
||||||
|
import javafx.scene.layout.StackPane;
|
||||||
|
|
||||||
|
public class AddAuthlibInjectorServerDialog extends JFXDialog {
|
||||||
|
|
||||||
|
@FXML private StackPane addServerContainer;
|
||||||
|
@FXML private Label lblServerUrl;
|
||||||
|
@FXML private Label lblServerName;
|
||||||
|
@FXML private Label lblCreationWarning;
|
||||||
|
@FXML private Label lblServerWarning;
|
||||||
|
@FXML private JFXTextField txtServerUrl;
|
||||||
|
@FXML private JFXDialogLayout addServerPane;
|
||||||
|
@FXML private JFXDialogLayout confirmServerPane;
|
||||||
|
@FXML private SpinnerPane nextPane;
|
||||||
|
@FXML private JFXButton btnAddNext;
|
||||||
|
|
||||||
|
private TransitionHandler transitionHandler;
|
||||||
|
|
||||||
|
private AuthlibInjectorServer serverBeingAdded;
|
||||||
|
|
||||||
|
public AddAuthlibInjectorServerDialog() {
|
||||||
|
loadFXML(this, "/assets/fxml/authlib-injector-server-add.fxml");
|
||||||
|
transitionHandler = new TransitionHandler(addServerContainer);
|
||||||
|
transitionHandler.setContent(addServerPane, ContainerAnimations.NONE.getAnimationProducer());
|
||||||
|
|
||||||
|
btnAddNext.disableProperty().bind(
|
||||||
|
Bindings.createBooleanBinding(txtServerUrl::validate, txtServerUrl.textProperty()).not());
|
||||||
|
nextPane.hideSpinner();
|
||||||
|
}
|
||||||
|
|
||||||
|
private String fixInputUrl(String url) {
|
||||||
|
if (!url.endsWith("/")) {
|
||||||
|
url += "/";
|
||||||
|
}
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String resolveFetchExceptionMessage(Throwable exception) {
|
||||||
|
if (exception instanceof IOException) {
|
||||||
|
return i18n("account.failed.connect_injector_server");
|
||||||
|
} else {
|
||||||
|
return exception.getClass() + ": " + exception.getLocalizedMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private void onAddCancel() {
|
||||||
|
this.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private void onAddNext() {
|
||||||
|
String url = fixInputUrl(txtServerUrl.getText());
|
||||||
|
|
||||||
|
nextPane.showSpinner();
|
||||||
|
addServerPane.setDisable(true);
|
||||||
|
|
||||||
|
Task.of(() -> {
|
||||||
|
serverBeingAdded = AuthlibInjectorServer.fetchServerInfo(url);
|
||||||
|
}).finalized(Schedulers.javafx(), (variables, isDependentsSucceeded) -> {
|
||||||
|
addServerPane.setDisable(false);
|
||||||
|
nextPane.hideSpinner();
|
||||||
|
|
||||||
|
if (isDependentsSucceeded) {
|
||||||
|
lblServerName.setText(serverBeingAdded.getName());
|
||||||
|
lblServerUrl.setText(serverBeingAdded.getUrl());
|
||||||
|
|
||||||
|
lblServerWarning.setVisible("http".equals(NetworkUtils.toURL(serverBeingAdded.getUrl()).getProtocol()));
|
||||||
|
|
||||||
|
transitionHandler.setContent(confirmServerPane, ContainerAnimations.SWIPE_LEFT.getAnimationProducer());
|
||||||
|
} else {
|
||||||
|
lblCreationWarning.setText(resolveFetchExceptionMessage(variables.<Exception>get("lastException")));
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private void onAddPrev() {
|
||||||
|
transitionHandler.setContent(addServerPane, ContainerAnimations.SWIPE_RIGHT.getAnimationProducer());
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private void onAddFinish() {
|
||||||
|
if (!Settings.INSTANCE.SETTINGS.authlibInjectorServers.contains(serverBeingAdded)) {
|
||||||
|
Settings.INSTANCE.SETTINGS.authlibInjectorServers.add(serverBeingAdded);
|
||||||
|
}
|
||||||
|
this.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -17,137 +17,57 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl.ui;
|
package org.jackhuang.hmcl.ui;
|
||||||
|
|
||||||
import com.jfoenix.controls.*;
|
import static java.util.stream.Collectors.toList;
|
||||||
|
import static org.jackhuang.hmcl.ui.FXUtils.loadFXML;
|
||||||
|
import static org.jackhuang.hmcl.ui.FXUtils.smoothScrolling;
|
||||||
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
|
|
||||||
|
import org.jackhuang.hmcl.setting.Settings;
|
||||||
|
import org.jackhuang.hmcl.ui.wizard.DecoratorPage;
|
||||||
|
|
||||||
|
import javafx.beans.InvalidationListener;
|
||||||
|
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.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.scene.control.Label;
|
|
||||||
import javafx.scene.control.ScrollPane;
|
import javafx.scene.control.ScrollPane;
|
||||||
import javafx.scene.layout.StackPane;
|
import javafx.scene.layout.StackPane;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
|
|
||||||
import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer;
|
|
||||||
import org.jackhuang.hmcl.setting.Settings;
|
|
||||||
import org.jackhuang.hmcl.task.Schedulers;
|
|
||||||
import org.jackhuang.hmcl.task.Task;
|
|
||||||
import org.jackhuang.hmcl.ui.animation.ContainerAnimations;
|
|
||||||
import org.jackhuang.hmcl.ui.animation.TransitionHandler;
|
|
||||||
import org.jackhuang.hmcl.ui.construct.SpinnerPane;
|
|
||||||
import org.jackhuang.hmcl.ui.wizard.DecoratorPage;
|
|
||||||
import org.jackhuang.hmcl.util.NetworkUtils;
|
|
||||||
import static java.util.stream.Collectors.toList;
|
|
||||||
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
public class AuthlibInjectorServersPage extends StackPane implements DecoratorPage {
|
public class AuthlibInjectorServersPage extends StackPane implements DecoratorPage {
|
||||||
private final StringProperty title = new SimpleStringProperty(this, "title", i18n("account.injector.server"));
|
private final StringProperty title = new SimpleStringProperty(this, "title", i18n("account.injector.server"));
|
||||||
|
|
||||||
@FXML private ScrollPane scrollPane;
|
@FXML private ScrollPane scrollPane;
|
||||||
@FXML private StackPane addServerContainer;
|
|
||||||
@FXML private Label lblServerUrl;
|
|
||||||
@FXML private Label lblServerName;
|
|
||||||
@FXML private Label lblCreationWarning;
|
|
||||||
@FXML private Label lblServerWarning;
|
|
||||||
@FXML private VBox listPane;
|
@FXML private VBox listPane;
|
||||||
@FXML private JFXTextField txtServerUrl;
|
|
||||||
@FXML private JFXDialogLayout addServerPane;
|
|
||||||
@FXML private JFXDialogLayout confirmServerPane;
|
|
||||||
@FXML private JFXDialog dialog;
|
|
||||||
@FXML private StackPane contentPane;
|
@FXML private StackPane contentPane;
|
||||||
@FXML private SpinnerPane nextPane;
|
|
||||||
@FXML private JFXButton btnAddNext;
|
|
||||||
|
|
||||||
private final TransitionHandler transitionHandler;
|
private InvalidationListener serversListener;
|
||||||
|
|
||||||
private AuthlibInjectorServer serverBeingAdded;
|
public AuthlibInjectorServersPage() {
|
||||||
|
loadFXML(this, "/assets/fxml/authlib-injector-servers.fxml");
|
||||||
|
smoothScrolling(scrollPane);
|
||||||
|
|
||||||
{
|
serversListener = observable -> updateServersList();
|
||||||
FXUtils.loadFXML(this, "/assets/fxml/authlib-injector-servers.fxml");
|
Settings.SETTINGS.authlibInjectorServers.addListener(new WeakInvalidationListener(serversListener));
|
||||||
FXUtils.smoothScrolling(scrollPane);
|
updateServersList();
|
||||||
transitionHandler = new TransitionHandler(addServerContainer);
|
|
||||||
|
|
||||||
getChildren().remove(dialog);
|
|
||||||
dialog.setDialogContainer(this);
|
|
||||||
|
|
||||||
txtServerUrl.textProperty().addListener((a, b, newValue) ->
|
|
||||||
btnAddNext.setDisable(!txtServerUrl.validate()));
|
|
||||||
|
|
||||||
reload();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeServer(AuthlibInjectorServerItem item) {
|
private void updateServersList() {
|
||||||
Settings.SETTINGS.authlibInjectorServers.remove(item.getServer());
|
|
||||||
reload();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void reload() {
|
|
||||||
listPane.getChildren().setAll(
|
listPane.getChildren().setAll(
|
||||||
Settings.SETTINGS.authlibInjectorServers.stream()
|
Settings.SETTINGS.authlibInjectorServers.stream()
|
||||||
.map(server -> new AuthlibInjectorServerItem(server, this::removeServer))
|
.map(server -> new AuthlibInjectorServerItem(server,
|
||||||
|
item -> Settings.SETTINGS.authlibInjectorServers.remove(item.getServer())))
|
||||||
.collect(toList()));
|
.collect(toList()));
|
||||||
if (Settings.SETTINGS.authlibInjectorServers.isEmpty()) {
|
|
||||||
onAdd();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private void onAdd() {
|
private void onAdd() {
|
||||||
transitionHandler.setContent(addServerPane, ContainerAnimations.NONE.getAnimationProducer());
|
AddAuthlibInjectorServerDialog dialog = new AddAuthlibInjectorServerDialog();
|
||||||
txtServerUrl.setText("");
|
dialog.setDialogContainer(this);
|
||||||
txtServerUrl.resetValidation();
|
|
||||||
lblCreationWarning.setText("");
|
|
||||||
addServerPane.setDisable(false);
|
|
||||||
nextPane.hideSpinner();
|
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
|
||||||
private void onAddCancel() {
|
|
||||||
dialog.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private void onAddNext() {
|
|
||||||
String url = fixInputUrl(txtServerUrl.getText());
|
|
||||||
|
|
||||||
nextPane.showSpinner();
|
|
||||||
addServerPane.setDisable(true);
|
|
||||||
|
|
||||||
Task.of(() -> {
|
|
||||||
serverBeingAdded = AuthlibInjectorServer.fetchServerInfo(url);
|
|
||||||
}).finalized(Schedulers.javafx(), (variables, isDependentsSucceeded) -> {
|
|
||||||
nextPane.hideSpinner();
|
|
||||||
addServerPane.setDisable(false);
|
|
||||||
|
|
||||||
if (isDependentsSucceeded) {
|
|
||||||
lblServerName.setText(serverBeingAdded.getName());
|
|
||||||
lblServerUrl.setText(serverBeingAdded.getUrl());
|
|
||||||
|
|
||||||
lblServerWarning.setVisible("http".equals(NetworkUtils.toURL(serverBeingAdded.getUrl()).getProtocol()));
|
|
||||||
|
|
||||||
transitionHandler.setContent(confirmServerPane, ContainerAnimations.SWIPE_LEFT.getAnimationProducer());
|
|
||||||
} else {
|
|
||||||
lblCreationWarning.setText(resolveFetchExceptionMessage(variables.<Exception>get("lastException")));
|
|
||||||
}
|
|
||||||
}).start();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private void onAddPrev() {
|
|
||||||
transitionHandler.setContent(addServerPane, ContainerAnimations.SWIPE_RIGHT.getAnimationProducer());
|
|
||||||
}
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private void onAddFinish() {
|
|
||||||
if (!Settings.INSTANCE.SETTINGS.authlibInjectorServers.contains(serverBeingAdded)) {
|
|
||||||
Settings.INSTANCE.SETTINGS.authlibInjectorServers.add(serverBeingAdded);
|
|
||||||
}
|
|
||||||
reload();
|
|
||||||
dialog.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return title.get();
|
return title.get();
|
||||||
}
|
}
|
||||||
@ -160,19 +80,4 @@ public class AuthlibInjectorServersPage extends StackPane implements DecoratorPa
|
|||||||
public void setTitle(String title) {
|
public void setTitle(String title) {
|
||||||
this.title.set(title);
|
this.title.set(title);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String fixInputUrl(String url) {
|
|
||||||
if (!url.endsWith("/")) {
|
|
||||||
url += "/";
|
|
||||||
}
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String resolveFetchExceptionMessage(Throwable exception) {
|
|
||||||
if (exception instanceof IOException) {
|
|
||||||
return i18n("account.failed.connect_injector_server");
|
|
||||||
} else {
|
|
||||||
return exception.getClass() + ": " + exception.getLocalizedMessage();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,66 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import java.lang.String?>
|
||||||
|
<?import javafx.scene.control.*?>
|
||||||
|
<?import javafx.scene.layout.*?>
|
||||||
|
<?import com.jfoenix.controls.*?>
|
||||||
|
<?import org.jackhuang.hmcl.ui.construct.URLValidator?>
|
||||||
|
<?import org.jackhuang.hmcl.ui.construct.SpinnerPane?>
|
||||||
|
|
||||||
|
<fx:root xmlns="http://javafx.com/javafx"
|
||||||
|
xmlns:fx="http://javafx.com/fxml"
|
||||||
|
type="JFXDialog">
|
||||||
|
<StackPane>
|
||||||
|
<StackPane fx:id="addServerContainer">
|
||||||
|
<JFXDialogLayout fx:id="addServerPane">
|
||||||
|
<heading>
|
||||||
|
<Label text="%account.injector.add" />
|
||||||
|
</heading>
|
||||||
|
<body>
|
||||||
|
<JFXTextField fx:id="txtServerUrl" promptText="%account.injector.server_url">
|
||||||
|
<validators>
|
||||||
|
<URLValidator message="%input.url">
|
||||||
|
<protocols>
|
||||||
|
<String fx:value="http" />
|
||||||
|
<String fx:value="https" />
|
||||||
|
</protocols>
|
||||||
|
</URLValidator>
|
||||||
|
</validators>
|
||||||
|
</JFXTextField>
|
||||||
|
</body>
|
||||||
|
<actions>
|
||||||
|
<Label fx:id="lblCreationWarning" />
|
||||||
|
<JFXButton onMouseClicked="#onAddCancel" text="%button.cancel" styleClass="dialog-cancel" />
|
||||||
|
<SpinnerPane fx:id="nextPane" styleClass="small-spinner-pane">
|
||||||
|
<JFXButton fx:id="btnAddNext" onMouseClicked="#onAddNext" text="%wizard.next" styleClass="dialog-accept" />
|
||||||
|
</SpinnerPane>
|
||||||
|
</actions>
|
||||||
|
</JFXDialogLayout>
|
||||||
|
|
||||||
|
<JFXDialogLayout fx:id="confirmServerPane">
|
||||||
|
<heading>
|
||||||
|
<Label text="%account.injector.add" />
|
||||||
|
</heading>
|
||||||
|
<body>
|
||||||
|
<GridPane vgap="15" hgap="15" style="-fx-padding: 15 0 0 0;">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints maxWidth="100" />
|
||||||
|
<ColumnConstraints />
|
||||||
|
</columnConstraints>
|
||||||
|
<Label text="%account.injector.server_url" GridPane.columnIndex="0" GridPane.rowIndex="0" />
|
||||||
|
<Label text="%account.injector.server_name" GridPane.columnIndex="0" GridPane.rowIndex="1" />
|
||||||
|
<Label fx:id="lblServerUrl" GridPane.columnIndex="1" GridPane.rowIndex="0" />
|
||||||
|
<Label fx:id="lblServerName" GridPane.columnIndex="1" GridPane.rowIndex="1" />
|
||||||
|
<Label fx:id="lblServerWarning" text="%account.injector.http" style="-fx-text-fill: red;"
|
||||||
|
GridPane.rowIndex="2" GridPane.columnSpan="2" GridPane.columnIndex="0" />
|
||||||
|
</GridPane>
|
||||||
|
</body>
|
||||||
|
<actions>
|
||||||
|
<JFXButton onMouseClicked="#onAddPrev" text="%wizard.prev" styleClass="dialog-cancel" />
|
||||||
|
<JFXButton onMouseClicked="#onAddCancel" text="%button.cancel" styleClass="dialog-cancel" />
|
||||||
|
<JFXButton onMouseClicked="#onAddFinish" text="%wizard.finish" styleClass="dialog-accept" />
|
||||||
|
</actions>
|
||||||
|
</JFXDialogLayout>
|
||||||
|
</StackPane>
|
||||||
|
</StackPane>
|
||||||
|
</fx:root>
|
@ -1,11 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
<?import com.jfoenix.controls.*?>
|
|
||||||
<?import javafx.scene.control.*?>
|
<?import javafx.scene.control.*?>
|
||||||
<?import javafx.scene.layout.*?>
|
<?import javafx.scene.layout.*?>
|
||||||
<?import org.jackhuang.hmcl.ui.construct.URLValidator?>
|
<?import com.jfoenix.controls.*?>
|
||||||
<?import java.lang.String?>
|
|
||||||
<?import org.jackhuang.hmcl.ui.construct.SpinnerPane?>
|
|
||||||
<fx:root xmlns="http://javafx.com/javafx"
|
<fx:root xmlns="http://javafx.com/javafx"
|
||||||
xmlns:fx="http://javafx.com/fxml"
|
xmlns:fx="http://javafx.com/fxml"
|
||||||
type="StackPane">
|
type="StackPane">
|
||||||
@ -23,61 +21,4 @@
|
|||||||
</JFXButton>
|
</JFXButton>
|
||||||
</VBox>
|
</VBox>
|
||||||
</StackPane>
|
</StackPane>
|
||||||
|
|
||||||
<JFXDialog fx:id="dialog">
|
|
||||||
<StackPane>
|
|
||||||
<StackPane fx:id="addServerContainer">
|
|
||||||
<JFXDialogLayout fx:id="addServerPane">
|
|
||||||
<heading>
|
|
||||||
<Label text="%account.injector.add" />
|
|
||||||
</heading>
|
|
||||||
<body>
|
|
||||||
<JFXTextField fx:id="txtServerUrl" promptText="%account.injector.server_url">
|
|
||||||
<validators>
|
|
||||||
<URLValidator message="%input.url">
|
|
||||||
<protocols>
|
|
||||||
<String fx:value="http" />
|
|
||||||
<String fx:value="https" />
|
|
||||||
</protocols>
|
|
||||||
</URLValidator>
|
|
||||||
</validators>
|
|
||||||
</JFXTextField>
|
|
||||||
</body>
|
|
||||||
<actions>
|
|
||||||
<Label fx:id="lblCreationWarning" />
|
|
||||||
<JFXButton onMouseClicked="#onAddCancel" text="%button.cancel" styleClass="dialog-cancel" />
|
|
||||||
<SpinnerPane fx:id="nextPane" styleClass="small-spinner-pane">
|
|
||||||
<JFXButton fx:id="btnAddNext" onMouseClicked="#onAddNext" text="%wizard.next" styleClass="dialog-accept" />
|
|
||||||
</SpinnerPane>
|
|
||||||
</actions>
|
|
||||||
</JFXDialogLayout>
|
|
||||||
|
|
||||||
<JFXDialogLayout fx:id="confirmServerPane">
|
|
||||||
<heading>
|
|
||||||
<Label text="%account.injector.add" />
|
|
||||||
</heading>
|
|
||||||
<body>
|
|
||||||
<GridPane vgap="15" hgap="15" style="-fx-padding: 15 0 0 0;">
|
|
||||||
<columnConstraints>
|
|
||||||
<ColumnConstraints maxWidth="100" />
|
|
||||||
<ColumnConstraints />
|
|
||||||
</columnConstraints>
|
|
||||||
<Label text="%account.injector.server_url" GridPane.columnIndex="0" GridPane.rowIndex="0" />
|
|
||||||
<Label text="%account.injector.server_name" GridPane.columnIndex="0" GridPane.rowIndex="1" />
|
|
||||||
|
|
||||||
<Label fx:id="lblServerUrl" GridPane.columnIndex="1" GridPane.rowIndex="0" />
|
|
||||||
<Label fx:id="lblServerName" GridPane.columnIndex="1" GridPane.rowIndex="1" />
|
|
||||||
|
|
||||||
<Label fx:id="lblServerWarning" text="%account.injector.http" style="-fx-text-fill: red;" GridPane.rowIndex="2" GridPane.columnSpan="2" GridPane.columnIndex="0" />
|
|
||||||
</GridPane>
|
|
||||||
</body>
|
|
||||||
<actions>
|
|
||||||
<JFXButton onMouseClicked="#onAddPrev" text="%wizard.prev" styleClass="dialog-cancel" />
|
|
||||||
<JFXButton onMouseClicked="#onAddCancel" text="%button.cancel" styleClass="dialog-cancel" />
|
|
||||||
<JFXButton onMouseClicked="#onAddFinish" text="%wizard.finish" styleClass="dialog-accept" />
|
|
||||||
</actions>
|
|
||||||
</JFXDialogLayout>
|
|
||||||
</StackPane>
|
|
||||||
</StackPane>
|
|
||||||
</JFXDialog>
|
|
||||||
</fx:root>
|
</fx:root>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user