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;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.property.ReadOnlyStringProperty;
import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.fxml.FXML;
import javafx.scene.layout.StackPane;
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 {
private final StringProperty title = new SimpleStringProperty(this, "title", i18n("main_page"));
private final ReadOnlyStringWrapper title = new ReadOnlyStringWrapper(this, "title", i18n("main_page"));
@FXML
private StackPane main;
@@ -58,8 +58,8 @@ public final class MainPage extends StackPane implements DecoratorPage {
}
@Override
public StringProperty titleProperty() {
return title;
public ReadOnlyStringProperty titleProperty() {
return title.getReadOnlyProperty();
}
public void setTitle(String title) {

View File

@@ -24,10 +24,7 @@ import javafx.beans.InvalidationListener;
import javafx.beans.WeakInvalidationListener;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.When;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.property.*;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
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;
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;
@@ -238,8 +235,8 @@ public final class SettingsPage extends SettingsView implements DecoratorPage {
}
@Override
public StringProperty titleProperty() {
return title;
public ReadOnlyStringProperty titleProperty() {
return title.getReadOnlyProperty();
}
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;
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 ObjectProperty<Account> selectedAccount = new SimpleObjectProperty<Account>() {
{
@@ -87,7 +87,7 @@ public class AccountList extends Control implements DecoratorPage {
}
@Override
public StringProperty titleProperty() {
return title;
public ReadOnlyStringProperty titleProperty() {
return title.getReadOnlyProperty();
}
}

View File

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

View File

@@ -17,10 +17,10 @@
*/
package org.jackhuang.hmcl.ui.decorator;
import javafx.beans.property.StringProperty;
import javafx.beans.property.ReadOnlyStringProperty;
public interface DecoratorPage {
StringProperty titleProperty();
ReadOnlyStringProperty titleProperty();
default boolean canForceToClose() {
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;
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 ObjectProperty<Profile> selectedProfile = new SimpleObjectProperty<Profile>() {
{
@@ -87,7 +87,7 @@ public class ProfileList extends Control implements DecoratorPage {
}
@Override
public StringProperty titleProperty() {
return title;
public ReadOnlyStringProperty titleProperty() {
return title.getReadOnlyProperty();
}
}

View File

@@ -20,6 +20,8 @@ package org.jackhuang.hmcl.ui.profile;
import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXCheckBox;
import com.jfoenix.controls.JFXTextField;
import javafx.beans.property.ReadOnlyStringProperty;
import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.fxml.FXML;
@@ -39,7 +41,7 @@ import java.util.Optional;
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
public final class ProfilePage extends StackPane implements DecoratorPage {
private final StringProperty title;
private final ReadOnlyStringWrapper title;
private final StringProperty location;
private final Profile profile;
@@ -55,7 +57,7 @@ public final class ProfilePage extends StackPane implements DecoratorPage {
this.profile = profile;
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);
location = new SimpleStringProperty(this, "location",
Optional.ofNullable(profile).map(Profile::getGameDir).map(File::getAbsolutePath).orElse(""));
@@ -101,8 +103,8 @@ public final class ProfilePage extends StackPane implements DecoratorPage {
}
@Override
public StringProperty titleProperty() {
return title;
public ReadOnlyStringProperty titleProperty() {
return title.getReadOnlyProperty();
}
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;
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 ListProperty<GameListItem> items = new SimpleListProperty<>(FXCollections.observableArrayList());
@@ -115,8 +115,8 @@ public class GameList extends Control implements DecoratorPage {
}
@Override
public StringProperty titleProperty() {
return title;
public ReadOnlyStringProperty titleProperty() {
return title.getReadOnlyProperty();
}
public BooleanProperty loadingProperty() {

View File

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

View File

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

View File

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