private void OnBeforeItemRemoved(PreferencesButtonItem obj)
 {
     if (BeforeItemRemoved != null)
     {
         BeforeItemRemoved(this, new PreferencesButtonItemEventArgs(obj, IndexOf(obj)));
     }
 }
 private void OnItemAdded(PreferencesButtonItem obj)
 {
     if (ItemAdded != null)
     {
         ItemAdded(this, new PreferencesButtonItemEventArgs(obj, IndexOf(obj)));
     }
 }
		public void Add(PreferencesButtonItem buttonItem) {
			this.List.Add(buttonItem);
			this.OnItemAdded(buttonItem);

			buttonItem.Activated += delegate(object sender, EventArgs e) {
				foreach (PreferencesButtonItem val in this) {
					val.ActiveButton = false;
				}

				PreferencesButtonItem item = (PreferencesButtonItem)sender;

				item.ActiveButton = true;

				if (ItemActivated != null) {
					ItemActivated(this, new PreferencesButtonItemEventArgs(item, IndexOf(item)));
				}

			};
		}
        public void Add(PreferencesButtonItem buttonItem)
        {
            this.List.Add(buttonItem);
            this.OnItemAdded(buttonItem);

            buttonItem.Activated += delegate(object sender, EventArgs e) {
                foreach (PreferencesButtonItem val in this)
                {
                    val.ActiveButton = false;
                }

                PreferencesButtonItem item = (PreferencesButtonItem)sender;

                item.ActiveButton = true;

                if (ItemActivated != null)
                {
                    ItemActivated(this, new PreferencesButtonItemEventArgs(item, IndexOf(item)));
                }
            };
        }
		public int IndexOf(PreferencesButtonItem buttonItem) {
			return this.List.IndexOf(buttonItem);
		}
		public void Remove(PreferencesButtonItem buttonItem) {
			this.RemoveAt(this.List.IndexOf(buttonItem));
		}
		private void OnBeforeItemRemoved(PreferencesButtonItem obj) {
			if (BeforeItemRemoved != null) {
				BeforeItemRemoved(this, new PreferencesButtonItemEventArgs(obj, IndexOf(obj)));
			}
		}
		private void OnItemAdded(PreferencesButtonItem obj) {
			if (ItemAdded != null) {
				ItemAdded(this, new PreferencesButtonItemEventArgs(obj, IndexOf(obj)));
			}
		}
        private void _ButtonNewAccount_Click(object sender, EventArgs e)
        {
            // create a new account for the user to edit. this is how it's done on the mac, and requires less clicks.
            String accountName = "[New Account]";
            Account account = new Account(accountName, String.Empty);

            if (_ButtonAccounts.ButtonItems.Count == 0) {
                account.Default = true;
            }

            PreferencesButtonItem item = new PreferencesButtonItem() {
                ButtonText = accountName,
                AssociatedPanel = new AccountPanel() {
                    NewAccount = true,
                    Account = account,
                    ControlBackColor = _PanelAccounts.ControlBackColor
                }
            };

            _PanelParent.Controls.Add(item.AssociatedPanel);

            //InitPanelShapes(item.AssociatedPanel);

            item.AssociatedPanel.BringToFront();

            _ButtonAccounts.ButtonItems.Add(item);

            item.Activate();

            _PanelNewAccount.Hide();
        }
        private void InitAccounts()
        {
            foreach (Account account in Config.Current.Accounts) {
                PreferencesButtonItem item = new PreferencesButtonItem() {
                    ButtonText = account.FullAddress,
                    AssociatedPanel = new AccountPanel() {
                        Account = account,
                        Dock = DockStyle.Fill,
                        ControlBackColor = _PanelAccounts.ControlBackColor
                    }
                };

                //InitPanelShapes(item.AssociatedPanel);
                item.AssociatedPanel.Hide();
                _PanelParent.Controls.Add(item.AssociatedPanel);
                item.AssociatedPanel.BringToFront();

                if (account.Default) {
                    item.Font = new Font(item.Font, FontStyle.Bold);
                }

                _ButtonAccounts.ButtonItems.Add(item);
            }
        }
 public PreferencesButtonItemEventArgs(PreferencesButtonItem obj, int index)
 {
     Item  = obj;
     Index = index;
 }
 public int IndexOf(PreferencesButtonItem buttonItem)
 {
     return(this.List.IndexOf(buttonItem));
 }
 public void Remove(PreferencesButtonItem buttonItem)
 {
     this.RemoveAt(this.List.IndexOf(buttonItem));
 }
		public PreferencesButtonItemEventArgs(PreferencesButtonItem obj, int index) {
			Item = obj;
			Index = index;
		}