jdt ui R3.1.x
java development tooling ui

Overall 3.1 Plan
The 3.1 plan below is a proto plan and input from the community is very welcome
Top Five Items
  • Add support for J2SE 5.0 features
  • Measure and improve the performance of key operations
  • Improve the way how Eclipse deals with preferences
  • Improve filtering/grouping functionality to support workspace with lots of projects
  • Work towards a single code manipulation infrastructure
Overall JDT/UI Themes [committed]
  • Make all source, quick fix, quick assist and refactoring actions J2SE 5 aware [J2SE 5.0 support]
  • Provide refactorings, source actions and quick fixes for new J2SE 5 features. This includes features like rename and move of annotations or the creation of enum and annotation units. [J2SE 5.0 support]
  • Provide refactorings and quick assists that convert JDK 1.4 source into J2SE 5.0 source. Examples are "Convert usages of raw collection classes into the corresponding generic collection class" or "Convert to enhanced for loop". [J2SE 5.0 support]
  • Identify functions which are critical important speed and space performance wise [Built to Last]
    • Open workspace in Java perspective, open & populate Package Explorer, open & populate Type Hierarchy,
    • Refactorings with reference updates (rename, move, change method signature, move member type to new file, inline method, introduce factory, introduce parameter, encapsulate field)
    • Refactorings with type declaration updates (use supertype, extract interface, generalize types)
  • Write performance tests for the critical functions and identify speed / space targets [Built to Last]
  • Look into ways to improve performance where the functions don't meet the targets [Built to Last]
  • Investigate in improved filtering/grouping functionality to support workspace with lots of projects. [Large-scale]
    • Use of working sets as top level elements in the package explorer
  • Convert source and refactoring code to use one code manipulation infrastructure that honors formatting, comment and code style settings [Built to Last] [proposed]
Component Independent
  • Convert all AST clients to use the new JLS3 API [J2SE 5.0 support] [committed]
  • Make all source, quick fix, quick assist and refactoring actions J2SE 5 aware [J2SE 5.0 support] [committed]
    • analyze the impact of the new J2SE 5 language features on existing JDT/UI functionality
    • write new test cases for the new J2SE 5 language features
    • adapt where necessary the code to J2SE 5
  • Add a history to Open Type, Open Hierarchy, Organize Import, Quick Fix, Quick Assist... In the case of an element ambiguity (for example java.awt.List versus java.util.List versus org.eclipse.swt.widgets.List when opening a type) these operations should built a histroy of the selected elements and use that history to sort the elements accordingly. [Simple to Use] [committed]
  • Identify code that is better hosted in JDT/Core [Built to Last] [committed]
  • Cleanup usages of deprecated code [Built to Last] [committed]
Code manipulation
  • Provide a New Enum type wizard [J2SE 5.0 support] [committed]
  • Provide a New Annotation type wizard [J2SE 5.0 support] [committed]
  • Improve comment handling in AST rewriting. Clients need more control over when comments have to be preserved and when they can be deleted. For example when inlining a method, a comment in front of the original method call should be preserved.[Built to Last]
  • Improve Java project creation for existing folder structures [Simple to Use] [committed]
  • [>3.1] Code generation operations for hash, equals and toString
  • [>3.1] Infer code style settings (formatter, prefixes, ...) from existing source code [Simple to Use]
  • [>3.1] Apply coding conventions (like formatting, organize import, nls, ...) on save, compile or commit. This requires support from Platform/Team, Platform/Text and JDT/Core. [Large-scale]
Quick Fix & Quick Assists
  • Provide a Quick Assist to convert old for loops into new for each style. [J2SE 5.0 support] [committed]
  • Additional quick fixes and quick assists [committed]
  • [>3.1] Investigate how to improve the scalability of quick fix. We have situations where the list of possible quick fixes is getting really long [Simple to Use]
  • [>3.1] Provide quick fixes for auto correct on typing (see JDT/Text item) [Simple to Use]
  • [>3.1] Investigate in applying all quick fixes of a certain type all together (fixing all exception problems) (needs support from Platform/UI)
Refactoring
  • Provide a refactoring that converts usages of raw collection classes into the corresponding generic collection class. The refactoring should infer the least specific element type of the collection which allows removal of all (most) casts. [J2SE 5.0 support] [committed]
  • Extend existing refactorings to new language constructs [J2SE 5.0 support] [committed]
    • rename of type parameters, rename of enum constants
    • rename and move of annotations
  • Make Ripple Method finder J2SE 5.0 aware [J2SE 5.0 support] [committed]
  • Remove dependency between LTK/UI and JDT/Core [Built to Last]
  • Convert Extract interface, Use Supertype and Generalize Type to new type constraint infrastructure [committed]
  • Convert Copy/Paste into processor/participant architecture [Built to Last]
  • Investigate in non disjoint file manipulation for refactoring participants. Currently a participant can't manipulate the content of a file if its is manipulated by another participant or the processor even if the changes are disjoint. [Build to Last]
  • Refactorings should reuse the shared AST provided by the Java editor where appropriate
  • Improve existing refactorings:
    • Improve visibility handling when moving members to destinations where they are not visible anymore for all references. Either compute the right visibility or let the user pick a visibility [committed]
    • Unused import handling. Currently refactorings don't remove imports which can lead to unused import warnings/errors if this compiler option is enabled. [committed]
    • More use of code assist in dialog fields (extract constant, extract method, ...) [committed]
    • User interface polishing (pull-up, push down)
    • Javadoc handling of moved (pull-up, push down) and created methods
    • [>3.1] Support creation of delegate methods to provide API compatibility (change method signature, rename, move, ...)
    • [>3.1] Update derived names on rename (e.g when renaming a type update field names and locals if parts of the name match the type name)
    • [>3.1] Extract Method: improve duplicate finding (replace with existing method)
  • [>3.1] Investigate in a refactoring to convert static final int field into a enum type. [J2SE 5.0 support]
  • [>3.1] Investigate in a refactoring to introduce a type parameter into a non generic class [J2SE 5.0 support]
  • [>3.1] Additional refactorings: Extract Superclass [proposed], Inline Supertype [proposed]
Package Explorer
  • Support inclusion filters when in hierarchical layout mode (see bug 65240) [committed]
  • [>3.1] Support better grouping mechanisms for referenced libraries (jars) [Large-scale]
  • [>3.1] Investigate to use sync exec instead of async exec to update the package explorer when receiving a Java model delta
Type Hierarchy
  • Make lock mode generics aware [J2SE 5.0 support] [committed]
Preferences
  • Support better sharing of preferences in a team (compiler settings, formatter settings, organize imports, ...) [Large-Scale] [committed]
Search
  • Support searching for code snippets instead of single references or declarations. For example allow searching for all method calls to IRunnableContext#run where the first argument is boolean 'false'. [Large-Scale]
  • Investigate in generic rewriting of compilation units based on the result of snippet based searching. For example rewrite all method calls to IRunnableContext#run(false, ?, ?) to IRunnbleContext#run(true, ?, ?). [Large-Scale]
Browsing
  • Support inclusion filters in packages view when in hierarchical layout mode (see bug 65240) [committed]
  • [>3.1] Investigate in higher level browsing support. For large systems, browsing dependencies on method call level is too fine granular. Dependencies are better visualized on type, package, source folder or project level. [Large-scale]
Navigation
  • Improve Expand Selection (additional sync points: line, ...)
Platform/Compare
  • Improve performance and memory consumption of text compare [Large-scale development] [committed]
  • Write performance tests for the critical functions and identify speed / space targets [Built to Last] [committed]
  • Convert Patch code to use TextBuffers and address ValidateEdit, encoding, and locking issues [Built to Last] [committed]
  • Harmonize Compare infrastructure with Team use cases [Built to Last]
  • Simplify Patch UI [Simple to use]
  • [>3.1] Investigate in reusing editors in the implementation of the compare editor [Simple to use]
  • [>3.1] Split compare plugin into separate core and ui plugins [Built to Last]
Java/Compare
  • Make all structure compare functionality J2SE 5 aware [J2SE 5.0 support] [committed]
  • Convert all source manipulation code to use shared code manipulation infrastructure [Built to Last] [committed]
Mac OS X
  • Eliminate java_swt and adapt launching and application exporter plugins [Simple to use] [committed]
  • Indentify and address Mac OS X specific Java 1.5 issues [J2SE 5.0 support]
  • Indentify and address Mac OS X 10.4 (Tiger) issues related to jdt.ui [Built to Last]
Articles
  • How to use the AST rewrite to manipulate source code
  • How to contribute a quick assist/quick fix
  • How to write your own refactoring
  • How to write a correct action for manipulating text resources [committed]
Dependencies
  • SWT
    • preferred width & height in grid layouts (see bug 30804)
  • Platform/Core:
    • Snap shotting
    • Preference sets and shared preferences
    • Allow merge for Copy/Move (see bug 31883, bug 29838)
  • Platform/UI:
    • Cancellation of label and content provider calls (e.g. cancelling getChildren)
    • Preference Dialog and shared preferences
    • Action contribution mechanism
    • Ordering of menu contributions (duplication of search menu structure)
    • Free event loop and unwanted execution of async exec
    • Universal Navigator
    • Unified Undo Manager
    • Extensible actions and pluggable actions (define rename action for different file extensions and allow participation in rename)
    • Better filtering and grouping in large workspace (JDT/UI should be aligned with Platform/UI behavior)
  • Platform/Team
    • Commit hook to apply code styles
    • Logical resources
  • Platform/Text
    • Save hook to apply code styles
  • JDT/Core
    • Track J2SE 5.0 progress
    • Dependency analysis while you type
    • Compile hook to apply code styles
    • ISourceManipulation and linked resources (see bug 31456)
  • Other
    • JEM: EMF based Java Model
Legend
item is under development. item is under investigation.
item is finished. ( ) item is time permitted.
[>3.1] item is deferred. new
M7 Milestone Plan (Apr. 4 - Mai 13)
Overall goals for M7
  • Performance
  • Bug fixing & Polishing
General Items
  • Bug fixing & clean-up
  • Inbox tracking (7 days)
  • Component.xml file
  • Investigate in making JDT/UI .java agnostic [89977]
Performance
  • Convert plugin.xml file to manifest file
  • Convert to new message bundle format
  • Understand and improve startup performance of package explorer (especially cold case)
  • Understand and improve performance of Type Hierarchy view
  • Measure performance of Quick Fix
  • Measure performance of memory consumption for refactorings touching lots of files (rename, infer, extract inteface, ...) and improve where necessary
  • Measure performance of ripple method finder and improve where necessary
  • Investigate broader use of virtual tables (search, open type, ...)
  • Investigate removing all types cache (last client is currently the open type dialog).
Refactoring
  • Infer Element Type refactoring
    • handle cases where code already contains generic collection classes (use case is a third party library that ships an updated version using generic collections)
  • Convert refactoring Undo/Redo to unified Undo implementation
Code Manipulation
  • Improve AST rewrite support for moving a set of nodes to new location
  • New type wizard
    • support generics in code assist for super class
    • investigate in supporting generics for super interfaces
Package Explorer
  • Support inclusion filters when in hierarchical layout mode (see bug 65240)
Preferences
  • Define categories for Import/Export of preferences
  • Page polishing
    • multiple key words for pages (requires bug fix in Platform/UI)
    • make use of working copy manage (might require additional support from Platform/UI)
Polish
  • History for Open Type and Organize import
  • Allow creation of type during pull-up refactoring
  • Quick fix: convert to enhanced for loop for iterators
  • Improve expand selection
Platform/Compare
  • Write performance tests for the critical functions and identify speed / space targets (Andre)
Conferences/Vacations
  • 2 days
Getting the sources
  • Define a CVS connection to server pserver:anonymous@dev.eclipse.org:/home/eclipse,
  • Check out HEAD branch of the project org.eclipse.jdt.ui.
  • Make sure to import the prerequisite plug-ins (usually from the latest SDK R3.1.x build). Prerequisite plug-ins are already referenced on the project build path ( .classpath file).
  • The sources of this project require JDK 1.4.