예제 #1
0
        /// <summary>
        ///   Il metodo principale del gestore di eventi.
        /// </summary>
        /// <remarks>
        ///   Viene chiamato da Revit dopo che è stato generato l'evento esterno corrispondente
        ///   (dal modulo non modale) e Revit ha raggiunto il momento in cui potrebbe
        ///   chiamare il gestore dell'evento (cioè questo oggetto)
        /// </remarks>
        ///
        public void Execute(UIApplication uiapp)
        {
            try
            {
                switch (Request.Take())
                {
                case RequestId.None:
                {
                    return;          // no request at this time -> we can leave immediately
                }

                case RequestId.Initial:
                {
                    //// Assegnazione del nome del View Template
                    //_nameViewTemplate = "3D - Curtain Wall LOD200(Blank)";
                    // Chiama il metodo che cattura tutti i Curtain Panels
                    _elements = GetElementsfromDb(uiapp);
                    // Chiama i metodi per il riempimento delle liste del UTI e del PTI
                    GetListUTI(uiapp, _elements);
                    GetListPTI(uiapp, _elements);
                    // Chiama i metodi di riempimento dei DataGridView
                    _typesSelectorForm = App.thisApp.RetriveForm();
                    _typesSelectorForm.SetDataGridViewUTI();
                    _typesSelectorForm.SetDataGridViewPTI();
                    // Chiama i metodi che cancellano le selezioni automatiche nei DataGridView
                    _typesSelectorForm.clearSelection_dataGridView1();
                    _typesSelectorForm.clearSelection_dataGridView2();
                    // Chiama il metodo che imposta il View Template
                    ApplyNewViewtemplate(uiapp, 0);
                    break;
                }

                case RequestId.UTI:
                {
                    // Chiama la lista degli elementi selezionati nel DataGridView1
                    _typesSelectorForm = App.thisApp.RetriveForm();
                    _elementListUTI    = _typesSelectorForm.ElementList;
                    _elementsListUTI   = _typesSelectorForm.ElementsList;
                    if (_elementListUTI.Count != 0)
                    {
                        ChoiceOfParameterAndChangeColor(uiapp, _elementListUTI);
                    }
                    else if (_elementsListUTI.Count != 0)
                    {
                        ChangeColorOfAllPanels(uiapp, _elementsListUTI);
                    }
                    // Cancella il contenuto delle liste
                    _elementListUTI.Clear();
                    _elementsListUTI.Clear();
                    break;
                }

                case RequestId.PTI:
                {
                    // Chiama la lista degli elementi selezionati nel DataGridView2
                    _typesSelectorForm = App.thisApp.RetriveForm();
                    _elementListPTI    = _typesSelectorForm.ElementList;
                    _elementsListPTI   = _typesSelectorForm.ElementsList;
                    if (_elementListPTI.Count != 0)
                    {
                        ChoiceOfParameterAndChangeColor(uiapp, _elementListPTI);
                    }
                    else if (_elementsListPTI.Count != 0)
                    {
                        ChangeColorOfAllPanels(uiapp, _elementsListPTI);
                    }
                    // Cancella il contenuto delle liste
                    _elementListPTI.Clear();
                    _elementsListPTI.Clear();
                    break;
                }

                case RequestId.AllUTI:
                {
                    // Chiama la lista di tutti gli unit Type Identifier
                    _typesSelectorForm = App.thisApp.RetriveForm();
                    _elementListAllUTI = _typesSelectorForm.ElementsList;
                    // Chiama il metodo che cambia il colore di tutti i pannelli
                    ChangeColorOfAllPanels(uiapp, _elementListAllUTI);
                    // RipuChangeColorOfAllPanelslisce la lista
                    _elementListAllUTI.Clear();
                    break;
                }

                case RequestId.AllPTI:
                {
                    // Chiama la lista di tutti gli unit Type Identifier
                    _typesSelectorForm = App.thisApp.RetriveForm();
                    _elementListAllPTI = _typesSelectorForm.ElementsList;
                    // Chiama il metodo che cambia il colore di tutti i pannelli
                    ChangeColorOfAllPanels(uiapp, _elementListAllPTI);
                    // Ripulisce la lista
                    _elementListAllPTI.Clear();
                    break;
                }

                case RequestId.Cancel:
                {
                    // Riporta i colori al Bianco
                    ChangeColorToBlank(uiapp);
                    // Chiama i metodi che cancellano le selezioni automatiche nei DataGridView
                    _typesSelectorForm = App.thisApp.RetriveForm();
                    _typesSelectorForm.clearSelection_dataGridView1();
                    _typesSelectorForm.clearSelection_dataGridView2();
                    break;
                }

                case RequestId.Esc:
                {
                    // Cancella tutte le selezioni fatte finora
                    CancelAllChanges(uiapp);
                    //// Assegnazione del nome del View Template
                    //_nameViewTemplate = "3D - Curtain Wall LOD300(AbacoGlass)";
                    // Chiama il metodo che imposta il View Template
                    ApplyNewViewtemplate(uiapp, -1);
                    //// Cambia lo stile di visualizzazione
                    //ChangeVisualStyle(uiapp);
                    // Chiude la finestra di dialogo
                    _typesSelectorForm = App.thisApp.RetriveForm();
                    _typesSelectorForm.FormClose();
                    break;
                }

                default:
                {
                    // Una sorta di avviso qui dovrebbe informarci di una richiesta imprevista
                    break;
                }
                }
            }
            finally
            {
                App.thisApp.WakeFormUp();
                App.thisApp.ShowFormTop();
            }

            return;
        }