示例#1
0
        private void ClickPageWidget()
        {
            DesignerCanvas designer = VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(this))) as DesignerCanvas;

            //object cc = VisualTreeHelper.GetParent(this);
            if (designer == null)
            {
                return;
            }

            IGroupOperation pageVM = designer.DataContext as IGroupOperation;

            //this is option for the common widget
            if ((Keyboard.Modifiers & (ModifierKeys.Shift | ModifierKeys.Control)) != ModifierKeys.None)
            {
                int count = designer.SelectedItems.Count();

                foreach (BaseWidgetItem item in designer.SelectedItems)
                {
                    if (item.IsSelected == true &&
                        item.ParentID != Guid.Empty)
                    {
                        return;
                    }
                    if (count == 1)
                    {
                        item.IsTarget = true;
                    }
                }

                this.IsSelected = !this.IsSelected;
                if (count == 0 && IsSelected)
                {
                    this.IsTarget = true;
                }
            }
            else
            {
                if (!this.IsSelected)
                {
                    designer.DeselectAll();
                    pageVM.DeselectAllGroups();
                    this.IsSelected = true;
                    _isSelectedDone = true;
                }
            }
        }
示例#2
0
        private void MoveThumb_DragStarted(object sender, DragStartedEventArgs e)
        {
            this.designerItem = DataContext as BaseWidgetItem;
            _infoItems.Clear();
            _groups.Clear();
            bIsMousePressMove   = false;
            bIsMouseClicked     = true;
            _totalHorizonOffset = 0;
            _totaVerticalOffset = 0;

            if (this.designerItem != null)
            {
                this.rotateTransform = this.designerItem.RenderTransform as RotateTransform;
                this.designerCanvas  = VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(this.designerItem))) as DesignerCanvas;
                _page = (designerCanvas.DataContext as IPagePropertyData).ActivePage;
            }
        }
示例#3
0
        protected void OnPreviewMouseDown2222(MouseButtonEventArgs e)
        {
            base.OnPreviewMouseDown(e);
            _isSelectedDone = false;
            e.Handled       = false;

            if (IsInEditModel == false)
            {
                Focus();
            }
            //return;

            BaseWidgetItem wdg = e.Source as BaseWidgetItem;

            if (wdg == null)
            {
                return;
            }

            if (wdg.ParentID == Guid.Empty)
            {
                ClickPageWidget();
            }
            else
            {
                DesignerCanvas  designer    = VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(this))) as DesignerCanvas;
                IGroupOperation pageVM      = designer.DataContext as IGroupOperation;
                GroupStatus     groupStatus = pageVM.GetGroupStatus(this.ParentID);
                if (groupStatus == GroupStatus.UnSelect)
                {
                    ClickGroupChildInUnselected();
                }
                else if (groupStatus == GroupStatus.Selected)
                {
                    ClickGroupChildInSelected();
                }
                else if (groupStatus == GroupStatus.Edit)
                {
                    ClickGroupChildInEdited();
                }
            }
        }
示例#4
0
        private void ClickGroupChildInEdited()
        {
            ClickInitialStatus = GroupStatus.Edit;
            DesignerCanvas  designer = VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(this))) as DesignerCanvas;
            IGroupOperation pageVM   = designer.DataContext as IGroupOperation;

            if ((Keyboard.Modifiers & (ModifierKeys.Shift | ModifierKeys.Control)) != ModifierKeys.None)
            {
                this.IsSelected = !this.IsSelected;
            }
            else
            {
                if (!this.IsSelected)
                {
                    pageVM.DeselectAllChildren(ParentID);
                    this.IsSelected = true;
                    _isSelectedDone = true;
                }
            }
        }
示例#5
0
        public PreveiwMoveAdorner(DesignerCanvas designerCanvas)
            : base(designerCanvas)
        {
            this.designerCanvas                 = designerCanvas;
            this.adornerCanvas                  = new Canvas();
            this.adornerCanvas.Background       = Brushes.Transparent;
            this.adornerCanvas.IsHitTestVisible = false;
            this.visuals = new VisualCollection(this);
            this.visuals.Add(this.adornerCanvas);
            previewArea = new PreviewVisualMoveControl();
            this.adornerCanvas.Children.Add(this.previewArea);
            previewArea.AddPreviewWidgets(designerCanvas.SelectedItemAndChildren, designerCanvas);
            this.IsHitTestVisible = false;

            //this.rubberband = new Rectangle();
            //this.rubberband.Stroke = Brushes.Navy;
            //this.rubberband.StrokeThickness = 1;
            //this.rubberband.StrokeDashArray = new DoubleCollection(new double[] { 2 });
            //this.adornerCanvas.Children.Add(this.rubberband);
        }
示例#6
0
        public RubberbandAdorner(DesignerCanvas designerCanvas, Point?dragStartPoint)
            : base(designerCanvas)
        {
            this.designerCanvas = designerCanvas;
            this.startPoint     = dragStartPoint;

            this.adornerCanvas            = new Canvas();
            this.adornerCanvas.Background = Brushes.Transparent
            ;
            this.visuals = new VisualCollection(this);
            this.visuals.Add(this.adornerCanvas);

            this.rubberband                 = new Rectangle();
            this.rubberband.Stroke          = Brushes.Navy;
            this.rubberband.StrokeThickness = 1;
            this.rubberband.StrokeDashArray = new DoubleCollection(new double[] { 2 });

            this.adornerCanvas.Children.Add(this.rubberband);


            selectionService = ServiceLocator.Current.GetInstance <SelectionServiceProvider>();
        }
示例#7
0
        public void SelectCurrentWidget()
        {
            _isSelectedDone = false;


            if (IsInEditModel == false)
            {
                Focus();
            }
            //return;


            BaseWidgetItem wdg = this as  BaseWidgetItem;

            if (wdg.ParentID == Guid.Empty)
            {
                ClickPageWidget();
            }
            else
            {
                DesignerCanvas  designer    = VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(this))) as DesignerCanvas;
                IGroupOperation pageVM      = designer.DataContext as IGroupOperation;
                GroupStatus     groupStatus = pageVM.GetGroupStatus(this.ParentID);
                if (groupStatus == GroupStatus.UnSelect)
                {
                    ClickGroupChildInUnselected();
                }
                else if (groupStatus == GroupStatus.Selected)
                {
                    ClickGroupChildInSelected();
                }
                else if (groupStatus == GroupStatus.Edit)
                {
                    ClickGroupChildInEdited();
                }
            }
        }
示例#8
0
        private void RotateThumb_DragDelta(object sender, DragDeltaEventArgs e)
        {
            //Initialize the selected widgets' context when first rotate
            if (_infoItems.Count <= 0)
            {
                WidgetViewModBase wdg = designerItem.DataContext as WidgetViewModBase;
                if (wdg.IsGroup == false)
                {
                    wdg.CreateNewPropertyMementos();
                    wdg.PropertyMementos.AddPropertyMemento(new PropertyMemento("RotateAngle", wdg.RotateAngle, wdg.RotateAngle));
                    _infoItems.Add(wdg);
                }
                else
                {
                    foreach (WidgetViewModBase item in (wdg as GroupViewModel).WidgetChildren)
                    {
                        item.CreateNewPropertyMementos();

                        item.CreateNewPropertyMementos();

                        item.PropertyMementos.AddPropertyMemento(new PropertyMemento("RotateAngle", item.RotateAngle, item.RotateAngle));
                        item.PropertyMementos.AddPropertyMemento(new PropertyMemento("Left", item.Raw_Left, item.Raw_Left));
                        item.PropertyMementos.AddPropertyMemento(new PropertyMemento("Top", item.Raw_Top, item.Raw_Top));
                        _infoItems.Add(item);
                    }
                }
            }

            //Rotate the current widget
            if (this.designerItem != null && this.canvas != null)
            {
                ContentPresenter wrapper = VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(designerItem)) as ContentPresenter;

                Point  currentPoint = Mouse.GetPosition(this.canvas);
                Vector deltaVector  = Point.Subtract(currentPoint, this.centerPoint);

                double angle = Vector.AngleBetween(this.startVector, deltaVector);

                RotateTransform rotateTransform = designerItem.RenderTransform as RotateTransform;
                angle = this.initialAngle + Math.Round(angle, 0);



                if (angle < 0)
                {
                    angle += 360;
                }
                else if (angle >= 360)
                {
                    angle -= 360;
                }


                wrapper.InvalidateMeasure();

                if (this.designerItem.IsGroup == true)
                {
                    GroupViewModel group = this.designerItem.DataContext as GroupViewModel;

                    DesignerCanvas dc = canvas as DesignerCanvas;

                    foreach (WidgetViewModBase item in group.WidgetChildren)
                    {
                        RotateTransform rt = new RotateTransform(); // bw.RenderTransform as RotateTransform;
                        rt.Angle   = angle - groupIntialAngle;
                        rt.CenterX = groupCenterX;
                        rt.CenterY = groupCenterY;

                        double oldAngle = item.RotateAngle;
                        item.RotateAngle = Convert.ToInt16(angle - groupIntialAngle);
                        Rect rect1 = rt.TransformBounds(new Rect(item.Left, item.Top, item.ItemWidth, item.ItemHeight));
                        Rect rect2 = item.RevertBoundingRectangle(rect1);

                        //item.IsActual = true;
                        item.Raw_Left = rect2.Left;
                        item.Raw_Top  = rect2.Top;

                        //only widget can rotate
                        if (item is WidgetRotateViewModBase)
                        {
                            int newAngle = Convert.ToInt16(oldAngle + (angle - groupIntialAngle)) % 360;
                            if (newAngle < 0)
                            {
                                newAngle += 360;
                            }
                            else if (angle >= 360)
                            {
                                newAngle -= 360;
                            }
                            item.RotateAngle = newAngle;
                        }
                        else
                        {
                            item.RotateAngle = 0;
                        }
                    }

                    group.Refresh();
                    groupIntialAngle = angle;
                }
                else
                {
                    rotateTransform.Angle = angle;
                }


                if (this.designerItem.ParentID != Guid.Empty)
                {
                    IGroupOperation pageVM = canvas.DataContext as IGroupOperation;
                    pageVM.UpdateGroup(this.designerItem.ParentID);
                }

                if (this.designerItem.IsGroup)
                {
                    IGroupOperation pageVM = canvas.DataContext as IGroupOperation;
                    pageVM.UpdateGroup((this.designerItem.DataContext as GroupViewModel).WidgetID);
                }
            }
        }
示例#9
0
        //protected override void OnMouseUp(MouseButtonEventArgs e)
        //{
        //    base.OnMouseUp(e);
        //}
        //protected override void OnPreviewMouseLeftButtonUp(MouseButtonEventArgs e)
        //{
        //    base.OnPreviewMouseLeftButtonUp(e);
        //}

        #region Public function called bye Move Thumb
        public void OnGroupChildMouseUp()
        {
            DesignerCanvas designer = VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(this))) as DesignerCanvas;

            if (designer == null)
            {
                return;
            }
            //e.Handled = false;
            IGroupOperation pageVM      = designer.DataContext as IGroupOperation;
            GroupStatus     groupStatus = pageVM.GetGroupStatus(ParentID);

            if (ClickInitialStatus == GroupStatus.UnSelect && groupStatus == GroupStatus.Selected)
            {
                return;
            }

            //this is option for the group's child widget
            if (groupStatus == GroupStatus.UnSelect)
            {
                //if ((Keyboard.Modifiers & (ModifierKeys.Shift | ModifierKeys.Control)) != ModifierKeys.None)
                //{
                //    pageVM.SetGroupStatus(ParentID, GroupStatus.Selected);
                //}
                //else
                //{
                //    designer.DeselectAll();
                //    pageVM.DeselectAllGroups();
                //    pageVM.SetGroupStatus(ParentID, GroupStatus.Selected);
                //}
            }
            else if (groupStatus == GroupStatus.Selected)
            {
                if ((Keyboard.Modifiers & (ModifierKeys.Shift | ModifierKeys.Control)) != ModifierKeys.None)
                {
                    pageVM.SetGroupStatus(ParentID, GroupStatus.UnSelect);
                }
                else
                {
                    designer.DeselectAll();
                    pageVM.DeselectAllGroups();
                    pageVM.SetGroupStatus(ParentID, GroupStatus.Edit);
                    this.IsSelected = true;
                }
            }
            else
            {
                //this is option for the common widget
                if ((Keyboard.Modifiers & (ModifierKeys.Shift | ModifierKeys.Control)) != ModifierKeys.None)
                {
                    return;
                }
                else
                {
                    if (_isSelectedDone == false)
                    {
                        if (IsSelected == true &&
                            designer.SelectedItems.Count() == 1)
                        {
                            return;
                        }
                        pageVM.DeselectAllChildren(ParentID);
                        this.IsSelected = true;
                    }
                }
            }
        }