@Override
	public void dragGestureRecognized(DragGestureEvent dragEvent) {

		// check input event: if any button other than MB1 is pressed,
		// don't attempt to process the drag and drop event.
		InputEvent ie = dragEvent.getTriggerEvent();
		int modifiers = ie.getModifiersEx();
		if ((modifiers & InputEvent.BUTTON2_DOWN_MASK) != 0 ||
			(modifiers & InputEvent.BUTTON3_DOWN_MASK) != 0) {
			return;
		}

		List<ROW_OBJECT> items = getSelectedItems();
		if (items.isEmpty()) {
			return;
		}
		Transferable transferable = createDragTransferable(items);
		if (transferable == null) {
			return;
		}

		try {
			dragEvent.startDrag(DragSource.DefaultMoveDrop, null, new Point(0, 0), transferable,
				this);
		}
		catch (InvalidDnDOperationException exc) {
			// not sure why, but apparently we don't care
		}
	}
Creates a transferable for dragging using the given selected row objects.
@param items the selected row objects
@return the transferable
Ghidra/Framework/Docking/src/main/java/docking/dnd/GTableDragProvider.java