Example #1
0
        void miDelete_Click(object sender, EventArgs e)
        {
            LocalVariable  lv   = this.ClassPointer as LocalVariable;
            List <IAction> acts = lv.RootPointer.GetRelatedActions(lv.MemberId);
            bool           bOK  = (acts.Count == 0);

            if (bOK)
            {
                MethodDesignerHolder mdh = MethodViewer;
                if (mdh != null)
                {
                    BranchList bl = mdh.ActionList;
                    if (bl != null)
                    {
                        Dictionary <UInt32, IAction> actions = new Dictionary <uint, IAction>();
                        bl.GetActionsUseLocalVariable(lv.MemberId, actions);
                        if (actions.Count > 0)
                        {
                            foreach (KeyValuePair <UInt32, IAction> kv in actions)
                            {
                                acts.Add(kv.Value);
                            }
                            bOK = false;
                        }
                    }
                }
            }
            if (!bOK)
            {
                List <ObjectTextID> objs = new List <ObjectTextID>();
                foreach (IAction a in acts)
                {
                    objs.Add(new ObjectTextID("Action", "", a.Display));
                }
                dlgObjectUsage dlg = new dlgObjectUsage();
                dlg.LoadData("There are actions using this object. These actions must be removed before this object can be removed.", "Remove object", objs);
                //currently no OK will be returned
                bOK = (dlg.ShowDialog(this.FindForm()) == DialogResult.OK);
                if (bOK)
                {
                    IList <MethodDiagramViewer> l = MethodViewer.GetViewer();
                    foreach (MethodDiagramViewer mv in l)
                    {
                        //remove local/constructor actions belong to it
                        List <IComponent> avList = new List <IComponent>();
                        for (int i = 0; i < mv.Controls.Count; i++)
                        {
                            ActionViewer av = mv.Controls[i] as ActionViewer;
                            if (av != null)
                            {
                                foreach (IAction a in acts)
                                {
                                    if (av.ActionObject.ContainsActionId(a.ActionId))
                                    {
                                        avList.Add(av);
                                    }
                                }
                            }
                        }
                        if (avList.Count > 0)
                        {
                            mv.DeleteComponents(avList.ToArray());
                        }
                    }
                }
            }
            if (bOK)
            {
                MethodViewer.RemoveLocalVariable(this);
                RemoveLabel();
                Control p = this.Parent;
                if (p != null)
                {
                    p.Controls.Remove(this);
                }
                MethodViewer.Changed = true;
            }
        }