<!-- 
	DO NOT EDIT THIS FILE WITH HTML EDITORS
-->

<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>

<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="GENERATOR" content="Mozilla/4.76 [en] (Windows NT 5.0; U) [Netscape]">
   <title>Eclipse 3.1 Platform Build Notes - Java Development Tooling UI</title>
<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
</head>

<body>
<h1>
Eclipse 3.1 Platform Build Notes<br>
Java Development Tooling UI</h1>
To see which bugs have been addressed in one of the builds simply open the <a href="http://bugs.eclipse.org/bugs/query.cgi?short_desc_type=allwordssubstr&amp;product=JDT&amp;component=UI&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;keywords_type=allwords&amp;keywords=&amp;emailtype1=substring&amp;email1=&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;namedcmd=Assigned&amp;newqueryname=&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">JDT UI bugzilla query page</a>, select status, resolution and the time frame.
<br><br>
========== Eclipse Build Input May 10th 2005 ==========<br>
<pre>
- added code assist preference to hide restricted API
- changed collapsible JDT Text preference pages back to tab-style
- bug fixing
</pre>
========== Eclipse Build Input May 4th 2005 ==========<br>
<pre>
- moved the IRefactoringProcessorIds#COPY_PROCESSOR id back to internal
  due to the fact that the resource mapping API was made internal again
  as well.
</pre>
========== Eclipse Build Input May 3th 2005 ==========<br>
<pre>
- added SimpleJavaSourceViewerConfiguration which does a minimal
  configuration of the JavaSourceViewer and used it wherever possible
</pre>
========== Eclipse Build Input April 19th 2005 ==========<br>
<pre>
- The java search participant mechanism has been instrumented with performance stats:
   - org.eclipse.jdt.ui/perf/search/participants
</pre>
========== Eclipse Build Input March 29th 2005 ==========<br>
<pre>
- Javadoc locations for libraries are now stored in the library's classpath attributes.
  Attribute name is IClasspathAttribute#JAVADOC_LOCATION_ATTRIBUTE_NAME
  JavaUI#setLibraryJavadocLocations(IPath[], URL[]), JavaUI#setLibraryJavadocLocation(IPath, URL) and
  JavaUI#getLibraryJavadocLocation() are deprecated.
  JavaUI#getLibraryJavadocLocation(IClasspathEntry) and BuildPathDialogAccess#configureJavadocLocation(Shell, IClasspathEntry)
  have been added.
- enhanced externalize string wizard to support the <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-core-home/documents/3.1/message_bundles.html">new Eclipse message bundle approach</a>
- comment formatter pushed down to Java Core
- new API for code assist proposals: CompletionProposalCollector, CompletionProposalComparator, CompletionProposalLabelProvider
</pre>
========== Eclipse Build Input March 22th 2005 ==========<br>
<pre>
- Extract Interface and Use Supertype Refactoring now use the new less resource-demanding type constraints infrastructure
- The Package Explorer has been instrumented with PerformanceStats:
	org.eclipse.jdt.ui/perf/explorer/createPartControl=1300
	org.eclipse.jdt.ui/perf/explorer/makeActions=1000
	org.eclipse.jdt.ui/explorer/RefactorActionGroup=150
- bug fixing
</pre>
========== Eclipse Build Input March 15th 2005 ==========<br>
<pre>
- enhanced Properties file preference page with a link to general text editor preference page
- bug fixing
</pre>
========== Eclipse Build Input February 22th 2005 ==========<br>
<pre>
- bug fixing
</pre>
========== Eclipse Build Input February 15th 2005 ==========<br>
<pre>
- support autoboxing when guessing method parameters
- autoboxed expressions highlighting
- javadoc content assist for type parameters
</pre>
========== Eclipse Build Input February 8th 2005 ==========<br>
<pre>
- added PreferenceConstants.EDITOR_FOLDING_HEADERS preference, which controls
  whether leading comments (everything before the package declaration, really)
  is folded per default. The pre-configured setting is to fold them.
</pre>
========== Eclipse Build Input February 1st 2005 ==========<br>
<pre>
- The new type wizards now correctly generate code when inheriting from a
  generic type. Additionally, the new class wizard supports adding of annotations.
- The actions "Override/Implement Method", "Generate Getters / Setters / Delegates" , 
  "Add Constructors" and "Generate Constructor using Fields" are now fully generics-aware
  and support varargs as well.
- Replaced the method name coloring by a semantic coloring to handle generics:
  - deprecated IJavaColorConstants.JAVA_METHOD_NAME
  - deprecated PreferenceConstants.EDITOR_JAVA_METHOD_NAME_{COLOR,BOLD,ITALIC}
</pre>
========== Eclipse Build Input January 25th 2005 ==========<br>
<pre>
- Extract Interface has been rewritten to support organizing of imports, 
  static imports, and varags. Additionally, comments are better handled and
  the formatting is now preserved.
- Override/Implement Method has been rewritten to support generics
  and varargs. The related quick assist for anonymous types now
  supports generics and varargs as well
- "Show Tooltip Description" (F2) for Javadoc now shows in the Browser widget
- bug fixing
- [5.0] syntax coloring
  - better support for annotations (also supports spaces between @ and annotation name)
  - semantic (AST-based) highlightings for annotation elements and type variables
- new for loop template
- content assist
  - support enums
  - support generic types (only parameter insertion, no type parameter guessing)
</pre>
========== Eclipse Build Input January 18th 2005 ==========<br>
<pre>
- bug fixing
</pre>
========== Eclipse Build Input January 11th 2005 ==========<br>
<pre>
- Java Editor: Annotation coloring
  - added annotation coloring for @interface and @'SomeAnnotation'
  - added PreferenceConstants.EDITOR_JAVA_ANNOTATION_{COLOR,BOLD,ITALIC}
  - added IJavaColorConstants.JAVA_ANNOTATION
- improved detection of NLS accessor's resource bundle
</pre>
========== Eclipse Build Input January 4th 2005 ==========<br>
<pre>
- bug fixing
</pre>
========== Eclipse Build Input December 14th 2004 ==========<br>
<pre>
- Extract Interface and Extract Local refactorings now supports generic types
- Added hyperlink support for property keys in Java Properties file editor
- Added spell checking support to Java Properties file editor
- Added quick fix (ctrl+1) support to Java Properties file editor to enable
  fixing of spelling problems
- bug fixing
</pre>
========== Eclipse Build Input December 7th 2004 ==========<br>
<pre>
- Added support to navigate (F3) from an NLS properties file key to their
  reference(s). This does not work for properties files coming from a JAR
  due to missing J Core functionality. For details see: <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=22376">bug 22376</a>.
- Pull Up/Push Down refactorings now resolve visibility issues
- JavaSourceViewerConfiguration and PropertiesFileSourceViewerConfiguration now
  inherit from TextSourceViewerConfiguration.
- preference reorganization: 
  - syntax coloring: removed explicit enablement of semantic colorings
  - 'main' and 'code assist' pages are organized in collapsable sections
  - the 'Tab width' and 'Replace tabs with spaces' preference settings are gone; they
    have been replaced by the equivalent formatter settings.
- bug fixing
</pre>
========== Eclipse Build Input November 30th 2004 ==========<br>
<pre>
- pushed Java editor hyperlink support down to Platform Text (see text
  build notes for details). The Java editor's hyperlink preferences have been
  removed. They can now be found in the shared/global text editor preferences.
- bug fixing
</pre>
========== Eclipse Build Input November 23th 2004 ==========<br>
<pre>
- added "Show in " support to Java Properties file editor
- improved Occurrences in File menu entries:
	- added quick menu access (Ctrl+Shift+U)
	- made all occurrence searches available in the context menu
- moved adapter factory registration from plug-in class to extension point
- bug fixing
</pre>
========== Eclipse Build Input November 16th 2004 ==========<br>
<pre>
- NLS tooling:
	- extended syntax coloring in Properties File editor to work with
		- other extension than just *.properties
		- IStorage
		- external files
	- Class File editor now also supports NLS hover and Ctrl+Click to Properties File editor
- Search plug-in no longer gets loaded when opening Compilation Unit editor
- added support to open quick outline view menu via keyboard (show view menu command, Ctrl+F10)
- bug fixing
</pre>
========== Eclipse Build Input November 9th 2004 ==========<br>
<pre>
- Move instance method refactoring now supports adding a deprecation message to the generated delegator method
</pre>
========== Eclipse Build Input November 2nd 2004 ==========<br>
<pre>
- Added support to rename enum constants
- Disabled add delegate, generate constructor, generate getter/setter and set refactoring on enums and enum constants
- Java Compare:
	- removed dependency on internal JDT Core classes
	- added support for enums and varargs
</pre>
========== Eclipse Build Input October 26th 2004 ==========<br>
<pre>
- Move instance method refactoring has been reimplemented in order to support generics,
  inlining, removing of delegators, organizing of imports and to resolve visibility issues
- Convert anonymous refactoring now fully supports generics
- Pull up/Push down refactorings organize their imports and leave javadoc formatting intact
- Serial version quick fix calculation now launches a separate VM
- there's now an Externalized String hover which shows the externalized
  value when hovering over an NLS key in the Java editor.
- pushed Quick Fix/Assist command down to org.eclipse.ui.ide, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=74675">bug 74675</a> for details.
- calls to reconcile a CU have been improved by only enabling the JDT UI's
  problem requestor when reconcile(...) is called by the Java reconciler, hence problems
  are now only reported to JDT UI's problem requestor when the Java reconciler calls
  reconcile(...). Note that clients requesting an AST when calling reconcile(...) will
  now get null or an empty AST due to bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=76738">76738</a>. Either use the ASTProvider to get the AST or enable
  (and disable later) the problem requestor.
- fixed bugs in the AST provider
- found and fixed memory peaks caused by requesting multiple AST's in parallel by Java reconcilers
- bug fixing
</pre>
========== Eclipse Build Input October 19th 2004 ==========<br>
<pre>
- the Properties File editor now offers syntax highlighting, improved
  double-clicking behavior and a separate font preference. The colors can
  be configured under Java > Properties File Editor.
- the Properties File compare viewers now offer syntax highlighting, improved
  double-clicking behavior and a separate font preference. The colors can
  be configured under Java > Properties File Editor.
</pre>
========== Eclipse Build Input October 12th 2004 ==========<br>
<pre>
- added Search > Implement Occurrences which finds all method
  declarations implementing or extending the selected type
- mark occurrences can now mark all method declarations implementing
  or extending the selected type. This feature can be disabled in
  the preferences: Java > Editor > Mark Occurrences > Mark implementors
</pre>
========== Eclipse Build Input September 21th 2004 ==========<br>
<pre>
- bug fixing
- the Java editor retargets the properties action i.e. the command to open
  the properties dialog is enabled when the Java editor has focus
- the Java editor's Convert Line Delimiters To sub-menu has been moved from Source to Edit menu
- there's a new Edit > Change Encoding... action which reuses the encoding
  field editor from the properties dialog
- the Rename refactoring handles now also type parameters and
  occurrences of types in actual type parameter lists
- Push Down/Pull Up refactorings support now generics
- integrated advanced quick assists for conditionals (see bug 71244)
  and 'Convert to enhanced for loop' quick assist
</pre>
========== Eclipse Build Input July 27th 2004 ==========<br>
<pre>
- bug fixing
- hyperlinking in Java editor now supports URLs
- Merged JDK 1.5 branch back to head. Refactorings and Quick fixes now
  use AST API level JSL3.
</pre>
</body>
</html>