New Project New Project Model UIModel UI
Primary Author: Mikhail SennikovskyPrimary Author: Mikhail SennikovskyMajor contributors: Mikhail Voronin, Oleg Major contributors: Mikhail Voronin, Oleg Krasilnikov, Krasilnikov, Leo Treggiari Leo Treggiari
Intel CorporationIntel CorporationSeptember, 2006September, 2006
GoalsGoals Easy to use interfaceEasy to use interface Multi-language supportMulti-language support Tool integrators supportTool integrators support
ScopeScope Usability, ConfigurabilityUsability, Configurability
Project Creation UIProject Creation UI Common UI interface with different project types in Common UI interface with different project types in
CDTCDT Common UI for “Standard” and “Managed” build, Common UI for “Standard” and “Managed” build,
other buildersother builders Consistent Integration into the UIConsistent Integration into the UI
Multi-language supportMulti-language support language – sensitive environmentlanguage – sensitive environment
Integration of the Core part of the Project Integration of the Core part of the Project ModelModel
Configuration conceptConfiguration concept Language settingsLanguage settings Build VariablesBuild Variables Build EnvironmentBuild Environment etc.etc.
AgendaAgenda Project CreationProject Creation Project SettingsProject Settings
Core SettingsCore Settings Build System SettingsBuild System Settings Settings LayoutSettings Layout
Project CreationProject Creation OverviewOverview General Project Creation flowGeneral Project Creation flow Proposed Project Creation in CDTProposed Project Creation in CDT
Project Creation: Project Creation: OverviewOverview
Creation of project in one stepCreation of project in one step Advanced settingsAdvanced settings Language sensitive settingsLanguage sensitive settings
Project Creation: General Project Creation: General flowflow
Language selection – requiredLanguage selection – required C/C++, FORTRAN, etc.C/C++, FORTRAN, etc.
Application (Project) type selection – requiredApplication (Project) type selection – required Console, UI, library, executable, etc.Console, UI, library, executable, etc.
Project type-specific required properties Project type-specific required properties selection – requiredselection – required E.g. Tool-chain for CDT Build SystemE.g. Tool-chain for CDT Build System
General Project settingsGeneral Project settings Name, LocationName, Location
Project type settings customization – optionalProject type settings customization – optional Error parsers, Binary Parsers, Source/output Error parsers, Binary Parsers, Source/output
location, etc.location, etc.
Language selectionLanguage selection Separate entry for each Separate entry for each
language typelanguage type One common “CDT Project” One common “CDT Project”
entry (for advanced users)entry (for advanced users)
Questions: Questions: do we need separate C and C++ do we need separate C and C++
entries or it is OK to have one C/C+entries or it is OK to have one C/C++?+?
Implementation details:Implementation details: CDT UI defines a common re-usable CDT UI defines a common re-usable
CDT Wizard templateCDT Wizard template Each language type integration Each language type integration
defines a language-specific wizard defines a language-specific wizard entryentry
The wizard class extends/reuses the The wizard class extends/reuses the common CDT Wizard, i.e. all common CDT Wizard, i.e. all language entries mapped to the same language entries mapped to the same wizard implementationwizard implementation
Required project properties Required project properties selectionselection
Application (Project) type Application (Project) type selection selection
Project type-specific required Project type-specific required properties selectionproperties selection
General Project settingsGeneral Project settings
Implementation detailsImplementation details org.eclipse.cdt.ui.CNewWizard org.eclipse.cdt.ui.CNewWizard
extension pointextension point Providing project type entries via Providing project type entries via
XML and/or Java call-backXML and/or Java call-back Providing control for Providing control for
representing the main properties representing the main properties for selected project typefor selected project type
Implemented typically by the Implemented typically by the Build System integrationBuild System integration
Contributing project types Contributing project types and tool-chainsand tool-chains
Manifest file snippets:Manifest file snippets:
Configuration Selection Configuration Selection PagePage
Displayed for the Displayed for the “Managed” Projects (all “Managed” Projects (all except “Make Project”)except “Make Project”)
Configuration Selection Configuration Selection Page: multiple tool-chainsPage: multiple tool-chains
Configurations for all Configurations for all selected tool-chains selected tool-chains are listedare listed
““_with_ToolChain_Na_with_ToolChain_Name” suffix prepended me” suffix prepended for configurations for configurations with same nameswith same names
Additional Settings PageAdditional Settings Page Displayed for both “Managed” and Displayed for both “Managed” and
“Standard” Build projects“Standard” Build projects Maintain the project property page Maintain the project property page
dialog representing the complete set dialog representing the complete set of project property pages.of project property pages.
Project Properties UIProject Properties UI CPropertyPage general templatesCPropertyPage general templates Configuration ManagementConfiguration Management Properties specificsProperties specifics
Configuration setting Configuration setting property pageproperty page
CPropertyPage property CPropertyPage property page templatepage template
Implementers will Implementers will provide the provide the CPropertyPage contentsCPropertyPage contents
All C property pages use All C property pages use one and the same copy one and the same copy of of ConfigurationDescriptioConfigurationDescriptionn
Tab container property Tab container property pagepage
org.eclipse.cdt.ui.org.eclipse.cdt.ui.CPropertyTabCPropertyTab extension pointextension point property page id the property page id the
tab is contributed totab is contributed to Tab nameTab name Tab orderTab order Tab implementationTab implementation
Active configuration Active configuration selectionselection
Changing active configurationChanging active configuration ““Active Build Configuration” project context menuActive Build Configuration” project context menu ““Active Build Configuration” sub-menu of the Active Build Configuration” sub-menu of the
“Project” menu“Project” menu ““Build Configuration” tool-barBuild Configuration” tool-bar ““Manage Configurations” dialogManage Configurations” dialog
Current interface changesCurrent interface changes Configuration selector of the C Property Page does Configuration selector of the C Property Page does
not make the selected configuration activenot make the selected configuration active Configuration list control of the “Manage Configuration list control of the “Manage
Configurations” dialog does not make the selected Configurations” dialog does not make the selected configuration activeconfiguration active
““Manage Configurations” Manage Configurations” dialogdialog
Accessed viaAccessed via ““Manage Configurations” project context Manage Configurations” project context
menumenu ““Manage Configurations” project sub-Manage Configurations” project sub-
menu of “Project” menumenu of “Project” menu ““Manage Configurations..” button of the Manage Configurations..” button of the
C Property pageC Property page Used forUsed for
Changing active configurationChanging active configuration Creating/removing configurationsCreating/removing configurations Changing configuration name/descriptionChanging configuration name/description
Question: Question: Tool-chain conversion moved to the “Tool-Tool-chain conversion moved to the “Tool-
chain Settings page”chain Settings page” Do we need tool-chain selection at Do we need tool-chain selection at
configuration creation?configuration creation?
Implementation detailsImplementation details org.eclipse.cdt.ui.ManageConfigsDialogorg.eclipse.cdt.ui.ManageConfigsDialog
extension pointextension point Providing custom (Build System-specific) Providing custom (Build System-specific)
implementationimplementation
Project Properties Project Properties SpecificsSpecifics
Core SettingsCore Settings CDT Build System SettingsCDT Build System Settings
Core SettingsCore Settings Language SettingsLanguage Settings Include Paths & SymbolsInclude Paths & Symbols Project ReferencesProject References Build EnvironmentBuild Environment Visualizing resource-specific settingsVisualizing resource-specific settings
Language selectionLanguage selection Content type to Content type to
language (dialect) language (dialect) associationassociation Only content types Only content types
that have that have languages languages associated are associated are displayeddisplayed
For each content For each content type the list of type the list of languages languages associated with it associated with it is displayedis displayed
Includes Settings pageIncludes Settings page Includes settings are Includes settings are
language-specific language-specific Only languages used in Only languages used in
the current the current Configuration are Configuration are displayed in the displayed in the language listlanguage list
In case includes settings In case includes settings are not applicable for the are not applicable for the given language, the given language, the language is not displayedlanguage is not displayed
Built-in and read-only Built-in and read-only values are highlighted values are highlighted using different iconsusing different icons
Macros Settings pageMacros Settings page Macros settings are Macros settings are
language-specific language-specific Only languages used in Only languages used in
the current Configuration the current Configuration are displayed in the are displayed in the language listlanguage list
In case macros settings In case macros settings are not applicable for the are not applicable for the given language, the given language, the language is not displayedlanguage is not displayed
Built-in and read-only Built-in and read-only values are highlighted values are highlighted using different iconsusing different icons
Referencing Referencing Projects/ConfigurationsProjects/Configurations
Only one configuration of Only one configuration of a project can be a project can be referencedreferenced
In case the “[Active]” In case the “[Active]” entry is selected, the entry is selected, the project active project active configuration will be configuration will be referencedreferenced
Selecting a project entry Selecting a project entry results in selecting results in selecting “[Active]” configuration“[Active]” configuration
Question: Question: How will this interact with the How will this interact with the
“Project References” page added by “Project References” page added by Eclipse?Eclipse?
Build Environment UIBuild Environment UI Extended general Extended general
Environment UI will be usedEnvironment UI will be used Provide a common user Provide a common user
experience with Eclipse/CDTexperience with Eclipse/CDT MBS Environment UI seems MBS Environment UI seems
over-complicatedover-complicated Some extensions to general Some extensions to general
UIUI The Default Environment The Default Environment
settings are those contributed settings are those contributed by the tool-chain.by the tool-chain.
““Append” modeAppend” mode User-modified environment User-modified environment
variables highlighted in variables highlighted in BOLDBOLD
it will be possible to it will be possible to “undefined” the variable. “undefined” the variable. Undefined variable is Undefined variable is displayed as ITALIC displayed as ITALIC ““<Undefined><Undefined>”.”.
““Replace” mode operates in a Replace” mode operates in a standard way.standard way.
Visualizing resource-Visualizing resource-specific settingsspecific settings
Files and folders with Files and folders with customized settings customized settings marked with “marked with “<><>””
Build System SettingsBuild System Settings Tool-chain ModificationTool-chain Modification Builder SettingsBuilder Settings Artifact SettingsArtifact Settings
Tool-chain modificationTool-chain modification ToolChain selectionToolChain selection
Compatible tool-chains:Compatible tool-chains: Converter is definedConverter is defined Compatible Build propertiesCompatible Build properties
Builder selectionBuilder selection Changing the list of toolsChanging the list of tools
When conflicting tools When conflicting tools selected they are marked by selected they are marked by color, error message color, error message displayed.displayed.
““Managed” build onManaged” build on ““Managed” build capable Managed” build capable
objects displayed onlyobjects displayed only ““Managed” build offManaged” build off
All available objects displayedAll available objects displayed
Builder Settings pageBuilder Settings page Builder typeBuilder type
External BuilderExternal Builder Internal BuilderInternal Builder
Whether builder should Whether builder should stop on first build errorstop on first build error
Workbench Build Workbench Build BehaviorBehavior
Builder CWDBuilder CWD For external Builders:For external Builders:
Whether or not makefiles Whether or not makefiles should be generatedshould be generated
Make commandMake command rule namesrule names
Builder Settings page: Builder Settings page: Internal Builder caseInternal Builder case
Build Command Build Command disableddisabled
Makefile Makefile generation generation section disabledsection disabled
Rule names Rule names hiddenhidden
““Build Artifact” pageBuild Artifact” page Displayed when Displayed when
the “Managed” the “Managed” build is onbuild is on
SettingsSettings Artifact nameArtifact name Artifact Artifact
extensionextension Artifact typeArtifact type
Properties LayoutProperties Layout Project Properties LayoutProject Properties Layout
Project PropertiesProject Properties Folder PropertiesFolder Properties File PropertiesFile Properties
Preferences LayoutPreferences Layout
Project PropertiesProject Properties ““Language settings” - Language to file type mappingLanguage settings” - Language to file type mapping ““Project Paths & Symbols” Project Paths & Symbols”
““Includes”Includes” ““Symbols”Symbols” ““Libraries” Libraries” ““Discovery options” (CDT Build System-contributed)Discovery options” (CDT Build System-contributed) ““Source location”Source location” ““Output location“Output location“ Referenced projects/configurations Referenced projects/configurations SDKs (NEW)SDKs (NEW)
““Build Settings” property page contains a set of tabs:Build Settings” property page contains a set of tabs: ““Tool settings” (CDT Build System-contributed, Managed Build only) - options, tool Tool settings” (CDT Build System-contributed, Managed Build only) - options, tool
commands, etc.commands, etc. ““Build Steps” – (CDT Build System-contributed, Managed Build only) - Custom Build StepsBuild Steps” – (CDT Build System-contributed, Managed Build only) - Custom Build Steps ““Build Artifact” (project type, name, extension) – Build artifact type, name and extension.Build Artifact” (project type, name, extension) – Build artifact type, name and extension. ““Builder settings” (CDT Build System-contributed)Builder settings” (CDT Build System-contributed) EnvironmentEnvironment Binary parsersBinary parsers Error parsersError parsers
““Tool-Chain settings” property page (NEW) - add/remove/change tools, builder and Tool-Chain settings” property page (NEW) - add/remove/change tools, builder and tool-chain. tool-chain.
““Build Variables” (NEW to the core) – viewing/editing the Build Variables (Macros)Build Variables” (NEW to the core) – viewing/editing the Build Variables (Macros) ““Indexer” property page for selecting indexer to be usedIndexer” property page for selecting indexer to be used ““File types” – property page for file type specificationFile types” – property page for file type specification ““Documentation” property pageDocumentation” property page
Folder PropertiesFolder Properties
““Language settings” - Language to file type mappingLanguage settings” - Language to file type mapping ““Project Paths & Symbols” Project Paths & Symbols”
““Includes”Includes” ““Symbols”Symbols” ““Libraries” Libraries” ““Discovery options” (CDT Build System-contributed)Discovery options” (CDT Build System-contributed)
““Build Settings” Build Settings” ““Tool settings” (CDT Build System-contributed, Managed Tool settings” (CDT Build System-contributed, Managed
Build only) - options, tool commands, etc.Build only) - options, tool commands, etc. ““Tool-Chain settings” - add/remove/change tools, Tool-Chain settings” - add/remove/change tools,
builder and tool-chain. builder and tool-chain.
File PropertiesFile Properties
““Language settings” - Language to file type mappingLanguage settings” - Language to file type mapping ““Project Paths & Symbols”Project Paths & Symbols”
““Includes”Includes” ““Symbols”Symbols” ““Libraries” Libraries” ““Discovery options” (CDT Build System-contributed)Discovery options” (CDT Build System-contributed)
““Build Settings” Build Settings” ““Tool settings” (CDT Build System-contributed, Managed Tool settings” (CDT Build System-contributed, Managed
Build only) - options, tool commands, etc.Build only) - options, tool commands, etc. ““Build Steps” – (CDT Build System-contributed, Managed Build Steps” – (CDT Build System-contributed, Managed
Build only) - defining Custom Build StepsBuild only) - defining Custom Build Steps ““Tool-Chain settings” property page (NEW) - Tool-Chain settings” property page (NEW) -
add/remove/change tools, builder and tool-chainadd/remove/change tools, builder and tool-chain
Preferences LayoutPreferences Layout Only a few changes to the current layout Only a few changes to the current layout
proposed:proposed: Rename the “C/C++” entry to “CDT”Rename the “C/C++” entry to “CDT” ““C/C++”/”Path Entry Variables” page is C/C++”/”Path Entry Variables” page is
replaced with the “CDT”/”Build Variables” pagereplaced with the “CDT”/”Build Variables” page ““CDT”/”Build Environment” page addedCDT”/”Build Environment” page added ““C/C++”/”Managed Build” page removedC/C++”/”Managed Build” page removed
““Macros” tab becomes the “CDT”/”Build Variables” Macros” tab becomes the “CDT”/”Build Variables” pagepage
““Environment” tab becomes the “CDT”/”Build Environment” tab becomes the “CDT”/”Build Environment” pageEnvironment” page
Q & AQ & A