|
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
|