/// <summary> /// Adiciona um botão à barra de botões. /// </summary> /// <param name="botão">Botão a ser adicionado.</param> public void AdicionarBotão(Botão botão) { Botão[] anterior = this.botões; int i = 0; botões = new Botão[anterior.Length + 1]; anterior.CopyTo(botões, 0); while (i < anterior.Length && botão.Ordenação > anterior[i].Ordenação) i++; for (int j = anterior.Length; j > i; j--) botões[j] = botões[j - 1]; botões[i] = botão; if (!DesignMode) { botão.BaseFormulário = ParentForm as BaseFormulário; botão.Modificado += new Botão.ModificadoCallback(AoModificarBotão); } Invalidate(); }
/// <summary> /// Remove um botão da barra. /// </summary> public void RemoverBotão(Botão botão) { Botão[] anterior = this.botões; int i = 0; botões = new Botão[anterior.Length - 1]; foreach (Botão aux in anterior) if (aux != botão) botões[i++] = aux; Invalidate(); }
/// <summary> /// Insere o botão exportado à barra de botões. /// </summary> private Botão ExportarBotão(Assembly assembly, ExporBotãoAttribute exportação) { if (exportação.ExigirFuncionário && Entidades.Pessoa.Funcionário.FuncionárioAtual == null) return null; if (PermissãoFuncionário.ValidarPermissão(exportação.Permissões)) { Botão botão; if (exportação.Botão == null) { try { botão = new Botão(); botão.Texto = exportação.Texto; botão.Privilégios = exportação.Permissões; botão.BaseFormulário = this; if (exportação.Ordenação.HasValue) botão.Ordenação = exportação.Ordenação.Value; else { botão.Ordenação = ordem; if (ordem > 0) ordem = -ordem - 1; else ordem = -ordem + 1; } if (exportação.Controlador != null) botão.Controlador = (ControladorBaseInferior)exportação.Controlador.Assembly. CreateInstance(exportação.Controlador.FullName); botão.RetornarÀPrimeira = exportação.RetornarÀPrimeira; foreach (Type tipo in exportação.Bases) { BaseInferior novaBase = (BaseInferior)tipo.Assembly.CreateInstance(tipo.FullName); botão.Controlador.InserirBaseInferior(novaBase); } if (botão.Controlador.Bases.Count > 0 && botão.Controlador.Bases[0].Imagem != null) botão.Imagem = botão.Controlador.Bases[0].Imagem; } catch (ExceçãoBotãoNãoSuportado) { return null; } } else botão = (Botão)exportação.Botão.Assembly.CreateInstance(exportação.Botão.FullName); barraBotões.AdicionarBotão(botão); return botão; } return null; }
/// <summary> /// Ocorre ao redimensionar um botão. /// </summary> private void AoModificarBotão(Botão botão) { Invalidate(); }
/// <summary> /// Define o botão associado ao controlador. /// </summary> /// <param name="botão">Botão associado.</param> /// <remarks>Só deve ser chamado pelo Botão.</remarks> internal void DefinirBotão(Botão botão) { if (this.botão != null) throw new Exception("Botão já associado a este controlador."); this.botão = botão; }