private void CalcLinkSize()
        {
            if (!_needCalcLinkSize)
            {
                return;
            }
            var sizeTmp = Size.Empty;

            if (LineElements.Length > 1)
            {
                var points = new Point[LineElements.Length * 2];
                var i      = 0;
                foreach (var ln in LineElements)
                {
                    points[i]     = ln.Point1;
                    points[i + 1] = ln.Point2;
                    i            += 2;
                }
                var upper = DiagramUtil.GetUpperPoint(points);
                var lower = DiagramUtil.GetLowerPoint(points);
                sizeTmp = new Size(lower.X - upper.X, lower.Y - upper.Y);
            }
            SizeValue         = sizeTmp;
            _needCalcLinkSize = false;
        }
Exemple #2
0
        internal CardinalDirection GetDirection()
        {
            var rec      = new Rectangle(_parentElement.Location, _parentElement.Size);
            var refPoint = new Point(LocationValue.X - _parentElement.Location.X + (SizeValue.Width / 2),
                                     LocationValue.Y - _parentElement.Location.Y + (SizeValue.Height / 2));

            return(DiagramUtil.GetDirection(rec, refPoint));
        }
Exemple #3
0
        public bool ImportModels()
        {
            var existingShapes = diagram.NestedChildShapes.ToArray();

            if (LoadModelsFromDb())
            {
                var newShapes = diagram.NestedChildShapes.Where(s => !existingShapes.Contains(s)).ToList();
                DiagramUtil.AutoLayout(newShapes, diagram);
                return(true);
            }
            return(false);
        }
Exemple #4
0
        private void UpdateUpperSelectionPoint()
        {
            //Get upper selecion point
            Point[] points = new Point[document.SelectedElements.Count];
            int     p      = 0;

            foreach (BaseElement el in document.SelectedElements)
            {
                points[p] = el.Location;
                p++;
            }
            upperSelPoint = DiagramUtil.GetUpperPoint(points);
        }
        private Size MeasureTextSize()
        {
            string text    = labelTextBox.Text;
            Size   sizeTmp = Size.Empty;

            if (direction == LabelEditDirection.UpDown)
            {
                sizeTmp = DiagramUtil.MeasureString(text, labelElement.Font, labelTextBox.Size.Width, labelElement.Format);
            }
            else if (direction == LabelEditDirection.Both)
            {
                sizeTmp = DiagramUtil.MeasureString(text, labelElement.Font);
            }

            sizeTmp.Height += 30;

            return(sizeTmp);
        }
        private void CalcLinkLocation()
        {
            //CalcLink();

            if (!_needCalcLinkLocation)
            {
                return;
            }

            var points = new Point[LineElements.Length * 2];
            var i      = 0;

            foreach (var ln in LineElements)
            {
                points[i]     = ln.Point1;
                points[i + 1] = ln.Point2;
                i            += 2;
            }
            LocationValue         = DiagramUtil.GetUpperPoint(points);
            _needCalcLinkLocation = false;
        }
        public static void SetTextBoxLocation(BaseElement el, TextBox tb)
        {
            if (!(el is ILabelElement))
            {
                return;
            }

            LabelElement lab = ((ILabelElement)el).Label;

            el.Invalidate();
            lab.Invalidate();

            if (lab.Text.Length > 0)
            {
                tb.Location = lab.Location;
                tb.Size     = lab.Size;
            }
            else
            {
                string tmpText = "XXXXXXX";
                Size   sizeTmp = DiagramUtil.MeasureString(tmpText, lab.Font, lab.Size.Width, lab.Format);

                if (el is BaseLinkElement)
                {
                    tb.Size     = sizeTmp;
                    tb.Location = new Point(el.Location.X + el.Size.Width / 2 - sizeTmp.Width / 2,
                                            el.Location.Y + el.Size.Height / 2 - sizeTmp.Height / 2);
                }
                else
                {
                    sizeTmp.Width = el.Size.Width;
                    tb.Size       = sizeTmp;
                    tb.Location   = new Point(el.Location.X,
                                              el.Location.Y + el.Size.Height / 2 - sizeTmp.Height / 2);
                }
            }

            SetTextBoxBorder(tb);
        }
Exemple #8
0
 public override void InvokeHandler(CommandSetState state)
 {
     DiagramUtil.AutoLayout(state.CurrentDocView.CurrentDiagram.NestedChildShapes, state.CurrentDocView.CurrentDiagram);
     new DiagramUtil().GetDiagramClientView(state.CurrentDocView.CurrentDiagram).ZoomToFit();
 }