try javafx static attributes

This commit is contained in:
huangyuhui
2018-02-14 22:19:25 +08:00
parent eeccdbca72
commit 484ce6c895
24 changed files with 135 additions and 92 deletions

View File

@@ -67,9 +67,6 @@ public final class AccountItem extends StackPane {
FXUtils.loadFXML(this, "/assets/fxml/account-item.fxml");
FXUtils.limitWidth(this, 160);
FXUtils.limitHeight(this, 156);
setEffect(new DropShadow(BlurType.GAUSSIAN, Color.rgb(0, 0, 0, 0.26), 5.0, 0.12, -0.5, 1.0));
chkSelected.setToggleGroup(toggleGroup);

View File

@@ -73,8 +73,6 @@ public final class AccountsPage extends StackPane implements DecoratorPage {
dialog.setDialogContainer(this);
FXUtils.smoothScrolling(scrollPane);
FXUtils.setValidateWhileTextChanged(txtUsername);
FXUtils.setValidateWhileTextChanged(txtPassword);
cboType.getItems().setAll(Main.i18n("account.methods.offline"), Main.i18n("account.methods.yggdrasil"));
cboType.getSelectionModel().selectedIndexProperty().addListener((a, b, newValue) -> {

View File

@@ -180,9 +180,6 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza
animationHandler = new TransitionHandler(contentPlaceHolder);
FXUtils.setOverflowHidden((Pane) lookup("#contentPlaceHolderRoot"));
FXUtils.setOverflowHidden(drawerWrapper);
loadBackground();
}
@@ -487,7 +484,7 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza
if (content instanceof Region) {
((Region) content).setMinSize(0, 0);
FXUtils.setOverflowHidden((Region) content);
FXUtils.setOverflowHidden((Region) content, true);
}
if (content instanceof Refreshable)

View File

@@ -38,6 +38,7 @@ import javafx.scene.image.ImageView;
import javafx.scene.image.WritableImage;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.ScrollEvent;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Region;
import javafx.scene.shape.Rectangle;
import javafx.util.Duration;
@@ -45,6 +46,7 @@ import org.jackhuang.hmcl.Main;
import org.jackhuang.hmcl.util.Lang;
import org.jackhuang.hmcl.util.Logging;
import org.jackhuang.hmcl.util.OperatingSystem;
import org.jackhuang.hmcl.util.Pair;
import java.io.File;
import java.io.IOException;
@@ -92,35 +94,79 @@ public final class FXUtils {
});
}
public static void setValidateWhileTextChanged(JFXTextField field) {
field.textProperty().addListener(o -> field.validate());
field.validate();
public static <T> void addListener(Node node, String key, ObservableValue<T> value, Consumer<T> callback) {
ChangeListener<T> listener = (a, b, newValue) -> callback.accept(newValue);
node.getProperties().put(key, new Pair<>(callback, listener));
value.addListener(listener);
}
public static void setValidateWhileTextChanged(JFXPasswordField field) {
field.textProperty().addListener(o -> field.validate());
field.validate();
public static <T> void removeListener(Node node, String key) {
if (node.getProperties().get(key) instanceof Pair) {
Pair pair = (Pair) node.getProperties().get(key);
if (pair.getValue() instanceof ObservableValue && pair.getKey() instanceof ChangeListener) {
((ObservableValue) pair.getValue()).removeListener((ChangeListener) pair.getKey());
}
}
}
public static void setOverflowHidden(Region region) {
Rectangle rectangle = new Rectangle();
rectangle.widthProperty().bind(region.widthProperty());
rectangle.heightProperty().bind(region.heightProperty());
region.setClip(rectangle);
public static void setValidateWhileTextChanged(Node field, boolean validate) {
if (field instanceof JFXTextField) {
if (validate) {
addListener(field, "FXUtils.validation", ((JFXTextField) field).textProperty(), o -> ((JFXTextField) field).validate());
} else {
removeListener(field, "FXUtils.validation");
}
((JFXTextField) field).validate();
} else if (field instanceof JFXPasswordField) {
if (validate) {
addListener(field, "FXUtils.validation", ((JFXPasswordField) field).textProperty(), o -> ((JFXPasswordField) field).validate());
} else {
removeListener(field, "FXUtils.validation");
}
((JFXPasswordField) field).validate();
} else
throw new IllegalArgumentException("Only JFXTextField and JFXPasswordField allowed");
}
public static void limitWidth(Region region, double width) {
public static boolean getValidateWhileTextChanged(Node field) {
return field.getProperties().containsKey("FXUtils.validation");
}
public static void setOverflowHidden(Region region, boolean hidden) {
if (hidden) {
Rectangle rectangle = new Rectangle();
rectangle.widthProperty().bind(region.widthProperty());
rectangle.heightProperty().bind(region.heightProperty());
region.setClip(rectangle);
} else {
region.setClip(null);
}
}
public static boolean getOverflowHidden(Region region) {
return region.getClip() != null;
}
public static void setLimitWidth(Region region, double width) {
region.setMaxWidth(width);
region.setMinWidth(width);
region.setPrefWidth(width);
}
public static void limitHeight(Region region, double height) {
public static double getLimitWidth(Region region) {
return region.getMaxWidth();
}
public static void setLimitHeight(Region region, double height) {
region.setMaxHeight(height);
region.setMinHeight(height);
region.setPrefHeight(height);
}
public static double getLimitHeight(Region region) {
return region.getMaxHeight();
}
public static void smoothScrolling(ScrollPane scrollPane) {
JFXScrollPane.smoothScrolling(scrollPane);
}

View File

@@ -52,7 +52,7 @@ public final class SettingsPage extends StackPane implements DecoratorPage {
@FXML
private JFXTextField txtProxyUsername;
@FXML
private JFXTextField txtProxyPassword;
private JFXPasswordField txtProxyPassword;
@FXML
private JFXTextField txtFontSize;
@FXML
@@ -95,9 +95,6 @@ public final class SettingsPage extends StackPane implements DecoratorPage {
{
FXUtils.loadFXML(this, "/assets/fxml/setting.fxml");
FXUtils.limitWidth(cboLanguage, 400);
FXUtils.limitWidth(cboDownloadSource, 400);
FXUtils.smoothScrolling(scroll);
txtProxyHost.setText(Settings.INSTANCE.getProxyHost());

View File

@@ -65,8 +65,6 @@ public final class VersionItem extends StackPane {
public VersionItem() {
FXUtils.loadFXML(this, "/assets/fxml/version-item.fxml");
FXUtils.limitWidth(this, 160);
FXUtils.limitHeight(this, 156);
setEffect(new DropShadow(BlurType.GAUSSIAN, Color.rgb(0, 0, 0, 0.26), 5.0, 0.12, -1.0, 1.0));
btnSettings.setGraphic(SVG.gear("black", 15, 15));
btnUpdate.setGraphic(SVG.update("black", 15, 15));

View File

@@ -46,8 +46,6 @@ public final class VersionListItem extends StackPane {
lblGameVersion.setText(gameVersion);
FXUtils.limitSize(imageView, 32, 32);
FXUtils.limitWidth(imageViewContainer, 32);
FXUtils.limitHeight(imageViewContainer, 32);
}
@FXML

View File

@@ -85,28 +85,6 @@ public final class VersionSettingsController {
FXUtils.smoothScrolling(scroll);
double limitWidth = 300;
FXUtils.limitWidth(txtMaxMemory, limitWidth);
FXUtils.limitWidth(cboLauncherVisibility, limitWidth);
double limitHeight = 10;
FXUtils.limitHeight(chkNoJVMArgs, limitHeight);
FXUtils.limitHeight(chkNoCommon, limitHeight);
FXUtils.limitHeight(chkNoGameCheck, limitHeight);
FXUtils.limitHeight(chkShowLogs, limitHeight);
NumberValidator nonnull = new NumberValidator("Must be a number.", false);
NumberValidator nullable = new NumberValidator("Must be a number.", true);
txtWidth.setValidators(nonnull);
FXUtils.setValidateWhileTextChanged(txtWidth);
txtHeight.setValidators(nonnull);
FXUtils.setValidateWhileTextChanged(txtHeight);
txtMaxMemory.setValidators(nonnull);
FXUtils.setValidateWhileTextChanged(txtMaxMemory);
txtMetaspace.setValidators(nullable);
FXUtils.setValidateWhileTextChanged(txtMetaspace);
Task.of(variables -> {
variables.set("list", JavaVersion.getJREs().values().stream().map(javaVersion ->
javaItem.createChildren(javaVersion.getVersion(), javaVersion.getBinary().getAbsolutePath(), javaVersion)

View File

@@ -103,7 +103,7 @@ public class ComponentListCell extends StackPane {
VBox container = new VBox();
container.setStyle("-fx-padding: 8 0 0 0;");
FXUtils.limitHeight(container, 0);
FXUtils.setLimitHeight(container, 0);
Rectangle clipRect = new Rectangle();
clipRect.widthProperty().bind(container.widthProperty());
clipRect.heightProperty().bind(container.heightProperty());

View File

@@ -96,7 +96,7 @@ public class MultiFileItem extends ComponentList {
right.setSpacing(3);
right.getChildren().addAll(txtCustom, btnSelect);
custom.setRight(right);
FXUtils.limitHeight(custom, 20);
FXUtils.setLimitHeight(custom, 20);
pane.setStyle("-fx-padding: 0 0 10 0;");
pane.setSpacing(8);
@@ -122,7 +122,7 @@ public class MultiFileItem extends ComponentList {
public Node createChildren(String title, String subtitle, Object userData) {
BorderPane pane = new BorderPane();
pane.setStyle("-fx-padding: 3;");
FXUtils.limitHeight(pane, 20);
FXUtils.setLimitHeight(pane, 20);
JFXRadioButton left = new JFXRadioButton(title);
left.setToggleGroup(group);

View File

@@ -18,6 +18,7 @@
package org.jackhuang.hmcl.ui.construct;
import com.jfoenix.validation.base.ValidatorBase;
import javafx.beans.NamedArg;
import javafx.scene.control.TextInputControl;
import org.jackhuang.hmcl.util.StringUtils;
@@ -28,11 +29,11 @@ public class NumberValidator extends ValidatorBase {
this(false);
}
public NumberValidator(boolean nullable) {
public NumberValidator(@NamedArg("nullable") boolean nullable) {
this.nullable = nullable;
}
public NumberValidator(String message, boolean nullable) {
public NumberValidator(@NamedArg("message") String message, @NamedArg("nullable") boolean nullable) {
super(message);
this.nullable = nullable;
}

View File

@@ -47,9 +47,6 @@ public class TaskExecutorDialogPane extends StackPane {
public TaskExecutorDialogPane(Runnable cancel) {
FXUtils.loadFXML(this, "/assets/fxml/task-dialog.fxml");
FXUtils.limitHeight(this, 200);
FXUtils.limitWidth(this, 400);
setCancel(cancel);
btnCancel.setOnMouseClicked(e -> {

View File

@@ -99,9 +99,6 @@ public final class ModpackPage extends StackPane implements WizardPage {
txtModpackName.setText(Main.i18n("modpack.task.install.error"));
}
}
//FXUtils.limitHeight(borderPane, 100.0);
FXUtils.limitWidth(borderPane, 500.0);
}
@Override

View File

@@ -8,9 +8,10 @@
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.*?>
<?import org.jackhuang.hmcl.ui.FXUtils?>
<fx:root xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
type="StackPane">
type="StackPane" FXUtils.limitWidth="160" FXUtils.limitHeight="156">
<VBox fx:id="content">
<StackPane fx:id="header" VBox.vgrow="ALWAYS">
<BorderPane>

View File

@@ -6,7 +6,7 @@
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.layout.*?>
<?import java.lang.String?>
<?import org.jackhuang.hmcl.ui.FXUtils?>
<fx:root xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
type="StackPane">
@@ -38,13 +38,13 @@
<JFXComboBox fx:id="cboType" GridPane.columnIndex="1" GridPane.rowIndex="0" />
<JFXTextField fx:id="txtUsername" promptText="%account.username" labelFloat="true" GridPane.columnIndex="0" GridPane.rowIndex="1" GridPane.columnSpan="2">
<JFXTextField fx:id="txtUsername" promptText="%account.username" labelFloat="true" GridPane.columnIndex="0" GridPane.rowIndex="1" GridPane.columnSpan="2" FXUtils.validateWhileTextChanged="true">
<validators>
<RequiredFieldValidator message="%input.not_empty">
</RequiredFieldValidator>
</validators>
</JFXTextField>
<JFXPasswordField fx:id="txtPassword" promptText="%account.password" labelFloat="true" GridPane.columnIndex="0" GridPane.rowIndex="2" GridPane.columnSpan="2">
<JFXPasswordField fx:id="txtPassword" promptText="%account.password" labelFloat="true" GridPane.columnIndex="0" GridPane.rowIndex="2" GridPane.columnSpan="2" FXUtils.validateWhileTextChanged="true">
<validators>
<RequiredFieldValidator message="%input.not_empty">
</RequiredFieldValidator>

View File

@@ -7,6 +7,7 @@
<?import javafx.scene.shape.Rectangle?>
<?import org.jackhuang.hmcl.ui.construct.AdvancedListBox?>
<?import java.lang.String?>
<?import org.jackhuang.hmcl.ui.FXUtils?>
<fx:root xmlns="http://javafx.com/javafx"
type="StackPane"
xmlns:fx="http://javafx.com/fxml">
@@ -18,7 +19,7 @@
maxHeight="519"
maxWidth="800">
<center>
<StackPane fx:id="drawerWrapper" styleClass="jfx-decorator-drawer">
<StackPane fx:id="drawerWrapper" styleClass="jfx-decorator-drawer" FXUtils.overflowHidden="true">
<JFXDialog fx:id="dialog" overlayClose="false" />
<BorderPane>
<left>
@@ -47,7 +48,7 @@
</StackPane>
</left>
<center>
<StackPane fx:id="contentPlaceHolderRoot" styleClass="jfx-decorator-content-container"
<StackPane fx:id="contentPlaceHolderRoot" styleClass="jfx-decorator-content-container" FXUtils.overflowHidden="true"
VBox.vgrow="ALWAYS">
<StackPane fx:id="contentPlaceHolder" styleClass="jfx-decorator-content-container">
<!-- Node -->

View File

@@ -6,13 +6,14 @@
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import org.jackhuang.hmcl.ui.construct.ComponentList?>
<?import org.jackhuang.hmcl.ui.FXUtils?>
<fx:root xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
type="StackPane">
<fx:define>
<Insets fx:id="insets" bottom="12" />
</fx:define>
<VBox fx:id="borderPane" alignment="CENTER">
<VBox fx:id="borderPane" alignment="CENTER" FXUtils.limitWidth="500">
<HBox style="-fx-padding: 0 0 16 5;"><Label text="%modpack.task.install" /></HBox>
<ComponentList>
<BorderPane><left><Label text="%modpack.task.install.will" /></left><right><Label fx:id="lblModpackLocation" /></right></BorderPane>

View File

@@ -8,6 +8,8 @@
<?import org.jackhuang.hmcl.ui.construct.FileItem?>
<?import org.jackhuang.hmcl.ui.construct.FontComboBox?>
<?import org.jackhuang.hmcl.ui.construct.MultiFileItem?>
<?import org.jackhuang.hmcl.ui.construct.NumberValidator?>
<?import org.jackhuang.hmcl.ui.FXUtils?>
<fx:root xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
type="StackPane">
@@ -38,7 +40,7 @@
<MultiFileItem fx:id="backgroundItem" title="%launcher.background" chooserTitle="%launcher.background.choose"
hasSubtitle="true" customText="%settings.custom" />
<BorderPane><left><Label text="%settings.launcher.download_source" BorderPane.alignment="CENTER_LEFT" /></left><right><JFXComboBox fx:id="cboDownloadSource">
<BorderPane><left><Label text="%settings.launcher.download_source" BorderPane.alignment="CENTER_LEFT" /></left><right><JFXComboBox fx:id="cboDownloadSource" FXUtils.limitWidth="400">
<items>
<FXCollections fx:factory="observableArrayList">
<Label text="%download.mojang" />
@@ -46,7 +48,14 @@
</FXCollections>
</items>
</JFXComboBox></right></BorderPane>
<BorderPane><left><Label text="%settings.launcher.language" BorderPane.alignment="CENTER_LEFT" /></left><right><JFXComboBox fx:id="cboLanguage" /></right></BorderPane>
<BorderPane>
<left>
<Label text="%settings.launcher.language" BorderPane.alignment="CENTER_LEFT" />
</left>
<right>
<JFXComboBox fx:id="cboLanguage" FXUtils.limitWidth="400" />
</right>
</BorderPane>
<ComponentList title="%settings.launcher.proxy"> <!-- proxy -->
<VBox spacing="10">
@@ -71,11 +80,15 @@
<JFXTextField fx:id="txtProxyHost" styleClass="fit-width" GridPane.rowIndex="1" GridPane.columnIndex="1" />
<Label text="%settings.launcher.proxy.port" GridPane.rowIndex="2" GridPane.columnIndex="0" GridPane.halignment="RIGHT" />
<JFXTextField fx:id="txtProxyPort" styleClass="fit-width" GridPane.rowIndex="2" GridPane.columnIndex="1" />
<JFXTextField fx:id="txtProxyPort" styleClass="fit-width" GridPane.rowIndex="2" GridPane.columnIndex="1" FXUtils.validateWhileTextChanged="true">
<validators>
<NumberValidator message="%input.number" nullable="false" />
</validators>
</JFXTextField>
</GridPane>
<VBox style="-fx-padding: 15 0 15 5;">
<VBox style="-fx-padding: 20 0 20 5;">
<JFXCheckBox fx:id="chkProxyAuthentication" text="%settings.launcher.proxy.authentication" />
</VBox>
@@ -93,7 +106,7 @@
<Label fx:id="" text="%settings.launcher.proxy.username" GridPane.rowIndex="0" GridPane.columnIndex="0" />
<JFXTextField fx:id="txtProxyUsername" styleClass="fit-width" GridPane.rowIndex="0" GridPane.columnIndex="1" />
<Label text="%settings.launcher.proxy.password" GridPane.rowIndex="1" GridPane.columnIndex="0" />
<JFXTextField fx:id="txtProxyPassword" styleClass="fit-width" GridPane.rowIndex="1" GridPane.columnIndex="1" />
<JFXPasswordField fx:id="txtProxyPassword" styleClass="fit-width" GridPane.rowIndex="1" GridPane.columnIndex="1" />
</GridPane>
</VBox>
</VBox>

View File

@@ -10,9 +10,10 @@
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.control.ScrollPane?>
<?import org.jackhuang.hmcl.ui.FXUtils?>
<fx:root xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
type="StackPane">
type="StackPane" FXUtils.limitWidth="400" FXUtils.limitHeight="200">
<BorderPane>
<top>
<JFXProgressBar fx:id="progressBar" StackPane.alignment="TOP_CENTER" />

View File

@@ -6,10 +6,10 @@
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.control.Tooltip?>
<?import org.jackhuang.hmcl.ui.FXUtils?>
<fx:root xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
type="StackPane" pickOnBounds="false">
type="StackPane" pickOnBounds="false" FXUtils.limitWidth="160" FXUtils.limitHeight="156">
<VBox fx:id="content" pickOnBounds="false">
<StackPane fx:id="header" VBox.vgrow="ALWAYS" pickOnBounds="false" style="-fx-background-radius: 2 2 0 0; -fx-background-color: rgb(255,255,255,0.87); -fx-padding: 8;">
<BorderPane>
@@ -21,6 +21,7 @@
<VBox style="-fx-padding: 8 8 0 8;">
<Label fx:id="lblVersionName" style="-fx-font-size: 15;" textAlignment="JUSTIFY" wrapText="true" />
<Label fx:id="lblGameVersion" style="-fx-font-size: 10;" textAlignment="JUSTIFY" wrapText="true" />
<Label fx:id="lblLibraries" style="-fx-font-size: 10;" textAlignment="JUSTIFY" wrapText="true" />
</VBox>
</center>
</BorderPane>

View File

@@ -5,6 +5,7 @@
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.*?>
<?import org.jackhuang.hmcl.ui.FXUtils?>
<fx:root xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
styleClass="transparent"
@@ -13,10 +14,10 @@
<BorderPane pickOnBounds="false">
<left>
<HBox alignment="CENTER" mouseTransparent="true">
<StackPane fx:id="imageViewContainer">
<ImageView preserveRatio="true" fx:id="imageView" smooth="false">
<Image url="/assets/img/icon.png" />
</ImageView>
<StackPane fx:id="imageViewContainer" FXUtils.limitWidth="32" FXUtils.limitHeight="32">
<ImageView preserveRatio="true" fx:id="imageView" smooth="false">
<Image url="/assets/img/icon.png" />
</ImageView>
</StackPane>
<BorderPane style="-fx-padding: 0 0 0 10;">
<top>

View File

@@ -9,6 +9,8 @@
<?import javafx.scene.layout.*?>
<?import org.jackhuang.hmcl.ui.construct.ComponentList?>
<?import org.jackhuang.hmcl.ui.construct.MultiFileItem?>
<?import org.jackhuang.hmcl.ui.construct.NumberValidator?>
<?import org.jackhuang.hmcl.ui.FXUtils?>
<StackPane xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
fx:controller="org.jackhuang.hmcl.ui.VersionSettingsController">
@@ -56,7 +58,11 @@
</VBox>
</left>
<right>
<JFXTextField fx:id="txtMaxMemory" BorderPane.alignment="CENTER_RIGHT"/>
<JFXTextField fx:id="txtMaxMemory" BorderPane.alignment="CENTER_RIGHT" FXUtils.validateWhileTextChanged="true" FXUtils.limitWidth="300">
<validators>
<NumberValidator message="%input.number" nullable="false" />
</validators>
</JFXTextField>
</right>
</BorderPane>
@@ -65,7 +71,7 @@
<Label text="%settings.advanced.launcher_visible" BorderPane.alignment="CENTER_LEFT"/>
</left>
<right>
<JFXComboBox fx:id="cboLauncherVisibility" BorderPane.alignment="CENTER_RIGHT">
<JFXComboBox fx:id="cboLauncherVisibility" BorderPane.alignment="CENTER_RIGHT" FXUtils.limitWidth="300">
<items>
<FXCollections fx:factory="observableArrayList">
<Label text="%settings.advanced.launcher_visibility.close"/>
@@ -86,9 +92,17 @@
<BorderPane>
<left>
<HBox prefWidth="210" spacing="3" alignment="CENTER" BorderPane.alignment="CENTER">
<JFXTextField fx:id="txtWidth" promptText="800" prefWidth="100"/>
<JFXTextField fx:id="txtWidth" promptText="800" prefWidth="100" FXUtils.validateWhileTextChanged="true">
<validators>
<NumberValidator message="%input.number" nullable="false" />
</validators>
</JFXTextField>
<Label>x</Label>
<JFXTextField fx:id="txtHeight" promptText="480" prefWidth="100"/>
<JFXTextField fx:id="txtHeight" promptText="480" prefWidth="100" FXUtils.validateWhileTextChanged="true">
<validators>
<NumberValidator message="%input.number" nullable="false" />
</validators>
</JFXTextField>
</HBox>
</left>
<right>
@@ -108,7 +122,7 @@
<Label text="%settings.show_log"/>
</left>
<right>
<JFXToggleButton fx:id="chkShowLogs" size="7"/>
<JFXToggleButton fx:id="chkShowLogs" size="7" FXUtils.limitHeight="10" />
</right>
</BorderPane>
</ComponentList>
@@ -128,7 +142,11 @@
<JFXTextField labelFloat="true" promptText="%settings.advanced.minecraft_arguments"
styleClass="fit-width" fx:id="txtGameArgs" StackPane.margin="$insets"/>
<JFXTextField labelFloat="true" promptText="%settings.advanced.java_permanent_generation_space"
styleClass="fit-width" fx:id="txtMetaspace" StackPane.margin="$insets"/>
styleClass="fit-width" fx:id="txtMetaspace" StackPane.margin="$insets" FXUtils.validateWhileTextChanged="true">
<validators>
<NumberValidator message="%input.number" nullable="true" />
</validators>
</JFXTextField>
<JFXTextField labelFloat="true" promptText="%settings.advanced.wrapper_launcher" styleClass="fit-width"
fx:id="txtWrapper" StackPane.margin="$insets"/>
<JFXTextField labelFloat="true" promptText="%settings.advanced.precall_command" styleClass="fit-width"
@@ -140,7 +158,7 @@
<Label text="%settings.advanced.no_jvm_args"/>
</left>
<right>
<JFXToggleButton fx:id="chkNoJVMArgs" size="7"/>
<JFXToggleButton fx:id="chkNoJVMArgs" size="7" FXUtils.limitHeight="10" />
</right>
</BorderPane>
<BorderPane>
@@ -148,7 +166,7 @@
<Label text="%settings.advanced.no_common"/>
</left>
<right>
<JFXToggleButton fx:id="chkNoCommon" size="7"/>
<JFXToggleButton fx:id="chkNoCommon" size="7" FXUtils.limitHeight="10" />
</right>
</BorderPane>
<BorderPane>
@@ -156,7 +174,7 @@
<Label text="%settings.advanced.dont_check_game_completeness"/>
</left>
<right>
<JFXToggleButton fx:id="chkNoGameCheck" size="7"/>
<JFXToggleButton fx:id="chkNoGameCheck" size="7" FXUtils.limitHeight="10" />
</right>
</BorderPane>
</ComponentList>

View File

@@ -125,6 +125,7 @@ folder.saves=Saves
folder.screenshots=Screenshots
input.email=The username must be an e-mail.
input.number=Must be a number.
input.not_empty=Input Requrired!
install=Install New Game

View File

@@ -125,6 +125,7 @@ folder.saves=存档文件夹
folder.screenshots=截图文件夹
input.email=用户名必须是邮箱
input.number=必须是数字
input.not_empty=必填项
install=添加游戏
@@ -354,7 +355,7 @@ settings.launcher.log_font=日志字体
settings.launcher.proxy=代理
settings.launcher.proxy.authentication=代理账户
settings.launcher.proxy.no_proxy=直连
settings.launcher.proxy.has_proxy=代理设置
settings.launcher.proxy.has_proxy=启用验证
settings.launcher.proxy.host=主机
settings.launcher.proxy.http=HTTP
settings.launcher.proxy.password=密码