We recently moved our Palettes (GoXam for Silverlight) into dockable panes (Telerik’s RadDocking RadPanes) to allow the user to dock and pin the palettes around the diagram as desired. This works well except for one case: if the palette is unpinned (i.e. will collapse upon mouse leave) then we are unable to drag nodes out of the palette and onto the diagram.
We’ve added a custom dragging tool to the palette and to the diagram in order to investigate further. The Diagram’s override of DragOver() is not being called when the node is dragged into the diagram (only when the palette pane is unpinned of course - in all other cases it is called with the copy flag set)… The call stack does not indicate where the call to DragOver originates. Is this something we can investigate further?
Is there a better way to get dockable palettes with drag and drop support? Surely someone has used GoXam with this sort of layout…
We’ve considered turning off GoXam’s drag and drop and substituting either the drag and drop mechanism defined by Telerik or that defined in the Codeplex Silverlight Toolkit. Is this viable?
Pardon me for being dense, but how can one expect to drag-and-drop from an unpinned pane when by definition the pane is supposed to be hidden when the mouse leaves the pane? My question is about Telerik’s functionality and has nothing to do with GoXam.
Maybe you have to use Telerik’s drag-and-drop functionality in order to avoid the auto-hiding behavior when the mouse leaves the pane? Or maybe there’s some way to temporarily make the pane pinned upon a mouse-down-and-drag?
Typically a copy of the item you are dragging appears under the mouse when the drag starts and will remain visible. Additionally, Telerik seems to keep the pane visible when dragging out (as opposed to mouse out) - that allows the interface to display the origin point and clear up the question about what happened to the object if it were dropped on an invalid target. Have a look (Silverlight 5 Controls Examples - GridView, ChartView, ScheduleView, RichTextBox, Map, Code Samples). You can drag from the “Toolbox” pane…
Visual Studio also lets the user drag from an unpinned toolbox onto the form designer, so I don’t think it’s an unreasonable user expectation.
In our application the pane is not auto-hiding when we drag out of the palette (so either Telerik at least partially understands we are dragging or the Palette captures some mouse event and Telerik is unaware we have left), but the drag isn’t resulting in a copy of the node when the mouse enters the diagram.
Is it possible to modify the palette dragging tool to create a copy of the node as the drag starts instead of when the node enters the diagram? Maybe that would provide a solution…
It’s a perfectly reasonable user expectation, but the description of Telerik’s unpinned panes appeared to be incompatible with that desire.
You can certainly implement your own drag-and-drop using the Silverlight Toolkit support for that. Take a look at external drag-and-drop.
I suppose you could also substitute your own drag-and-drop from a GoXam Palette control. I don’t think we’ve tried that, though, so I can’t guarantee satisfaction.
In any case I suspect that implementing your own drag-and-drop could be tricky to implement all of the features that you might want. It certainly was for us when we implemented it.