Esempio n. 1
0
        private void control_DragDrop(object sender, DragEventArgs e)
        {
            SetMousePosition(e);

            IInstancingContext instancingContext = AdaptedControl.ContextAs <IInstancingContext>();

            if (instancingContext != null &&
                instancingContext.CanInsert(e.Data))
            {
                try
                {
                    m_isDropping = true;

                    string name = "Drag and Drop".Localize();

                    ITransactionContext transactionContext = AdaptedControl.ContextAs <ITransactionContext>();
                    transactionContext.DoTransaction(
                        delegate
                    {
                        instancingContext.Insert(e.Data);

                        if (m_statusService != null)
                        {
                            m_statusService.ShowStatus(name);
                        }
                    }, name);

                    AdaptedControl.Focus();
                }
                finally
                {
                    m_isDropping = false;
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Called on drag and drop event
        /// </summary>
        /// <param name="e">Event args</param>
        protected virtual void OnDragDrop(DragEventArgs e)
        {
            IInstancingContext   instancingContext = m_rootAssetFolder.As <IInstancingContext>();
            IEnumerable <object> converted         = ApplicationUtil.Convert(e.Data, instancingContext, m_dataObjectConverters);

            ApplicationUtil.Drop(converted, instancingContext, m_statusService);
        }
Esempio n. 3
0
        private void Delete(string commandName)
        {
            OnDeleting(EventArgs.Empty);

            IInstancingContext instancingContext = m_contextRegistry.GetActiveContext <IInstancingContext>();

            if (instancingContext != null &&
                instancingContext.CanDelete())
            {
                ITransactionContext transactionContext = instancingContext.As <ITransactionContext>();
                transactionContext.DoTransaction(
                    delegate
                {
                    instancingContext.Delete();

                    ISelectionContext selectionContext = instancingContext.As <ISelectionContext>();
                    if (selectionContext != null)
                    {
                        selectionContext.Clear();
                    }
                }, commandName);
            }

            OnDeleted(EventArgs.Empty);
        }
Esempio n. 4
0
        /// <summary>
        /// Returns whether the active context can paste from the clipboard</summary>
        /// <returns>True iff the active context can paste from the clipboard</returns>
        public bool CanPaste()
        {
            IInstancingContext instancingContext = m_contextRegistry.GetActiveContext <IInstancingContext>();

            return
                (instancingContext != null &&
                 instancingContext.CanInsert(Clipboard));
        }
Esempio n. 5
0
        private void thumbnailControl_DragDrop(object sender, DragEventArgs e)
        {
            m_lastHit = m_currentAssetFolder;
            IInstancingContext   instancingContext = m_rootAssetFolder.As <IInstancingContext>();
            IEnumerable <object> converted         = ApplicationUtil.Convert(e.Data, instancingContext, m_dataObjectConverters);

            ApplicationUtil.Drop(converted, instancingContext, m_statusService);
        }
Esempio n. 6
0
        /// <summary>
        /// Returns a value indicating if the active context can delete the selection</summary>
        /// <returns>True iff the active context can delete the selection</returns>
        public bool CanDelete()
        {
            IInstancingContext instancingContext = m_contextRegistry.GetActiveContext <IInstancingContext>();

            return
                (instancingContext != null &&
                 instancingContext.CanDelete());
        }
Esempio n. 7
0
        /// <summary>
        /// Called on dragging mouse over event
        /// </summary>
        /// <param name="e">Event args</param>
        protected virtual void OnDragOver(DragEventArgs e)
        {
            e.Effect = DragDropEffects.None;
            IInstancingContext instancingContext = m_rootAssetFolder.As <IInstancingContext>();
            IEnumerable        converted         = ApplicationUtil.Convert(e.Data, instancingContext, m_dataObjectConverters);

            if (converted != null)
            {
                e.Effect = DragDropEffects.Move;
            }
        }
Esempio n. 8
0
        private void thumbnailControl_DragOver(object sender, DragEventArgs e)
        {
            e.Effect  = DragDropEffects.None;
            m_lastHit = m_currentAssetFolder;
            IInstancingContext instancingContext = m_rootAssetFolder.As <IInstancingContext>();
            IEnumerable        converted         = ApplicationUtil.Convert(e.Data, instancingContext, m_dataObjectConverters);

            if (converted != null)
            {
                e.Effect = DragDropEffects.Move;
            }
        }
Esempio n. 9
0
        private void control_DragOver(object sender, DragEventArgs e)
        {
            SetMousePosition(e);

            e.Effect = DragDropEffects.None;
            IInstancingContext instancingContext = AdaptedControl.ContextAs <IInstancingContext>();

            if (instancingContext != null &&
                instancingContext.CanInsert(e.Data))
            {
                OnDragOver(e);
            }
        }
Esempio n. 10
0
        /// <summary>
        /// Paste's the clipboard into the active context</summary>
        public void Paste()
        {
            IInstancingContext instancingContext = m_contextRegistry.GetActiveContext <IInstancingContext>();

            if (instancingContext != null &&
                instancingContext.CanInsert(Clipboard))
            {
                ITransactionContext transactionContext = instancingContext.As <ITransactionContext>();
                transactionContext.DoTransaction(
                    delegate
                {
                    instancingContext.Insert(Clipboard);
                }, CommandInfo.EditPaste.MenuText);

                OnPasted(EventArgs.Empty);
            }
        }
Esempio n. 11
0
        /// <summary>
        /// Copies the active context's selection to the clipboard</summary>
        public void Copy()
        {
            IInstancingContext instancingContext = m_contextRegistry.GetActiveContext <IInstancingContext>();

            if (instancingContext != null &&
                instancingContext.CanCopy())
            {
                object      rawObject  = instancingContext.Copy();
                IDataObject dataObject = rawObject as IDataObject ?? new DataObject(rawObject);

                OnCopying(EventArgs.Empty);

                Clipboard = dataObject;

                OnCopied(EventArgs.Empty);
            }
        }
Esempio n. 12
0
        /// <summary>
        /// Perform the actual insertion</summary>
        /// <param name="context">Must implement IHierarchicalInsertionContext and/or
        /// IInstancingContext to succeed</param>
        /// <param name="parent">Optional. Parent object to which the new child is added. Can be null
        /// if the context supports it.</param>
        /// <param name="child">New child object to be inserted into the specified parent</param>
        private static void DoInsert(object context, object parent, object child)
        {
            IHierarchicalInsertionContext hierarchicalInsertionContext = context.As <IHierarchicalInsertionContext>();

            if (hierarchicalInsertionContext != null)
            {
                hierarchicalInsertionContext.Insert(parent, child);
            }
            else
            {
                IInstancingContext instancingContext = context.As <IInstancingContext>();
                if (instancingContext != null)
                {
                    instancingContext.Insert(child);
                }
            }
        }
Esempio n. 13
0
        /// <summary>
        /// Gets tags for context menu (right click) commands</summary>
        /// <param name="context">Context containing target object</param>
        /// <param name="clicked">Right clicked object, or null if none</param>
        IEnumerable <object> IContextMenuCommandProvider.GetCommands(object context, object clicked)
        {
            ISelectionContext  selectionContext  = context.As <ISelectionContext>();
            IInstancingContext instancingContext = context.As <IInstancingContext>();

            if ((selectionContext != null) && (instancingContext != null))
            {
                return(new object[]
                {
                    StandardCommand.EditCut,
                    StandardCommand.EditCopy,
                    StandardCommand.EditPaste,
                    StandardCommand.EditDelete
                });
            }

            return(EmptyEnumerable <object> .Instance);
        }
        private void listView_DragDrop(object sender, DragEventArgs e)
        {
            IInstancingContext context = m_eventSequenceContext;

            if (context.CanInsert(e.Data))
            {
                ITransactionContext transactionContext = context as ITransactionContext;
                transactionContext.DoTransaction(delegate
                {
                    context.Insert(e.Data);
                }, "Drag and Drop".Localize());

                if (m_statusService != null)
                {
                    m_statusService.ShowStatus("Drag and Drop".Localize());
                }
            }
        }
Esempio n. 15
0
        /// <summary>
        /// Indicates if the specified child can be inserted into the specified parent object</summary>
        /// <param name="context">Must implement IHierarchicalInsertionContext and/or
        /// IInstancingContext to succeed</param>
        /// <param name="parent">Optional. Parent object we want to insert into. Can be null if the
        /// context supports it.</param>
        /// <param name="child">Child object to be inserted into the specified parent</param>
        /// <returns>True iff the child can be inserted into the parent (or the context supports
        /// parent-less insertion)</returns>
        /// <remarks>The context must implement IHierarchicalInsertionContext and/or IInstancingContext
        /// to allow insertion. If the context implements both, IHierarchicalInsertionContext is preferred and
        /// any insertion logic in the IInstancingContext implementation is ignored!</remarks>
        public static bool CanInsert(object context, object parent, object child)
        {
            IHierarchicalInsertionContext hierarchicalInsertionContext = context.As <IHierarchicalInsertionContext>();

            if (hierarchicalInsertionContext != null)
            {
                return(hierarchicalInsertionContext.CanInsert(parent, child));
            }
            else
            {
                IInstancingContext instancingContext = context.As <IInstancingContext>();
                if (instancingContext != null)
                {
                    return(instancingContext.CanInsert(child));
                }
            }

            return(false);
        }
Esempio n. 16
0
        private void resourcesListView_DragDrop(object sender, DragEventArgs e)
        {
            if (m_event != null)
            {
                IInstancingContext context = m_event.Cast <IInstancingContext>();
                if (context.CanInsert(e.Data))
                {
                    ITransactionContext transactionContext = context as ITransactionContext;
                    TransactionContexts.DoTransaction(transactionContext,
                                                      delegate
                    {
                        context.Insert(e.Data);
                    },
                                                      Localizer.Localize("Drag and Drop"));

                    if (m_statusService != null)
                    {
                        m_statusService.ShowStatus(Localizer.Localize("Drag and Drop"));
                    }
                }
            }
        }
        /// <summary>
        /// Checks whether the client can do the command, if it handles it</summary>
        /// <param name="commandTag">Command to be done</param>
        /// <returns>True iff client can do the command</returns>
        bool ICommandClient.CanDoCommand(object commandTag)
        {
            bool canDo = false;

            IInstancingContext instancingContext = m_contextRegistry.GetActiveContext <IInstancingContext>();

            switch ((StandardCommand)commandTag)
            {
            case StandardCommand.EditCut:
                canDo =
                    instancingContext != null &&
                    instancingContext.CanCopy() &&
                    instancingContext.CanDelete();
                break;

            case StandardCommand.EditDelete:
                canDo =
                    instancingContext != null &&
                    instancingContext.CanDelete();
                break;

            case StandardCommand.EditCopy:
                canDo =
                    instancingContext != null &&
                    instancingContext.CanCopy();
                break;

            case StandardCommand.EditPaste:
                canDo =
                    instancingContext != null &&
                    CanPaste();
                break;
            }

            return(canDo);
        }