3e4e7a1a40
...and some other funny mistakes found in Javadoc
100 lines
2.7 KiB
Java
100 lines
2.7 KiB
Java
package envoy.client.data;
|
|
|
|
import java.io.Serializable;
|
|
import java.util.function.Consumer;
|
|
|
|
import javax.swing.JComponent;
|
|
|
|
/**
|
|
* Encapsulates a persistent value that is directly or indirectly mutable by the
|
|
* user.
|
|
* <p>
|
|
* Project: <strong>envoy-client</strong><br>
|
|
* File: <strong>SettingsItem.java</strong><br>
|
|
* Created: <strong>23.12.2019</strong><br>
|
|
*
|
|
* @param <T> the type of this {@link SettingsItem}'s value
|
|
* @author Kai S. K. Engelbart
|
|
* @since Envoy Client v0.3-alpha
|
|
*/
|
|
public class SettingsItem<T> implements Serializable {
|
|
|
|
private T value;
|
|
private String userFriendlyName, description;
|
|
|
|
private transient Consumer<T> changeHandler;
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
/**
|
|
* 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}
|
|
* to the user.
|
|
*
|
|
* @param value the default value
|
|
* @param userFriendlyName the user friendly name (short)
|
|
* @param description the description (long)
|
|
* @since Envoy Client v0.3-alpha
|
|
*/
|
|
public SettingsItem(T value, String userFriendlyName, String description) {
|
|
this.value = value;
|
|
this.userFriendlyName = userFriendlyName;
|
|
this.description = description;
|
|
}
|
|
|
|
/**
|
|
* @return the value
|
|
* @since Envoy Client v0.3-alpha
|
|
*/
|
|
public T get() { return value; }
|
|
|
|
/**
|
|
* Changes the value of this {@link SettingsItem}. If a {@code ChangeHandler} if
|
|
* defined, it will be invoked with this value.
|
|
*
|
|
* @param value the value to set
|
|
* @since Envoy Client v0.3-alpha
|
|
*/
|
|
public void set(T value) {
|
|
if (changeHandler != null && value != this.value) changeHandler.accept(value);
|
|
this.value = value;
|
|
}
|
|
|
|
/**
|
|
* @return the userFriendlyName
|
|
* @since Envoy Client v0.3-alpha
|
|
*/
|
|
public String getUserFriendlyName() { return userFriendlyName; }
|
|
|
|
/**
|
|
* @param userFriendlyName the userFriendlyName to set
|
|
* @since Envoy Client v0.3-alpha
|
|
*/
|
|
public void setUserFriendlyName(String userFriendlyName) { this.userFriendlyName = userFriendlyName; }
|
|
|
|
/**
|
|
* @return the description
|
|
* @since Envoy Client v0.3-alpha
|
|
*/
|
|
public String getDescription() { return description; }
|
|
|
|
/**
|
|
* @param description the description to set
|
|
* @since Envoy Client v0.3-alpha
|
|
*/
|
|
public void setDescription(String description) { this.description = description; }
|
|
|
|
/**
|
|
* Sets a {@code ChangeHandler} for this {@link SettingsItem}. It will be
|
|
* invoked with the current value once during the registration and every time
|
|
* when the value changes.
|
|
*
|
|
* @param changeHandler the changeHandler to set
|
|
* @since Envoy Client v0.3-alpha
|
|
*/
|
|
public void setChangeHandler(Consumer<T> changeHandler) {
|
|
this.changeHandler = changeHandler;
|
|
changeHandler.accept(value);
|
|
}
|
|
}
|