Refactor DecoratorPage

This commit is contained in:
huangyuhui
2018-09-05 23:25:51 +08:00
parent 19725012fb
commit 61aee90c8d
11 changed files with 42 additions and 42 deletions

View File

@@ -17,8 +17,8 @@
*/ */
package org.jackhuang.hmcl.ui; package org.jackhuang.hmcl.ui;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.ReadOnlyStringProperty;
import javafx.beans.property.StringProperty; import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import org.jackhuang.hmcl.setting.ConfigHolder; import org.jackhuang.hmcl.setting.ConfigHolder;
@@ -31,7 +31,7 @@ import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
public final class MainPage extends StackPane implements DecoratorPage { public final class MainPage extends StackPane implements DecoratorPage {
private final StringProperty title = new SimpleStringProperty(this, "title", i18n("main_page")); private final ReadOnlyStringWrapper title = new ReadOnlyStringWrapper(this, "title", i18n("main_page"));
@FXML @FXML
private StackPane main; private StackPane main;
@@ -58,8 +58,8 @@ public final class MainPage extends StackPane implements DecoratorPage {
} }
@Override @Override
public StringProperty titleProperty() { public ReadOnlyStringProperty titleProperty() {
return title; return title.getReadOnlyProperty();
} }
public void setTitle(String title) { public void setTitle(String title) {

View File

@@ -24,10 +24,7 @@ import javafx.beans.InvalidationListener;
import javafx.beans.WeakInvalidationListener; import javafx.beans.WeakInvalidationListener;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.binding.When; import javafx.beans.binding.When;
import javafx.beans.property.ObjectProperty; import javafx.beans.property.*;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.scene.control.Label; import javafx.scene.control.Label;
@@ -54,7 +51,7 @@ import static org.jackhuang.hmcl.setting.ConfigHolder.config;
import static org.jackhuang.hmcl.util.i18n.I18n.i18n; import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
public final class SettingsPage extends SettingsView implements DecoratorPage { public final class SettingsPage extends SettingsView implements DecoratorPage {
private final StringProperty title = new SimpleStringProperty(this, "title", i18n("settings.launcher")); private final ReadOnlyStringWrapper title = new ReadOnlyStringWrapper(this, "title", i18n("settings.launcher"));
private ObjectProperty<Proxy.Type> selectedProxyType; private ObjectProperty<Proxy.Type> selectedProxyType;
@@ -238,8 +235,8 @@ public final class SettingsPage extends SettingsView implements DecoratorPage {
} }
@Override @Override
public StringProperty titleProperty() { public ReadOnlyStringProperty titleProperty() {
return title; return title.getReadOnlyProperty();
} }
public void setTitle(String title) { public void setTitle(String title) {

View File

@@ -32,7 +32,7 @@ import static org.jackhuang.hmcl.ui.FXUtils.onInvalidating;
import static org.jackhuang.hmcl.util.i18n.I18n.i18n; import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
public class AccountList extends Control implements DecoratorPage { public class AccountList extends Control implements DecoratorPage {
private final StringProperty title = new SimpleStringProperty(i18n("account.manage")); private final ReadOnlyStringWrapper title = new ReadOnlyStringWrapper(i18n("account.manage"));
private final ListProperty<AccountListItem> items = new SimpleListProperty<>(FXCollections.observableArrayList()); private final ListProperty<AccountListItem> items = new SimpleListProperty<>(FXCollections.observableArrayList());
private ObjectProperty<Account> selectedAccount = new SimpleObjectProperty<Account>() { private ObjectProperty<Account> selectedAccount = new SimpleObjectProperty<Account>() {
{ {
@@ -87,7 +87,7 @@ public class AccountList extends Control implements DecoratorPage {
} }
@Override @Override
public StringProperty titleProperty() { public ReadOnlyStringProperty titleProperty() {
return title; return title.getReadOnlyProperty();
} }
} }

View File

@@ -18,8 +18,8 @@
package org.jackhuang.hmcl.ui.account; package org.jackhuang.hmcl.ui.account;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.ReadOnlyStringProperty;
import javafx.beans.property.StringProperty; import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.ScrollPane; import javafx.scene.control.ScrollPane;
@@ -36,7 +36,7 @@ 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;
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.manage.title")); private final ReadOnlyStringWrapper title = new ReadOnlyStringWrapper(this, "title", i18n("account.injector.manage.title"));
@FXML private ScrollPane scrollPane; @FXML private ScrollPane scrollPane;
@FXML private VBox listPane; @FXML private VBox listPane;
@@ -67,8 +67,8 @@ public class AuthlibInjectorServersPage extends StackPane implements DecoratorPa
} }
@Override @Override
public StringProperty titleProperty() { public ReadOnlyStringProperty titleProperty() {
return title; return title.getReadOnlyProperty();
} }
public void setTitle(String title) { public void setTitle(String title) {

View File

@@ -17,10 +17,10 @@
*/ */
package org.jackhuang.hmcl.ui.decorator; package org.jackhuang.hmcl.ui.decorator;
import javafx.beans.property.StringProperty; import javafx.beans.property.ReadOnlyStringProperty;
public interface DecoratorPage { public interface DecoratorPage {
StringProperty titleProperty(); ReadOnlyStringProperty titleProperty();
default boolean canForceToClose() { default boolean canForceToClose() {
return false; return false;

View File

@@ -32,7 +32,7 @@ import static org.jackhuang.hmcl.ui.FXUtils.onInvalidating;
import static org.jackhuang.hmcl.util.i18n.I18n.i18n; import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
public class ProfileList extends Control implements DecoratorPage { public class ProfileList extends Control implements DecoratorPage {
private final StringProperty title = new SimpleStringProperty(i18n("profile.manage")); private final ReadOnlyStringWrapper title = new ReadOnlyStringWrapper(i18n("profile.manage"));
private final ListProperty<ProfileListItem> items = new SimpleListProperty<>(FXCollections.observableArrayList()); private final ListProperty<ProfileListItem> items = new SimpleListProperty<>(FXCollections.observableArrayList());
private ObjectProperty<Profile> selectedProfile = new SimpleObjectProperty<Profile>() { private ObjectProperty<Profile> selectedProfile = new SimpleObjectProperty<Profile>() {
{ {
@@ -87,7 +87,7 @@ public class ProfileList extends Control implements DecoratorPage {
} }
@Override @Override
public StringProperty titleProperty() { public ReadOnlyStringProperty titleProperty() {
return title; return title.getReadOnlyProperty();
} }
} }

View File

@@ -20,6 +20,8 @@ package org.jackhuang.hmcl.ui.profile;
import com.jfoenix.controls.JFXButton; import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXCheckBox; import com.jfoenix.controls.JFXCheckBox;
import com.jfoenix.controls.JFXTextField; import com.jfoenix.controls.JFXTextField;
import javafx.beans.property.ReadOnlyStringProperty;
import javafx.beans.property.ReadOnlyStringWrapper;
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;
@@ -39,7 +41,7 @@ import java.util.Optional;
import static org.jackhuang.hmcl.util.i18n.I18n.i18n; import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
public final class ProfilePage extends StackPane implements DecoratorPage { public final class ProfilePage extends StackPane implements DecoratorPage {
private final StringProperty title; private final ReadOnlyStringWrapper title;
private final StringProperty location; private final StringProperty location;
private final Profile profile; private final Profile profile;
@@ -55,7 +57,7 @@ public final class ProfilePage extends StackPane implements DecoratorPage {
this.profile = profile; this.profile = profile;
String profileDisplayName = Optional.ofNullable(profile).map(Profiles::getProfileDisplayName).orElse(""); String profileDisplayName = Optional.ofNullable(profile).map(Profiles::getProfileDisplayName).orElse("");
title = new SimpleStringProperty(this, "title", title = new ReadOnlyStringWrapper(this, "title",
profile == null ? i18n("profile.new") : i18n("profile") + " - " + profileDisplayName); profile == null ? i18n("profile.new") : i18n("profile") + " - " + profileDisplayName);
location = new SimpleStringProperty(this, "location", location = new SimpleStringProperty(this, "location",
Optional.ofNullable(profile).map(Profile::getGameDir).map(File::getAbsolutePath).orElse("")); Optional.ofNullable(profile).map(Profile::getGameDir).map(File::getAbsolutePath).orElse(""));
@@ -101,8 +103,8 @@ public final class ProfilePage extends StackPane implements DecoratorPage {
} }
@Override @Override
public StringProperty titleProperty() { public ReadOnlyStringProperty titleProperty() {
return title; return title.getReadOnlyProperty();
} }
public void setTitle(String title) { public void setTitle(String title) {

View File

@@ -41,7 +41,7 @@ import java.util.stream.Collectors;
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 {
private final StringProperty title = new SimpleStringProperty(I18n.i18n("version.manage")); private final ReadOnlyStringWrapper title = new ReadOnlyStringWrapper(I18n.i18n("version.manage"));
private final BooleanProperty loading = new SimpleBooleanProperty(true); private final BooleanProperty loading = new SimpleBooleanProperty(true);
private final ListProperty<GameListItem> items = new SimpleListProperty<>(FXCollections.observableArrayList()); private final ListProperty<GameListItem> items = new SimpleListProperty<>(FXCollections.observableArrayList());
@@ -115,8 +115,8 @@ public class GameList extends Control implements DecoratorPage {
} }
@Override @Override
public StringProperty titleProperty() { public ReadOnlyStringProperty titleProperty() {
return title; return title.getReadOnlyProperty();
} }
public BooleanProperty loadingProperty() { public BooleanProperty loadingProperty() {

View File

@@ -21,8 +21,8 @@ import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXListView; import com.jfoenix.controls.JFXListView;
import com.jfoenix.controls.JFXPopup; import com.jfoenix.controls.JFXPopup;
import com.jfoenix.controls.JFXTabPane; import com.jfoenix.controls.JFXTabPane;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.ReadOnlyStringProperty;
import javafx.beans.property.StringProperty; import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
@@ -37,7 +37,7 @@ import java.io.File;
import static org.jackhuang.hmcl.util.i18n.I18n.i18n; import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
public final class VersionPage extends StackPane implements DecoratorPage { public final class VersionPage extends StackPane implements DecoratorPage {
private final StringProperty title = new SimpleStringProperty(this, "title", null); private final ReadOnlyStringWrapper title = new ReadOnlyStringWrapper(this, "title", null);
@FXML @FXML
private VersionSettingsPage versionSettings; private VersionSettingsPage versionSettings;
@@ -167,8 +167,8 @@ public final class VersionPage extends StackPane implements DecoratorPage {
} }
@Override @Override
public StringProperty titleProperty() { public ReadOnlyStringProperty titleProperty() {
return title; return title.getReadOnlyProperty();
} }
public void setTitle(String title) { public void setTitle(String title) {

View File

@@ -24,8 +24,8 @@ import com.jfoenix.controls.JFXToggleButton;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.beans.InvalidationListener; import javafx.beans.InvalidationListener;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.ReadOnlyStringProperty;
import javafx.beans.property.StringProperty; import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane; import javafx.scene.control.ScrollPane;
@@ -36,6 +36,7 @@ import javafx.scene.layout.VBox;
import javafx.stage.FileChooser; import javafx.stage.FileChooser;
import org.jackhuang.hmcl.setting.EnumGameDirectory; import org.jackhuang.hmcl.setting.EnumGameDirectory;
import org.jackhuang.hmcl.setting.Profile; import org.jackhuang.hmcl.setting.Profile;
import org.jackhuang.hmcl.setting.Profiles;
import org.jackhuang.hmcl.setting.VersionSetting; import org.jackhuang.hmcl.setting.VersionSetting;
import org.jackhuang.hmcl.task.Schedulers; import org.jackhuang.hmcl.task.Schedulers;
import org.jackhuang.hmcl.task.Task; import org.jackhuang.hmcl.task.Task;
@@ -61,7 +62,7 @@ import java.util.stream.Collectors;
import static org.jackhuang.hmcl.util.i18n.I18n.i18n; import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
public final class VersionSettingsPage extends StackPane implements DecoratorPage { public final class VersionSettingsPage extends StackPane implements DecoratorPage {
private final StringProperty title = new SimpleStringProperty(); private final ReadOnlyStringWrapper title = new ReadOnlyStringWrapper();
private VersionSetting lastVersionSetting = null; private VersionSetting lastVersionSetting = null;
private Profile profile; private Profile profile;
@@ -156,6 +157,7 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
rootPane.getChildren().remove(iconPickerItemWrapper); rootPane.getChildren().remove(iconPickerItemWrapper);
rootPane.getChildren().remove(settingsTypePane); rootPane.getChildren().remove(settingsTypePane);
chkEnableSpecificSettings.setSelected(true); chkEnableSpecificSettings.setSelected(true);
title.set(Profiles.getProfileDisplayName(profile) + " - " + i18n("settings.type.global.manage"));
} }
VersionSetting versionSetting = profile.getVersionSetting(versionId); VersionSetting versionSetting = profile.getVersionSetting(versionId);
@@ -310,7 +312,7 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
} }
@Override @Override
public StringProperty titleProperty() { public ReadOnlyStringProperty titleProperty() {
return title; return title;
} }
} }

View File

@@ -135,7 +135,6 @@ public class Versions {
public static void modifyGlobalSettings(Profile profile) { public static void modifyGlobalSettings(Profile profile) {
VersionSettingsPage page = new VersionSettingsPage(); VersionSettingsPage page = new VersionSettingsPage();
page.loadVersionSetting(profile, null); page.loadVersionSetting(profile, null);
page.titleProperty().set(Profiles.getProfileDisplayName(profile) + " - " + i18n("settings.type.global.manage"));
Controllers.navigate(page); Controllers.navigate(page);
} }
} }