Code Monkey home page Code Monkey logo

moderndocking's People

Contributors

andrewauclair avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

moderndocking's Issues

Docking Strategy API

Come up with some API for determining the appropriate docking position. Like some other libraries, there should be a simple dock or show function that just takes the dockable. Unlike those other libraries, I'd like this one to have some logic to where it shows the dockable.

Exception While Floating Frame

java.lang.Error: Source component not connected to component tree hierarchy
at java.desktop/javax.swing.SwingUtilities.convertPoint(SwingUtilities.java:194)
at ModernDocking.floating.DockingOverlay.update(DockingOverlay.java:137)
at ModernDocking.floating.DockingUtilsFrame.update(DockingUtilsFrame.java:90)
at ModernDocking.floating.FloatListener.lambda$mouseDragged$4(FloatListener.java:185)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Add Checks For Null

An exception is thrown if tabText() returns null. This isn't allowed (the function should always return a valid string) so we should have a specific exception that points it out.

Save Selected Tab in Tabbed Pane

Currently we just have the last tab selected when restoring a layout. I'd like to remember which tab was selected and reselect that tab.

Build All-In-One Demo

Build a single demo that you can run and then launch the examples from that. Much like flexdock.

NullPointerException Should be Something Clearer

java.lang.NullPointerException: Cannot invoke "ModernDocking.internal.DockingPanel.dock(ModernDocking.Dockable, ModernDocking.DockingRegion, double)" because the return value of "ModernDocking.internal.DockableWrapper.getParent()" is null
at ModernDocking.Docking.dock(Docking.java:214)
at ModernDocking.Docking.dock(Docking.java:209)

Can't Build Layout

java.lang.NullPointerException: Cannot invoke "ModernDocking.layouts.DockingLayoutNode.replaceChild(ModernDocking.layouts.DockingLayoutNode, ModernDocking.layouts.DockingLayoutNode)" because "this.parent" is null
at ModernDocking.layouts.DockingSimplePanelNode.dock(DockingSimplePanelNode.java:64)
at ModernDocking.layouts.DockingLayoutBuilder.dock(DockingLayoutBuilder.java:44)

Not All Dock Functions Call onDocking

I added a callback onDocking to let the Dockable know that it's being docked which lets it override the docking and pick a better dock location if it wants. If you call display, that will in turn call dock(Dockable source, Dockable target, DockingRegion region, double dividerProportion) which does not call onDocking.

Publish docking-ui

Currently the docking-ui extension (using FlatLaf) isn't published and can't be used.

Could Set Tab Text in Flexdock

Currently using Flexdock and in a roundabout way we could change the tab text. Modern Docking doesn't allow the tab text to change. The dockable has to be undocked and docked.

Experiment with a Docking method that would do this. Probably ok if it just did a restore of the current layout. That might be enough to trigger it to redraw.

Allow App to Create New Floating Frames

Currently Modern Docking creates an empty JFrame with a RootDockingPanel when floating panels. It would be useful to allow the app to access and modify this JFrame. I'm thinking specifically to add a JMenuBar with options to it. But this could be extended to status bars and other non-root panels.

Auto Persist Breaks With Missing Panels

Auto persist does not handle panels that don't exist gracefully. I created panels dynamically at runtime and then didn't persist them. When the auto persist tried to load them from a layout file the next time I ran the app, it failed to restore. After this it was impossible to persist the layout because the auto persist was not running.

The auto persist should be reworked to better handle missing panels somehow. Either skip them or dock some fake failed panel and undock all the failed panels after loading.

A more user friendly way to integrate it into the app would be nice too.

Root Docking Splitter Size

The root docking split size is 25% now when the user docks. However, it appears that docking programmatically still performs the normal 50% docking for the root.

Missing Docking.display Function?

I don't see an equivalent to flexdock DockingManager.display right now. Unless I'm just not remembering what I did to replace it.

Close Button Remains Highlighted

Not sure if this is an issue with my setup or the framework. When I close a dockable using the X close button it changes the color of the button (as expected, I have a non-default background color for the titlebar). When the dockable is redisplayed again, the button is still highlighted.

Recommendations for compatibility with other APIs

Hello,
First I want to say thank you for building this great library.

I have a couple recommendations that would make the library much simpler to integrate into applications.

First, it would be great to have no-arg constructors, this would make using the components with UI building tools like JFormDesigner much simpler.

Second, having the properties in the components compatible with JSR 295 like other Swing components would a huge improvement as it adds support for using property bindings like JDesktop's beansbindings.

I recognize that this would be a large change in the API to implements.

Thank you,
Trevor

Allow Custom Persistence per Dockable

I would like to persist custom information per dockable (information about which columns are displayed in a JTable). This should be either functions right on the Dockable interface or another interface that can be used to register a handler.

Drag and Drop of Dockables Not Working on Linux

The current method of using mouse motion listeners and using mouseMoved as the indicator that the dockable was dropped does not work on linux. I think it needs to be rewritten to use the Drag n' Drop Swing API.

Default Docking Locations

Still need some sort of defaults. Had a panel dock on the top that should really default to south.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.