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
>
>
>