private static DataBindingDragDropModel UpdateDragModel(DataBindingDragDropModel dragModel)
        {
            if (!JoltHelper.DatabindingSupported(dragModel.TargetNode.ProjectContext))
            {
                dragModel.DropFlags = DataBindingDragDropFlags.None;
                return(dragModel);
            }
            DataBindingDragDropHandler bindingDragDropHandler = (DataBindingDragDropHandler)null;

            for (int index = 0; index < DataBindingDragDropManager.handlers.Length; ++index)
            {
                bindingDragDropHandler = DataBindingDragDropManager.handlers[index];
                using (bindingDragDropHandler.InitDragModel(dragModel))
                {
                    if (bindingDragDropHandler.CanHandle())
                    {
                        dragModel = bindingDragDropHandler.DragModel;
                        break;
                    }
                    bindingDragDropHandler = (DataBindingDragDropHandler)null;
                }
            }
            DataBindingDragDropManager.targetHandler = bindingDragDropHandler;
            if (bindingDragDropHandler == null)
            {
                dragModel.DropFlags = DataBindingDragDropFlags.None;
            }
            else
            {
                dragModel.DropFlags &= dragModel.DragFlags;
            }
            return(dragModel);
        }
Ejemplo n.º 2
0
        protected override bool OnDragOver(DragEventArgs args)
        {
            if (this.dragSource == null)
            {
                this.dragSource = Enumerable.First <IDragSource>(DragSourceHelper.DataOfType <IDragSource>(args.Data));
                this.dragSource.GiveFeedback += new GiveFeedbackEventHandler(this.DragSourceGiveFeedback);
            }
            this.dragCursor = (Cursor)null;
            args.Effects    = DragDropEffects.None;
            DataBindingDragDropModel dragFeedback = this.GetDragFeedback(args);

            if (dragFeedback == null || !dragFeedback.CheckDropFlags(DataBindingDragDropFlags.SetBinding | DataBindingDragDropFlags.CreateElement, false))
            {
                this.previewHighlighter.Option = HighlightOption.Default;
                this.previewHighlighter.InsertionPointPreview = (ISceneInsertionPoint)null;
                this.FeedbackAdorner.Text = string.Empty;
                this.FeedbackAdorner.CloseAdorner();
                base.OnDragOver(args);
                return(true);
            }
            if (dragFeedback.CheckDropFlags(DataBindingDragDropFlags.CreateElement))
            {
                if (!((SceneElement)dragFeedback.TargetNode).IsEffectiveRoot)
                {
                    this.previewHighlighter.Option = HighlightOption.Insert;
                    this.previewHighlighter.InsertionPointPreview = (ISceneInsertionPoint)dragFeedback.InsertionPoint;
                }
                else
                {
                    this.previewHighlighter.Option = HighlightOption.Default;
                    this.previewHighlighter.InsertionPointPreview = (ISceneInsertionPoint)null;
                }
                args.Effects    = DragDropEffects.Copy;
                this.dragCursor = DataBindingModeModel.Instance.NormalizedMode != DataBindingMode.Details ? ToolCursors.DataBindingMasterAddCursor : ToolCursors.DataBindingDetailsAddCursor;
            }
            else
            {
                this.previewHighlighter.Option = HighlightOption.Preview;
                this.previewHighlighter.InsertionPointPreview = (ISceneInsertionPoint)dragFeedback.InsertionPoint;
                args.Effects    = DragDropEffects.Move;
                this.dragCursor = DataBindingModeModel.Instance.NormalizedMode != DataBindingMode.Details ? ToolCursors.DataBindingMasterCursor : ToolCursors.DataBindingDetailsCursor;
            }
            if (DataBindingModeModel.Instance.NormalizedMode == DataBindingMode.Details)
            {
                this.FeedbackAdorner.Background = this.detailsBackground;
            }
            else
            {
                this.FeedbackAdorner.Background = this.masterBackground;
            }
            this.FeedbackAdorner.Text = dragFeedback.Tooltip;
            this.SetTextCuePosition(args.GetPosition((IInputElement)this.ActiveView.Artboard.ContentArea));
            this.FeedbackAdorner.DrawAdorner(this.OpenFeedback());
            this.CloseFeedback();
            DataBindingToolBehavior.PokeWpfToRefresh();
            base.OnDragOver(args);
            return(true);
        }
Ejemplo n.º 3
0
        private void ApplyRulesInternal(DataBindingDragDropModel model, DataBindingDragDropFlags filteredDragFlags)
        {
            if ((filteredDragFlags & DataBindingDragDropFlags.SetBinding) == DataBindingDragDropFlags.SetBinding)
            {
                if (model.InsertionPoint.Property != null)
                {
                    model.DropFlags &= ~DataBindingDragDropFlags.SetBinding;
                    IType type = model.RelativeDropSchemaPath.Type;
                    if (type != null && BindingPropertyHelper.GetPropertyCompatibility(model.InsertionPoint.Property, type, (ITypeResolver)model.TargetNode.ProjectContext) != BindingPropertyCompatibility.None)
                    {
                        model.TargetProperty = model.InsertionPoint.Property;
                        model.DropFlags     |= DataBindingDragDropFlags.SetBinding;
                    }
                }
                else if ((filteredDragFlags & DataBindingDragDropFlags.AutoPickProperty) == DataBindingDragDropFlags.AutoPickProperty)
                {
                    model.TargetProperty = this.GetSpecialDefaultBindingProperty(filteredDragFlags);
                    if (model.TargetProperty == null)
                    {
                        model.TargetProperty = this.GetDefaultBindingProperty(filteredDragFlags, model.RelativeDropSchemaPath);
                    }
                    if (model.TargetProperty != null)
                    {
                        model.DropFlags |= DataBindingDragDropFlags.SetBinding;
                    }
                }
            }
            if ((filteredDragFlags & DataBindingDragDropFlags.CreateElement) != DataBindingDragDropFlags.CreateElement || !PlatformTypes.Panel.IsAssignableFrom((ITypeId)model.TargetNode.Type))
            {
                return;
            }
            if (DataBindingModeModel.Instance.NormalizedMode == DataBindingMode.Default && model.RelativeDropSchemaPath.IsCollection)
            {
                model.NewElementType     = !model.RelativeDropSchemaPath.IsHierarchicalCollection ? DataBindingDragDropDefaultHandler.ItemsControlType : DataBindingDragDropDefaultHandler.TreeControlType;
                model.NewElementProperty = (IPropertyId)model.NewElementType.GetMember(MemberType.LocalProperty, "ItemsSource", MemberAccessTypes.Public);
                model.DropFlags         |= DataBindingDragDropFlags.CreateElement;
            }
            List <DataSchemaNode> toCreateElements = this.GetNodesToCreateElements();

            if (toCreateElements.Count < model.DataSource.Count)
            {
                return;
            }
            model.DropFlags            |= DataBindingDragDropFlags.CreateElement;
            model.NodesToCreateElements = (IList <DataSchemaNode>)toCreateElements;
            if (model.NewElementType != null)
            {
                return;
            }
            IType dataType = toCreateElements[0].ResolveType(model.TargetNode.DocumentNode.TypeResolver);
            DataViewTemplateEntry viewTemplateEntry = DataViewFactory.GetDataViewTemplateEntry(model.Platform, dataType, DataViewCategory.Master);

            model.NewElementType     = (ITypeId)viewTemplateEntry.FieldNode.Type;
            model.NewElementProperty = (IPropertyId)viewTemplateEntry.FieldValueProperty;
        }
        public static DataBindingDragDropModel GetDragFeedback(DataSchemaNodePathCollection information, BindingSceneInsertionPoint insertionPoint, DataBindingDragDropFlags dragFlags, ModifierKeys modifiers)
        {
            bool flag = (modifiers & ModifierKeys.Alt) == ModifierKeys.Alt;

            if (!DataBindingDragDropManager.isAltModifier.HasValue)
            {
                if (flag)
                {
                    DataBindingModeModel.Instance.SetMode(DataBindingMode.Details, false);
                }
            }
            else if (DataBindingDragDropManager.isAltModifier.Value != flag)
            {
                DataBindingModeModel.Instance.SetMode(flag ? DataBindingMode.Details : DataBindingMode.Default, false);
            }
            DataBindingDragDropManager.isAltModifier = new bool?(flag);
            if ((modifiers & ModifierKeys.Shift) == ModifierKeys.Shift)
            {
                dragFlags &= ~DataBindingDragDropFlags.AutoPickProperty;
                dragFlags &= ~DataBindingDragDropFlags.AllowRetargetElement;
            }
            if (insertionPoint.Property != null)
            {
                dragFlags &= ~DataBindingDragDropFlags.CreateElement;
            }
            if (!BindingPropertyHelper.HasBindableProperties(insertionPoint.SceneNode))
            {
                dragFlags &= ~(DataBindingDragDropFlags.SetBinding | DataBindingDragDropFlags.AutoPickProperty);
            }
            DataBindingDragDropModel bindingDragDropModel = new DataBindingDragDropModel(information, insertionPoint, dragFlags, modifiers);

            if (!DataBindingDragDropModel.Equals(bindingDragDropModel, DataBindingDragDropManager.effectiveDragModel))
            {
                PerformanceUtility.StartPerformanceSequence(PerformanceEvent.DataBindingDragModelUpdate);
                DataBindingDragDropManager.effectiveDragModel = DataBindingDragDropManager.UpdateDragModel(bindingDragDropModel);
                PerformanceUtility.EndPerformanceSequence(PerformanceEvent.DataBindingDragModelUpdate);
            }
            return(DataBindingDragDropManager.effectiveDragModel);
        }
Ejemplo n.º 5
0
        private void ApplyRules(DataBindingDragDropFlags filteredDragFlags)
        {
            this.ApplyRulesInternal(this.DragModel, filteredDragFlags);
            if (!this.ShouldTryDropOnAncestorPanel(filteredDragFlags))
            {
                return;
            }
            DataBindingDragDropModel ancestorPanelModel = this.DragModel.AncestorPanelModel;

            if (ancestorPanelModel == null || ancestorPanelModel == this.DragModel)
            {
                return;
            }
            DataBindingDragDropFlags filteredDragFlags1 = filteredDragFlags & ~DataBindingDragDropFlags.SetBinding;

            this.ApplyRulesInternal(ancestorPanelModel, filteredDragFlags1);
            if (!ancestorPanelModel.CheckDropFlags(DataBindingDragDropFlags.CreateElement))
            {
                return;
            }
            this.DragModel = ancestorPanelModel;
        }
Ejemplo n.º 6
0
        protected override bool OnDrop(DragEventArgs args)
        {
            this.previewHighlighter.Option = HighlightOption.Default;
            this.previewHighlighter.InsertionPointPreview = (ISceneInsertionPoint)null;
            this.FeedbackAdorner.CloseAdorner();
            DataBindingDragDropModel dragFeedback = this.GetDragFeedback(args);
            bool flag = false;

            if (dragFeedback != null && dragFeedback.CheckDropFlags(DataBindingDragDropFlags.SetBinding | DataBindingDragDropFlags.CreateElement, false))
            {
                Point position = args.GetPosition((IInputElement)this.ActiveView.ViewRootContainer);
                this.ToolBehaviorContext.SnappingEngine.Start(this.ToolBehaviorContext, (BaseFrameworkElement)null, (IList <BaseFrameworkElement>)null);
                Point artboardSnappedDropPoint = this.ToolBehaviorContext.SnappingEngine.SnapPoint(position, EdgeFlags.TopLeft) * this.ActiveView.GetComputedTransformFromRoot((SceneElement)dragFeedback.TargetNode);
                this.ToolBehaviorContext.SnappingEngine.Stop();
                flag = DataBindingDragDropManager.Drop(dragFeedback, artboardSnappedDropPoint);
            }
            if (!this.IsSuspended)
            {
                this.PopSelf();
            }
            return(flag);
        }
        public static bool Drop(DataBindingDragDropModel dragModel, Point artboardSnappedDropPoint)
        {
            if (DataBindingDragDropManager.targetHandler == null)
            {
                return(false);
            }
            bool flag = false;

            try
            {
                using (TemporaryCursor.SetWaitCursor())
                {
                    using (dragModel.ViewModel.AnimationEditor.DeferKeyFraming())
                    {
                        using (DataBindingDragDropManager.targetHandler.InitDragModel(dragModel))
                            flag = DataBindingDragDropManager.targetHandler.Handle(artboardSnappedDropPoint);
                    }
                }
            }
            catch (Exception ex)
            {
            }
            return(flag);
        }
 public static void Reset()
 {
     DataBindingDragDropManager.isAltModifier      = new bool?();
     DataBindingDragDropManager.effectiveDragModel = (DataBindingDragDropModel)null;
     DataBindingDragDropManager.targetHandler      = (DataBindingDragDropHandler)null;
 }
Ejemplo n.º 9
0
 public IDisposable InitDragModel(DataBindingDragDropModel dragModel)
 {
     return((IDisposable) new DataBindingDragDropHandler.DataModelSetter(this, dragModel));
 }
Ejemplo n.º 10
0
 public DataModelSetter(DataBindingDragDropHandler handler, DataBindingDragDropModel dragModel)
 {
     this.handler           = handler;
     this.handler.DragModel = dragModel;
 }
Ejemplo n.º 11
0
 public static bool Equals(DataBindingDragDropModel left, DataBindingDragDropModel right)
 {
     return(left == right || left != null && right != null && (left.DataSource == right.DataSource && left.DragFlags == right.DragFlags) && (left.InsertionPoint.SceneNode == right.InsertionPoint.SceneNode && left.InsertionPoint.Property == right.InsertionPoint.Property && (left.InsertionPoint.InsertIndex == right.InsertionPoint.InsertIndex && left.Modifiers == right.Modifiers)));
 }
Ejemplo n.º 12
0
 public bool CheckDragFlags(DataBindingDragDropFlags flags, bool exactMatch)
 {
     return(DataBindingDragDropModel.CheckFlags(this.DragFlags, flags, exactMatch));
 }