mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-08-03 19:36:53 -04:00
Revert JFoenix
This commit is contained in:
parent
78be1aaa7c
commit
32562d7435
@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl;
|
package org.jackhuang.hmcl;
|
||||||
|
|
||||||
import com.jfoenix.utils.JFXUtilities;
|
|
||||||
import javafx.application.Application;
|
import javafx.application.Application;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
@ -25,7 +24,9 @@ import org.jackhuang.hmcl.setting.ConfigHolder;
|
|||||||
import org.jackhuang.hmcl.task.Schedulers;
|
import org.jackhuang.hmcl.task.Schedulers;
|
||||||
import org.jackhuang.hmcl.ui.Controllers;
|
import org.jackhuang.hmcl.ui.Controllers;
|
||||||
import org.jackhuang.hmcl.upgrade.UpdateChecker;
|
import org.jackhuang.hmcl.upgrade.UpdateChecker;
|
||||||
import org.jackhuang.hmcl.util.*;
|
import org.jackhuang.hmcl.util.CrashReporter;
|
||||||
|
import org.jackhuang.hmcl.util.Lang;
|
||||||
|
import org.jackhuang.hmcl.util.StringUtils;
|
||||||
import org.jackhuang.hmcl.util.platform.OperatingSystem;
|
import org.jackhuang.hmcl.util.platform.OperatingSystem;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -39,6 +40,7 @@ import java.util.LinkedList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.ui.FXUtils.runInFX;
|
||||||
import static org.jackhuang.hmcl.util.Logging.LOG;
|
import static org.jackhuang.hmcl.util.Logging.LOG;
|
||||||
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
|
|
||||||
@ -97,7 +99,7 @@ public final class Launcher extends Application {
|
|||||||
public static void stopApplication() {
|
public static void stopApplication() {
|
||||||
LOG.info("Stopping application.\n" + StringUtils.getStackTrace(Thread.currentThread().getStackTrace()));
|
LOG.info("Stopping application.\n" + StringUtils.getStackTrace(Thread.currentThread().getStackTrace()));
|
||||||
|
|
||||||
JFXUtilities.runInFX(() -> {
|
runInFX(() -> {
|
||||||
if (Controllers.getStage() == null)
|
if (Controllers.getStage() == null)
|
||||||
return;
|
return;
|
||||||
Controllers.getStage().close();
|
Controllers.getStage().close();
|
||||||
@ -111,7 +113,7 @@ public final class Launcher extends Application {
|
|||||||
public static void stopWithoutPlatform() {
|
public static void stopWithoutPlatform() {
|
||||||
LOG.info("Stopping application without JavaFX Toolkit.\n" + StringUtils.getStackTrace(Thread.currentThread().getStackTrace()));
|
LOG.info("Stopping application without JavaFX Toolkit.\n" + StringUtils.getStackTrace(Thread.currentThread().getStackTrace()));
|
||||||
|
|
||||||
JFXUtilities.runInFX(() -> {
|
runInFX(() -> {
|
||||||
if (Controllers.getStage() == null)
|
if (Controllers.getStage() == null)
|
||||||
return;
|
return;
|
||||||
Controllers.getStage().close();
|
Controllers.getStage().close();
|
||||||
|
@ -19,7 +19,6 @@ package org.jackhuang.hmcl.setting;
|
|||||||
|
|
||||||
import com.google.gson.*;
|
import com.google.gson.*;
|
||||||
import com.google.gson.annotations.JsonAdapter;
|
import com.google.gson.annotations.JsonAdapter;
|
||||||
import com.jfoenix.utils.JFXUtilities;
|
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.beans.InvalidationListener;
|
import javafx.beans.InvalidationListener;
|
||||||
import javafx.beans.Observable;
|
import javafx.beans.Observable;
|
||||||
@ -32,7 +31,7 @@ import org.jackhuang.hmcl.game.HMCLCacheRepository;
|
|||||||
import org.jackhuang.hmcl.game.HMCLGameRepository;
|
import org.jackhuang.hmcl.game.HMCLGameRepository;
|
||||||
import org.jackhuang.hmcl.game.Version;
|
import org.jackhuang.hmcl.game.Version;
|
||||||
import org.jackhuang.hmcl.ui.WeakListenerHolder;
|
import org.jackhuang.hmcl.ui.WeakListenerHolder;
|
||||||
import org.jackhuang.hmcl.util.*;
|
import org.jackhuang.hmcl.util.ToStringBuilder;
|
||||||
import org.jackhuang.hmcl.util.javafx.ObservableHelper;
|
import org.jackhuang.hmcl.util.javafx.ObservableHelper;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -40,6 +39,7 @@ import java.lang.reflect.Type;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import static org.jackhuang.hmcl.ui.FXUtils.onInvalidating;
|
import static org.jackhuang.hmcl.ui.FXUtils.onInvalidating;
|
||||||
|
import static org.jackhuang.hmcl.ui.FXUtils.runInFX;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -144,7 +144,7 @@ public final class Profile implements Observable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void checkSelectedVersion() {
|
private void checkSelectedVersion() {
|
||||||
JFXUtilities.runInFX(() -> {
|
runInFX(() -> {
|
||||||
if (!repository.isLoaded()) return;
|
if (!repository.isLoaded()) return;
|
||||||
String newValue = selectedVersion.get();
|
String newValue = selectedVersion.get();
|
||||||
if (!repository.hasVersion(newValue)) {
|
if (!repository.hasVersion(newValue)) {
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl.setting;
|
package org.jackhuang.hmcl.setting;
|
||||||
|
|
||||||
import com.jfoenix.utils.JFXUtilities;
|
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.beans.Observable;
|
import javafx.beans.Observable;
|
||||||
import javafx.beans.property.*;
|
import javafx.beans.property.*;
|
||||||
@ -36,6 +35,7 @@ import java.util.stream.Collectors;
|
|||||||
import static javafx.collections.FXCollections.observableArrayList;
|
import static javafx.collections.FXCollections.observableArrayList;
|
||||||
import static org.jackhuang.hmcl.setting.ConfigHolder.config;
|
import static org.jackhuang.hmcl.setting.ConfigHolder.config;
|
||||||
import static org.jackhuang.hmcl.ui.FXUtils.onInvalidating;
|
import static org.jackhuang.hmcl.ui.FXUtils.onInvalidating;
|
||||||
|
import static org.jackhuang.hmcl.ui.FXUtils.runInFX;
|
||||||
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
|
|
||||||
public final class Profiles {
|
public final class Profiles {
|
||||||
@ -162,7 +162,7 @@ public final class Profiles {
|
|||||||
});
|
});
|
||||||
|
|
||||||
EventBus.EVENT_BUS.channel(RefreshedVersionsEvent.class).registerWeak(event -> {
|
EventBus.EVENT_BUS.channel(RefreshedVersionsEvent.class).registerWeak(event -> {
|
||||||
JFXUtilities.runInFX(() -> {
|
runInFX(() -> {
|
||||||
Profile profile = selectedProfile.get();
|
Profile profile = selectedProfile.get();
|
||||||
if (profile != null && profile.getRepository() == event.getSource()) {
|
if (profile != null && profile.getRepository() == event.getSource()) {
|
||||||
selectedVersion.bind(profile.selectedVersionProperty());
|
selectedVersion.bind(profile.selectedVersionProperty());
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl.ui;
|
package org.jackhuang.hmcl.ui;
|
||||||
|
|
||||||
import com.jfoenix.utils.JFXUtilities;
|
|
||||||
import javafx.scene.Node;
|
import javafx.scene.Node;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
import javafx.scene.image.Image;
|
import javafx.scene.image.Image;
|
||||||
@ -34,8 +33,11 @@ import org.jackhuang.hmcl.task.Task;
|
|||||||
import org.jackhuang.hmcl.task.TaskExecutor;
|
import org.jackhuang.hmcl.task.TaskExecutor;
|
||||||
import org.jackhuang.hmcl.ui.account.AccountList;
|
import org.jackhuang.hmcl.ui.account.AccountList;
|
||||||
import org.jackhuang.hmcl.ui.account.AuthlibInjectorServersPage;
|
import org.jackhuang.hmcl.ui.account.AuthlibInjectorServersPage;
|
||||||
import org.jackhuang.hmcl.ui.construct.*;
|
import org.jackhuang.hmcl.ui.construct.InputDialogPane;
|
||||||
|
import org.jackhuang.hmcl.ui.construct.MessageDialogPane;
|
||||||
import org.jackhuang.hmcl.ui.construct.MessageDialogPane.MessageType;
|
import org.jackhuang.hmcl.ui.construct.MessageDialogPane.MessageType;
|
||||||
|
import org.jackhuang.hmcl.ui.construct.PopupMenu;
|
||||||
|
import org.jackhuang.hmcl.ui.construct.TaskExecutorDialogPane;
|
||||||
import org.jackhuang.hmcl.ui.decorator.DecoratorController;
|
import org.jackhuang.hmcl.ui.decorator.DecoratorController;
|
||||||
import org.jackhuang.hmcl.ui.download.ModpackInstallWizardProvider;
|
import org.jackhuang.hmcl.ui.download.ModpackInstallWizardProvider;
|
||||||
import org.jackhuang.hmcl.ui.profile.ProfileList;
|
import org.jackhuang.hmcl.ui.profile.ProfileList;
|
||||||
@ -58,6 +60,7 @@ import java.util.function.Consumer;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static org.jackhuang.hmcl.setting.ConfigHolder.config;
|
import static org.jackhuang.hmcl.setting.ConfigHolder.config;
|
||||||
|
import static org.jackhuang.hmcl.ui.FXUtils.runInFX;
|
||||||
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
|
|
||||||
public final class Controllers {
|
public final class Controllers {
|
||||||
@ -174,7 +177,7 @@ public final class Controllers {
|
|||||||
return node;
|
return node;
|
||||||
})
|
})
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
JFXUtilities.runInFX(() -> {
|
runInFX(() -> {
|
||||||
if (profile == Profiles.getSelectedProfile())
|
if (profile == Profiles.getSelectedProfile())
|
||||||
mainPage.getVersions().setAll(children);
|
mainPage.getVersions().setAll(children);
|
||||||
});
|
});
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl.ui;
|
package org.jackhuang.hmcl.ui;
|
||||||
|
|
||||||
import com.jfoenix.utils.JFXUtilities;
|
|
||||||
import org.jackhuang.hmcl.auth.Account;
|
import org.jackhuang.hmcl.auth.Account;
|
||||||
import org.jackhuang.hmcl.auth.AuthInfo;
|
import org.jackhuang.hmcl.auth.AuthInfo;
|
||||||
import org.jackhuang.hmcl.auth.AuthenticationException;
|
import org.jackhuang.hmcl.auth.AuthenticationException;
|
||||||
@ -29,13 +28,15 @@ import java.util.concurrent.CancellationException;
|
|||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.ui.FXUtils.runInFX;
|
||||||
|
|
||||||
public final class DialogController {
|
public final class DialogController {
|
||||||
|
|
||||||
public static AuthInfo logIn(Account account) throws CancellationException, AuthenticationException, InterruptedException {
|
public static AuthInfo logIn(Account account) throws CancellationException, AuthenticationException, InterruptedException {
|
||||||
if (account instanceof YggdrasilAccount) {
|
if (account instanceof YggdrasilAccount) {
|
||||||
CountDownLatch latch = new CountDownLatch(1);
|
CountDownLatch latch = new CountDownLatch(1);
|
||||||
AtomicReference<AuthInfo> res = new AtomicReference<>(null);
|
AtomicReference<AuthInfo> res = new AtomicReference<>(null);
|
||||||
JFXUtilities.runInFX(() -> {
|
runInFX(() -> {
|
||||||
AccountLoginPane pane = new AccountLoginPane(account, it -> {
|
AccountLoginPane pane = new AccountLoginPane(account, it -> {
|
||||||
res.set(it);
|
res.set(it);
|
||||||
latch.countDown();
|
latch.countDown();
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl.ui;
|
package org.jackhuang.hmcl.ui;
|
||||||
|
|
||||||
import com.jfoenix.utils.JFXUtilities;
|
|
||||||
import com.jfoenix.controls.*;
|
import com.jfoenix.controls.*;
|
||||||
import javafx.animation.Animation;
|
import javafx.animation.Animation;
|
||||||
import javafx.animation.Interpolator;
|
import javafx.animation.Interpolator;
|
||||||
@ -44,7 +43,7 @@ import javafx.scene.shape.Rectangle;
|
|||||||
import javafx.util.Callback;
|
import javafx.util.Callback;
|
||||||
import javafx.util.Duration;
|
import javafx.util.Duration;
|
||||||
import javafx.util.StringConverter;
|
import javafx.util.StringConverter;
|
||||||
import org.jackhuang.hmcl.util.*;
|
import org.jackhuang.hmcl.util.Logging;
|
||||||
import org.jackhuang.hmcl.util.i18n.I18n;
|
import org.jackhuang.hmcl.util.i18n.I18n;
|
||||||
import org.jackhuang.hmcl.util.io.FileUtils;
|
import org.jackhuang.hmcl.util.io.FileUtils;
|
||||||
import org.jackhuang.hmcl.util.javafx.ExtendedProperties;
|
import org.jackhuang.hmcl.util.javafx.ExtendedProperties;
|
||||||
@ -75,6 +74,14 @@ public final class FXUtils {
|
|||||||
private FXUtils() {
|
private FXUtils() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void runInFX(Runnable runnable) {
|
||||||
|
if (Platform.isFxApplicationThread()) {
|
||||||
|
runnable.run();
|
||||||
|
} else {
|
||||||
|
Platform.runLater(runnable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void checkFxUserThread() {
|
public static void checkFxUserThread() {
|
||||||
if (!Platform.isFxApplicationThread()) {
|
if (!Platform.isFxApplicationThread()) {
|
||||||
throw new IllegalStateException("Not on FX application thread; currentThread = "
|
throw new IllegalStateException("Not on FX application thread; currentThread = "
|
||||||
@ -252,7 +259,7 @@ public final class FXUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void installTooltip(Node node, double openDelay, double visibleDelay, double closeDelay, Tooltip tooltip) {
|
public static void installTooltip(Node node, double openDelay, double visibleDelay, double closeDelay, Tooltip tooltip) {
|
||||||
JFXUtilities.runInFX(() -> {
|
runInFX(() -> {
|
||||||
try {
|
try {
|
||||||
// Java 8
|
// Java 8
|
||||||
Class<?> behaviorClass = Class.forName("javafx.scene.control.Tooltip$TooltipBehavior");
|
Class<?> behaviorClass = Class.forName("javafx.scene.control.Tooltip$TooltipBehavior");
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl.ui;
|
package org.jackhuang.hmcl.ui;
|
||||||
|
|
||||||
import com.jfoenix.utils.JFXUtilities;
|
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.scene.image.Image;
|
import javafx.scene.image.Image;
|
||||||
import javafx.scene.layout.Region;
|
import javafx.scene.layout.Region;
|
||||||
@ -43,6 +42,7 @@ import org.jackhuang.hmcl.util.io.CompressingUtils;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.ui.FXUtils.runInFX;
|
||||||
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
|
|
||||||
public final class LeftPaneController extends AdvancedListBox {
|
public final class LeftPaneController extends AdvancedListBox {
|
||||||
@ -111,7 +111,7 @@ public final class LeftPaneController extends AdvancedListBox {
|
|||||||
private boolean checkedModpack = false;
|
private boolean checkedModpack = false;
|
||||||
|
|
||||||
private void onRefreshedVersions(HMCLGameRepository repository) {
|
private void onRefreshedVersions(HMCLGameRepository repository) {
|
||||||
JFXUtilities.runInFX(() -> {
|
runInFX(() -> {
|
||||||
if (!checkedModpack) {
|
if (!checkedModpack) {
|
||||||
checkedModpack = true;
|
checkedModpack = true;
|
||||||
|
|
||||||
|
@ -17,12 +17,9 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl.ui.account;
|
package org.jackhuang.hmcl.ui.account;
|
||||||
|
|
||||||
import com.jfoenix.utils.JFXUtilities;
|
|
||||||
import com.jfoenix.controls.JFXButton;
|
import com.jfoenix.controls.JFXButton;
|
||||||
import com.jfoenix.controls.JFXRadioButton;
|
import com.jfoenix.controls.JFXRadioButton;
|
||||||
import com.jfoenix.effects.JFXDepthManager;
|
import com.jfoenix.effects.JFXDepthManager;
|
||||||
|
|
||||||
import javafx.beans.binding.Bindings;
|
|
||||||
import javafx.geometry.Pos;
|
import javafx.geometry.Pos;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
import javafx.scene.control.SkinBase;
|
import javafx.scene.control.SkinBase;
|
||||||
@ -31,17 +28,16 @@ import javafx.scene.image.ImageView;
|
|||||||
import javafx.scene.layout.BorderPane;
|
import javafx.scene.layout.BorderPane;
|
||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
|
import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorAccount;
|
||||||
|
import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer;
|
||||||
import org.jackhuang.hmcl.setting.Theme;
|
import org.jackhuang.hmcl.setting.Theme;
|
||||||
import org.jackhuang.hmcl.ui.FXUtils;
|
import org.jackhuang.hmcl.ui.FXUtils;
|
||||||
import org.jackhuang.hmcl.ui.SVG;
|
import org.jackhuang.hmcl.ui.SVG;
|
||||||
import org.jackhuang.hmcl.util.javafx.BindingMapping;
|
import org.jackhuang.hmcl.util.javafx.BindingMapping;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.ui.FXUtils.runInFX;
|
||||||
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
|
|
||||||
import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorAccount;
|
|
||||||
import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer;
|
|
||||||
|
|
||||||
public class AccountListItemSkin extends SkinBase<AccountListItem> {
|
public class AccountListItemSkin extends SkinBase<AccountListItem> {
|
||||||
|
|
||||||
public AccountListItemSkin(AccountListItem skinnable) {
|
public AccountListItemSkin(AccountListItem skinnable) {
|
||||||
@ -92,7 +88,7 @@ public class AccountListItemSkin extends SkinBase<AccountListItem> {
|
|||||||
btnRefresh.setOnMouseClicked(e -> skinnable.refresh());
|
btnRefresh.setOnMouseClicked(e -> skinnable.refresh());
|
||||||
btnRefresh.getStyleClass().add("toggle-icon4");
|
btnRefresh.getStyleClass().add("toggle-icon4");
|
||||||
btnRefresh.setGraphic(SVG.refresh(Theme.blackFillBinding(), -1, -1));
|
btnRefresh.setGraphic(SVG.refresh(Theme.blackFillBinding(), -1, -1));
|
||||||
JFXUtilities.runInFX(() -> FXUtils.installFastTooltip(btnRefresh, i18n("button.refresh")));
|
runInFX(() -> FXUtils.installFastTooltip(btnRefresh, i18n("button.refresh")));
|
||||||
right.getChildren().add(btnRefresh);
|
right.getChildren().add(btnRefresh);
|
||||||
|
|
||||||
JFXButton btnRemove = new JFXButton();
|
JFXButton btnRemove = new JFXButton();
|
||||||
@ -100,7 +96,7 @@ public class AccountListItemSkin extends SkinBase<AccountListItem> {
|
|||||||
btnRemove.getStyleClass().add("toggle-icon4");
|
btnRemove.getStyleClass().add("toggle-icon4");
|
||||||
BorderPane.setAlignment(btnRemove, Pos.CENTER);
|
BorderPane.setAlignment(btnRemove, Pos.CENTER);
|
||||||
btnRemove.setGraphic(SVG.delete(Theme.blackFillBinding(), -1, -1));
|
btnRemove.setGraphic(SVG.delete(Theme.blackFillBinding(), -1, -1));
|
||||||
JFXUtilities.runInFX(() -> FXUtils.installFastTooltip(btnRemove, i18n("button.delete")));
|
runInFX(() -> FXUtils.installFastTooltip(btnRemove, i18n("button.delete")));
|
||||||
right.getChildren().add(btnRemove);
|
right.getChildren().add(btnRemove);
|
||||||
root.setRight(right);
|
root.setRight(right);
|
||||||
|
|
||||||
|
@ -17,9 +17,10 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl.ui.account;
|
package org.jackhuang.hmcl.ui.account;
|
||||||
|
|
||||||
import com.jfoenix.utils.JFXUtilities;
|
import com.jfoenix.controls.JFXButton;
|
||||||
import com.jfoenix.controls.*;
|
import com.jfoenix.controls.JFXComboBox;
|
||||||
|
import com.jfoenix.controls.JFXPasswordField;
|
||||||
|
import com.jfoenix.controls.JFXTextField;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.beans.binding.Bindings;
|
import javafx.beans.binding.Bindings;
|
||||||
import javafx.beans.property.ListProperty;
|
import javafx.beans.property.ListProperty;
|
||||||
@ -53,6 +54,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
|
|
||||||
import static java.util.Collections.emptyList;
|
import static java.util.Collections.emptyList;
|
||||||
import static java.util.Collections.unmodifiableList;
|
import static java.util.Collections.unmodifiableList;
|
||||||
import static java.util.Objects.requireNonNull;
|
import static java.util.Objects.requireNonNull;
|
||||||
@ -293,7 +295,7 @@ public class AddAccountPane extends StackPane {
|
|||||||
} catch (InterruptedException ignore) {
|
} catch (InterruptedException ignore) {
|
||||||
throw new NoSelectedCharacterException();
|
throw new NoSelectedCharacterException();
|
||||||
} finally {
|
} finally {
|
||||||
JFXUtilities.runInFX(() -> Selector.this.fireEvent(new DialogCloseEvent()));
|
runInFX(() -> Selector.this.fireEvent(new DialogCloseEvent()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -75,12 +75,12 @@ public class RipplerContainer extends StackPane {
|
|||||||
focusedProperty().addListener((a, b, newValue) -> {
|
focusedProperty().addListener((a, b, newValue) -> {
|
||||||
if (newValue) {
|
if (newValue) {
|
||||||
if (!isPressed())
|
if (!isPressed())
|
||||||
buttonRippler.setOverlayVisible(true);
|
buttonRippler.showOverlay();
|
||||||
} else {
|
} else {
|
||||||
buttonRippler.setOverlayVisible(false);
|
buttonRippler.hideOverlay();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
pressedProperty().addListener(o -> buttonRippler.setOverlayVisible(false));
|
pressedProperty().addListener(o -> buttonRippler.hideOverlay());
|
||||||
setPickOnBounds(false);
|
setPickOnBounds(false);
|
||||||
|
|
||||||
buttonContainer.setPickOnBounds(false);
|
buttonContainer.setPickOnBounds(false);
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl.ui.construct;
|
package org.jackhuang.hmcl.ui.construct;
|
||||||
|
|
||||||
import com.jfoenix.utils.JFXUtilities;
|
|
||||||
import com.jfoenix.controls.JFXButton;
|
import com.jfoenix.controls.JFXButton;
|
||||||
import com.jfoenix.controls.JFXProgressBar;
|
import com.jfoenix.controls.JFXProgressBar;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
@ -34,6 +33,8 @@ import org.jackhuang.hmcl.ui.FXUtils;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.ui.FXUtils.runInFX;
|
||||||
|
|
||||||
public class TaskExecutorDialogPane extends StackPane {
|
public class TaskExecutorDialogPane extends StackPane {
|
||||||
private TaskExecutor executor;
|
private TaskExecutor executor;
|
||||||
private Consumer<Region> onCancel;
|
private Consumer<Region> onCancel;
|
||||||
@ -121,6 +122,6 @@ public class TaskExecutorDialogPane extends StackPane {
|
|||||||
public void setCancel(Consumer<Region> onCancel) {
|
public void setCancel(Consumer<Region> onCancel) {
|
||||||
this.onCancel = onCancel;
|
this.onCancel = onCancel;
|
||||||
|
|
||||||
JFXUtilities.runInFX(() -> btnCancel.setDisable(onCancel == null));
|
runInFX(() -> btnCancel.setDisable(onCancel == null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl.ui.versions;
|
package org.jackhuang.hmcl.ui.versions;
|
||||||
|
|
||||||
import com.jfoenix.utils.JFXUtilities;
|
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.beans.property.*;
|
import javafx.beans.property.*;
|
||||||
import javafx.collections.FXCollections;
|
import javafx.collections.FXCollections;
|
||||||
@ -43,6 +42,7 @@ import java.util.Date;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.ui.FXUtils.runInFX;
|
||||||
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
|
|
||||||
public class GameList extends Control implements DecoratorPage {
|
public class GameList extends Control implements DecoratorPage {
|
||||||
@ -55,7 +55,7 @@ public class GameList extends Control implements DecoratorPage {
|
|||||||
public GameList() {
|
public GameList() {
|
||||||
EventBus.EVENT_BUS.channel(RefreshingVersionsEvent.class).register(event -> {
|
EventBus.EVENT_BUS.channel(RefreshingVersionsEvent.class).register(event -> {
|
||||||
if (event.getSource() == Profiles.getSelectedProfile().getRepository())
|
if (event.getSource() == Profiles.getSelectedProfile().getRepository())
|
||||||
JFXUtilities.runInFX(() -> loading.set(true));
|
runInFX(() -> loading.set(true));
|
||||||
});
|
});
|
||||||
|
|
||||||
Profiles.registerVersionsListener(this::loadVersions);
|
Profiles.registerVersionsListener(this::loadVersions);
|
||||||
@ -72,7 +72,7 @@ public class GameList extends Control implements DecoratorPage {
|
|||||||
.thenComparing(a -> VersionNumber.asVersion(a.getId())))
|
.thenComparing(a -> VersionNumber.asVersion(a.getId())))
|
||||||
.map(version -> new GameListItem(toggleGroup, profile, version.getId()))
|
.map(version -> new GameListItem(toggleGroup, profile, version.getId()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
JFXUtilities.runInFX(() -> {
|
runInFX(() -> {
|
||||||
if (profile == Profiles.getSelectedProfile()) {
|
if (profile == Profiles.getSelectedProfile()) {
|
||||||
loading.set(false);
|
loading.set(false);
|
||||||
items.setAll(children);
|
items.setAll(children);
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl.ui.versions;
|
package org.jackhuang.hmcl.ui.versions;
|
||||||
|
|
||||||
import com.jfoenix.utils.JFXUtilities;
|
|
||||||
import com.jfoenix.controls.JFXButton;
|
import com.jfoenix.controls.JFXButton;
|
||||||
import com.jfoenix.controls.JFXPopup;
|
import com.jfoenix.controls.JFXPopup;
|
||||||
import com.jfoenix.controls.JFXRadioButton;
|
import com.jfoenix.controls.JFXRadioButton;
|
||||||
@ -33,6 +32,7 @@ import org.jackhuang.hmcl.ui.construct.IconedMenuItem;
|
|||||||
import org.jackhuang.hmcl.ui.construct.MenuSeparator;
|
import org.jackhuang.hmcl.ui.construct.MenuSeparator;
|
||||||
import org.jackhuang.hmcl.ui.construct.PopupMenu;
|
import org.jackhuang.hmcl.ui.construct.PopupMenu;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.ui.FXUtils.runInFX;
|
||||||
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
|
|
||||||
public class GameListItemSkin extends SkinBase<GameListItem> {
|
public class GameListItemSkin extends SkinBase<GameListItem> {
|
||||||
@ -73,7 +73,7 @@ public class GameListItemSkin extends SkinBase<GameListItem> {
|
|||||||
btnUpgrade.setOnMouseClicked(e -> skinnable.update());
|
btnUpgrade.setOnMouseClicked(e -> skinnable.update());
|
||||||
btnUpgrade.getStyleClass().add("toggle-icon4");
|
btnUpgrade.getStyleClass().add("toggle-icon4");
|
||||||
btnUpgrade.setGraphic(SVG.update(Theme.blackFillBinding(), -1, -1));
|
btnUpgrade.setGraphic(SVG.update(Theme.blackFillBinding(), -1, -1));
|
||||||
JFXUtilities.runInFX(() -> FXUtils.installFastTooltip(btnUpgrade, i18n("version.update")));
|
runInFX(() -> FXUtils.installFastTooltip(btnUpgrade, i18n("version.update")));
|
||||||
right.getChildren().add(btnUpgrade);
|
right.getChildren().add(btnUpgrade);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl.ui.versions;
|
package org.jackhuang.hmcl.ui.versions;
|
||||||
|
|
||||||
import com.jfoenix.utils.JFXUtilities;
|
|
||||||
import com.jfoenix.controls.JFXTabPane;
|
import com.jfoenix.controls.JFXTabPane;
|
||||||
import javafx.beans.property.BooleanProperty;
|
import javafx.beans.property.BooleanProperty;
|
||||||
import javafx.beans.property.ListProperty;
|
import javafx.beans.property.ListProperty;
|
||||||
@ -47,6 +46,7 @@ import java.util.List;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.ui.FXUtils.runInFX;
|
||||||
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
|
|
||||||
public final class ModListPage extends Control {
|
public final class ModListPage extends Control {
|
||||||
@ -87,7 +87,7 @@ public final class ModListPage extends Control {
|
|||||||
this.modManager = modManager;
|
this.modManager = modManager;
|
||||||
Task.ofResult(() -> {
|
Task.ofResult(() -> {
|
||||||
synchronized (ModListPage.this) {
|
synchronized (ModListPage.this) {
|
||||||
JFXUtilities.runInFX(() -> loadingProperty().set(true));
|
runInFX(() -> loadingProperty().set(true));
|
||||||
modManager.refreshMods();
|
modManager.refreshMods();
|
||||||
return new LinkedList<>(modManager.getMods());
|
return new LinkedList<>(modManager.getMods());
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl.ui.wizard;
|
package org.jackhuang.hmcl.ui.wizard;
|
||||||
|
|
||||||
import com.jfoenix.utils.JFXUtilities;
|
|
||||||
import javafx.beans.property.StringProperty;
|
import javafx.beans.property.StringProperty;
|
||||||
import org.jackhuang.hmcl.task.Task;
|
import org.jackhuang.hmcl.task.Task;
|
||||||
import org.jackhuang.hmcl.task.TaskExecutor;
|
import org.jackhuang.hmcl.task.TaskExecutor;
|
||||||
@ -30,6 +29,7 @@ import org.jackhuang.hmcl.util.StringUtils;
|
|||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.ui.FXUtils.runInFX;
|
||||||
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
|
||||||
|
|
||||||
public interface TaskExecutorDialogWizardDisplayer extends AbstractWizardDisplayer {
|
public interface TaskExecutorDialogWizardDisplayer extends AbstractWizardDisplayer {
|
||||||
@ -59,11 +59,11 @@ public interface TaskExecutorDialogWizardDisplayer extends AbstractWizardDisplay
|
|||||||
pane.setSubtitle((String) subtitle);
|
pane.setSubtitle((String) subtitle);
|
||||||
}
|
}
|
||||||
|
|
||||||
JFXUtilities.runInFX(() -> {
|
runInFX(() -> {
|
||||||
TaskExecutor executor = task.executor(new TaskListener() {
|
TaskExecutor executor = task.executor(new TaskListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onStop(boolean success, TaskExecutor executor) {
|
public void onStop(boolean success, TaskExecutor executor) {
|
||||||
JFXUtilities.runInFX(() -> {
|
runInFX(() -> {
|
||||||
pane.fireEvent(new DialogCloseEvent());
|
pane.fireEvent(new DialogCloseEvent());
|
||||||
if (success) {
|
if (success) {
|
||||||
if (settings.containsKey("success_message") && settings.get("success_message") instanceof String)
|
if (settings.containsKey("success_message") && settings.get("success_message") instanceof String)
|
||||||
|
BIN
lib/JFoenix.jar
BIN
lib/JFoenix.jar
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user