public RowInteraction(
            IRowClickableLocations <TSource> clickableLocations,
            IRowExpanderClicker <TSource> rowExpanderClicker,
            IRowContentClicker <TSource> rowContentClicker,
            IRowContentActivator <TSource> rowContentActivator)
        {
            if (clickableLocations == null)
            {
                throw new ArgumentNullException("clickableLocations");
            }

            if (rowExpanderClicker == null)
            {
                throw new ArgumentNullException("rowExpanderClicker");
            }

            if (rowContentClicker == null)
            {
                throw new ArgumentNullException("rowContentClicker");
            }

            if (rowContentActivator == null)
            {
                throw new ArgumentNullException("rowContentActivator");
            }

            this.clickableLocations  = clickableLocations;
            this.rowExpanderClicker  = rowExpanderClicker;
            this.rowContentClicker   = rowContentClicker;
            this.rowContentActivator = rowContentActivator;
        }
 private void InitaliseTreeview()
 {
     this.gui                   = new GuiWrapper();
     this.guiLayout             = new GuiLayoutWrapper();
     this.log                   = new UnityLog();
     this.rowClickableLocations = new RowClickableLocations <Treeview_DataModel>();
     this.rowContentClicker     = new RowContentClicker <Treeview_DataModel>();
     this.rowExpanderClicker    = new RowExpanderClicker <Treeview_DataModel>();
     this.rowContentActivator   = new RowContentActivator <Treeview_DataModel>();
     this.cachingObserver       = new CachingObserver <Treeview_DataModel>(this.log);
     this.rowInteraction        = new RowInteraction <Treeview_DataModel>(rowClickableLocations, rowExpanderClicker, rowContentClicker, rowContentActivator);
 }