public void mouseDragged(MouseEvent evt)
    {
        Point p = evt.getPoint();

        mousePoint = p;

        int xOffset = 0;

        for (int i=0; i<slotList.size(); ++i)
        {
            Slot slot = slotList.get(i);
            if (slot.isSelected())
                slot.setDragged(true);
        }

        for (int i=0; i<slotList.size(); ++i)
        {
            Slot draggedSlot = slotList.get(i);
            if (draggedSlot.isDragged() && draggedSlot.getDragImage() != null)
            {
                xOffset += draggedSlot.getRect().width;
                int imgCentreX = p.x + draggedSlot.getDragImage().getWidth() + xOffset;

                for (int j=0; j<slotList.size(); ++j)
                {
                    Slot slot = slotList.get(j);
                    int slotCentreX = slot.getRect().x + slot.getRect().width;
                    if (imgCentreX > slotCentreX)
                    {
                        if (imgCentreX < slotCentreX + slot.getRect().width)
                        {
                            insertBeforeSlotIndex = j;                           
                        }                        
                        else
                        {
                            insertBeforeSlotIndex = j+1;
                        }                         
                    }
                }
            }
        }

        repaint();

    }