protected override void DoubleClickedItem(int id)
        {
            var element = (ActionTreeViewItem)FindItem(id, rootItem);
            var rect    = new Rect(GUIUtility.GUIToScreenPoint(Event.current.mousePosition), Vector2.zero);

            BindingPropertiesPopup.Show(rect, element, Reload);
        }
        protected override void RowGUI(RowGUIArgs args)
        {
            if (args.item is InputTreeViewLine)
            {
                var bindingItem = (args.item as InputTreeViewLine);

                // We try to predict the indentation
                var indent = (args.item.depth + 2) * 6 + 10;
                bindingItem.OnGUI(args.rowRect, args.selected, args.focused, indent);

                var btnRect = args.rowRect;
                btnRect.x     = btnRect.width - 20;
                btnRect.width = 20;

                if (!bindingItem.hasProperties)
                {
                    return;
                }

                if (GUI.Button(btnRect, "..."))
                {
                    var screenPoint = GUIUtility.GUIToScreenPoint(new Vector2(btnRect.x, btnRect.y));
                    btnRect.x = screenPoint.x;
                    btnRect.y = screenPoint.y;
                    BindingPropertiesPopup.Show(btnRect, bindingItem, Reload);
                }
            }
        }