package net.sourceforge.squirrel_sql.client.gui.builders.dndtabbedpane; import javax.swing.*; import java.awt.datatransfer.Transferable; import java.awt.dnd.*; public class DnDTabbedPane extends JTabbedPane { private final GhostGlassPane _glassPane; private DnDTabbedPaneData _dnDTabbedPaneData; public DnDTabbedPane() { this(null); } public DnDTabbedPane(OutwardDndTabbedPaneChanel outwardDndTabbedPaneChanel) { _dnDTabbedPaneData = new DnDTabbedPaneData(this); _glassPane = new GhostGlassPane(_dnDTabbedPaneData); DragSourceListener dsl = new DndTabbedPaneDragSourceListener(_glassPane, _dnDTabbedPaneData, outwardDndTabbedPaneChanel); Transferable t = new DndTabbedPaneTransferable(_dnDTabbedPaneData); DragGestureListener dgl = new DndTabbedPaneDragGestureListener(t, dsl, _dnDTabbedPaneData, _glassPane); new DropTarget(_glassPane, DnDConstants.ACTION_COPY_OR_MOVE, new DndTabbedPaneDropTargetListener(_dnDTabbedPaneData, _glassPane, outwardDndTabbedPaneChanel), true); if (null != outwardDndTabbedPaneChanel) { new DropTarget(this, DnDConstants.ACTION_COPY_OR_MOVE, new OutwardDndTabbedPaneDropTargetListener(_dnDTabbedPaneData, _glassPane, outwardDndTabbedPaneChanel), true); } new DragSource().createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_COPY_OR_MOVE, dgl); } public void setPaintGhost(boolean flag) { _dnDTabbedPaneData.setHasGhost(flag); } public void setPaintScrollArea(boolean flag) { _dnDTabbedPaneData.setPaintScrollArea(flag); } }