-
Notifications
You must be signed in to change notification settings - Fork 22
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Floating has been reworked to use JPanels (DockedSimplePanel and DockedTabbedPanel) instead of the dockables directly. This allows the user to float individual dockables or an entire tabbed panel of dockables. In theory this opens up the possibility of floating other types of panels. But there are no plans right now.
- Loading branch information
1 parent
ef2050d
commit 8bfaae8
Showing
10 changed files
with
364 additions
and
119 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
package ModernDocking.floating; | ||
|
||
import ModernDocking.api.DockingAPI; | ||
import ModernDocking.api.RootDockingPanelAPI; | ||
import ModernDocking.internal.DockingPanel; | ||
|
||
import javax.swing.*; | ||
import java.awt.*; | ||
import java.awt.datatransfer.StringSelection; | ||
import java.awt.datatransfer.Transferable; | ||
import java.awt.dnd.*; | ||
import java.util.HashMap; | ||
import java.util.Map; | ||
|
||
public class DragListener extends DragSourceAdapter implements DragSourceListener, DragSourceMotionListener { | ||
private final DragSource dragSource = new DragSource(); | ||
private final Transferable transferable = new StringSelection(""); | ||
|
||
private DockingUtilsFrame activeUtilsFrame = null; | ||
private static final Map<Window, DockingUtilsFrame> utilFrames = new HashMap<>(); | ||
|
||
public static void registerDockingWindow(DockingAPI docking, Window window, RootDockingPanelAPI root) { | ||
utilFrames.put(window, new DockingUtilsFrame(docking, window, root)); | ||
} | ||
|
||
public static void deregisterDockingWindow(Window window) { | ||
utilFrames.remove(window); | ||
} | ||
|
||
public DragListener(DockingAPI docking, Component dragSource, DockingPanel panel) { | ||
this.dragSource.addDragSourceMotionListener(DragListener.this); | ||
|
||
this.dragSource.createDefaultDragGestureRecognizer(dragSource, DnDConstants.ACTION_MOVE, dge -> { | ||
this.dragSource.startDrag(dge, Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR), transferable, DragListener.this); | ||
|
||
// docking.undock(panel); | ||
|
||
// activeUtilsFrame = new DockingUtilsFrame(); | ||
// mouseDragStarted(dge.getDragOrigin()); | ||
// | ||
// if (originalWindow instanceof JDialog) { | ||
// modalityType = ((JDialog) originalWindow).getModalityType(); | ||
// | ||
// ((JDialog) originalWindow).setModalityType(Dialog.ModalityType.MODELESS); | ||
// | ||
// // Set all of these as invokeLater to force the order they happen in | ||
// SwingUtilities.invokeLater(() -> { | ||
// // check that the floating frame still exists since we invoked later and time might have passed | ||
// if (floatingFrame != null) { | ||
// floatingFrame.toFront(); | ||
// } | ||
// }); | ||
// SwingUtilities.invokeLater(() -> { | ||
// // check that the utils frame still exists since we invoked later and time might have passed | ||
// if (activeUtilsFrame != null) { | ||
// activeUtilsFrame.toFront(); | ||
// } | ||
// }); | ||
// } | ||
}); | ||
} | ||
} |
Oops, something went wrong.