Пример #1
0
            public void AddReference(ItemSide src, Reference newref)
            {
                switch (src)
                {
                case ItemSide.Bottom:
                    Bottom.Add(newref);
                    break;

                case ItemSide.Left:
                    Left.Add(newref);
                    break;

                case ItemSide.Right:
                    Right.Add(newref);
                    break;

                case ItemSide.Top:
                    Top.Add(newref);
                    break;
                }
            }
Пример #2
0
 void FillFromDiagram(Diagram diagram)
 {
     // nejdrive vybereme zdrojovou a cilovou stranu
     foreach (DiagramTableItem fromTable in diagram.Tables)
     {
         foreach (ForeignKey fk in TableStructureExtension.GetConstraints <ForeignKey, ForeignKey>(fromTable.Table))
         {
             DiagramTableItem toTable = diagram.FindTable(fk.PrimaryKeyTable);
             if (toTable != null)
             {
                 Interval fromx = fromTable.HorInterv, tox = toTable.HorInterv;
                 Interval fromy = fromTable.VerInterv, toy = toTable.VerInterv;
                 ItemSide src = ItemSide.None, dst = ItemSide.None;
                 if (fromx.Intersection(tox).Size > 0)
                 {
                     if (fromy <= toy)
                     {
                         src = ItemSide.Bottom;
                         dst = ItemSide.Top;
                     }
                     if (toy <= fromy)
                     {
                         src = ItemSide.Top;
                         dst = ItemSide.Bottom;
                     }
                     // prekryv pres oba rozmery - caru nebudeme kreslit
                 }
                 else if (fromy.Intersection(toy).Size > 0)
                 {
                     if (fromx <= tox)
                     {
                         src = ItemSide.Right;
                         dst = ItemSide.Left;
                     }
                     if (tox <= fromx)
                     {
                         src = ItemSide.Left;
                         dst = ItemSide.Right;
                     }
                 }
                 else //neni prekryv ani v jedne souradnici
                 {
                     if (fromx <= tox && fromy <= toy)
                     {
                         src = ItemSide.Right;
                         dst = ItemSide.Top;
                     }
                     if (fromx >= tox && fromy <= toy)
                     {
                         src = ItemSide.Left;
                         dst = ItemSide.Top;
                     }
                     if (fromx <= tox && fromy >= toy)
                     {
                         src = ItemSide.Right;
                         dst = ItemSide.Bottom;
                     }
                     if (fromx >= tox && fromy >= toy)
                     {
                         src = ItemSide.Left;
                         dst = ItemSide.Bottom;
                     }
                 }
                 AddReference(fromTable, toTable, fk, src, dst);
             }
         }
     }
 }
Пример #3
0
        private void AddReference(DiagramTableItem fromTable, DiagramTableItem toTable, ForeignKey fk, ItemSide src, ItemSide dst)
        {
            Table     from   = AddTable(fromTable);
            Table     to     = AddTable(toTable);
            Reference newref = AddReference(fk, from, to);

            if (!newref.IsMultiple)
            {
                from.AddReference(src, newref);
                to.AddReference(dst, newref);
            }
        }