private void SpawnBookableView()
        {
            StructureManagerView structureView = new StructureManagerView();

            AddInformation(structureView);
            new StructureManagerPresenter(structureView);
            structureView.Show();
        }
        public StructureManagerPresenter(StructureManagerView view)
        {
            _view = view;
            view.AddButton.Click       += AddHandler;
            _structureTree              = view.TreeView;
            _structureTree.AfterSelect += ItemSelectedHandler;
            IStructureCoordinator sCoordinator = CoordinatorManager.Instance.CoordinatorOfType <IStructureCoordinator>();

            if (sCoordinator == null)
            {
                throw new InvalidOperationException("Il coordinatore delle strutture non è disponibile");
            }

            _bCoordinator = CoordinatorManager.Instance.CoordinatorOfType <IBookingCoordinator>();
            if (_bCoordinator == null)
            {
                throw new InvalidOperationException("Il coordinatore deli Bookable Items non è disponibile");
            }

            _pCoordinator = CoordinatorManager.Instance.CoordinatorOfType <IPrenotationCoordinator>();
            if (_bCoordinator == null)
            {
                throw new InvalidOperationException("Il coordinatore delle prenotations non è disponibile");
            }

            _iCoordinator = CoordinatorManager.Instance.CoordinatorOfType <IItemCoordinator>();
            if (_bCoordinator == null)
            {
                throw new InvalidOperationException("Il coordinatore degli items non è disponibile");
            }

            _structures = sCoordinator.Structures;
            sCoordinator.StructureChanged += StructureChangedHandler;

            _fromDateBox = view.FromDate;
            _toDateBox   = view.ToDate;

            _fromDateBox.ValueChanged += DateChanged;

            try
            {
                _level = view.RetrieveTagInformation <AuthorizationLevel>("authorizationLevel");
            }
            catch (Exception e)
            {
                //Chiave non disponibile o cast non riuscito
            }
            view.AddButton.Enabled    = false;
            view.ModifyButton.Enabled = false;
            view.DeleteButton.Enabled = false;
            // Popolo la tree view all'avvio
            DateChanged(this, EventArgs.Empty);
        }