Added SettingsToggleButton
This commit is contained in:
		@@ -1,8 +1,6 @@
 | 
			
		||||
package envoy.client.data;
 | 
			
		||||
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.function.Consumer;
 | 
			
		||||
import java.util.function.Function;
 | 
			
		||||
 | 
			
		||||
@@ -10,11 +8,13 @@ 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>
 | 
			
		||||
 * <br>
 | 
			
		||||
 * Project: <strong>envoy-clientChess</strong><br>
 | 
			
		||||
 * Project: <strong>envoy-client</strong><br>
 | 
			
		||||
 * File: <strong>SettingsItem.java</strong><br>
 | 
			
		||||
 * Created: <strong>23.12.2019</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
@@ -27,17 +27,11 @@ public class SettingsItem<T> implements Serializable {
 | 
			
		||||
	private T		value;
 | 
			
		||||
	private String	userFriendlyName, description;
 | 
			
		||||
 | 
			
		||||
	private transient Consumer<T>						changeHandler;
 | 
			
		||||
	private transient Function<SettingsItem<?>, Node>	nodeCreator;
 | 
			
		||||
 | 
			
		||||
	private static final Map<Class<?>, Function<SettingsItem<?>, Node>> nodeCreators = new HashMap<>();
 | 
			
		||||
	private transient Consumer<T>								changeHandler;
 | 
			
		||||
	private transient Function<SettingsItem<?>, ? extends Node>	nodeCreator;
 | 
			
		||||
 | 
			
		||||
	private static final long serialVersionUID = 1L;
 | 
			
		||||
 | 
			
		||||
	static {
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Initializes a {@link SettingsItem}. The default value's class will be mapped
 | 
			
		||||
	 * to a {@link JComponent} that can be used to display this {@link SettingsItem}
 | 
			
		||||
@@ -53,7 +47,7 @@ public class SettingsItem<T> implements Serializable {
 | 
			
		||||
		this.userFriendlyName	= userFriendlyName;
 | 
			
		||||
		this.description		= description;
 | 
			
		||||
 | 
			
		||||
		if (nodeCreators.containsKey(value.getClass())) nodeCreator = nodeCreators.get(value.getClass());
 | 
			
		||||
		if (value.getClass() == Boolean.class) nodeCreator = s -> new SettingsToggleButton((SettingsItem<Boolean>) s);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,7 @@
 | 
			
		||||
package envoy.client.ui;
 | 
			
		||||
 | 
			
		||||
import javafx.scene.layout.VBox;
 | 
			
		||||
 | 
			
		||||
import envoy.client.data.Settings;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -17,5 +19,11 @@ public class GeneralSettingsPane extends SettingsPane {
 | 
			
		||||
	/**
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public GeneralSettingsPane() { super("General"); }
 | 
			
		||||
	public GeneralSettingsPane() {
 | 
			
		||||
		super("General");
 | 
			
		||||
		var vbox = new VBox();
 | 
			
		||||
		for (var name : new String[] { "onCloseMode", "enterToSend" })
 | 
			
		||||
			vbox.getChildren().add(settings.getItems().get(name).getNode());
 | 
			
		||||
		getChildren().add(vbox);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										23
									
								
								src/main/java/envoy/client/ui/SettingsToggleButton.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/main/java/envoy/client/ui/SettingsToggleButton.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
package envoy.client.ui;
 | 
			
		||||
 | 
			
		||||
import javafx.event.ActionEvent;
 | 
			
		||||
import javafx.scene.control.ToggleButton;
 | 
			
		||||
 | 
			
		||||
import envoy.client.data.SettingsItem;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Project: <strong>envoy-client</strong><br>
 | 
			
		||||
 * File: <strong>SettingsToggleButton.java</strong><br>
 | 
			
		||||
 * Created: <strong>18.04.2020</strong><br>
 | 
			
		||||
 * 
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
public final class SettingsToggleButton extends ToggleButton {
 | 
			
		||||
 | 
			
		||||
	public SettingsToggleButton(SettingsItem<Boolean> settingsItem) {
 | 
			
		||||
		super(settingsItem.getUserFriendlyName());
 | 
			
		||||
		addEventHandler(ActionEvent.ACTION, e -> settingsItem.set(!settingsItem.get()));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -17,6 +17,7 @@ module envoy {
 | 
			
		||||
	requires javafx.controls;
 | 
			
		||||
	requires javafx.fxml;
 | 
			
		||||
	requires javafx.base;
 | 
			
		||||
	requires javafx.graphics;
 | 
			
		||||
 | 
			
		||||
	opens envoy.client.ui to javafx.graphics, javafx.fxml;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user