using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace SCJMapper_V2 { /// /// Our INPUT TreeNode - inherits a regular one and adds some functionality /// /// contains the input command i.e. - js2_button3 OR ! js1_x (MODs applies at the very beginning of the string) /// class ActionTreeInputNode : ActionTreeNode { #region Static items // Handle all text label composition and extraction here public static String ComposeNodeText( String cmd, Boolean modified = false ) { if ( String.IsNullOrEmpty( cmd ) ) { return ""; } else { if ( modified ) return string.Format( "{0} {1}", cmd, ActionTreeNode.ModDiv ); // js1_button1 # else return string.Format( "{0}", cmd ); // js1_button1 } } public static void DecompNodeText( String nodeText, out String cmd ) { String[] e = nodeText.Split( new char[] { RegDiv, ModDiv }, StringSplitOptions.RemoveEmptyEntries ); if ( e.Length > 0 ) cmd = e[0].TrimEnd( ); else cmd = nodeText; } /// /// Returns the command part from a node text /// i.e. v_pitch - js1_x returns js1_x /// /// The node text in 'action - command' notation /// the command part or an empty string public new static String CommandFromNodeText( String nodeText ) { String cmd; ActionTreeInputNode.DecompNodeText( nodeText, out cmd ); return cmd; } #endregion // Object defs // ctor public ActionTreeInputNode( ) : base( ) { } // ctor public ActionTreeInputNode( ActionTreeInputNode srcNode ) : base( srcNode ) { if ( srcNode == null ) return; /* this.Name = srcNode.Name; this.Text = srcNode.Text; this.BackColor = srcNode.BackColor; this.ForeColor = srcNode.ForeColor; this.NodeFont = srcNode.NodeFont; this.ImageKey = srcNode.ImageKey; this.Tag = srcNode.Tag; this.m_command = srcNode.m_command; */ } // ctor public ActionTreeInputNode( string text ) : base ( text ) { //this.Text = text; } // ctor public ActionTreeInputNode( string text, ActionTreeInputNode[] children ) : base( text, children ) { } //private String m_command =""; public new String Text { get { return base.Text; } set { ActionTreeInputNode.DecompNodeText( value, out m_command ); base.Text = ActionTreeInputNode.ComposeNodeText( "$" + m_command, m_modified ); // tag for the node processing } } public new String Command { get { return m_command; } set { m_command = value; Text = ActionTreeInputNode.ComposeNodeText( m_command, m_modified ); // compose - later it will be decomposed again } } } }