/// <summary> /// Substitui base inferior atual por outra, mesmo que esta /// não tenha nenhum vínculo com a base em exibição. O usuário /// é questionado se ele deseja que a base seja substituída. /// </summary> /// <param name="novaBase">Base inferior a ser exibida.</param> /// <param name="título">Título da base inferior.</param> /// <param name="descrição">Descrição da base inferior.</param> public void SubstituirBaseArbitrariamente(BaseInferior novaBase, string título, string descrição) { if (novaBase == baseAtual) return; using (QuestionarSubstituiçãoBI dlg = new QuestionarSubstituiçãoBI(título, descrição)) { if (dlg.ShowDialog(baseFormulário) == System.Windows.Forms.DialogResult.OK) { if (!basesInferiores.Contains(novaBase)) { PermissãoFuncionário.AssegurarPermissão(novaBase.Privilégio); novaBase.DefinirControlador(this); Formulário.NovaBase(novaBase); novaBase.AoCarregarCompletamente(null); } SubstituirBaseAtual(novaBase); MostrarBaseFormulário(novaBase); } } }
/// <summary> /// Substitui base inferior atual por outra. /// </summary> /// <param name="novaBase">Nova base inferior a ser exibida pelo formulário.</param> /// <param name="origem">Quem mandou substituir.</param> /// <remarks>Chamada pela base inferior.</remarks> internal void SubstituirBase(BaseInferior novaBase, BaseInferior origem) { if (origem != baseAtual) throw new Exception("Base de origem não pode substituir base, pois não é a base atual!"); if (!basesInferiores.Contains(novaBase)) { PermissãoFuncionário.AssegurarPermissão(novaBase.Privilégio); if (novaBase.DefinirControlador(this)) { Formulário.NovaBase(novaBase); novaBase.AoCarregarCompletamente(null); } } SubstituirBaseAtual(novaBase); MostrarBaseFormulário(novaBase); }