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; } } }
/// <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); }
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); }
/// <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)); }
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); }
/// <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()); }
/// <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; } }
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; } }
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); } }
/// <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); } }
/// <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); } }
/// <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); } } }
/// <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()); } } }
/// <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); }
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); }