//-------------------------------------------------------- void menuInsert_Click(object sender, EventArgs e) { CMenuPeriode menu = sender as CMenuPeriode; if (menu == null) { return; } TreeNode node = m_arbre.SelectedNode; if (node == null) { return; } IPeriodeActivation periodeSel = node.Tag as IPeriodeActivation; IPeriodeActivationMultiple periode = Activator.CreateInstance(menu.TypePeriode, new object[0]) as IPeriodeActivationMultiple; if (node.Parent == null) { m_periodeRacine = periode; periode.AddPeriode(periodeSel); m_arbre.Nodes.Clear(); TreeNode newNode = CreateNodeAndChilds(periode); m_arbre.Nodes.Add(newNode); newNode.Expand(); newNode.EnsureVisible(); m_arbre.SelectedNode = newNode; } else { TreeNode nodeParent = node.Parent; IPeriodeActivationMultiple periodeParente = nodeParent.Tag as IPeriodeActivationMultiple; nodeParent.Nodes.Remove(node); periodeParente.RemovePeriode(periodeSel); periode.AddPeriode(periodeSel); TreeNode newNode = CreateNodeAndChilds(periode); nodeParent.Nodes.Add(newNode); newNode.EnsureVisible(); m_arbre.SelectedNode = newNode; } }
//--------------------------------------------- private void InitMenu() { Assembly ass = typeof(IPeriodeActivation).Assembly; foreach (Type tp in ass.GetTypes()) { if (typeof(IPeriodeActivation).IsAssignableFrom(tp) && !tp.IsAbstract && !tp.IsInterface) { CMenuPeriode menu = new CMenuPeriode(tp, false); m_menuAdd.DropDownItems.Add(menu); menu.Click += new EventHandler(menuAdd_Click); if (typeof(IPeriodeActivationMultiple).IsAssignableFrom(tp)) { menu = new CMenuPeriode(tp, true); m_menuInsert.DropDownItems.Add(menu); menu.Click += new EventHandler(menuInsert_Click); } } } }
void menuAdd_Click(object sender, EventArgs e) { CMenuPeriode menu = sender as CMenuPeriode; if (menu == null) { return; } TreeNode nodeSel = m_arbre.SelectedNode; IPeriodeActivation periode = Activator.CreateInstance(menu.TypePeriode, new object[0]) as IPeriodeActivation; TreeNode newNode = CreateNodeAndChilds(periode); if (nodeSel != null) { nodeSel.Nodes.Add(newNode); ((IPeriodeActivationMultiple)nodeSel.Tag).AddPeriode(periode); } else { m_arbre.Nodes.Add(newNode); m_periodeRacine = periode; } m_arbre.SelectedNode = newNode; }