Fixed settings pane selection
This commit is contained in:
		| @@ -88,11 +88,11 @@ public class Settings { | ||||
| 	/** | ||||
| 	 * Updates the preferences when the save button is clicked. | ||||
| 	 * | ||||
| 	 * @throws IOException if an error occurs while saving the themes to the theme | ||||
| 	 *                     file | ||||
| 	 * @throws IOException if an error occurs while saving the themes | ||||
| 	 * @since Envoy Client v0.2-alpha | ||||
| 	 */ | ||||
| 	public void save() throws IOException { | ||||
|  | ||||
| 		// Save settings to settings file | ||||
| 		SerializationUtils.write(settingsFile, items); | ||||
|  | ||||
|   | ||||
| @@ -2,14 +2,9 @@ package envoy.client.data; | ||||
|  | ||||
| import java.io.Serializable; | ||||
| import java.util.function.Consumer; | ||||
| import java.util.function.Function; | ||||
|  | ||||
| import javax.swing.JComponent; | ||||
|  | ||||
| import javafx.scene.Node; | ||||
|  | ||||
| import envoy.client.ui.SettingsToggleButton; | ||||
|  | ||||
| /** | ||||
|  * Encapsulates a persistent value that is directly or indirectly mutable by the | ||||
|  * user.<br> | ||||
| @@ -28,7 +23,6 @@ public class SettingsItem<T> implements Serializable { | ||||
| 	private String	userFriendlyName, description; | ||||
|  | ||||
| 	private transient Consumer<T>								changeHandler; | ||||
| 	private transient Function<SettingsItem<?>, ? extends Node>	nodeCreator; | ||||
|  | ||||
| 	private static final long serialVersionUID = 1L; | ||||
|  | ||||
| @@ -46,8 +40,6 @@ public class SettingsItem<T> implements Serializable { | ||||
| 		this.value				= value; | ||||
| 		this.userFriendlyName	= userFriendlyName; | ||||
| 		this.description		= description; | ||||
|  | ||||
| 		if (value.getClass() == Boolean.class) nodeCreator = s -> new SettingsToggleButton((SettingsItem<Boolean>) s); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| @@ -104,8 +96,4 @@ public class SettingsItem<T> implements Serializable { | ||||
| 		this.changeHandler = changeHandler; | ||||
| 		changeHandler.accept(value); | ||||
| 	} | ||||
|  | ||||
| 	public boolean hasNodeCreator() { return nodeCreator != null; } | ||||
|  | ||||
| 	public Node getNode() { return nodeCreator.apply(this); } | ||||
| } | ||||
|   | ||||
| @@ -1,8 +1,11 @@ | ||||
| package envoy.client.ui; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import javafx.scene.layout.VBox; | ||||
|  | ||||
| import envoy.client.data.Settings; | ||||
| import envoy.client.data.SettingsItem; | ||||
|  | ||||
| /** | ||||
|  * Project: <strong>envoy-client</strong><br> | ||||
| @@ -22,8 +25,13 @@ public class GeneralSettingsPane extends SettingsPane { | ||||
| 	public GeneralSettingsPane() { | ||||
| 		super("General"); | ||||
| 		var vbox = new VBox(); | ||||
| 		for (var name : new String[] { "onCloseMode", "enterToSend" }) | ||||
| 			vbox.getChildren().add(settings.getItems().get(name).getNode()); | ||||
|  | ||||
| 		// TODO: Support other value types | ||||
| 		List.of("onCloseMode", "enterToSend") | ||||
| 			.stream() | ||||
| 			.map(settings.getItems()::get) | ||||
| 			.map(i -> new SettingsToggleButton((SettingsItem<Boolean>) i)) | ||||
| 			.forEach(vbox.getChildren()::add); | ||||
| 		getChildren().add(vbox); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -33,17 +33,22 @@ public class SettingsSceneController { | ||||
| 		settingsList.setCellFactory(listView -> new ListCell<>() { | ||||
|  | ||||
| 			@Override | ||||
| 			protected void updateItem(SettingsPane item, boolean empty) { if (!empty && item != null) setGraphic(new Label(item.getTitle())); } | ||||
| 			protected void updateItem(SettingsPane item, boolean empty) { | ||||
| 				super.updateItem(item, empty); | ||||
| 				if (!empty && item != null) setGraphic(new Label(item.getTitle())); | ||||
| 			} | ||||
| 		}); | ||||
|  | ||||
| 		// settingsList.getItems().add(new GeneralSettingsPane()); | ||||
| 		settingsList.getItems().add(new GeneralSettingsPane()); | ||||
| 	} | ||||
|  | ||||
| 	@FXML | ||||
| 	private void settingsListClicked() { | ||||
| 		final var pane = settingsList.getSelectionModel().getSelectedItem(); | ||||
| 		titledPane.setText(pane.getTitle()); | ||||
| 		titledPane.setContent(pane); | ||||
| 		if (pane != null) { | ||||
| 			titledPane.setText(pane.getTitle()); | ||||
| 			titledPane.setContent(pane); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	@FXML | ||||
|   | ||||
		Reference in New Issue
	
	Block a user