This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
To implement support for debugger/temporary editor window (#35586), I need a WinSys function that would allow me to swap to TopComponents without rearranging tabs. The function should work as follows: replaceTopComponent(TopComponent old, TopComponent nw) { assert old.isOpened(); assert !nw.isOpened(); old.close(); nw.open(); ensureThatNwIsAtTheSameLocation(); }
It might be more powerful to support openAt(index) and getIndex() instead. It would allow implementing replacement and also some kind of "open-next-to-current" behavior proposed by Jesse at issue 94607
Will try for M9.
Needed also for Save As.
Sending to fast track API review. I will attach diff of carefully implemented solution with tests, api changes, everything. New API is two added methods in TopComponent: openAtPosition and getPosition. Guys, please review and comment. The biggest issue is probably that addition to TopComponent may be incompatible for unlucky modules, so the question is if we should put these methods to WindowManager instead of TopComponent.
Created attachment 40210 [details] patch diff of winsys API
Created attachment 40212 [details] patch diff of winsys implementation (core/windows)
just a suggestion - i'd use getTabPosition() and openAtTabPosition() method names instead
I thought about that too, thanks, agreed.
Thanks guys for review, I updated the names according to Standa's suggestion. Implemented in main trunk: Checking in openide/windows/src/org/openide/windows/WindowManager.java; /cvs/openide/windows/src/org/openide/windows/WindowManager.java,v <-- WindowManager.java new revision: 1.16; previous revision: 1.15 done Checking in openide/windows/src/org/openide/windows/TopComponent.java; /cvs/openide/windows/src/org/openide/windows/TopComponent.java,v <-- TopComponent.java new revision: 1.21; previous revision: 1.20 done Checking in openide/windows/src/org/openide/windows/DummyWindowManager.java; /cvs/openide/windows/src/org/openide/windows/DummyWindowManager.java,v <-- DummyWindowManager.java new revision: 1.8; previous revision: 1.7 done Checking in core/windows/src/org/netbeans/core/windows/model/TopComponentSubModel.java; /cvs/core/windows/src/org/netbeans/core/windows/model/TopComponentSubModel.java,v <-- TopComponentSubModel.java new revision: 1.16; previous revision: 1.15 done Checking in core/windows/src/org/netbeans/core/windows/model/Model.java; /cvs/core/windows/src/org/netbeans/core/windows/model/Model.java,v <-- Model.java new revision: 1.19; previous revision: 1.18 done Checking in core/windows/src/org/netbeans/core/windows/model/DefaultModel.java; /cvs/core/windows/src/org/netbeans/core/windows/model/DefaultModel.java,v <-- DefaultModel.java new revision: 1.25; previous revision: 1.24 done Checking in core/windows/src/org/netbeans/core/windows/model/DefaultModeModel.java; /cvs/core/windows/src/org/netbeans/core/windows/model/DefaultModeModel.java,v <-- DefaultModeModel.java new revision: 1.13; previous revision: 1.12 done Checking in core/windows/src/org/netbeans/core/windows/model/ModeModel.java; /cvs/core/windows/src/org/netbeans/core/windows/model/ModeModel.java,v <-- ModeModel.java new revision: 1.12; previous revision: 1.11 done Checking in core/windows/src/org/netbeans/core/windows/Central.java; /cvs/core/windows/src/org/netbeans/core/windows/Central.java,v <-- Central.java new revision: 1.54; previous revision: 1.53 done Checking in core/windows/src/org/netbeans/core/windows/ModeImpl.java; /cvs/core/windows/src/org/netbeans/core/windows/ModeImpl.java,v <-- ModeImpl.java new revision: 1.27; previous revision: 1.26 done Checking in core/windows/src/org/netbeans/core/windows/WindowManagerImpl.java; /cvs/core/windows/src/org/netbeans/core/windows/WindowManagerImpl.java,v <-- WindowManagerImpl.java new revision: 1.60; previous revision: 1.59 done RCS file: /cvs/core/windows/test/unit/src/org/netbeans/core/windows/OpenAtTabPositionTest.java,v done Checking in core/windows/test/unit/src/org/netbeans/core/windows/OpenAtTabPositionTest.java; /cvs/core/windows/test/unit/src/org/netbeans/core/windows/OpenAtTabPositionTest.java,v <-- OpenAtTabPositionTest.java initial revision: 1.1 done Checking in openide/windows/apichanges.xml; /cvs/openide/windows/apichanges.xml,v <-- apichanges.xml new revision: 1.15; previous revision: 1.14 done Checking in openide/windows/manifest.mf; /cvs/openide/windows/manifest.mf,v <-- manifest.mf new revision: 1.15; previous revision: 1.14 done Checking in core/windows/nbproject/project.xml; /cvs/core/windows/nbproject/project.xml,v <-- project.xml new revision: 1.23; previous revision: 1.22 done
Are there plans to use this for Alt-G, for example?
Certainly not this API directly, better doable through issue 94607 (which needs to be updated to use this new API).
Works great for me, I started using the API from openide/text, #94607.