/// <summary> /// Checks if an existing identifier at the focus can be split in two. /// </summary> /// <param name="inner">Inner to use to split the identifier upon return.</param> /// <param name="replaceIndex">Index of the identifier to replace upon return.</param> /// <param name="insertIndex">Index of the identifier to insert upon return.</param> /// <returns>True if an identifier can be split at the focus.</returns> public virtual bool IsIdentifierSplittable(out IFocusListInner inner, out IFocusInsertionListNodeIndex replaceIndex, out IFocusInsertionListNodeIndex insertIndex) { inner = null; replaceIndex = null; insertIndex = null; bool IsSplittable = false; IFocusNodeState IdentifierState = Focus.CellView.StateView.State; if (IdentifierState.Node is Identifier AsIdentifier) { IFocusNodeState ParentState = IdentifierState.ParentState; if (ParentState.Node is QualifiedName) { string Text = AsIdentifier.Text; Debug.Assert(CaretPosition >= 0 && CaretPosition <= Text.Length); inner = IdentifierState.ParentInner as IFocusListInner; Debug.Assert(inner != null); IFocusBrowsingListNodeIndex CurrentIndex = IdentifierState.ParentIndex as IFocusBrowsingListNodeIndex; Debug.Assert(CurrentIndex != null); Identifier FirstPart = NodeHelper.CreateSimpleIdentifier(Text.Substring(0, CaretPosition)); Identifier SecondPart = NodeHelper.CreateSimpleIdentifier(Text.Substring(CaretPosition)); replaceIndex = CurrentIndex.ToInsertionIndex(ParentState.Node, FirstPart) as IFocusInsertionListNodeIndex; Debug.Assert(replaceIndex != null); insertIndex = CurrentIndex.ToInsertionIndex(ParentState.Node, SecondPart) as IFocusInsertionListNodeIndex; Debug.Assert(insertIndex != null); insertIndex.MoveUp(); IsSplittable = true; } } return(IsSplittable); }
bool ICollection <IFocusBrowsingListNodeIndex> .Remove(IFocusBrowsingListNodeIndex item) { return(Remove((ILayoutBrowsingListNodeIndex)item)); }
bool ICollection <IFocusBrowsingListNodeIndex> .Contains(IFocusBrowsingListNodeIndex value) { return(Contains((ILayoutBrowsingListNodeIndex)value)); }
void ICollection <IFocusBrowsingListNodeIndex> .Add(IFocusBrowsingListNodeIndex item) { Add((ILayoutBrowsingListNodeIndex)item); }
void IList <IFocusBrowsingListNodeIndex> .Insert(int index, IFocusBrowsingListNodeIndex item) { Insert(index, (ILayoutBrowsingListNodeIndex)item); }
int IList <IFocusBrowsingListNodeIndex> .IndexOf(IFocusBrowsingListNodeIndex value) { return(IndexOf((ILayoutBrowsingListNodeIndex)value)); }