Bug 506009 -  UI freezes reported in PackageFragment.getElementName

The Package Explorer View has two options which are very slow for large
package structures. Those are the hierarchical resp. flat representation
of packages.

This is the case, since the Java model structure does not match the
hierarchical structure presented in the view. The view computes the
package hierarchy on its own. The view does so by going over all
packages in a package root, for its every operation. This results in
e.g. refresh operations which are quadratic in the number of packages of
a project. For package numbers above 1000, refreshes can freeze the UI
for minutes.

With this change the PackageExplorerContentProvider computes the
hierarchical structure of packages once and caches it. The cache is
cleaned on every Java model change. This reduces the complexity of
operations that run on the view, including refreshing. The  UI freeze
duration is reduced to a few seconds, down from minutes.

Change-Id: Ib28aa66d5718a879491b9076f2d78c3c7e4e73b6
Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
4 files changed
tree: f75f3a58218940bf4ec350d3816932d9b5a7a11f
  1. org.eclipse.jdt.astview/
  2. org.eclipse.jdt.astview.feature/
  3. org.eclipse.jdt.core.manipulation/
  4. org.eclipse.jdt.jeview/
  5. org.eclipse.jdt.jeview.feature/
  6. org.eclipse.jdt.junit/
  7. org.eclipse.jdt.junit.core/
  8. org.eclipse.jdt.junit.runtime/
  9. org.eclipse.jdt.junit4.runtime/
  10. org.eclipse.jdt.junit5.runtime/
  11. org.eclipse.jdt.text.tests/
  12. org.eclipse.jdt.ui/
  13. org.eclipse.jdt.ui.examples.javafamily/
  14. org.eclipse.jdt.ui.examples.projects/
  15. org.eclipse.jdt.ui.tests/
  16. org.eclipse.jdt.ui.tests.refactoring/
  17. org.eclipse.ltk.core.refactoring/
  18. org.eclipse.ltk.core.refactoring.tests/
  19. org.eclipse.ltk.ui.refactoring/
  20. org.eclipse.ltk.ui.refactoring.tests/
  21. tests-pom/
  22. .gitignore
  23. pom.xml
  24. README.md
README.md

Contributing to JDT UI - Java development tools UI

Thanks for your interest in this project.

Project description:

The JDT UI implements the user interface for the Java IDE. This includes views like Package Explorer and JUnit, the Java and properties files editors, Java search, and refactorings. Website: http://www.eclipse.org/jdt/ui/

How to contribute:

Contributions to JDT UI are most welcome. There are many ways to contribute, from entering high quality bug reports, to contributing code or documentation changes. For a complete guide, see the [How to Contribute] 1 page on the team wiki.

Developer resources:

Information regarding source code management, builds, coding standards, and more.

Contributor License Agreement:

Before your contribution can be accepted by the project, you need to create and electronically sign the Eclipse Foundation Contributor License Agreement (CLA).

Forum:

Public forum for Eclipse JDT users.

Search for bugs:

This project uses Bugzilla to track ongoing development and issues.

Create a new bug:

Be sure to search for existing bugs before you create another one. Remember that contributions are always welcome!

Contact:

Contact the project developers via the project's “dev” list.

License

Eclipse Public License (EPL) v1.0