IfcDoc.FormEdit.toolStripMenuItemDiagramFormatPageRef_Click C# (CSharp) Method

toolStripMenuItemDiagramFormatPageRef_Click() private method

private toolStripMenuItemDiagramFormatPageRef_Click ( object sender, EventArgs e ) : void
sender object
e EventArgs
return void
        private void toolStripMenuItemDiagramFormatPageRef_Click(object sender, EventArgs e)
        {
            TreeNode tnSchema = this.treeView.SelectedNode;
            DocDefinition docDefinition = (DocDefinition)tnSchema.Tag;
            while (!(tnSchema.Tag is DocSchema) && tnSchema.Parent != null)
            {
                tnSchema = tnSchema.Parent;
            }
            if (tnSchema.Tag is DocSchema)
            {
                bool bCreate = true;
                DocSchema docSchema = (DocSchema)tnSchema.Tag;
                foreach (DocPageTarget docPageTarget in docSchema.PageTargets)
                {
                    if (docPageTarget.Definition == docDefinition)
                    {
                        // already exists - delete it
                        foreach (DocPageSource docPageSource in docPageTarget.Sources)
                        {
                            RedirectReference(docSchema, docPageSource, docDefinition, true);
                        }

                        // delete the page target
                        int index = docSchema.PageTargets.IndexOf(docPageTarget);
                        docSchema.PageTargets.RemoveAt(index);
                        docPageTarget.Delete();

                        // remove from tree
                        tnSchema.Nodes[7].Nodes[index].Remove();

                        bCreate = false;
                        break;
                    }
                }

                if (bCreate)
                {
                    // doesn't exist, so create one
                    DocPageTarget docTarget = new DocPageTarget();
                    docSchema.PageTargets.Add(docTarget);

                    docTarget.DiagramNumber = docDefinition.DiagramNumber;
                    docTarget.Definition = docDefinition;
                    docTarget.DiagramRectangle = new DocRectangle();
                    docTarget.DiagramRectangle.X = docDefinition.DiagramRectangle.X;
                    docTarget.DiagramRectangle.Y = docDefinition.DiagramRectangle.Y - 200.0;
                    docTarget.DiagramRectangle.Width = 400.0;
                    docTarget.DiagramRectangle.Height = 100.0;

                    docTarget.DiagramLine.Add(new DocPoint());
                    docTarget.DiagramLine.Add(new DocPoint());
                    docTarget.DiagramLine.Add(new DocPoint());

                    RedirectReference(docSchema, docDefinition, docTarget, false);

                    LoadNode(tnSchema.Nodes[7], docTarget, docTarget.Name, false);

                    this.ctlExpressG.LayoutDefinition(docDefinition);
                }

                // renumber page references
                Dictionary<int, int> counters = new Dictionary<int, int>();
                foreach (DocPageTarget docPageTarget in docSchema.PageTargets)
                {
                    SortedList<int, int> listPages = new SortedList<int, int>();

                    if(!counters.ContainsKey(docPageTarget.DiagramNumber))
                    {
                        counters.Add(docPageTarget.DiagramNumber, 0);
                    }
                    counters[docPageTarget.DiagramNumber]++;
                    docPageTarget.Name = docPageTarget.DiagramNumber + "," + counters[docPageTarget.DiagramNumber];

                    foreach(DocPageSource docPageSource in docPageTarget.Sources)
                    {
                        if(!listPages.ContainsKey(docPageSource.DiagramNumber))
                        {
                            listPages.Add(docPageSource.DiagramNumber, docPageSource.DiagramNumber);
                        }

                        if (docPageTarget.Definition != null) // older files didn't have this
                        {
                            docPageSource.Name = docPageTarget.Name + " " + docPageTarget.Definition.Name;
                        }
                    }

                    docPageTarget.Name += "(";
                    foreach(int i in listPages.Keys)
                    {
                        if(!docPageTarget.Name.EndsWith("("))
                        {
                            docPageTarget.Name += ",";
                        }
                        docPageTarget.Name += i.ToString();
                    }
                    docPageTarget.Name += ")";
                }

                this.ctlExpressG.Redraw();
            }
        }
FormEdit