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 get better perception on startup it would be good to move project loading from module install phase after window system loading. It means start the IDE with faster module installation then load window system and show it and finally load projects. Few notes: - all parts of IDE that queries projects at the startup can be affected - winsys deserialization is ugly and when top components are created they frequently access associated DataObject/Node and look for their project to get information like file built status, sharability (inside versioning asked to annotate TC's name) and so on. - WindowManagaer.invokeWhenUIReady is not the best - it is called from EDT when we want to do a lot of work and show modal dialog with progress. Another problem is that it is hard to guarantee that we will plug as first task. Yet another small one - main window is not painted when callbacks are executed. I did some prototype that: - calls OpenProjectList.open at the end of startup - on IDE shutdown always stores editor components to private.xml and modified winsys to skip persisting of these. This has significant drawbacks: - too many events from project opening (it is unusable for NB sources now) - order of editor tabs, focused editor, cursor positions are not preserved. maybe some hacks are needed to lazily init these editors.
Created attachment 44404 [details] first draft that is very slow on project opening
Agreed this would be very desirable. Moving editor persistence to the projectui module would not be a transparent change. For example, split editor windows would not be restored on startup, I think. In general I believe our window system tries to persist a lot more than is really necessary but I am not sure if others agree.
Mostly performance related. Passing to Petr N.
lazy_projects_108120 branch created for module projects, its base is lazy_projects_108120_root implementation similar to Radim's one is there. It just loads the projects outside from AWT thread and that is why it keeps main window responsive while loading. What is needed is to create some camouflage to show list of open projects at beginning. And then of course, measure the speed up.
Please see also issue 116891, which touched this topic as well.
Let's work on getting this done for 6.1M1.
Created attachment 54743 [details] Patch that I wish to integrate today
#108120: Opening main window first and only then executing OpenProjectHooks IDE:------------------------------------------------- IDE: [7.1.08 11:56] Committing started Checking in projectui/test/unit/src/org/netbeans/modules/project/ui/ProjectsRootNodeTest.java; /shared/data/ccvs/repository/projects/projectui/test/unit/src/org/netbeans/modules/project/ui/ProjectsRootNodeTest.java,v <-- ProjectsRootNodeTest.java new revision: 1.2; previous revision: 1.1 done Checking in projectui/test/unit/src/org/netbeans/modules/project/ui/OpenProjectsTrampolineImplTest.java; /shared/data/ccvs/repository/projects/projectui/test/unit/src/org/netbeans/modules/project/ui/OpenProjectsTrampolineImplTest.java,v <-- OpenProjectsTrampolineImplTest.java new revision: 1.8; previous revision: 1.7 done Checking in projectui/test/unit/src/org/netbeans/modules/project/ui/ProjectUtilitiesTest.java; /shared/data/ccvs/repository/projects/projectui/test/unit/src/org/netbeans/modules/project/ui/ProjectUtilitiesTest.java,v <-- ProjectUtilitiesTest.java new revision: 1.19; previous revision: 1.18 done Checking in projectui/test/unit/src/org/netbeans/modules/project/ui/ProjectsRootNodePreferredFromContextOpenTest.java; /shared/data/ccvs/repository/projects/projectui/test/unit/src/org/netbeans/modules/project/ui/ProjectsRootNodePreferredFromContextOpenTest.java,v <-- ProjectsRootNodePreferredFromContextOpenTest.java new revision: 1.2; previous revision: 1.1 done Checking in projectui/test/unit/src/org/netbeans/modules/project/ui/OpenProjectListTest.java; /shared/data/ccvs/repository/projects/projectui/test/unit/src/org/netbeans/modules/project/ui/OpenProjectListTest.java,v <-- OpenProjectListTest.java new revision: 1.15; previous revision: 1.14 done Checking in projectui/test/unit/src/org/netbeans/modules/project/ui/ProjectsRootNodePreferredOpenTest.java; /shared/data/ccvs/repository/projects/projectui/test/unit/src/org/netbeans/modules/project/ui/ProjectsRootNodePreferredOpenTest.java,v <-- ProjectsRootNodePreferredOpenTest.java new revision: 1.2; previous revision: 1.1 done Checking in projectui/src/org/netbeans/modules/project/ui/Bundle.properties; /shared/data/ccvs/repository/projects/projectui/src/org/netbeans/modules/project/ui/Bundle.properties,v <-- Bundle.properties new revision: 1.96; previous revision: 1.95 done Checking in projectui/src/org/netbeans/modules/project/ui/LazyProject.java; /shared/data/ccvs/repository/projects/projectui/src/org/netbeans/modules/project/ui/LazyProject.java,v <-- LazyProject.java new revision: 1.2; previous revision: 1.1 done Checking in projectui/src/org/netbeans/modules/project/ui/ProjectsRootNode.java; /shared/data/ccvs/repository/projects/projectui/src/org/netbeans/modules/project/ui/ProjectsRootNode.java,v <-- ProjectsRootNode.java new revision: 1.52; previous revision: 1.51 done Checking in projectui/src/org/netbeans/modules/project/ui/OpenProjectListSettings.java; /shared/data/ccvs/repository/projects/projectui/src/org/netbeans/modules/project/ui/OpenProjectListSettings.java,v <-- OpenProjectListSettings.java new revision: 1.32; previous revision: 1.31 done Checking in projectui/src/org/netbeans/modules/project/ui/OpenProjectList.java; /shared/data/ccvs/repository/projects/projectui/src/org/netbeans/modules/project/ui/OpenProjectList.java,v <-- OpenProjectList.java new revision: 1.76; previous revision: 1.75 done IDE: [7.1.08 11:56] Committing finished