<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../wtp.xsl"?>
<html>
	<head>
	<meta name="root" content="../../.."></meta>
		<title>the javaserver faces tools subproject</title>
	</head>
	<body>

		<h1>jsf</h1>

		<h2>Project Features</h2>
		<p>
			This document aims to list the feature set for the
			JavaServer Faces Tooling Project.
		</p>
		<p>
			This is not intended to be an all-encompassing list
			initially, rather it is intended to serve as an evolving
			list as we move towards acceptance of the full feature set.
		</p>
		<p>
			Please send all feedback to the
			<a class="bodylink"
				href="news://news.eclipse.org/eclipse.webtools.jsf">
				eclipse.webtools.jsf
			</a>
			newsgroup.
		</p>

		<h2>Assumptions</h2>
		<p>
			The following assumptions have been made:
			<ul>
				<li>Source editors will be SSE-based</li>
				<li>
					A component designer is not in scope - this project
					will focus on JSF usage and not component creation
				</li>
				<li>
					Needs to support JSF 1.0, 1.1, 1.2 and be flexible
					for future releases
				</li>
				<li>
					EMF based models will be used for all JSF artifacts
				</li>
				<li>Released in WTP 1.5 timeframe</li>
				<li>Supports all WTP platforms</li>
				<li>
					Users of this tool understand at least the basics of
					JSF/Web design
				</li>
				<li>JSF is associated with JSP pages only</li>
				<li>
					Does not have to deal with Shale/Tiles. A developer
					should be able to extend this project to create
					these kinds of tools. Our goal is to provide a
					platform that other projects can extend, e.g. a
					Tiles project.
				</li>
			</ul>
		</p>



		<h2>Infrastructure/Management Features</h2>

		<h3>Registry of JSF implementations (like Java JRE)</h3>
		<p>
			For each implementation registered, user can specify:
			<ul>
				<li>Libraries</li>
				<li>Tag libraries</li>
				<li>Default servlet name</li>
				<li>Default servlet class</li>
			</ul>
			JSF implementation selected during project creation/adding
			JSF capabilities to existing web project.
		</p>

		<h4>Extensibility</h4>
		<ul>
			<li>
				Extension point(s) will be provided to allow plugins to
				register JSF implementations (could be licensing
				implications if we choose to provide one or more JSF
				implementation plugins with our release)
			</li>
		</ul>

		<h3>Component Manager</h3>
		<p>
			A Component Manager will allow users to register component
			libraries with a workspace and then use them in one or more
			projects. This enables the following functionality:
			<ul>
				<li>
					Association of taglibs and JARs with a named set of
					components (e.g. JSF Core, ADF Faces, MyFaces, etc.)
				</li>
				<li>
					Registry of default prefixes for the taglibs when
					used (overrideable on pages)
				</li>
				<li>
					Capability of wizards to add taglibs to generated
					pages
				</li>
				<li>
					Capability to copy component JARs and taglibs to
					correct places in deployable folders
				</li>
				<li>Possibility to provide design-time metadata</li>
			</ul>
		</p>
		<h4>Extensibility</h4>
		<ul>
			<li>
				Extension point(s) will be provided to allow plugins to
				register component libraries (could be licensing
				implications if we choose to provide one or more
				component library plugins with our release)
			</li>
			<li>
				Extension point(s) will be provided to allow plugins to
				register custom tag libraries
			</li>
		</ul>

		<h3>Build Classpath</h3>
		<p>
			A project's build classpath will reference a "Component
			Library Container" which will point at all component
			libraries used by this project (WTP 1.0-1.5 may change this
			requirement).
		</p>

		<h3>Preferences</h3>
		<p>
			Preferences will be provided for the following:
			<ul>
				<li>Web and XML</li>
				<ul>
					<li>JSF Files</li>
					<ul>
						<li>JSF Source</li>
						<li>JSF Styles</li>
						<li>JSF Templates</li>
					</ul>
					<li>Application Configuration Resource File</li>
					<ul>
						<li>Default filename</li>
						<li>Default servlet-mapping</li>
					</ul>
				</ul>
			</ul>
		</p>

		<h4>Extensibility</h4>
		<ul>
			<li>Base Eclipse functionality will allow extensibility</li>
		</ul>



		<h2>Creation Features</h2>

		<h3>Create JSF Project Wizard</h3>
		<p>

			Will add page(s) to the Dynamic Web Project Wizard to create
			a web project and also perform the following feature's
			functionality.
		</p>
		<h4>Extensibility</h4>
		<ul>
			<li>
				Extension point(s) will be provided to allow plugins to
				add functionality to the wizard
			</li>
		</ul>

		<h3>Add JSF Capabilities to Existing Web Project Wizard</h3>
		<p>
			Will provide the following functionality:
			<ul>
				<li>Select JSF implementation from registry</li>
				<li>Select component libraries (optional)</li>
				<li>
					Create single application configuration resource
					file
					<ul>
						<li>
							Filename defaults to preference, overridable
						</li>
						<li>
							Location defaults to ".../WEB-INF",
							overridable
						</li>
						<li>
							Updates context-param in web.xml if selected
							location/filename is not
							"WEB-INF/faces-config.xml"
						</li>
					</ul>
				</li>
				<li>
					Updates web.xml with servlet and servlet-mapping
					information
					<ul>
						<li>
							Servlet name/classname default to
							preferences, overridable
						</li>
						<li>
							Servlet-mapping defaults to preference,
							overridable
						</li>
					</ul>
				</li>
				<li>
					Add "JSF Feature" to project
					<ul>
						<li>
							Create Component Library Container in
							project
						</li>
					</ul>
				</li>
			</ul>
		</p>
		<h4>Extensibility</h4>
		<ul>
			<li>
				Extension point(s) will be provided to allow plugins to
				add functionality to the wizard
			</li>
		</ul>

		<h3>Add JSF JSP Page Wizard</h3>
		<p>
			Based upon same wizard flow as JSP page creation wizard,
			will provide the following functionality:
			<ul>
				<li>Select name and location</li>
				<li>Select JSF template (optional)</li>
				<li>
					Possibly elect to "auto-bind" to a managed bean
					(create or select existing bean)
				</li>
			</ul>
		</p>
		<h4>Extensibility</h4>
		<ul>
			<li>
				Extension point(s) will be provided to allow plugins to
				add functionality to the wizard
			</li>
		</ul>

		<h3>Create Application Configuration Resource File Wizard</h3>
		<p>
			Will provide the following functionality:
			<ul>
				<li>Filename defaults to preference, overridable</li>
				<li>Location defaults to ".../WEB-INF", overridable</li>
				<li>
					Updates context-param in web.xml if selected
					location/filename is not "WEB-INF/faces-config.xml"
				</li>
			</ul>
		</p>
		<h4>Extensibility</h4>
		<ul>
			<li>
				Extension point(s) will be provided to allow plugins to
				add functionality to the wizard
			</li>
		</ul>

		<h3>
			Application Configuration Resource File Artifact Creation
			Dialogs
		</h3>
		<p>
			Several dialogs will be provided to assist in creation of
			artifacts found in application configuration resource
			dialogs. They will be invoked through several mechanisms
			whenever creation of an artifact is desired and indicated by
			the user.
		</p>
		<h4>Create Managed Bean Dialog</h4>
		<p>
			Will collect necessary information from user to register a
			managed bean and optionally also create the Java class.
		</p>
		<h4>Create Navigation Rule Dialog</h4>
		<p>
			Will collect necessary information from user to register a
			navigation rule.
		</p>

		<h4>Create Validator Dialog</h4>
		<p>
			Will collecte necessary information from user to register a
			validator.
		</p>

		<h4>Create Converter Dialog</h4>
		<p>
			Will collect necessary information from user to register a
			converter.
		</p>

		<h4>Create Renderer Dialog</h4>
		<p>
			Will collect necessary information from user to register a
			renderer.
		</p>

		<h4>Create Phase Listener Dialog</h4>
		<p>
			Will collect necessary information from user to register a
			phase listener.
		</p>

		<h4>Create Component Dialog</h4>
		<p>
			Will collect necessary information from user to register a
			component.
		</p>



		<h2>
			Application Configuration Resource File Editing Features
		</h2>

		<h3>Multi-page Editor</h3>
		<ul>
			<li>
				Navigation Rules Diagram Page
				<ul>
					<li>
						"Source View" objects can be arbitrary strings,
						not just JSP page names
						<ul>
							<li>
								Allow "Source View" object to represent
								both JSP Pages and arbitrary strings
								(e.g. "logon.jsp" and "*/orders/*")
							</li>
							<li>
								If associated with JSP Page, rendered as
								such and opened as JSP Page
							</li>
						</ul>
					</li>
					<li>
						Palette
						<ul>
							<li>Items for navigation rules only</li>
							<li>Support drag-and-drop from palette</li>
						</ul>
					</li>
					<li>
						Allow editing both directly on diagram and in
						Properties view
					</li>
				</ul>
			</li>
			<li>
				Source Page
				<ul>
					<li>SSE-based XML Editor</li>
					<li>JSF-specific content assist</li>
					<li>
						Drag-and-drop from palette into Source editor
						(if we provide palette)
					</li>
					<li>
						"Hot linking" (ctrl-click) for classes, etc.
					</li>
				</ul>
			</li>
			<li>
				First-Class Artifacts Editor Page
				<ul>
					<li>
						Provide page to allow editing of managed beans,
						navigation rules, validators, converters,
						renderers, phase listeners, and components
					</li>
				</ul>
			</li>
		</ul>
		<h4>Extensibility</h4>
		<ul>
			<li>
				Extension point(s) will be provided to allow plugins to
				add functionality to the editor
			</li>
			<li>
				Extension point(s) will be provided to allow plugins to
				add functionality to palette(s)
			</li>
		</ul>

		<h3>Content Outline View</h3>
		<p>
			Will provide necessary Eclipse artifacts to populate the
			Content Outline view.
		</p>

		<h3>Properties View</h3>
		<p>
			Will provide necessary Eclipse artifacts to populate the
			Properties view.
		</p>
		<h4>Extensibility</h4>
		<ul>
			<li>
				Extension point(s) will be provided to allow plugins to
				provide specialized property editing
				<ul>
					<li>
						ISV should be able to provide complete
						Properties view replacement
					</li>
					<li>
						ISV should be able to provide specialized
						editors for advanced cell editing in Properties
						view provided by us
					</li>
				</ul>
			</li>
		</ul>

		<h3>Menus and Toolbars</h3>
		<p>Will provide necessary menu and toolbar items.</p>

		<h4>Extensibility</h4>
		<ul>
			<li>Base Eclipse functionality will allow extensibility</li>
		</ul>



		<h2>JSF JSP Page Editing Features</h2>

		<h3>Multi-page Editor</h3>
		<ul>
			<li>
				Design Page
				<ul>
					<li>
						Graphical design page (WYSIWYG, or as close as
						possible)
					</li>
					<li>Drag-and-drop from palette</li>
				</ul>
			</li>
			<li>
				Source Page
				<ul>
					<li>SSE-based XML Editor</li>
					<li>JSF-specific content assist</li>
					<li>
						Drag-and-drop from palette into Source editor
						(if we provide palette)
					</li>
					<li>
						"Hot linking" (ctrl-click) for classes, etc.
					</li>
				</ul>
			</li>
		</ul>
		<h4>Extensibility</h4>
		<ul>
			<li>
				Extension point(s) will be provided to allow plugins to
				add functionality to the editor
			</li>
			<li>
				Extension point(s) will be provided to allow plugins to
				add functionality to palette(s)
			</li>
		</ul>

		<h3>Content Outline View</h3>
		<p>
			Will provide necessary Eclipse artifacts to populate the
			Content Outline view.
		</p>

		<h3>Properties View</h3>
		<p>
			Will provide necessary Eclipse artifacts to populate the
			Properties view.
		</p>

		<h4>Extensibility</h4>
		<ul>
			<li>
				Extension point(s) will be provided to allow plugins to
				provide specialized property editing
				<ul>
					<li>
						ISV should be able to provide complete
						Properties view replacement
					</li>
					<li>
						ISV should be able to provide specialized
						editors for advanced cell editing in Properties
						view provided by us
					</li>
				</ul>
			</li>
		</ul>

		<h3>Menus and Toolbars</h3>
		<p>Will provide necessary menu and toobar items.</p>
		<h4>Extensibility</h4>
		<ul>
			<li>Base Eclipse functionality will allow extensibility</li>
		</ul>



		<h2>Model/API Features</h2>

		<h3>EMF Models</h3>
		<p>
			We need to utilize existing or create new EMF models for (at
			least) the following:
			<ul>
				<li>Application Configuration Resource File</li>
				<li>JSP Page</li>
				<li>JSF JSP Page</li>
				<li>Tag Library Descriptor</li>
			</ul>
		</p>
		<h4>Extensibility</h4>
		<ul>
			<li>
				Extension point(s) may be desirable to allow plugins to
				hook into the EMF notification mechanism of models (that
				we create) to listen to model events (for example)
			</li>
			<li>
				API generated by EMF provides programmatic access to
				model(s)
			</li>
		</ul>

		<h3>EMF/SSE Synchronization</h3>
		<p>
			Must be able to keep EMF model and SSE model synchronized,
			since we will be using both SSE-based editors and editors
			that we provide.
		</p>

		<h2>Execution/Runtime Features</h2>

		<h3>JSF Debugging</h3>
		<ul>
			<li>
				We will not break inside a component - design and debug
				for component development is not supported by this
				project today
			</li>
			<li>
				We will leverage WTP-provided JSP debugging capabilities
			</li>
			<li>
				Managed bean debugging is available for free (managed
				bean is Java class)
			</li>
		</ul>
		<h4>Extensibility</h4>
		<ul>
			<li>
				Extension point(s) may be desirable to allow plugins to
				provide advanced debugging capabilities
			</li>
		</ul>

		<h3>Deploy/Run</h3>
		<p>
			We will leverage WTP-provided deployment and run
			capabilities.
		</p>
		<h4>Extensibility</h4>
		<ul>
			<li>
				Extension point(s) may be desirable to allow plugins to
				provide advanced deploy/run capabilities
			</li>
		</ul>

		<h2>Other Features</h2>

		<h3>
			Use Eclipse Quick Fix Functionality to Create Managed Beans
		</h3>
		<ul>
			<li>
				Requires EL parser and page validation (possibly
				available in SSE?)
			</li>
			<li>Will spawn managed bean creation dialog</li>
		</ul>
		<h4>Extensibility</h4>
		<ul>
			<li>Base Eclipse functionality will allow extensibility</li>
		</ul>
		<h3>
			Application Configuration Resource File Resource
			Modification Participation
		</h3>
		<p>
			An application configuration resource file will participate
			in typical Eclipse resource modification operations, such as
			refactoring. Some examples are:
			<ul>
				<li>
					Renaming a managed bean will cause any reference to
					the renamed bean in an application configuration
					resource file to be updated
				</li>
				<li>
					Renaming a JSP page will cause any reference to the
					renamed JSP page in an application configuration
					resource file to be updated
				</li>
			</ul>
		</p>

		<h3>Content Assist for Expression Language (EL)</h3>
		<p>
			Need to provide content-assist for Expression Language (EL).
		</p>
		<h4>Extensibility</h4>
		<ul>
			<li>
				Extension point(s) may be desirable to allow plugins to
				provide advanced content assist capabilities
			</li>
		</ul>

	</body>
</html>
