95 lines
2.5 KiB
C#

namespace SharpUI.Source.Common.UI.Elements.State
{
public class ElementState : IElementState
{
private bool _isSelectable;
private bool _isClickable;
private bool _isEnabled;
private bool _isSelected;
private bool _isFocused;
private bool _isPressed;
public ElementState()
{
_isSelectable = true;
_isClickable = true;
SetDefaults();
}
public ElementState(bool selectable = true, bool clickable = true, bool enabled = true, bool selected = false,
bool focused = false, bool pressed = false)
{
_isSelectable = selectable;
_isClickable = clickable;
_isEnabled = enabled;
_isSelected = selected;
_isFocused = focused;
_isPressed = pressed;
}
private void SetDefaults()
{
_isEnabled = true;
_isSelected = false;
_isPressed = false;
_isFocused = false;
}
public void Enable() => SetDefaults();
public void Disable() => _isEnabled = false;
public void Press() => _isPressed = true;
public void Release() => _isPressed = false;
public void Focus() => _isFocused = true;
public void UnFocus() => _isFocused = false;
public void SelectIfSelectable()
{
if (_isSelectable)
_isSelected = true;
}
public void DeselectIfSelectable()
{
if (_isSelectable)
_isSelected = false;
}
public void MakeSelectable() => _isSelectable = true;
public void MakeNonSelectable() => _isSelectable = false;
public void MakeClickable() => _isClickable = true;
public void MakeNonClickable() => _isClickable = false;
public bool IsSelectable() => _isSelectable;
public bool IsNonSelectable() => !_isSelectable;
public bool IsSelected() => _isSelected;
public bool IsDeselected() => !_isSelected;
public bool IsFocused() => _isFocused;
public bool IsUnFocused() => !_isFocused;
public bool IsPressed() => _isPressed;
public bool IsReleased() => !_isPressed;
public bool IsEnabled() => _isEnabled;
public bool IsDisabled() => !_isEnabled;
public bool IsClickable() => _isClickable;
public bool IsNotClickable() => !_isClickable;
}
}