/// <summary> /// Selects or deselects a tab. /// </summary> private void SetSelected(Tab tab, bool selected) { if (tab == null) { return; } tab.IsSelected.Value = selected; if (selected) { // select tab header if it's not selected var tabHeader = TabHeaderList.Content.Find <TabHeader>(x => x.ParentTab == tab, false); if (tabHeader != null && !tabHeader.IsSelected) { TabHeaderList.SelectItem(tabHeader, false); } // object selected _selectedItem = tab.Item.Value; SelectedItem.Value = tab.Item.Value; SelectedTab = tab; if (Items != null) { Items.SetSelected(_selectedItem); } // trigger object selected action if (TabSelected.HasEntries) { TabSelected.Trigger(new TabSelectionActionData { IsSelected = true, TabView = tab, Item = tab.Item.Value }); } } }
/// <summary> /// Called when the list of objects has been changed. /// </summary> private void OnListChanged(object sender, ListChangedEventArgs e) { // update list of tabs if (e.ListChangeAction == ListChangeAction.Clear) { Clear(); } else if (e.ListChangeAction == ListChangeAction.Add) { AddRange(e.StartIndex, e.EndIndex); } else if (e.ListChangeAction == ListChangeAction.Remove) { RemoveRange(e.StartIndex, e.EndIndex); } else if (e.ListChangeAction == ListChangeAction.Select) { SelectTab(e.StartIndex, true); } if (ListChanged.HasEntries) { ListChanged.Trigger(new ListChangedActionData { ListChangeAction = e.ListChangeAction, StartIndex = e.StartIndex, EndIndex = e.EndIndex }); } LayoutsChanged(); }
/// <summary> /// Slides the slider to the given position. /// </summary> private void SetSlideTo(Vector2 mouseScreenPositionIn, bool isEndDrag = false) { var fillTransform = SliderFillRegion.RectTransform; var pos = GetLocalPoint(mouseScreenPositionIn); // calculate slide percentage (transform.position.x/y is center of fill area) float p = 0; float slideAreaLength = fillTransform.rect.width - SliderHandleImageView.Width.Value.Pixels; if (Orientation == ElementOrientation.Horizontal) { p = ((pos.x - fillTransform.localPosition.x + slideAreaLength / 2f) / slideAreaLength).Clamp(0, 1); } else { p = ((pos.y - fillTransform.localPosition.y + slideAreaLength / 2f) / slideAreaLength).Clamp(0, 1); } // set value float newValue = (Max - Min) * p + Min; if (!SetValueOnDragEnded || (SetValueOnDragEnded && isEndDrag)) { Value.Value = newValue; ValueChanged.Trigger(); } else { UpdateSliderPosition(newValue); } }
/// <summary> /// Called if a child animation has been completed. /// </summary> public virtual void ChildAnimationCompleted() { if (IsAnimationCompleted) { AnimationCompleted.Trigger(); } }
/// <summary> /// Called when input field value has been updated. /// </summary> public void InputFieldValueChanged(string value) { if (!SetValueOnEndEdit) { Text.Value = InputFieldComponent.text; } UpdatePlaceholder(); ValueChanged.Trigger(); }
/// <summary> /// Called on input field end edit. /// </summary> public void InputFieldEndEdit(string value) { if (SetValueOnEndEdit) { Text.Value = InputFieldComponent.text; } UpdatePlaceholder(); EndEdit.Trigger(); }
/// <summary> /// Called when ToggleValue field changes. /// </summary> public virtual void ToggleValueChanged() { // toggle state if (IsToggleButton) { UpdateState(); ToggleClick.Trigger(ToggleValue.Value); } }
/// <summary> /// Called when ToggleValue field changes. /// </summary> public virtual void ToggleValueChanged() { // toggle state if (IsToggleButton) { if (ToggleValue) { SetState("Pressed"); } else { SetState(DefaultStateName); } ToggleClick.Trigger(ToggleValue.Value); } }
/// <summary> /// Resumes the animation. /// </summary> public virtual void ResumeAnimation() { this.ForEachChild <ViewAnimation>(x => x.ResumeAnimation(), false); AnimationResumed.Trigger(); }
/// <summary> /// Pauses the animation. /// </summary> public virtual void PauseAnimation() { this.ForEachChild <ViewAnimation>(x => x.PauseAnimation(), false); AnimationPaused.Trigger(); }
/// <summary> /// Stops the animation. /// </summary> public virtual void StopAnimation() { this.ForEachChild <ViewAnimation>(x => x.StopAnimation(), false); AnimationStopped.Trigger(); }
/// <summary> /// Non-Propagating input event handler. Called on a view when it blurs. /// </summary> public virtual void HandleBlur() { OnBlur.Trigger(); }
/// <summary> /// Non-Propagating input event handler. Called on a view when it focuses. /// </summary> public virtual void HandleFocus() { OnFocus.Trigger(); }