You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@netbeans.apache.org by Graeme Ingleby <gr...@ingleby.net> on 2019/06/06 21:08:51 UTC
Enhanced WindowManager
I have an Apache NetBeans fork where I’ve been working on some modifications to the WindowManager. The most notable is the ability to split TopComponents in floating windows like you can the main window (including sliding modes).
I find the NB IDE very usable as-is but I really want/need this functionality for my custom NB platform applications.
There are various other modifications that I feel make the window manager a little more consistent - for example currently dragging a java file editor out of the editor region creates a frame based floating window but moving the same editor into the output mode and then to the desktop creates a dialog based window. This is because NB currently determines if a TopComponent should be treated as an editor or a view based on the Mode and not the TopComponent.
There are some tab icon tweaks, improved z-order handling fixes to correctly identify a drop location, etc. All changes are documented in the fork read-me.
I’ve hopefully made these changes in a backward compatible manner. I’ve got things fairly stable now and use these modifications in my IDE daily. I’m aware the NetBeans window system can be used in many different ways and there are many plugins available - so I need help making sure the changes are compatible.
I would really appreciate if other developers could try my fork and report any issues, potential performance problems, etc. I’d love to be able to submit a pull request but could really use a little help from the community first.
Apache NetBeans fork:
https://github.com/GIngleby16/netbeans
Clone, build and run as you would the regular repo.
Thanks
Graeme Ingleby
Re: Enhanced WindowManager
Posted by Graeme Ingleby <gr...@ingleby.net>.
Thanks for your feedback it is greatly appreciated. I did make some improvements last night around creating and destroying floating windows be sure to pull the latest update. It fixed an issue I was encountering when invoking reset windows (main window never became visible again). I've never used the full-screen feature but will take a look at that. I'm learning a lot about the current window system as I go.
The icon issue you are experiencing could be corrected using the EditorSelector API rather than the IconSelector API. The IconSelector API determines if the icon should be displayed (used by both the editor and view based tab controls). The Editor API is used to determine which TopComponents should be considered "Editors". The default IconSelector behavior is to paint icons for "Editors". If you supply an EditorSelector implementation that returns true for your custom editors the icons should appear. Correctly identifying which TopComponents are editors would also allow you to change the default floating window type.
My default implementation creates floating windows that inherit from JDialog they stay above the main window and minimize when the main window is minimized but as you have noted they are not maximizable (at least on windows, they are on OSX). This behavior is easily changed though. My readme needs updating but you can pass -Dnetbeans.winsys.enhanced.nbwindow-both=true to change that default behavior to create a JFrame based window for Editors and a JDialog based window for views (this is what NB currently does although editor/view are determined by mode position not TopComponent type).
You could provide your own NbWindowSelector implementation to replace the default one that makes all floating windows frames.
JFrame windows behave a little differently - they can be moved below the main-frame and they stay open when the main-window is minimized, they get their own icon on the taskbar, etc. I did try using JNA to add a maximize button to JDialog (on windows) for some reason when I maximized the dialog NB crashed. I've used this native approach before in non NB Java apps. I'm not sure if the crash was specific to a more recent Java version. It would be awesome if I could get that working (Eclipse seems to create maximizable dialogs - via SWT for additional windows).
Thanks again for helping!
-Graeme
On 6/7/19, 11:25 PM, "Eirik Bakke" <eb...@ultorg.com> wrote:
Great work, Graeme!
I tested the patched IDE, and also tested my my NetBeans Platform application against your patch (with -J-Dnetbeans.winsys.enhanced=true). I'm on Windows 10.
Some things I tested, where I didn't find any issues:
* Make a floating window and add some tabs in the various new available modes. Seems to work--great!
* My NetBeans Platform app disables the status bar. This did not seem to cause trouble, even when a text file editor was open both in the main window and in a floating window.
* My NetBeans Platform app uses an "editor" component which is not really a text editor. Thus the new icon logic doesn't work. But I see you have a special IconSelector API for this, so you already thought of that...
* Pressing Ctrl+1 from a floating window correctly selects the Projects pane in another window.
Some issues I bumped into:
* Floating windows no longer seem to be maximizable? With floating windows becoming more powerful, I'd imagine the first thing one would do would be to maximize the floating window to cover an entire secondary monitor.
* Enter full screen mode with a floating window open. After exiting full screen mode, I was unable to find the floating window again (though not every time). I tried invoking "Reset Windows", but then crashed NetBeans completely [1].
Some related issues that are probably not due to the patch:
* Dragging a tab to configure modes works badly on my HiDPI screen (which I use in a multi-monitor setup with one regular screen). But that's the case with unpatched NetBeans as well.
I'll continue running my NetBeans app with the patch enabled for the next few days!
-- Eirik
[1] Stack trace:
java.awt.IllegalComponentStateException: Native resources unavailable
at java.desktop/sun.awt.windows.WWindowPeer.getScreenImOn(Native Method)
at java.desktop/sun.awt.windows.WWindowPeer.updateGC(WWindowPeer.java:509)
at java.desktop/sun.awt.windows.WWindowPeer.show(WWindowPeer.java:263)
at java.desktop/sun.awt.windows.WComponentPeer.setVisible(WComponentPeer.java:123)
at java.desktop/java.awt.Dialog.conditionalShow(Dialog.java:938)
at java.desktop/java.awt.Dialog.show(Dialog.java:1037)
at java.desktop/java.awt.Component.show(Component.java:1669)
at java.desktop/java.awt.Component.setVisible(Component.java:1616)
at java.desktop/java.awt.Window.setVisible(Window.java:1017)
at java.desktop/java.awt.Dialog.setVisible(Dialog.java:1005)
at org.netbeans.core.windows.view.ViewHierarchy.setSplitRootIntoDesktop(ViewHierarchy.java:754)
at org.netbeans.core.windows.view.ViewHierarchy.updateViewHierarchy(ViewHierarchy.java:209)
at org.netbeans.core.windows.view.DefaultView.changeGUI(DefaultView.java:145)
at org.netbeans.core.windows.ViewRequestor.dispatchRequest(ViewRequestor.java:255)
at org.netbeans.core.windows.ViewRequestor.processRequest(ViewRequestor.java:231)
at org.netbeans.core.windows.ViewRequestor.postRequest(ViewRequestor.java:169)
at org.netbeans.core.windows.ViewRequestor.scheduleRequest(ViewRequestor.java:107)
at org.netbeans.core.windows.Central.addModeOpenedTopComponent(Central.java:782)
at org.netbeans.core.windows.ModeImpl.addOpenedTopComponent(ModeImpl.java:329)
at org.netbeans.core.windows.WindowManagerImpl.deselectEditorTopComponents(WindowManagerImpl.java:1852)
at org.netbeans.core.windows.actions.ResetWindowsAction.actionPerformed(ResetWindowsAction.java:107)
at org.openide.awt.AlwaysEnabledAction$1.run(AlwaysEnabledAction.java:174)
at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:70)
at org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:91)
at org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:74)
at org.openide.awt.AlwaysEnabledAction.actionPerformed(AlwaysEnabledAction.java:177)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:369)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:980)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1024)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6578)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3343)
at java.desktop/java.awt.Component.processEvent(Component.java:6343)
at java.desktop/java.awt.Container.processEvent(Container.java:2260)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4961)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2318)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4793)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4912)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2304)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2758)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4793)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:766)
at java.desktop/java.awt.EventQueue.access$500(EventQueue.java:97)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:717)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:711)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:89)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:99)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:739)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:737)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:89)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:736)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
[catch] at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:199)
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)
-----Original Message-----
From: Tushar Joshi <tu...@gmail.com>
Sent: Thursday, June 6, 2019 11:08 PM
To: dev <de...@netbeans.apache.org>
Subject: Re: Enhanced WindowManager
Thanks for this work Graeme!
I will take a look into this Fork this coming weekend and will let you know my observations
with regards
Tushar
Tushar Joshi, Nagpur: http://www.tusharjoshi.com
* MCSD_NET C#, SCJP, RHCE, ZCE, PMP, CSM, SAFe, PRINCE2
* Senior Architect @ Persistent Systems http://www.persistent.com
* LinkedIn: http://www.linkedin.com/in/tusharvjoshi
On Fri, Jun 7, 2019 at 2:47 AM Geertjan Wielenga <ge...@apache.org>
wrote:
> Simply awesome. :-)
>
> Gj
>
> On Thu, Jun 6, 2019 at 11:09 PM Graeme Ingleby <gr...@ingleby.net> wrote:
>
> > I have an Apache NetBeans fork where I’ve been working on some
> > modifications to the WindowManager. The most notable is the ability
> > to split TopComponents in floating windows like you can the main
> > window (including sliding modes).
> >
> > I find the NB IDE very usable as-is but I really want/need this
> > functionality for my custom NB platform applications.
> >
> > There are various other modifications that I feel make the window
> > manager a little more consistent - for example currently dragging a
> > java file editor out of the editor region creates a frame based
> > floating window but moving the same editor into the output mode and
> > then to the desktop
> creates
> > a dialog based window. This is because NB currently determines if a
> > TopComponent should be treated as an editor or a view based on the
> > Mode
> and
> > not the TopComponent.
> >
> > There are some tab icon tweaks, improved z-order handling fixes to
> > correctly identify a drop location, etc. All changes are documented
> > in
> the
> > fork read-me.
> >
> > I’ve hopefully made these changes in a backward compatible manner.
> > I’ve got things fairly stable now and use these modifications in my IDE daily.
> > I’m aware the NetBeans window system can be used in many different
> > ways
> and
> > there are many plugins available - so I need help making sure the
> > changes are compatible.
> >
> > I would really appreciate if other developers could try my fork and
> report
> > any issues, potential performance problems, etc. I’d love to be able to
> > submit a pull request but could really use a little help from the
> community
> > first.
> >
> > Apache NetBeans fork:
> >
> > https://github.com/GIngleby16/netbeans
> >
> > Clone, build and run as you would the regular repo.
> >
> > Thanks
> >
> > Graeme Ingleby
> >
> >
> >
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@netbeans.apache.org
For additional commands, e-mail: dev-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
RE: Enhanced WindowManager
Posted by Eirik Bakke <eb...@ultorg.com>.
Great work, Graeme!
I tested the patched IDE, and also tested my my NetBeans Platform application against your patch (with -J-Dnetbeans.winsys.enhanced=true). I'm on Windows 10.
Some things I tested, where I didn't find any issues:
* Make a floating window and add some tabs in the various new available modes. Seems to work--great!
* My NetBeans Platform app disables the status bar. This did not seem to cause trouble, even when a text file editor was open both in the main window and in a floating window.
* My NetBeans Platform app uses an "editor" component which is not really a text editor. Thus the new icon logic doesn't work. But I see you have a special IconSelector API for this, so you already thought of that...
* Pressing Ctrl+1 from a floating window correctly selects the Projects pane in another window.
Some issues I bumped into:
* Floating windows no longer seem to be maximizable? With floating windows becoming more powerful, I'd imagine the first thing one would do would be to maximize the floating window to cover an entire secondary monitor.
* Enter full screen mode with a floating window open. After exiting full screen mode, I was unable to find the floating window again (though not every time). I tried invoking "Reset Windows", but then crashed NetBeans completely [1].
Some related issues that are probably not due to the patch:
* Dragging a tab to configure modes works badly on my HiDPI screen (which I use in a multi-monitor setup with one regular screen). But that's the case with unpatched NetBeans as well.
I'll continue running my NetBeans app with the patch enabled for the next few days!
-- Eirik
[1] Stack trace:
java.awt.IllegalComponentStateException: Native resources unavailable
at java.desktop/sun.awt.windows.WWindowPeer.getScreenImOn(Native Method)
at java.desktop/sun.awt.windows.WWindowPeer.updateGC(WWindowPeer.java:509)
at java.desktop/sun.awt.windows.WWindowPeer.show(WWindowPeer.java:263)
at java.desktop/sun.awt.windows.WComponentPeer.setVisible(WComponentPeer.java:123)
at java.desktop/java.awt.Dialog.conditionalShow(Dialog.java:938)
at java.desktop/java.awt.Dialog.show(Dialog.java:1037)
at java.desktop/java.awt.Component.show(Component.java:1669)
at java.desktop/java.awt.Component.setVisible(Component.java:1616)
at java.desktop/java.awt.Window.setVisible(Window.java:1017)
at java.desktop/java.awt.Dialog.setVisible(Dialog.java:1005)
at org.netbeans.core.windows.view.ViewHierarchy.setSplitRootIntoDesktop(ViewHierarchy.java:754)
at org.netbeans.core.windows.view.ViewHierarchy.updateViewHierarchy(ViewHierarchy.java:209)
at org.netbeans.core.windows.view.DefaultView.changeGUI(DefaultView.java:145)
at org.netbeans.core.windows.ViewRequestor.dispatchRequest(ViewRequestor.java:255)
at org.netbeans.core.windows.ViewRequestor.processRequest(ViewRequestor.java:231)
at org.netbeans.core.windows.ViewRequestor.postRequest(ViewRequestor.java:169)
at org.netbeans.core.windows.ViewRequestor.scheduleRequest(ViewRequestor.java:107)
at org.netbeans.core.windows.Central.addModeOpenedTopComponent(Central.java:782)
at org.netbeans.core.windows.ModeImpl.addOpenedTopComponent(ModeImpl.java:329)
at org.netbeans.core.windows.WindowManagerImpl.deselectEditorTopComponents(WindowManagerImpl.java:1852)
at org.netbeans.core.windows.actions.ResetWindowsAction.actionPerformed(ResetWindowsAction.java:107)
at org.openide.awt.AlwaysEnabledAction$1.run(AlwaysEnabledAction.java:174)
at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:70)
at org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:91)
at org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:74)
at org.openide.awt.AlwaysEnabledAction.actionPerformed(AlwaysEnabledAction.java:177)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:369)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:980)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1024)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6578)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3343)
at java.desktop/java.awt.Component.processEvent(Component.java:6343)
at java.desktop/java.awt.Container.processEvent(Container.java:2260)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4961)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2318)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4793)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4912)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2304)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2758)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4793)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:766)
at java.desktop/java.awt.EventQueue.access$500(EventQueue.java:97)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:717)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:711)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:89)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:99)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:739)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:737)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:89)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:736)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
[catch] at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:199)
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)
-----Original Message-----
From: Tushar Joshi <tu...@gmail.com>
Sent: Thursday, June 6, 2019 11:08 PM
To: dev <de...@netbeans.apache.org>
Subject: Re: Enhanced WindowManager
Thanks for this work Graeme!
I will take a look into this Fork this coming weekend and will let you know my observations
with regards
Tushar
Tushar Joshi, Nagpur: http://www.tusharjoshi.com
* MCSD_NET C#, SCJP, RHCE, ZCE, PMP, CSM, SAFe, PRINCE2
* Senior Architect @ Persistent Systems http://www.persistent.com
* LinkedIn: http://www.linkedin.com/in/tusharvjoshi
On Fri, Jun 7, 2019 at 2:47 AM Geertjan Wielenga <ge...@apache.org>
wrote:
> Simply awesome. :-)
>
> Gj
>
> On Thu, Jun 6, 2019 at 11:09 PM Graeme Ingleby <gr...@ingleby.net> wrote:
>
> > I have an Apache NetBeans fork where I’ve been working on some
> > modifications to the WindowManager. The most notable is the ability
> > to split TopComponents in floating windows like you can the main
> > window (including sliding modes).
> >
> > I find the NB IDE very usable as-is but I really want/need this
> > functionality for my custom NB platform applications.
> >
> > There are various other modifications that I feel make the window
> > manager a little more consistent - for example currently dragging a
> > java file editor out of the editor region creates a frame based
> > floating window but moving the same editor into the output mode and
> > then to the desktop
> creates
> > a dialog based window. This is because NB currently determines if a
> > TopComponent should be treated as an editor or a view based on the
> > Mode
> and
> > not the TopComponent.
> >
> > There are some tab icon tweaks, improved z-order handling fixes to
> > correctly identify a drop location, etc. All changes are documented
> > in
> the
> > fork read-me.
> >
> > I’ve hopefully made these changes in a backward compatible manner.
> > I’ve got things fairly stable now and use these modifications in my IDE daily.
> > I’m aware the NetBeans window system can be used in many different
> > ways
> and
> > there are many plugins available - so I need help making sure the
> > changes are compatible.
> >
> > I would really appreciate if other developers could try my fork and
> report
> > any issues, potential performance problems, etc. I’d love to be able to
> > submit a pull request but could really use a little help from the
> community
> > first.
> >
> > Apache NetBeans fork:
> >
> > https://github.com/GIngleby16/netbeans
> >
> > Clone, build and run as you would the regular repo.
> >
> > Thanks
> >
> > Graeme Ingleby
> >
> >
> >
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@netbeans.apache.org
For additional commands, e-mail: dev-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
Re: Enhanced WindowManager
Posted by Tushar Joshi <tu...@gmail.com>.
Thanks for this work Graeme!
I will take a look into this Fork this coming weekend and will let you know
my observations
with regards
Tushar
Tushar Joshi, Nagpur: http://www.tusharjoshi.com
* MCSD_NET C#, SCJP, RHCE, ZCE, PMP, CSM, SAFe, PRINCE2
* Senior Architect @ Persistent Systems http://www.persistent.com
* LinkedIn: http://www.linkedin.com/in/tusharvjoshi
On Fri, Jun 7, 2019 at 2:47 AM Geertjan Wielenga <ge...@apache.org>
wrote:
> Simply awesome. :-)
>
> Gj
>
> On Thu, Jun 6, 2019 at 11:09 PM Graeme Ingleby <gr...@ingleby.net> wrote:
>
> > I have an Apache NetBeans fork where I’ve been working on some
> > modifications to the WindowManager. The most notable is the ability to
> > split TopComponents in floating windows like you can the main window
> > (including sliding modes).
> >
> > I find the NB IDE very usable as-is but I really want/need this
> > functionality for my custom NB platform applications.
> >
> > There are various other modifications that I feel make the window manager
> > a little more consistent - for example currently dragging a java file
> > editor out of the editor region creates a frame based floating window but
> > moving the same editor into the output mode and then to the desktop
> creates
> > a dialog based window. This is because NB currently determines if a
> > TopComponent should be treated as an editor or a view based on the Mode
> and
> > not the TopComponent.
> >
> > There are some tab icon tweaks, improved z-order handling fixes to
> > correctly identify a drop location, etc. All changes are documented in
> the
> > fork read-me.
> >
> > I’ve hopefully made these changes in a backward compatible manner. I’ve
> > got things fairly stable now and use these modifications in my IDE daily.
> > I’m aware the NetBeans window system can be used in many different ways
> and
> > there are many plugins available - so I need help making sure the changes
> > are compatible.
> >
> > I would really appreciate if other developers could try my fork and
> report
> > any issues, potential performance problems, etc. I’d love to be able to
> > submit a pull request but could really use a little help from the
> community
> > first.
> >
> > Apache NetBeans fork:
> >
> > https://github.com/GIngleby16/netbeans
> >
> > Clone, build and run as you would the regular repo.
> >
> > Thanks
> >
> > Graeme Ingleby
> >
> >
> >
>
Re: Enhanced WindowManager
Posted by Geertjan Wielenga <ge...@apache.org>.
Simply awesome. :-)
Gj
On Thu, Jun 6, 2019 at 11:09 PM Graeme Ingleby <gr...@ingleby.net> wrote:
> I have an Apache NetBeans fork where I’ve been working on some
> modifications to the WindowManager. The most notable is the ability to
> split TopComponents in floating windows like you can the main window
> (including sliding modes).
>
> I find the NB IDE very usable as-is but I really want/need this
> functionality for my custom NB platform applications.
>
> There are various other modifications that I feel make the window manager
> a little more consistent - for example currently dragging a java file
> editor out of the editor region creates a frame based floating window but
> moving the same editor into the output mode and then to the desktop creates
> a dialog based window. This is because NB currently determines if a
> TopComponent should be treated as an editor or a view based on the Mode and
> not the TopComponent.
>
> There are some tab icon tweaks, improved z-order handling fixes to
> correctly identify a drop location, etc. All changes are documented in the
> fork read-me.
>
> I’ve hopefully made these changes in a backward compatible manner. I’ve
> got things fairly stable now and use these modifications in my IDE daily.
> I’m aware the NetBeans window system can be used in many different ways and
> there are many plugins available - so I need help making sure the changes
> are compatible.
>
> I would really appreciate if other developers could try my fork and report
> any issues, potential performance problems, etc. I’d love to be able to
> submit a pull request but could really use a little help from the community
> first.
>
> Apache NetBeans fork:
>
> https://github.com/GIngleby16/netbeans
>
> Clone, build and run as you would the regular repo.
>
> Thanks
>
> Graeme Ingleby
>
>
>