void NameNodeTextBox_LabelChanged(object sender, LabelEventArgs e)
 {
     NodeTextBox box = sender as NodeTextBox;
     if (box.Parent.CurrentNode == null) return;
     DataNode node = box.Parent.CurrentNode.Tag as DataNode;
     if (e.NewLabel.Trim() == "" || e.NewLabel.Trim() == TextHelper.GetString("Label.AddExpression"))
     {
         node.Text = e.OldLabel != "" ? e.OldLabel : TextHelper.GetString("Label.AddExpression");
         return;
     }
     bool newExp;
     if (node.NextNode == null) newExp = PanelsHelper.watchUI.AddElement(e.NewLabel);
     else newExp = PanelsHelper.watchUI.ReplaceElement(e.OldLabel, e.NewLabel);
     if (!newExp) node.Text = e.OldLabel;
 }
 void ValueNodeTextBox_LabelChanged(object sender, LabelEventArgs e)
 {
     NodeTextBox box = sender as NodeTextBox;
     if (box.Parent.CurrentNode == null) return;
     VariableNode node = box.Parent.CurrentNode.Tag as VariableNode;
     node.IsEditing = false;
     try
     {
         var debugManager = PluginMain.debugManager;
         var flashInterface = debugManager.FlashInterface;
         IASTBuilder b = new ASTBuilder(false);
         ValueExp exp = b.parse(new java.io.StringReader(node.GetVariablePath()));
         var ctx = new ExpressionContext(flashInterface.Session, flashInterface.GetFrames()[debugManager.CurrentFrame]);
         var obj = exp.evaluate(ctx);
         node.Variable = (Variable)obj;
         if (!watchMode) PanelsHelper.watchUI.UpdateElements();
         if (ValueChanged != null) ValueChanged(this, EventArgs.Empty);
     }
     catch (Exception ex)
     {
         ErrorManager.ShowError(TextHelper.GetString("Error.Reevaluate"), ex);
     }
 }
        /// <summary>
        /// Called after a label has been edited.  We need to do some name validation here
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void textBox_LabelChanged(object sender, LabelEventArgs e)
        {
            SceneNode node = e.Subject as SceneNode;
            if (node == null)
                return;

            GUIView view = node.Tag as GUIView;
            GUIControl control = node.Tag as GUIControl;
            if(view != null)
            {
                GUIView existingView = Scene.GetView(e.NewLabel);
                if(existingView != null)
                {
                    MessageBox.Show("Name already in use", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                // If we got here, it's a unique name.  Change it now.
                view.Name = e.NewLabel;
              
                if (SelectedViewRenamed != null)
                    SelectedViewRenamed(this, view);
            }
            else if(control != null)
            {
                // Check to see if the parent sceneView contains any other controls by the same name.
                if (control.ParentView.Controls.GetControl(e.NewLabel) != null)
                {
                    MessageBox.Show("Name already in use", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                // If we got here, it's a unique name.  Change it now.
                control.Name = e.NewLabel;

                if (SelectedControlRenamed != null)
                    SelectedControlRenamed(this, control);
            }
        }