73 lines
3.0 KiB
Java
73 lines
3.0 KiB
Java
package envoy.client.ui.settings;
|
|
|
|
import javafx.scene.control.*;
|
|
|
|
import envoy.client.data.SettingsItem;
|
|
import envoy.client.event.ThemeChangeEvent;
|
|
import envoy.client.ui.StatusTrayIcon;
|
|
import envoy.client.util.UserUtil;
|
|
import envoy.data.User.UserStatus;
|
|
|
|
import dev.kske.eventbus.EventBus;
|
|
|
|
/**
|
|
* @author Kai S. K. Engelbart
|
|
* @since Envoy Client v0.1-beta
|
|
*/
|
|
public final class GeneralSettingsPane extends SettingsPane {
|
|
|
|
/**
|
|
* @since Envoy Client v0.1-beta
|
|
*/
|
|
public GeneralSettingsPane() {
|
|
super("General");
|
|
setSpacing(10);
|
|
|
|
final var settingsItems = settings.getItems();
|
|
|
|
// Add hide on close if supported
|
|
if (StatusTrayIcon.isSupported()) {
|
|
final var hideOnCloseCheckbox = new SettingsCheckbox((SettingsItem<Boolean>) settingsItems.get("hideOnClose"));
|
|
final var hideOnCloseTooltip = new Tooltip("If selected, Envoy will still be present in the task bar when closed.");
|
|
hideOnCloseTooltip.setWrapText(true);
|
|
hideOnCloseCheckbox.setTooltip(hideOnCloseTooltip);
|
|
getChildren().add(hideOnCloseCheckbox);
|
|
}
|
|
|
|
final var enterToSendCheckbox = new SettingsCheckbox((SettingsItem<Boolean>) settingsItems.get("enterToSend"));
|
|
final var enterToSendTooltip = new Tooltip(
|
|
"When selected, messages can be sent pressing \"Enter\". A line break can be inserted by pressing \"Ctrl\" + \"Enter\". Else it will be the other way around.");
|
|
enterToSendTooltip.setWrapText(true);
|
|
enterToSendCheckbox.setTooltip(enterToSendTooltip);
|
|
getChildren().add(enterToSendCheckbox);
|
|
|
|
final var askForConfirmationCheckbox = new SettingsCheckbox((SettingsItem<Boolean>) settingsItems.get("askForConfirmation"));
|
|
final var askForConfirmationTooltip = new Tooltip("When selected, nothing will prompt a confirmation dialog");
|
|
askForConfirmationTooltip.setWrapText(true);
|
|
askForConfirmationCheckbox.setTooltip(askForConfirmationTooltip);
|
|
getChildren().add(askForConfirmationCheckbox);
|
|
|
|
final var combobox = new ComboBox<String>();
|
|
combobox.getItems().add("dark");
|
|
combobox.getItems().add("light");
|
|
combobox.setTooltip(new Tooltip("Determines the current theme Envoy will be displayed in."));
|
|
combobox.setValue(settings.getCurrentTheme());
|
|
combobox.setOnAction(e -> { settings.setCurrentTheme(combobox.getValue()); EventBus.getInstance().dispatch(new ThemeChangeEvent()); });
|
|
getChildren().add(combobox);
|
|
|
|
final var statusComboBox = new ComboBox<UserStatus>();
|
|
statusComboBox.getItems().setAll(UserStatus.values());
|
|
statusComboBox.setValue(context.getLocalDB().getUser().getStatus());
|
|
statusComboBox.setTooltip(new Tooltip("Change your current status"));
|
|
statusComboBox.setOnAction(e -> UserUtil.changeStatus(statusComboBox.getValue()));
|
|
getChildren().add(statusComboBox);
|
|
|
|
final var logoutButton = new Button("Logout");
|
|
logoutButton.setOnAction(e -> UserUtil.logout());
|
|
final var logoutTooltip = new Tooltip("Brings you back to the login screen and removes \"remember me\" status from this account");
|
|
logoutTooltip.setWrapText(true);
|
|
logoutButton.setTooltip(logoutTooltip);
|
|
getChildren().add(logoutButton);
|
|
}
|
|
}
|