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 <tusharvjo...@gmail.com> 
Sent: Thursday, June 6, 2019 11:08 PM
To: dev <dev@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 <geert...@apache.org>
wrote:

> Simply awesome. :-)
>
> Gj
>
> On Thu, Jun 6, 2019 at 11:09 PM Graeme Ingleby <gra...@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-unsubscr...@netbeans.apache.org
For additional commands, e-mail: dev-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists



Reply via email to