| <?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> |