A DraggerFactory creates the draggers for dragging the dockables of your application. You have to give your dragger factory to the DockingManager.
By default the StaticDraggerFactory is used. You can use a DynamicDraggerFactory like this:
DockingManager.setDraggerFactory(new DynamicDraggerFactory());
By default this way of dragging is used. When a Dockable is dragged, a representation of the dockable, is painted. This is done by a DockableDragPainter.
Usually this representation is a rectangle. It shows where the dockable will be docked in a Dock, if the mouse would be released at the current mouse position. This rectangle can be painted:
DockableDragPainter swDockableDragPainterWithoutLabel = new SwDockableDragPainter(new DefaultRectanglePainter(), false); DockableDragPainter swDockableDragPainterWithLabel = new SwDockableDragPainter(new RectangleDragComponentFactory(new DefaultRectanglePainter(), true), false); DockableDragPainter swDockableDragPainterWithoutLabelNoFloat = new SwDockableDragPainter(new DefaultRectanglePainter()); DockableDragPainter swDockableDragPainterWithLabelNoFloat = new SwDockableDragPainter(new RectangleDragComponentFactory(new DefaultRectanglePainter(), true)); DockableDragPainter labelDockableDragPainter = new LabelDockableDragPainter(); DockableDragPainter imageDockableDragPainter = new ImageDockableDragPainter(); DockableDragPainter windowDockableDragPainterWithoutLabel = new WindowDockableDragPainter(new DefaultRectanglePainter()); DockableDragPainter windowDockableDragPainterWithLabel = new WindowDockableDragPainter(new DefaultRectanglePainter(), true); DockableDragPainter transparentWindowDockableDragPainterWithoutLabel = new TransparentWindowDockableDragPainter(new DefaultRectanglePainter()); DockableDragPainter transparentWindowDockableDragPainterWithLabel = new TransparentWindowDockableDragPainter(new DefaultRectanglePainter(), true);
Different drag painters can be combined with the CompositeDockableDragPainter:
// Create the dockable drag painter and dragger factory.
CompositeDockableDragPainter compositeDockableDragPainter = new CompositeDockableDragPainter();
compositeDockableDragPainter.addPainter(basicDockableDragPainter);
if (additionalDockableDragPainter != null)
{
compositeDockableDragPainter.addPainter(additionalDockableDragPainter);
}
DraggerFactory draggerFactory = new StaticDraggerFactory(compositeDockableDragPainter);
A rectangle to represent the dockable is painted with a RectanglePainter. By default a DefaultRectanglePainter is used. You can change the layout of this drag rectangle by changing the properties of this painter:
// The drag rectangles have to be rubberbands.
float[] pattern = {1.0f, 1.0f};
Stroke stroke = new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1.0f, pattern, 0.0f);
DefaultRectanglePainter borderPainter = new DefaultRectanglePainter();
borderPainter.setStroke(stroke);
borderPainter.setBorderColor(Color.black);
borderPainter.setBorderCount(4);
borderPainter.setBorderShift(1);
borderPainter.setFillColor(null);
borderPainter.setArcHeight(0);
borderPainter.setArcWidth(0);
SwDockableDragPainter dockableDragPainter = new SwDockableDragPainter(borderPainter);
StaticDraggerFactory draggerFactory = new StaticDraggerFactory(dockableDragPainter);
DockingManager.setDraggerFactory(draggerFactory);
When a dockable is dragged, and the mouse is above a dock where the dockable can be docked, then the dockable is immediately docked in that dock, but the dragging can still be continued.
You can use dynamic dragging like this:
IMPORTANT: Sometimes dynamic dragging can be confusing for the users of your application, especially when a dockable has a lot of possibilities to dock itself.DockingManager.setDraggerFactory(new DynamicDraggerFactory());
By default the docking library uses the folowing cursors:
DockingManager.setCanDockCursor(myDockCursor); DockingManager.setCanNotDockCursor(myCanNotDockCursor);
| DynamicDragging | Shows dynamic dragging of dockables. |
| DragRectangle | Shows other drag rectangles. |
| DragPainter | Shows combinations of dockable drag painters. |