Exemplo n.º 1
0
        private void MouseClickEnd(System.Windows.Input.MouseButtonEventArgs e)
        {
            if (designerItem.ParentID == Guid.Empty)//common widget
            {
                e.Handled = false;
                designerItem.OnPageChildMouseUp();
                bIsMousePressMove = false;
            }
            else//group children
            {
                e.Handled = false;
                designerItem.OnGroupChildMouseUp();
                bIsMousePressMove = false;
            }

            #region handle Hamburger Menu Eidtor
            //shift/control key down, close hamburger menu  edit UI
            if ((Keyboard.Modifiers & (ModifierKeys.Shift | ModifierKeys.Control)) != ModifierKeys.None)
            {
                _selectionService.GetCurrentPage().CancelEditHamburgerPage();
            }
            else
            {
                //click hamburger, open edit hamburger menu  edit UI.
                WidgetViewModBase widgetVM = designerItem.DataContext as WidgetViewModBase;
                if (widgetVM != null && widgetVM.Type == ObjectType.HamburgerMenu)
                {
                    _selectionService.GetCurrentPage().EditHanburgerPage();
                }
            }
            #endregion
            return;
        }
Exemplo n.º 2
0
        public Rect GetBoundingRect()
        {
            WidgetViewModBase VM = DataContext as WidgetViewModBase;

            if (VM != null)
            {
                return(VM.GetBoundingRectangle());
            }
            return(new Rect(-1, -1, 0, 0));
        }
        private void EditListItemsCommandHandler(object obj)
        {
            WidgetViewModBase widgetVM = _selectionService.GetSelectedWidgets()[0] as WidgetViewModBase;

            if (widgetVM is ListboxWidgetViewModel)
            {
                (widgetVM as ListboxWidgetViewModel).EditListItems();
            }
            else if (widgetVM is DroplistWidgetViewModel)
            {
                (widgetVM as DroplistWidgetViewModel).EditListItems();
            }
        }
Exemplo n.º 4
0
        public DeleteWidgetCommand(PageEditorViewModel pageVM, WidgetViewModBase widgetVM)
        {
            _pageVM   = pageVM;
            _widgetVM = widgetVM;

            foreach (IPageView pageView in _pageVM.PageEditorModel.PageViews)
            {
                if (pageView.Widgets.Contains(_widgetVM.WidgetID))
                {
                    _placedPageViewGuids.Add(pageView.Guid);
                }
            }
        }
        private void DefaultStyleCommandHandler(object obj)
        {
            List <IWidgetPropertyData> allSelects = _selectionService.GetSelectedWidgets();

            if (allSelects.Count == 1)
            {
                WidgetViewModBase widgetVM = allSelects[0] as WidgetViewModBase;

                if (widgetVM != null)
                {
                    widgetVM.SetStyleAsDefaultStyle();
                }
            }
        }
Exemplo n.º 6
0
        private void RotateThumb_DragStarted(object sender, DragStartedEventArgs e)
        {
            _infoItems.Clear();
            if (this.designerItem == null)
            {
                return;
            }

            this.canvas = VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(this.designerItem))) as Canvas;
            if (this.canvas == null)
            {
                return;
            }
            ContentPresenter wrapper = VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(designerItem)) as ContentPresenter;

            this.centerPoint = wrapper.TranslatePoint(
                new Point(wrapper.ActualWidth * designerItem.RenderTransformOrigin.X,
                          wrapper.ActualHeight * designerItem.RenderTransformOrigin.Y),
                this.canvas);

            //this.centerPoint = wrapper.TranslatePoint(
            //    new Point(wrapper.ActualWidth/2,
            //              wrapper.ActualHeight/2),
            //              this.canvas);

            Point startPoint = Mouse.GetPosition(this.canvas);

            this.startVector = Point.Subtract(startPoint, this.centerPoint);


            this.rotateTransform = designerItem.RenderTransform as RotateTransform;
            if (this.rotateTransform == null)
            {
                designerItem.RenderTransform = new RotateTransform(0);
                this.initialAngle            = 0;
            }
            else
            {
                this.initialAngle = this.rotateTransform.Angle;
            }

            groupIntialAngle = 0;

            if (this.designerItem.IsGroup == true)
            {
                WidgetViewModBase group = this.designerItem.DataContext as WidgetViewModBase;
                groupCenterX = group.Left + group.ItemWidth / 2;
                groupCenterY = group.Top + group.ItemHeight / 2;
            }
        }
Exemplo n.º 7
0
 private void DeselectOtherWidgets()
 {
     if (_pageVM != null)
     {
         foreach (IWidgetPropertyData widget in _pageVM.GetSelectedwidgets())
         {
             WidgetViewModBase widgetVM = widget as WidgetViewModBase;
             if (widgetVM != null && widgetVM != _widgetVM)
             {
                 widgetVM.IsSelected = false;
             }
         }
     }
 }
Exemplo n.º 8
0
        public DeleteWidgetInGroupSubCommand(PageEditorViewModel pageVM, WidgetViewModBase widgetVM)
        {
            _pageVM           = pageVM;
            _widgetVM         = widgetVM;
            _parentGroupInVM  = _pageVM.PageEditorModel.Groups[widgetVM.ParentID];
            _parentGroupInDOM = _widgetVM.WidgetModel.RealParentGroup;

            foreach (IPageView pageView in _pageVM.PageEditorModel.PageViews)
            {
                if (pageView.Widgets.Contains(_widgetVM.WidgetID))
                {
                    _placedPageViewGuids.Add(pageView.Guid);
                }
            }
        }
Exemplo n.º 9
0
        public bool IsCanEditImage()
        {
            List <IWidgetPropertyData> wdgs = _selectionService.GetSelectedWidgets();

            if (wdgs.Count != 1)
            {
                return(false);
            }

            WidgetViewModBase wdg = wdgs[0] as WidgetViewModBase;

            if (wdg.Type == ObjectType.Image)
            {
                return(true);
            }
            return(false);
        }
Exemplo n.º 10
0
        //public void RemoveWidgetFromDom(Guid wdgGID)
        public void RemoveWidgetFromDom(WidgetViewModBase wdg)
        {
            if (_activeView == null)
            {
                return;
            }
            Guid wdgGID = wdg.widgetGID;

            IsDirty = true;

            if (wdg is MasterWidgetViewModel)
            {
                _activeView.DeleteMaster(wdgGID);
            }
            else
            {
                _activeView.DeleteWidget(wdgGID);
            }
        }
Exemplo n.º 11
0
        protected override void OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs e)
        {
            base.OnMouseLeftButtonUp(e);
            bIsMouseClicked = false;
            if (adorner != null)
            {
                AdornerLayer adornerLayer = adorner.Parent as AdornerLayer;
                if (adornerLayer != null)
                {
                    adornerLayer.Remove(adorner);
                }
            }
            if (designerItem == null)
            {
                return;
            }

            e.Handled = false;

            //Cursor = Cursors.SizeAll;
            //designerItem.IsStyleBrushModel = false;
            if (designerItem == null)
            {
                return;
            }
            WidgetViewModBase wVM = designerItem.DataContext as WidgetViewModBase;

            if (wVM == null)
            {
                return;
            }
            wVM.IsBrushModel = false;

            if (bIsMousePressMove == false) //click
            {
                MouseClickEnd(e);
            }
            else//move
            {
                MouseDragEnd(e);
            }
            //IsCtrlPressed = false;
        }
Exemplo n.º 12
0
        internal void CopyWidget(WidgetViewModBase wdgItem, bool bIsCut)
        {
            //implement copy operation
            ISerializeWriter serializeWriter = _document.CreateSerializeWriter(_curAdaptiveViewGID);

            wdgItem.WidgetModel.SerializeObject(serializeWriter);

            Stream stream = serializeWriter.WriteToStream();

            if (stream == null)
            {
                return;
            }

            //Clipboard operation
            try
            {
                var data = new DataObject();
                _copyTime = 0;
                _copyGID  = Guid.NewGuid();
                data.SetData(@"ProtoNowCopyID", _copyGID);
                data.SetData(@"ProtoNowAdaptiveID", _curAdaptiveViewGID);
                data.SetData(@"ProtoNowWidgets", stream);

                //Copy to Clipboard
                Clipboard.Clear();
                Clipboard.SetDataObject(data);
                //Clipboard.SetDataObject(data, true);

                //Reset Copy ID
                if (bIsCut == true)
                {
                    _copyGID = Guid.Empty;
                }
            }
            catch (System.Exception ex)
            {
                Debug.WriteLine(ex.Message);
                return;
            }
        }
Exemplo n.º 13
0
        public void WdgMgrDeleteSelection(List <Guid> list)
        {
            if (_busyIndicator.IsShow == true)
            {
                return;
            }

            List <WidgetViewModBase> DeleteList = new List <WidgetViewModBase>();

            foreach (Guid id in list)
            {
                WidgetViewModBase widget = Items.FirstOrDefault(a => a.WidgetID == id);

                if (widget != null)
                {
                    DeleteList.Add(widget);
                }
            }


            OnItemListDelete(DeleteList);
        }
Exemplo n.º 14
0
        private void OnIsCtrlPressedChanged()
        {
            if (designerItem == null)
            {
                return;
            }

            WidgetViewModBase wVM = designerItem.DataContext as WidgetViewModBase;

            if (wVM == null)
            {
                return;
            }
            if (IsCtrlPressed == true && Mouse.LeftButton == MouseButtonState.Pressed && bIsMouseClicked == true)
            {
                wVM.IsBrushModel = null;
            }
            else
            {
                wVM.IsBrushModel = false;
            }
        }
Exemplo n.º 15
0
        private void UpdateAddedMaster2Canvas(Guid masterPageGuid)
        {
            List <IRegion> masters = _model.QueryMaster(masterPageGuid);

            if (masters == null || masters.Count < 1)
            {
                return;
            }

            foreach (IRegion master in masters)
            {
                var tar = items.FirstOrDefault(c => c.widgetGID == master.Guid);
                if (tar != null)
                {
                    continue;
                }
                WidgetViewModBase widgetVM = InsertWidget2Canvas(master, IsSelected);
                if (widgetVM != null)
                {
                    widgetVM.ParentPageVM = this;
                }
            }
        }
Exemplo n.º 16
0
        override protected void OnItemRemoved(object obj)
        {
            if (obj == null)
            {
                List <WidgetViewModBase> ToRemoveList = new List <WidgetViewModBase>();
                foreach (WidgetViewModBase wdgItem in Items)
                {
                    if (wdgItem.IsSelected == true)
                    {
                        //Remove item from selection service
                        wdgItem.IsSelected = false;

                        //construct the  widget list to be removed
                        ToRemoveList.Add(wdgItem);
                    }
                }
                foreach (WidgetViewModBase it in ToRemoveList)
                {
                    Guid gid = it.widgetGID;
                    Items.Remove(it);
                    _model.RemoveWidgetFromDom(gid);
                }
            }
            else
            {
                WidgetViewModBase wdgVM = obj as WidgetViewModBase;
                if (wdgVM == null)
                {
                    return;
                }


                Guid gid = wdgVM.widgetGID;
                Items.Remove(wdgVM);
                _model.RemoveWidgetFromDom(gid);
            }
        }
Exemplo n.º 17
0
        public void WdgMgrEditSelection()
        {
            if (_busyIndicator.IsShow == true)
            {
                return;
            }

            //TODO:
            if (_selectionService.WidgetNumber != 1)
            {
                return;
            }

            WidgetViewModBase wdg = _selectionService.GetSelectedWidgets()[0] as WidgetViewModBase;

            if (wdg == null || wdg is  GroupViewModel)
            {
                return;
            }

            wdg.CanEdit = true;
            //TODO:2015/09 edit mode for special
            //wdg.type!=WidgetType.SVG
        }
        /// <summary>
        /// Create menu when select one widget.
        /// </summary>
        private void MenuFor1Widget()
        {
            ContextMenu contextMenu = new ContextMenu();

            contextMenu.IsOpen = true;
            List <IWidgetPropertyData> wdgs = _selectionService.GetSelectedWidgets();

            if (wdgs == null || wdgs.Count <= 0)
            {
                return;
            }
            WidgetViewModBase wdg = wdgs[0] as WidgetViewModBase;

            if (wdg == null)
            {
                return;
            }

            if (wdg.IsGroup == true)
            {
                //TODO:Add Group context Menu
                AddCopyPasete2Menu(contextMenu);
                AddLibrary2Menu(contextMenu);

                //Add master convert menu
                GroupViewModel group  = wdg as GroupViewModel;
                var            target = group.WidgetChildren.FirstOrDefault(a => a is MasterWidgetViewModel);
                if (target == null)
                {
                    AddConvertMaster2Menu(contextMenu);
                }

                AddUnplace2Menu(contextMenu);
                AddUnGroup2Menu(contextMenu);
                AddOrder2Menu(contextMenu);
            }
            else
            {
                IRegion selObject = ActivePage.WidgetsAndMasters[_selectionService.GetSelectedWidgetGUIDs()[0]];
                if (selObject == null)
                {
                    return;
                }
                if (selObject is IMaster)
                {
                    AddCopyPasete2Menu(contextMenu);
                    AddExport2Menu(contextMenu);
                    AddLibrary2Menu(contextMenu);
                    AddUnplace2Menu(contextMenu);

                    if (wdg.RealParentGroupGID == Guid.Empty)
                    {
                        AddMasterOperationMenu(contextMenu, (wdg as MasterWidgetViewModel).IsLocked2MasterLocation);
                    }
                    else
                    {
                        AddMasterOperationMenu(contextMenu, (wdg as MasterWidgetViewModel).IsLocked2MasterLocation, true);
                    }

                    AddOrder2Menu(contextMenu, false);
                }
                else if (selObject is IWidget)
                {
                    var widget = selObject as IWidget;
                    switch (widget.WidgetType)
                    {
                    case WidgetType.Image:
                        AddCopyPasete2Menu(contextMenu);
                        AddExport2Menu(contextMenu);
                        AddLibrary2Menu(contextMenu);
                        AddConvertMaster2Menu(contextMenu);
                        contextMenu.Items.Add(new ContextMenuItem(GlobalData.FindResource("ContextMenu_ImportImage"), ImportImageCommand));
                        contextMenu.Items.Add(new Separator());
                        AddUnplace2Menu(contextMenu);
                        AddTooltip2Menu(contextMenu);
                        AddOrder2Menu(contextMenu);
                        break;

                    case WidgetType.RadioButton:
                    case WidgetType.Checkbox:
                    case WidgetType.TextField:
                    case WidgetType.TextArea:
                    case WidgetType.Button:
                    case WidgetType.Shape:
                        AddCopyPasete2Menu(contextMenu);
                        AddExport2Menu(contextMenu);
                        AddLibrary2Menu(contextMenu);
                        AddConvertMaster2Menu(contextMenu);
                        AddEditText2Menu(contextMenu);
                        contextMenu.Items.Add(new Separator());
                        AddUnplace2Menu(contextMenu);
                        AddTooltip2Menu(contextMenu);
                        AddOrder2Menu(contextMenu);
                        AddDefaultstyleToMenu(contextMenu);
                        break;

                    case WidgetType.HotSpot:
                    case WidgetType.SVG:
                        AddCopyPasete2Menu(contextMenu);
                        AddExport2Menu(contextMenu);
                        AddLibrary2Menu(contextMenu);
                        AddConvertMaster2Menu(contextMenu);
                        AddUnplace2Menu(contextMenu);
                        AddTooltip2Menu(contextMenu);
                        AddOrder2Menu(contextMenu);
                        break;

                    case WidgetType.Line:
                        AddCopyPasete2Menu(contextMenu);
                        AddExport2Menu(contextMenu);
                        AddLibrary2Menu(contextMenu);
                        AddConvertMaster2Menu(contextMenu, false);
                        if (AdaptiveViewsList.Count > 1)
                        {
                            contextMenu.Items.Add(new Separator());
                            AddUnplace2Menu(contextMenu, false);
                        }
                        //AddTooltip2Menu(contextMenu);
                        AddOrder2Menu(contextMenu);
                        AddDefaultstyleToMenu(contextMenu);
                        break;

                    case WidgetType.ListBox:
                    case WidgetType.DropList:
                        AddCopyPasete2Menu(contextMenu, true);
                        AddExport2Menu(contextMenu);
                        AddEditItems2Menu(contextMenu);
                        contextMenu.Items.Add(new Separator());
                        AddLibrary2Menu(contextMenu);
                        AddConvertMaster2Menu(contextMenu);
                        AddUnplace2Menu(contextMenu);
                        AddTooltip2Menu(contextMenu);
                        AddOrder2Menu(contextMenu);
                        AddDefaultstyleToMenu(contextMenu);
                        break;

                    case WidgetType.Toast:
                    case WidgetType.DynamicPanel:
                        AddCopyPasete2Menu(contextMenu);
                        AddExport2Menu(contextMenu);
                        AddLibrary2Menu(contextMenu);
                        AddConvertMaster2Menu(contextMenu);
                        AddUnplace2Menu(contextMenu);
                        AddTooltip2Menu(contextMenu);
                        AddOrder2Menu(contextMenu);
                        break;

                    case WidgetType.HamburgerMenu:
                        AddCopyPasete2Menu(contextMenu);
                        AddExport2Menu(contextMenu);
                        AddLibrary2Menu(contextMenu);
                        AddConvertMaster2Menu(contextMenu, false);
                        contextMenu.Items.Add(new Separator());
                        contextMenu.Items.Add(new ContextMenuItem(GlobalData.FindResource("ContextMenu_ImportImage"), ImportImageCommand));
                        contextMenu.Items.Add(new Separator());
                        AddUnplace2Menu(contextMenu);
                        AddTooltip2Menu(contextMenu);
                        AddOrder2Menu(contextMenu);


                        break;
                    }
                }
            }
        }
Exemplo n.º 19
0
        public bool ExportObj2Image()
        {
            if (1 != _selectionService.WidgetNumber)
            {
                return(false);
            }

            WidgetViewModBase wdg = _selectionService.GetSelectedWidgets()[0] as WidgetViewModBase;

            if (wdg == null)
            {
                return(false);
            }

            try
            {
                DesignerCanvas layout = EditorCanvas as DesignerCanvas;
                if (layout == null)
                {
                    return(false);
                }
                BaseWidgetItem it = layout.SelectedItems.ToList <BaseWidgetItem>()[0];
                if (it == null)
                {
                    return(false);
                }


                RenderTargetBitmap bmp = new RenderTargetBitmap((int)it.ActualWidth, (int)it.ActualHeight, 96, 96, PixelFormats.Pbgra32);
                bmp.Render(VisualTreeHelper.GetChild(it, 0) as Visual);

                //show file save dialog
                string         imagFile       = "";
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                //saveFileDialog.Filter = "PNG File(*.png)|*.png|JPG File(*.jpg)|*.jpg|BMP File(*.bmp)|*.bmp|GIF File(*.gif)|*.gif|TIF File(*.tif)|*.tif";
                saveFileDialog.Filter   = "PNG File(*.png)|*.png";
                saveFileDialog.FileName = wdg.Type.ToString() + "-" + wdg.WidgetID.ToString().Substring(0, 8);
                if (saveFileDialog.ShowDialog() == true)
                {
                    imagFile = saveFileDialog.FileName;
                }
                else
                {
                    return(false);
                }

                //export image
                string        extensionString = Path.GetExtension(imagFile);
                BitmapEncoder encoder         = null;
                switch (extensionString)
                {
                case ".jpg":
                    encoder = new JpegBitmapEncoder();
                    break;

                case ".png":
                    encoder = new PngBitmapEncoder();
                    break;

                case ".bmp":
                    encoder = new BmpBitmapEncoder();
                    break;

                case ".gif":
                    encoder = new GifBitmapEncoder();
                    break;

                case ".tif":
                    encoder = new TiffBitmapEncoder();
                    break;

                default:
                    throw new InvalidOperationException();
                }
                encoder.Frames.Add(BitmapFrame.Create(bmp));
                using (Stream stm = File.Create(imagFile))
                {
                    encoder.Save(stm);
                }
            }
            catch (Exception exp)
            {
                NLogger.Warn("Export widget into a image exception : " + exp.Message);
                return(false);
            }
            return(true);
        }
Exemplo n.º 20
0
        public void UnGroup(GroupViewModel groupVM)
        {
            GroupViewModel           targetVM       = groupVM;
            List <WidgetViewModBase> WidgetChildren = targetVM.WidgetChildren;

            foreach (WidgetViewModBase item in WidgetChildren)
            {
                item.ParentID = Guid.Empty;
            }

            IGroups ChildGroups = targetVM.GroupChildren;
            //======================================================render the group
            //Create the external Groups
            List <WidgetViewModBase> GroupVMs = new List <WidgetViewModBase>();

            foreach (IGroup it in ChildGroups)
            {
                WidgetViewModBase vmItem = WidgetFactory.CreateGroup(it);
                if (vmItem == null)
                {
                    return;
                }
                vmItem.IsGroup = true;
                GroupVMs.Add(vmItem);
            }

            //Remove the parent group
            targetVM.IsSelected = false;
            _selectionService.RemoveWidget(targetVM);
            Items.Remove(targetVM);

            //Initialize the new Group
            //if (GroupVMs.Count <= 0)
            //    return;
            foreach (WidgetViewModBase wdg in Items)
            {
                foreach (GroupViewModel group in GroupVMs)
                {
                    if (true == group.IsChild(wdg.widgetGID, false))
                    {
                        wdg.ParentID   = group.widgetGID;
                        wdg.IsGroup    = false;
                        wdg.IsSelected = false;
                        group.AddChild(wdg);
                    }
                }
            }

            //UI Render the Groups
            foreach (GroupViewModel group in GroupVMs)
            {
                group.Status = GroupStatus.Selected;
                Items.Add(group);
                group.Refresh();
            }
            //===========================================


            //Select new childreb
            foreach (WidgetViewModBase item in WidgetChildren)
            {
                if (item.ParentID == Guid.Empty)
                {
                    item.IsSelected = true;
                    item.IsGroup    = false;
                }
            }

            //Last
            _model.UnGroup(groupVM.WidgetID);
            _ListEventAggregator.GetEvent <GroupChangedEvent>().Publish(false);
        }
Exemplo n.º 21
0
        private void MoveThumb_DragDelta(object sender, DragDeltaEventArgs e)
        {
            //Initialize to avoid exception
            if (this.designerItem == null || this.designerCanvas == null)
            {
                return;
            }


            //Initialize the selected widgets' context when first move
            if (bIsMousePressMove == false)
            {
                designerItem.IsAfterDraged = true;
                if (designerItem.IsSelected == false)
                {
                    designerItem.SelectCurrentWidget();
                }

                if (Keyboard.IsKeyDown(Key.LeftCtrl) == true || Keyboard.IsKeyDown(Key.RightCtrl) == true)
                {
                    IsCtrlPressed = true;
                }
                else
                {
                    IsCtrlPressed = false;
                }

                if (IsCtrlPressed == true && Mouse.LeftButton == MouseButtonState.Pressed)
                {
                    //Cursor = CopyCur;
                    //designerItem.IsStyleBrushModel = null;
                    if (designerItem == null)
                    {
                        return;
                    }
                    WidgetViewModBase wVM = designerItem.DataContext as WidgetViewModBase;
                    wVM.IsBrushModel = null;
                }

                AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(designerCanvas);
                if (adornerLayer != null)
                {
                    adorner = new PreveiwMoveAdorner(designerCanvas);
                    if (adorner != null)
                    {
                        adornerLayer.Add(adorner);
                    }
                }

                IPagePropertyData Page = designerCanvas.DataContext as IPagePropertyData;
                foreach (WidgetViewModBase item in Page.GetSelectedwidgets())
                {
                    if (item.IsLocked == true)
                    {
                        continue;
                    }

                    if (item.IsGroup == true)
                    {
                        GroupViewModel group = item as GroupViewModel;
                        if (group == null)
                        {
                            continue;
                        }

                        // Create a property memento when drag start
                        foreach (WidgetViewModBase child in group.WidgetChildren)
                        {
                            child.CreateNewPropertyMementos();
                            child.PropertyMementos.AddPropertyMemento(new PropertyMemento("Left", child.Raw_Left, child.Raw_Left));
                            child.PropertyMementos.AddPropertyMemento(new PropertyMemento("Top", child.Raw_Top, child.Raw_Top));

                            _infoItems.Add(child);
                        }
                        _groups.Add(group);
                    }
                    else
                    {
                        item.CreateNewPropertyMementos();

                        item.PropertyMementos.AddPropertyMemento(new PropertyMemento("Left", item.Raw_Left, item.Raw_Left));
                        item.PropertyMementos.AddPropertyMemento(new PropertyMemento("Top", item.Raw_Top, item.Raw_Top));

                        if (item.WidgetType == WidgetType.Toast && item.Top == 0)
                        {
                            item.PropertyMementos.AddPropertyMemento(new PropertyMemento("DisplayPosition", ToastDisplayPosition.Top, ToastDisplayPosition.Top));
                        }
                        _infoItems.Add(item);
                    }
                }
                bIsMousePressMove = true;
            }

            SendFirePositionEvent(false);

            //Move adorner to show drag process
            MoveAdorner(sender, e);

            //Move Widgets, the older solution, discarded
            //if (_infoItems.Count > 0 || _groups.Count > 0)
            //{
            //    MoveSelectedWidgets(sender,e);
            //}

            //set routed event is handled
            e.Handled = true;
        }
Exemplo n.º 22
0
 public void AddItems(WidgetViewModBase data)
 {
     _VMItems.Add(data);
     OnItemsAdd();
 }
Exemplo n.º 23
0
        private List <WidgetViewModBase> CreateVMObjects(IObjectContainer container)
        {
            List <WidgetViewModBase> all = new List <WidgetViewModBase>();

            //common widget
            foreach (IWidget newItem in container.WidgetList)
            {
                if (newItem != null && newItem.ParentGroup == null)
                {
                    WidgetViewModBase vmItem = WidgetFactory.CreateWidget(newItem);
                    vmItem.ParentPageVM = this;
                    all.Add(vmItem);
                }
            }

            //common master
            foreach (IMaster newItem in container.MasterList)
            {
                if (newItem != null && newItem.ParentGroup == null)
                {
                    WidgetViewModBase vmItem = WidgetFactory.CreateWidget(newItem);
                    vmItem.ParentPageVM = this;
                    all.Add(vmItem);
                }
            }

            //master and it's all children
            foreach (IGroup newGroup in container.GroupList)
            {
                GroupViewModel vmGroup = null;
                if (newGroup != null && newGroup.ParentGroup == null)
                {
                    vmGroup         = WidgetFactory.CreateGroup(newGroup) as GroupViewModel;
                    vmGroup.IsGroup = true;
                    vmGroup.Status  = GroupStatus.Selected;
                }

                List <IRegion> children = new List <IRegion>();
                GetWidgetChildren(newGroup, children);
                if (children.Count < 1 || vmGroup == null)
                {
                    continue;
                }
                all.Add(vmGroup);

                foreach (IRegion item in children)
                {
                    WidgetViewModBase vmChild = WidgetFactory.CreateWidget(item);
                    if (vmChild == null)
                    {
                        continue;
                    }

                    vmChild.IsGroup    = false;
                    vmChild.ParentID   = newGroup.Guid;
                    vmChild.IsSelected = false;
                    vmGroup.AddChild(vmChild);
                    all.Add(vmChild);
                }
            }
            return(all);
        }
Exemplo n.º 24
0
        /// <summary>
        /// load all widgets/groups which is not in a group in current page.
        /// which means,only load top level  widget/group.
        /// </summary>
        public void LoadPageWidgets()
        {
            if (_selectedWidget == null || _widgetShowHideAction == null)
            {
                DisableInteraction();
                return;
            }

            WidgetList.Clear();

            List <IWidgetPropertyData> allWidgets    = SelectionService.GetCurrentPage().GetAllWidgets();
            List <WidgetNode>          TargetWidgets = new List <WidgetNode>();

            foreach (IWidgetPropertyData it in allWidgets.Where(x => x.IsGroup == false))
            {
                WidgetViewModBase wdg = it as WidgetViewModBase;
                if (wdg == null)
                {
                    continue;
                }

                // load widget that is not in a group .
                if ((wdg.ParentID == Guid.Empty))
                {
                    bool    bChecked     = false;
                    IRegion targetObject = wdg.WidgetModel.WdgDom;
                    if (targetObject == null)
                    {
                        break;
                    }
                    //if the widget is already checked.
                    var selWidget = _widgetShowHideAction.TargetObjects.FirstOrDefault(x => x.Guid == targetObject.Guid);
                    if (selWidget != null)
                    {
                        bChecked = true;
                    }
                    TargetWidgets.Add(new WidgetNode(this, targetObject, wdg.Type, bChecked));
                }
            }

            //load all groups.
            foreach (IGroup group in _currentPage.Groups)
            {
                bool bChecked = false;
                var  selGroup = _widgetShowHideAction.TargetObjects.FirstOrDefault(x => x.Guid == group.Guid);
                if (selGroup != null)
                {
                    bChecked = true;
                }
                TargetWidgets.Add(new WidgetNode(this, group, ObjectType.Group, bChecked));
            }

            _isCheckAll = !TargetWidgets.Any(x => x.IsSelected == false);

            WidgetList.AddRange(TargetWidgets);

            FirePropertyChanged("IsCheckAll");
            FirePropertyChanged("ShowHideType");
            FirePropertyChanged("AnimateType");
            FirePropertyChanged("AnimateTime");
            FirePropertyChanged("IsShowHideEnabled");
        }
Exemplo n.º 25
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);
                }
            }
        }
Exemplo n.º 26
0
        public void WdgMgrReZOrderSelection(int tarZorder, Guid tarWdgGuid)
        {
            if (_busyIndicator.IsShow == true)
            {
                return;
            }
            // tarWdgGuid = Guid.NewGuid();
            WidgetViewModBase wdg = items.FirstOrDefault(c => c.WidgetID == tarWdgGuid);

            if (wdg == null)
            {
                return;
            }
            int orgZorder = wdg.ZOrder;
            int nOriCount = 1;

            if (wdg.IsGroup == true)
            {
                nOriCount = (wdg as GroupViewModel).WidgetChildren.Count();
            }


            CompositeCommand cmds             = new CompositeCommand();
            bool             bIsZOrderChanged = false;

            //up drag to other widgets
            List <WidgetViewModBase> allothers;
            int nOtherNum = 0;

            if (tarZorder > orgZorder)
            {
                allothers = items.Where(c => c.ZOrder <tarZorder && c.ZOrder> orgZorder && c.IsGroup == false).ToList <WidgetViewModBase>();
                foreach (WidgetViewModBase it in allothers)
                {
                    CreatePropertyChangeUndoCommand(cmds, it, "ZOrder", it.ZOrder, it.ZOrder - nOriCount);
                    it.ZOrder        = it.ZOrder - nOriCount;
                    bIsZOrderChanged = true;
                }
                nOtherNum = allothers.Count();
            }
            else if (tarZorder < orgZorder)//down drag to other widgets
            {
                allothers = items.Where(c => c.ZOrder < (orgZorder - nOriCount + 1) && c.ZOrder >= tarZorder && c.IsGroup == false).ToList <WidgetViewModBase>();
                foreach (WidgetViewModBase it in allothers)
                {
                    CreatePropertyChangeUndoCommand(cmds, it, "ZOrder", it.ZOrder, it.ZOrder + nOriCount);
                    it.ZOrder        = it.ZOrder + nOriCount;
                    bIsZOrderChanged = true;
                }
                nOtherNum = -allothers.Count();
            }


            //adjust the drag item's zorder
            if (wdg.IsGroup == true)
            {
                foreach (WidgetViewModBase it in (wdg as GroupViewModel).WidgetChildren)
                {
                    CreatePropertyChangeUndoCommand(cmds, it, "ZOrder", it.ZOrder, it.ZOrder + nOtherNum);
                    it.ZOrder        = it.ZOrder + nOtherNum;
                    bIsZOrderChanged = true;
                }
            }
            else
            {
                CreatePropertyChangeUndoCommand(cmds, wdg, "ZOrder", wdg.ZOrder, wdg.ZOrder + nOtherNum);
                wdg.ZOrder       = wdg.ZOrder + nOtherNum;
                bIsZOrderChanged = true;
            }
            _ListEventAggregator.GetEvent <ZorderChangedEvent>().Publish(null);

            //Push Command to Undo/Redo stack
            if (bIsZOrderChanged == true)
            {
                NotifyEventCommand notifyCmd = new NotifyEventCommand(CompositeEventType.ZorderChange);
                cmds.AddCommand(notifyCmd);
                PushToUndoStack(cmds);
                _ListEventAggregator.GetEvent <ZorderChangedEvent>().Publish(null);
            }

            //items.Where(c => c.IsSelected == true).ToList<WidgetViewModBase>();
            //List<WidgetViewModBase> AllChildren = ParentGroup.WidgetChildren;
            //List<WidgetViewModBase> targetWidgets = ParentGroup.WidgetChildren.Where(c => c.IsSelected == true).ToList<WidgetViewModBase>();
            //if (targetWidgets.Count() == AllChildren.Count())
            //{
            //    return;
            //}
            //targetWidgets = targetWidgets.OrderByDescending(s => s.ZOrder).ToList<WidgetViewModBase>();
            //int maxZOrder = AllChildren.Max(a => a.ZOrder);
        }
        private void EditTextCommandHandler(object obj)
        {
            WidgetViewModBase widgetVM = _selectionService.GetSelectedWidgets()[0] as WidgetViewModBase;

            widgetVM.CanEdit = true;
        }