2005-04-05 Alain Magloire
	Build for Eclipse-31M6
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BrowseEntryDialog.java
	* src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties

2005-03-16 Alain Magloire
	Patch from Tracy Miranda to fix PR 88160
	* src/org/eclipse/cdt/managedbuilder/ui/properties/NewConfigurationDialog.java

2004-07-21 Tanya Wolff
	Fix for 70217: C++ Build Properties view: Platform overlaps field
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java

2004-06-15 Tanya Wolff
	Removed intermediate composites to allow groupings to be readable by screenreader in the Manage Configuration dialog.
	
2004-03-16 Tanya Wolff
	Marked remaining strings forming keys, directories and filenames untranslatable.

2004-03-03 James Ciesielski
	Marked those strings that are non-translatable as such and externalized 
	those strings that can be translated.

	* src/org/eclipse/cdt/managedbuilder/internal/ui/ManagedBuilderHelpContextIds.java
	* src/org/eclipse/cdt/managedbuilder/internal/ui/ManagedBuilderUIPlugin.java
	* src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BrowseEntryDialog.java
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolsSettingsStore.java
	* src/org/eclipse/cdt/managedbuilder/ui/properties/ManagedConfigDialog.java
	* src/org/eclipse/cdt/managedbuilder/ui/properties/NewConfigurationDialog.java
	* src/org/eclipse/cdt/managedbuilder/ui/properties/SummaryFieldEditor.java
	* src/org/eclipse/cdt/managedbuilder/ui/properties/ToolListLabelProvider.java
	* src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedCProjectWizard.java
	* src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectWizard.java

2004-03-02 Sean Evoy
	Work to support new feature C1, "Set Tool Command in Project". 
	Created a new preference page that has a single string field editor 
	(for now) to edit the tool command. There is an externalized string 
	for the label. Now that there are preference pages for tools and for 
	options, and both are managed by the property page, the common logic 
	for both preference pages have been refactored into a superclass. 
	
	In the property page, there is now logic for remembering what tool 
	has been selected as well as what option. The property page now 
	creates preference pages for tools and options.
	
	Updated the settings store to add tools as well as options.
	
	Tweaked the logic of the tool/option list provider for the property 
	page slightly to handle the case where the selection is a tool and 
	not simply an option.

2004-02-27 John Camelon
	New built-in compiler incldue search paths and defined symbols for the 
	Gnu C++ compiler on Cygwin.
	* plugin.xml
	
2004-02-23 Sean Evoy
	Fix for bug 52647.
	In 1.2, the target stored the raw, overridden build command the user 
	specified on the property page. This fix involves enhancing the logic 
	to pry apart the command from the args, and moving it into the property 
	itself, so the build system only pays the price to parse once. 
	Obviously since the make command or the args can be overridden by a user, 
	the logic as to when to enable the edit field and check box in the manage 
	dialog had to be tweaked. I am still not 100% satisfied, but this gets the 
	meat of the fix into the hands of users.
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java
	* src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java

2004-2-17 Sean Evoy
	Fixes for 51640
	Externalized strings for the target names. 
	* plugin.properties
	* plugin.xml
	
	Fixes for bug 49590:
	The system now makes a distinction between the name of the output and its extension. 
	The UI for managing the name of the build output now has a field for entering the 
	extension. The new project wizard does not automatically append the extension to the 
	name of the build output.
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java
	* src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java
	* src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectWizard.java
	
	Some ground work for C11:
	Added a browse button and an area for selecting a path variable to the browse
	dialog. However, this is still turned off since it is not fully functional.
	* src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BrowseEntryDialog.java
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionListFieldEditor.java
	
	Changed the order of the configurations in the manifest so that debug configurations are the default for every project.
	* plugin.xml

2003-11-10 Tanya Wolff

	I18N-Externalized strings from plugin.xml.
	I18N-Added keys & strings to plugin.properties.
	Fixed an id error in linux c compiler debugger options.
	* plugin.xml
	* plugin.properties

2003-11-11 Sean Evoy
	Work to implement bugzilla 44841:
	Added a scrollbar to the list control inside the custom list field editor. 
	Also added an Edit button to the field editor to make it easier for keyboard-only 
	accessibility.
	
	Work for bugzilla 44451:
	Changed the method that prompts user for information so that if the user cancels 
	with an empty input dialog, the method always returns an empty string. The responsibility 
	now rests with the caller to test the return value for length > 0 to decide whether or 
	not to add string to the list.
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionListFieldEditor.java

	Moved string constants from core UI plugin to build UI plugin. These values are duplicated 
	in the standadrd make UI plugin anyway, so the argument for keeping them in a common 
	plugin seems pretty weak. This removes another dependency between the builder UI and 
	common UI plugin. I did have to change the string resource lookup method in a few of 
	the UI implementation classes that use the constants.
	* src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BrowseEntryDialog.java
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolSettingsPage.java
	* src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java
	
2003-10-17 Tom Tromey
	
	Changed -werror to -Werror
	* plugin.xml

2003-10-14  Alain Magloire

	ICOptionPage was added a new method
		Preferences getPreferences();
	This is needed to get the preference store when saving
	On the plugin.  We had the equivalent for project
		IProject getProject();

	* src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectOptionPage

2003-10-01 Sean Evoy
	Fix for bugs 43490 (trivial), 44020, and 43980.
	A massive change has occurred in the plugin file. I added new C tools that apply 
	only to projects with C natures. I also added option overrides in the default 
	configurations for these new tools. The trivial fix for the new C project wizard 
	involved changing the icon entry in the plugin file.
	* plugin.xml

	In preparation for 44020, each new configuration created is assigned a truly 
	random ID.
	* src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectWizard.java
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java
	
	Removed a tooltip that was not being populated properly.
	* src/org/eclipse/cdt/managedbuilder/ui/wizards/CProjectPlatformPage.java

2003-09-30 Sean Evoy
	Fix for bug 41826.

	Updated the tool specifications for Win32, Linux, and Solaris so that header 
	file extension info is available.
	* plugin.xml

2003-09-25 Sean Evoy
	For bug (really an enhancement request)43756, I added the word default to a 
	widget label to try and make it clear that a new configuration will be based 
	on default values, not user-overridden stuff. It remains to be seen if this 
	actually helps, but it seems reasonable.
	* src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties
	
	For bug 43220 I now display a widget just for user objects.
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolSettingsPage.java
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BuildToolsSettingsStore.java
	
	I also reordered the plugin definition for the linker tools, and moved some of 
	the option labels to the plugin property file. I also added a user object option 
	to each linker tool definition.
	* plugin.properties
	* plugin.xml
	
2003-09-25 Sean Evoy
	This patch contains a lot of changes needed to implement fixes for 42648 and 
	43122. 
	
	The properties file has been updated to externalize some of the option labels
	to try and address some of the concern about continuity between UIs on 
	different platforms.
	* plugin.properties
	
	There are changes in the plugin XML file to accomodate showing the targets 
	only on the correct host platform. Option names have bee replaced with 
	externalized equivalents where possible. The release and debug configurations 
	for each configuration now apply "reasonable" defaults for debug and optimization
	option. Finally, the Cygwinb tool specification has been brought closer to those 
	for *nix.
	* plugin.xml
	
	Only targets that correspond to the host platforms are shown in the drop-down
	list.
	* src/org/eclipse/cdt/managedbuilder/ui/wizards/CProjectPlatformPage.java

2003-09-23 Sean Evoy
	I added a fix for critical bug 43439. The new project wizard is ready to be hooked 
	up to the help system content on F1. There is a new file with the string constant 
	the doc project will use to map the widget to a help file.
	* src/org/eclipse/cdt/managedbuilder/ui/wizards/CProjectPlatformPage.java
	* src/org/eclipse/cdt/managedbuilder/internal/ui/ManagedBuilderHelpContextIds.java
	
	In support of the fix for critical bug 43292, I added a new set of widgets to 
	the ManageConfigDialog implementation. I added new string literals in the properties 
	file for the plugin. There are obviously new event handlers for the Manage dialog. 
	It displays the make command for the target, the name of the build artifact, and 
	a list of current and deleted configurations. There is no way to add new targets. 
	Users can restore deleted configurations up until they click OK. The client of this 
	dialog has been changed to properly respond to the changes. The NewConfigurationDialog 
	now displays an externalized string in the title bar.
	* plugin.xml
	* plugin.properties
	* src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java
	* src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java
	* src/org/eclipse/cdt/managedbuilder/ui/properties/NewConfigurationDialog.java

2003-09-19 Sean Evoy
	Removed the binary parser selection tab from the new class wizard. Updated the
	page description externalized string.
	* src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties
	* src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectOptionPage.java
	
	Added the hard-coded binary parser info to the defined targets.
	* plugin.xml
	
	Fixed the event handling for add/remove in the list widget for build settings pages.
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionListFieldEditor.java
	
2003-09-16 Sean Evoy
	Changed the initialization and button status logic so the list buttons are 
	enabled correctly on start-up and that the fist item in the list (if 
	any) is selected. Also changed the "Add" event handler to properly enable 
	the buttons and set the list selection.
	
	* src/org/eclipse/cdt/managedbuilder/ui/properties/BuildOptionListFieldEditor.java

2003-09-15 Sean Evoy
	First submission of code to new project. Moved all the managed 
	builder-specific UI elements out of the cdt.ui project. This 
	includes the icons, and externalized strings.
	
	There are 2 new classes to handle the externalized strings and image 
	files:
	* src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties
	* src/org/eclipse/cdt/managedbuilder/internal/ui/ManagedBuilderUIPlugin.java
	* src/org/eclipse/cdt/managedbuilder/internal/ui/ManagedBuilderUIImages.java
	
	The property pages have been modified to use a mix of externalized 
	strings from the CUIPlugin and ManagedBuilderUIPlugin. The new project 
	wizard has been reimplemented using the new C project classes added by 
	QNX September 12, 2003. The UI itself has not changed.