blob: dcaebdbe192a23b478b3dc5ed117d62cd4c319ad [file] [log] [blame]
<?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>