コード例 #1
0
 public WorkspaceActionEventArgs(CanvasInfo canvasInfo,DesignItemInfo[] designItemInfos, DesignConnectionInfo[] designConnectionInfos)
     : base()
 {
     this._CanvasInfo = canvasInfo;
     this._designItemInfos = designItemInfos;
     this._designConnectionInfos = designConnectionInfos;
 }
コード例 #2
0
        public static DesignItem CreateDesignItem(DesignItemInfo designItemInfo)
        {
            var currentDate = DateTime.Now;
            designItemInfo.CreateDate = currentDate;
            designItemInfo.ModifyDate = currentDate;
            var shape = new Shape();
            var shapeInfoUnit = new ItemShapeInfoUnit(designItemInfo);
            shape.ShapeInfoUnit = shapeInfoUnit;
            shape.IsHitTestVisible = false;
            shape.Style = Application.Current.Resources[designItemInfo.StyleKey] as Style;
            if (designItemInfo.SvgBuffer != null)
            {
                using (var stream = new MemoryStream(designItemInfo.SvgBuffer))
                {
                    var svgDrawing = SvgHelper.CreateSvgImage(stream); //SvgHelper.CreateSvgViewBox(stream);
                    if (svgDrawing != null)
                    {
                        shapeInfoUnit.SvgDrawing = svgDrawing;
                        shape.SetBinding(Shape.ContentProperty, BindingHelper.CreateBinding(shapeInfoUnit, "SvgDrawing"));
                    }
                }
            }
            shape.SetBinding(Shape.TextProperty, BindingHelper.CreateBinding(designItemInfo, "Text"));
            if (!string.IsNullOrEmpty(designItemInfo.DesignInfo.Backgroud))
            {
                var brushConverter = new BrushConverter();
                shape.Background = (Brush)brushConverter.ConvertFromString(designItemInfo.DesignInfo.Backgroud);
            }
            var designItem = new DesignItem(designItemInfo.ID);
            designItem.ParentID = designItemInfo.ParentID;
            designItem.Content = shape;
            designItem.SetBinding(DesignItem.LinkButtonVisibilityProperty, BindingHelper.CreateBinding(designItemInfo, "LinkButtonVisibility"));
            designItem.SetBinding(DesignItem.WidthProperty, BindingHelper.CreateBinding(designItemInfo,"Width"));
            designItem.SetBinding(DesignItem.HeightProperty, BindingHelper.CreateBinding(designItemInfo, "Height"));
            designItem.SetBinding(DesignCanvas.LeftProperty, BindingHelper.CreateBinding(designItemInfo, "X"));
            designItem.SetBinding(DesignCanvas.TopProperty, BindingHelper.CreateBinding(designItemInfo, "Y"));
            designItem.SetBinding(DesignCanvas.ZIndexProperty, BindingHelper.CreateBinding(designItemInfo, "ZIndex"));

            return designItem;
        }
コード例 #3
0
 public virtual void RaiseDesignItemLinkButtonDoubleClick(DesignItemInfo designItemInfo)
 {
     if (DesignItemLinkButtonDoubleClick != null)
     {
         DesignItemLinkButtonDoubleClick(this, new SingleDesignItemActionEventArgs(designItemInfo));
     }
 }
 public DesignConnectionValidationEventArgs(DesignItemInfo sourceItemInfo, DesignItemInfo sinkItemInfo)
     : base()
 {
     this._sourceItemInfo = sourceItemInfo;
     this._sinkItemInfo = sinkItemInfo;
 }
コード例 #5
0
 public MultiDesignItemActionEventArgs(DesignItemInfo[] designItemInfos)
     : base()
 {
     this._designItemInfos = designItemInfos;
 }
コード例 #6
0
 public void SelectDesignItem(DesignItemInfo designItemInfo)
 {
     this.canvas.SelectDesignItem(designItemInfo);
 }
コード例 #7
0
 public virtual void RaisePreAddDesignConnection(DesignItemInfo sourceItemInfo, DesignItemInfo sinkItemInfo)
 {
     if (PreAddDesignConnection != null)
     {
         PreAddDesignConnection(this, new DesignConnectionValidationEventArgs(sourceItemInfo, sinkItemInfo));
     }
 }
コード例 #8
0
 public virtual void RaiseDesignWorkspaceSaving(CanvasInfo canvasInfo, DesignItemInfo[] designItemInfos, DesignConnectionInfo[] designConnectionInfos)
 {
     if (DesignWorkspaceSaving != null)
     {
         DesignWorkspaceSaving(this, new WorkspaceActionEventArgs(canvasInfo, designItemInfos, designConnectionInfos));
     }
 }
コード例 #9
0
 public virtual void RaiseDesignItemSelected(DesignItemInfo designItemInfo)
 {
     if (DesignItemSelected != null)
     {
         DesignItemSelected(this, new SingleDesignItemActionEventArgs(designItemInfo));
     }
 }
コード例 #10
0
 public void SelectDesignItem(DesignItemInfo designItemInfo)
 {
     var designItem = this.Children.OfType<DesignItem>().First(a => a.ID == designItemInfo.ID);
     var scrollViewer = this.Parent as ScrollViewer;
     var itemLeft = DesignCanvas.GetLeft(designItem);
     var itemTop = DesignCanvas.GetTop(designItem);
     var itemCenterLeft = itemLeft + designItem.ActualWidth / 2.0;
     var itemCenterTop = itemTop + designItem.ActualHeight / 2.0;
     if (!(itemCenterLeft > scrollViewer.HorizontalOffset && itemCenterLeft < scrollViewer.ViewportWidth + scrollViewer.HorizontalOffset &&
         itemCenterTop > scrollViewer.VerticalOffset && itemCenterTop < scrollViewer.ViewportHeight + scrollViewer.VerticalOffset))
     {
         var itemRight = this.ActualWidth - itemLeft - designItem.ActualWidth;
         var itemBottom = this.ActualHeight - itemTop - designItem.ActualHeight;
         var itemCenterMinMarginWidth = Math.Min(itemLeft, itemRight) + designItem.ActualWidth / 2.0;
         var itemCenterMinMarginHeight = Math.Min(itemTop, itemBottom) + designItem.ActualHeight / 2.0;
         var viewCenterWith = scrollViewer.ViewportWidth / 2.0;
         var viewCenterHeight = scrollViewer.ViewportHeight / 2.0;
         var x = 0.0;
         var y = 0.0;
         var width = 0.0;
         var height = 0.0;
         if (itemCenterMinMarginWidth > viewCenterWith)
         {
             x = itemCenterLeft - viewCenterWith;
             width = viewCenterWith * 2.0;
         }
         else
         {
             x = itemCenterLeft - itemCenterMinMarginWidth;
             width = itemCenterMinMarginWidth * 2.0;
         }
         if (itemCenterMinMarginHeight > viewCenterHeight)
         {
             y = itemCenterTop - viewCenterHeight;
             height = viewCenterHeight * 2.0;
         }
         else
         {
             y = itemCenterTop - itemCenterMinMarginHeight;
             height = itemCenterMinMarginHeight * 2;
         }
         this.BringIntoView(new Rect(x, y, width, height));
     }
     else
     {
         designItem.BringIntoView();
     }
     this.selectionService.SelectItem(designItem);
 }
コード例 #11
0
 public MultiDesignShapeActionEventArgs(DesignItemInfo[] designItemInfos, DesignConnectionInfo[] designConnectionInfos)
     : base()
 {
     this._designItemInfos = designItemInfos;
     this._designConnectionInfos = designConnectionInfos;
 }
 public DesignItemCollectionChangedEventArgs(DesignItemInfo[] designItemInfos)
     : base()
 {
     this._designItemInfos = designItemInfos;
 }
コード例 #13
0
        protected override void OnDrop(DragEventArgs e)
        {
            base.OnDrop(e);
            DragObject dragObject = e.Data.GetData(typeof(DragObject)) as DragObject;
            if (dragObject != null && dragObject.ShapeInfoUnites != null)
            {
                if (dragObject.ShapeInfoUnites.Length == 1)
                {
                    if (dragObject.ShapeInfoUnites[0].ShapeInfo.ShapeType == ShapeType.DesignItem)
                    {
                        var designItemInfo = new DesignItemInfo(dragObject.ShapeInfoUnites[0].ShapeInfo as ItemShapeInfo);
                        designItemInfo.ID = Guid.NewGuid();
                        designItemInfo.ZIndex = this.Children.Count;
                        var designItemInfos = this.CurrentDesignItemInfos.Union(new DesignItemInfo[] { designItemInfo }).ToArray();
                        this.RaiseAddingDesignItem(designItemInfos);
                        var designItem = DesignShapeHelper.CreateDesignItem(designItemInfo);
                        Point position = e.GetPosition(this);
                        if (dragObject.DesiredSize.HasValue)
                        {
                            Size desiredSize = dragObject.DesiredSize.Value;
                            designItem.Width = desiredSize.Width;
                            designItem.Height = desiredSize.Height;

                            DesignCanvas.SetLeft(designItem, Math.Max(0, position.X - designItem.Width / 2));
                            DesignCanvas.SetTop(designItem, Math.Max(0, position.Y - designItem.Height / 2));
                        }
                        else
                        {
                            DesignCanvas.SetLeft(designItem, Math.Max(0, position.X));
                            DesignCanvas.SetTop(designItem, Math.Max(0, position.Y));
                        }

                        Canvas.SetZIndex(designItem, this.Children.Count);
                        this.Children.Add(designItem);
                        SetConnectorDecoratorTemplate(designItem);

                        this.SelectionService.SelectItem(designItem);
                        designItem.Focus();
                        this.RaiseAddedDesignItem(designItemInfo);
                        this.CurrentDesignItemInfos.Add(designItemInfo);
                        this.RaiseDesignItemCollectionChanged(this.CurrentDesignItemInfos.Where(a=>!a.IsGroup).ToArray());
                    }
                    else
                    {
                        //ToDo
                    }
                }
                else
                {
                    //ToDo
                }
                if (this.selectionService.IsSelectionChanged)
                {
                    this.selectionService.RaiseDesignShapeSelectAction();
                }
                e.Handled = true;
            }
        }
コード例 #14
0
 internal void OnLinkButtonClick(DesignItemInfo designItemInfo)
 {
     if (this._LinkButtonClick == null) return;
       this._LinkButtonClick(this, new SingleDesignItemActionEventArgs(designItemInfo));
 }
コード例 #15
0
 public virtual void RaiseDesignItemMouseRightClick(DesignItemInfo designItemInfo)
 {
     if (DesignItemMouseRightClick != null)
     {
         DesignItemMouseRightClick(this, new SingleDesignItemActionEventArgs(designItemInfo));
     }
 }
コード例 #16
0
 public virtual void RaiseDesignItemMultiSelected(DesignItemInfo[] designItemInfos)
 {
     if (DesignItemMultiSelected != null)
     {
         DesignItemMultiSelected(this, new MultiDesignItemActionEventArgs(designItemInfos));
     }
 }
コード例 #17
0
 public void LoadDesignInfo(CanvasInfo canvasInfo, DesignItemInfo[] designItemInfos, DesignConnectionInfo[] designConnectionInfos)
 {
     var originalDesignItemInfos = new List<DesignItemInfo>();
     var originalDesignConnectionInfos = new List<DesignConnectionInfo>();
     var designItemInfo = (DesignItemInfo)null;
     var designConnectionInfo = (DesignConnectionInfo)null;
     foreach (var item in designItemInfos)
     {
         designItemInfo = new DesignItemInfo();
         designItemInfo.ShapeType = ShapeType.DesignItem;
         designItemInfo.ShapeCategory = item.ShapeCategory;
         designItemInfo.SerialNo = item.SerialNo;
         designItemInfo.GroupID = item.GroupID;
         designItemInfo.IsInGroup = item.IsInGroup;
         designItemInfo.StyleKey = item.StyleKey;
         designItemInfo.Style = item.Style;
         designItemInfo.ToolTip = item.ToolTip;
         designItemInfo.IsChecked = item.IsChecked;
         designItemInfo.IsEnabled = item.IsEnabled;
         designItemInfo.Text = item.Text;
         designItemInfo.ID = item.ID;
         designItemInfo.ZIndex = item.ZIndex;
         designItemInfo.DesignInfo.Backgroud = item.DesignInfo.Backgroud;
         designItemInfo.DesignInfo.Foreground = item.DesignInfo.Foreground;
         designItemInfo.DesignInfo.FontSize = item.DesignInfo.FontSize;
         designItemInfo.DesignInfo.Bold = item.DesignInfo.Bold;
         designItemInfo.DesignInfo.Italic = item.DesignInfo.Italic;
         designItemInfo.DesignInfo.HorizontalAlignment = item.DesignInfo.HorizontalAlignment;
         designItemInfo.DesignInfo.VerticalAlignment = item.DesignInfo.VerticalAlignment;
         designItemInfo.ParentID = item.ParentID;
         designItemInfo.X = item.X;
         designItemInfo.Y = item.Y;
         designItemInfo.Width = item.Width;
         designItemInfo.Height = item.Height;
         originalDesignItemInfos.Add(designItemInfo);
     }
     foreach (var item in designConnectionInfos)
     {
         designConnectionInfo = new DesignConnectionInfo();
         designConnectionInfo.ShapeType = ShapeType.DesignItem;
         designConnectionInfo.ShapeCategory = item.ShapeCategory;
         designConnectionInfo.SerialNo = item.SerialNo;
         designConnectionInfo.GroupID = item.GroupID;
         designConnectionInfo.IsInGroup = item.IsInGroup;
         designConnectionInfo.StyleKey = item.StyleKey;
         designConnectionInfo.Style = item.Style;
         designConnectionInfo.ToolTip = item.ToolTip;
         designConnectionInfo.IsChecked = item.IsChecked;
         designConnectionInfo.IsEnabled = item.IsEnabled;
         designConnectionInfo.Text = item.Text;
         designConnectionInfo.ID = item.ID;
         designConnectionInfo.ZIndex = item.ZIndex;
         designConnectionInfo.DesignInfo.Backgroud = item.DesignInfo.Backgroud;
         designConnectionInfo.DesignInfo.Foreground = item.DesignInfo.Foreground;
         designConnectionInfo.DesignInfo.FontSize = item.DesignInfo.FontSize;
         designConnectionInfo.DesignInfo.Bold = item.DesignInfo.Bold;
         designConnectionInfo.DesignInfo.Italic = item.DesignInfo.Italic;
         designConnectionInfo.DesignInfo.HorizontalAlignment = item.DesignInfo.HorizontalAlignment;
         designConnectionInfo.DesignInfo.VerticalAlignment = item.DesignInfo.VerticalAlignment;
         designConnectionInfo.SourceID = item.SourceID;
         designConnectionInfo.SourceOrientation = item.SourceOrientation;
         designConnectionInfo.SinkID = item.SinkID;
         designConnectionInfo.SinkOrientation = item.SinkOrientation;
         designConnectionInfo.PathGeometry = item.PathGeometry;
         originalDesignConnectionInfos.Add(designConnectionInfo);
     }
     this.OriginalDesignItemInfos = this.OriginalDesignItemInfos;
     this.OriginalDesignConnectionInfos = this.OriginalDesignConnectionInfos;
     this.CurrentDesignItemInfos.AddRange(this.OriginalDesignItemInfos);
     this.RaiseDesignItemCollectionChanged(this.CurrentDesignItemInfos.ToArray());
 }
コード例 #18
0
 public virtual void RaiseDesignShapeMultiSelected(DesignItemInfo[] designItemInfos, DesignConnectionInfo[] designConnectionInfos)
 {
     if (DesignShapeMultiSelected != null)
     {
         DesignShapeMultiSelected(this, new MultiDesignShapeActionEventArgs(designItemInfos, designConnectionInfos));
     }
 }
コード例 #19
0
 public SingleDesignItemActionEventArgs(DesignItemInfo designItemInfo)
     : base()
 {
     this._designItemInfo = designItemInfo;
 }
コード例 #20
0
 public virtual void RaiseModifyingDesignShapes(DesignItemInfo[] designItemInfos, DesignConnectionInfo[] designConnectionInfos)
 {
     if (ModifyingDesignShapes != null)
     {
         ModifyingDesignShapes(this, new MultiDesignShapeActionEventArgs(designItemInfos, designConnectionInfos));
     }
 }
コード例 #21
0
 public DesignItemExecutedRoutedEventArgs(DesignItemInfo designItemInfo)
     : base()
 {
     this._designItemInfo = designItemInfo;
 }
コード例 #22
0
 public virtual void RaisePreAddDesignItem(DesignItemInfo[] designItemInfos)
 {
     if (PreAddDesignItem != null)
     {
         PreAddDesignItem(this, new DesignItemValidationEventArgs(designItemInfos));
     }
 }
コード例 #23
0
 public DesignItemValidationEventArgs(DesignItemInfo[] designItemInfos)
     : base()
 {
     this._designItemInfos = designItemInfos;
 }
コード例 #24
0
 public void LoadDesignInfo(CanvasInfo canvasInfo, DesignItemInfo[] designItemInfos, DesignConnectionInfo[] designConnectionInfos)
 {
     this.canvas.LoadDesignInfo(canvasInfo, designItemInfos, designConnectionInfos);
 }
コード例 #25
0
 public virtual void RaiseAddedDesignItem(DesignItemInfo designItemInfo)
 {
     if (AddedDesignItem != null)
     {
         AddedDesignItem(this, new SingleDesignItemActionEventArgs(designItemInfo));
     }
 }
コード例 #26
0
 public virtual void RaiseDesignItemCollectionChanged(DesignItemInfo[] designItemInfos)
 {
     if (DesignItemCollectionChanged != null)
     {
         DesignItemCollectionChanged(this, new DesignItemCollectionChangedEventArgs(designItemInfos));
     }
 }
コード例 #27
0
 private ShapeInfoUnit[] ToShapeInfoUnites(DesignItemInfo[] designItemInfos)
 {
     return designItemInfos.Select(a =>
     {
         var shapeInfoUnit = new ItemShapeInfoUnit(a);
         if (a.SvgBuffer != null)
         {
             using (var stream = new MemoryStream(a.SvgBuffer))
             {
                 var svgDrawing = SvgHelper.CreateSvgViewBox(stream);
                 if (svgDrawing != null)
                 {
                     shapeInfoUnit.SvgDrawing = svgDrawing;
                 }
             }
         }
         return shapeInfoUnit;
     }
     ).ToArray();
 }