Enhancements for JHeadstart Generator/Consolidation of best practices

6

After having worked on the JHeadstart Designer Generator, the various JDeveloper Add-ins for JHeadstart, the runtime framework-classes and the documentation, I feel it is now time to delve into the generator itself. In discussions with a customer yesterday, we came up with a list of potential and desirable enhancements to the JHeadstart 10g Application Generator. In short, the list contains the following ideas:
(by the way, also see my previous post on OTN)

  • Done, including radioStyle Horizontal and Vertical, NullValueLabel for radiobutton for null valueradiogroups (based on domains or on a lookup, just like the choice element and checkbox are)
  • new display types fileUploadDownload, fileUploadImage (to not have to deal with additional VO attributes and BC4J RowImpl editing)
  • Donesupport property FIND_PROMPT to use on a find page (now the same prompt is used in Find, Table and Form-pages)
  • Donesupport property TABLE_PROMPT to use on a find page (now the same prompt is used in Find, Table and Form-pages; the table prompt, used as column header, can be required to be shorter that the normal item prompt)
  • Done (styleClass, not yet distinction between findStyleClass and tableStyleClass)support custom property styleClass (to set specific, individual styles on items; perhaps we should discern between findStyleClass and tableStyleClass?)
  • Done support property onBlur to allow developer to specify piece of JavaScript to be executed on the onBlur() event; also done: onChange, onFocus, onClick and onDblClick; again: maybe discern between find, table and form
  • JSP Breadcrumbs (use UIX breadcrumbs as example)
  • DoneStacked/Tabbed Regions (use our recipe as example)
  • DoneSide by Side regions
  • JSP Detail Disclosure (use code from SAFA) (styles: unfold/disclose, float (a clientside popup DIV), below,right
  • Overflow below??
  • Default values on insert page?
  • Default values on find page?
  • Display value in Select for the null value (when an attribute is linked with a domain or lookup it may include an empty value (to reset the property); it can be desirable to specify a meaning (display label) for that empty value (Donethis has been done for radiobuttons)
  • Custom property Sortable? on VO attributes
  • Support for standard Validations
  • Support for aggregation fields – either in the master block (on a master-detail same page) or in the table-footer
  • Support for custom property to link to a context-sensitive on-line help system
  • Support for custom property to indicate the VO Attribute that provides an ALT text for an image
  • Support for custom property to indicate the VO Attribute that provides the file name for a Download (and perhaps mimetype as well)
  • Support for Find-Lookup: a choice on a findpage is populated with values (for example all currently existing distinct values for that property) to aid the user while composing a query; this ‘set of values’ is not imposed during insert/update
  • DoneClient side enforcement of Uppercase or Lowercase (as set in RESTRICT_CASE property); added the option initCap
  • if a field is display only and it is based on a domain, then the domain meaning should be displayed instead of the domain value that is stored in the attribute (see solution for TMI, use JSTL and compare code for radiobuttons based on domains)
  • Donesupport radioStyle matrix (for example a 2 x 3 grid)
  • >Donesupport ‘alt text’ or bubble text for prompt (see UIX) – I am not sure exactly how this is done, probably IE only, but UIX has it: hover mouse over text item or just boilerplate and a popup displays with any text you like; in UIX the hint text I believe; this features uses the title attribute of the
    item in HTML (Struts supports in
  • Donenew property Table Display Type (to discern between display type in Form and Table)
  • Quick Search feature: a find-”region” in the top of the TablePage; a new VO Attribute property is used to specify which attributes go in the Quick Search
  • DoneDisplay Type hyperlink and hyperlinkTextInput – to display the value as a hyperlink or present an image that provides hyperlink navigation for the value in the text-item (also see JHeadstart Cookbook Recipe)
  • Display Type htmlTextArea (also see JHeadstart Cookbook Recipe)
  • DoneWhen display type is lov, show just ‘boilerplate text’ instead of a disabled text item (also see JHeadstart Cookbook Recipe
  • Support Navigation Element in Application Structure file (just like lookups); a navigation element specifies navigation to another Group, either in a popup window or to replace the current window; the navigation links a base value attribute with a lookup value attribute; the navigation can be presented as a hyperlink or using a button
  • In-page menu with Regions and Groups to quickly navigate within the page; the menu can be displayed as select or tree/bullet-list-with-hyperlinks
  • DisplayType email (provide send-to link)
  • DoneDisplayType detailsLink – use a readonly value as hyperlink to the formPage instead of/as Details button; also implement a Group property detailsLinkStyle, values buttonEnd (Default), buttonBegin, buttonBeginEnd and recordDoubleClick
  • Indicate sort-direction (asc/desc) in Table Column Header
  • Table-Scroll within page (using a DIV with scrollbar you can display a fixed number of records while through the scrollbar, client-side, all records can be seen and edited
  • Allow a list of supported languages and countries to be defined to have multiple resource bundles generated in one go
  • Allow a post-generation stylesheet and class to be defined for post-processing of the generated struts-config.xml and the individual JSP-files. This should be available at service level and perhaps at group (and lookup) level as well, maybe even with a distinction between find,form and table-JSPs
  • Allow groups to be set to ‘not include in menu’, for example for groups that will only be navigated to from other groups or groups that serve for LOV purposes
  • Allow initial action to be set for a group: values are insert, find (if there is a findpage), table (if there is a tablepage) and form (if there is a formpage);
  • Allow a Required Item Style and a Required Prompt Style to be defined at Grouplevel (and perhaps Service level as well); also allow a Required Marker (default = *) to be set
  • DoneDisplay multiple descriptor properties in LOV window (the JSP is prepared, it is just the JAG that should include the additional property-names
  • Use VO Attribute settings for generating the LOV JSP
  • DoneSupport Lookup AutoQuery
  • Return multiple values from LOV
  • Service level property to switch title attribute (alt-text) on/off
  • Allow a lookup to be associated with a Group that provides the LOV; link baseDisplayAttributes to Group Attributes.
  • Use Region in Table layout, to group columns; allow groups of columns (or even individual columns) to be hidden/displayed
  • Provide way to dynamically specify the CSS to (also) use ; this allows one application with multiple look&feel styles for different users/usercommunities. Can we do the same with ResourceBundles??
  • When a Child has a one-to-one association with its master, can it be included (within the JSP) in the master-layout (master and child both a formlayout, intermingled on one JSP)
  • Allow new rows in combination with tablerange
  • Provide link in Form Page to Table Page with most recent search result (poor man’s breadcrumb)
  • Allow new rows only to be set when currently no (or less than x) rows exist
  • Allow DetailGroup same-page and table-form layout
  • Support attribute level Date Format property
  • Support key-arrow-up and key-arrow-down to navigate between records in a table layout
  • Detail Group same-page: allow to be side-by-side and stacked in addition to below, just like Regions
  • Generate DataObject HandlerImpl Classes and cle-providers.xml for Toplink based application

The work thusfar has resulted in 0.1 release with some of the discussed functionality; you can try it out by downloading this file: ZipFile (for JSP generation only!!):

  • - Distinction between DisplayType and Table DisplayType
  • - Distinction between FindPrompt, TablePrompt and (normal) Prompt
  • - Support for new displayTypes: radio (horizontal, vertical, matrix), hyperlink, detailsLink (note: radio can be used for Domain based attributes as well as Lookup-backed attributes)
  • - Support for HTML title attribute (this results in balloon text – aka bubble text or ALT text – on any item, not just images); the Hint text when specified is taken for the title; the hint text has been NLS enabled
  • - Event properties on ViewAttributes: The following JavaScript events are supported: onFocus, onBlur, onChange, onClick, onDblClick; you can define the JavaScript statement to be executed on the event specified.
  • - support for html attributes class and id (to specify individual styles for items) for items and prompts
  • - new property null value label through which you can specify the text that should be displayed for the radio button for the “empty value”
  • - RestrictCase extended with InitCap; furthermore: upper, lower and initCap are ‘enforced’
  • - new VO Attribute and Group level property: Post Generation Notes (for documentation purposes)
  • - new Group level property (for Table Page): Details Link Style (values: buttonBegin, buttonEnd (default), buttonBeginEnd and recordDoubleClick

Work on a 0.2 resulted in a 0.2 release: o.2 release of the AMIS JHeadstart 9.0.5.1 extensions See this document for installation instructions: Installation Instructions for AMIS JHeadstart Application Generator Extensions. See this document for an overview of the functionality provided by the JAG Extensions: Overview of AMIS JHeadstart Application Generator Extensions.
Download the ALS GenExt Application with most of the new JAG features applied here: Als9051GenExt.zip (6Mb).
See for instructions to install the ALS GenExt Application here: Als GenExt installation instruction. The 1.0 release of the ALS GenExt set: AMISJagGenExtensions1_0.zip

See this document for an introduction to the JAG Extensions, including the position of Oracle: Introduction to AMIS JHeadstart Application Generator Extensions

  • Group Level properties: onSubmitTable, onSubmitForm, onSubmitFind; these allow you to define JavaScript code that gets executed just prior to submitting the form
  • Group level property: hasQuickSearch; VO Attribute property: IN_QUICKSEARCH; to be implemented: generation of quick search above tablepage
  • Region Level property: styleClass, styleId
  • Region Level property: relativePosition (value: below (default) and next to (to support side by side regions); also stacked to allow stacked Regions
  • Group Level properties: defaultStyleClass and defaultPromptStyleClass, defaultTableStyleClass and defaultTablePromptStyleClass
  • Property on Lookup: Additional Descriptor Properties to display more than only the LookupDisplayAttribute in the generated LOV page
  • Lookup properties: useTableRange, tableRangeSize, autoQuery
  • Default value for Display Width (if none was specified on either EO or VO Attribute) is now set at 50 (instead of just taking the database column width)

Work on 0.3 will commence shortly and includes the following functionality:

  • User defined post generation Stylesheets for Struts-Config and JSP
  • User defined post generation Class for Struts-Config and JSP
  • Attribute level property Align
Share.

About Author

Lucas Jellema, active in IT (and with Oracle) since 1994. Oracle ACE Director for Fusion Middleware. Consultant, trainer and instructor on diverse areas including Oracle Database (SQL & PLSQL), Service Oriented Architecture, BPM, ADF, Java in various shapes and forms and many other things. Author of the Oracle Press book: Oracle SOA Suite 11g Handbook. Frequent presenter on conferences such as JavaOne, Oracle OpenWorld, ODTUG Kaleidoscope, Devoxx and OBUG. Presenter for Oracle University Celebrity specials.

6 Comments

  1. Pingback: Headphones For Less

  2. Pingback: Debt Help Free

  3. Pingback: Surfboard

  4. Pingback: Gold Diamonds

  5. Pingback: Backpacking Gear

  6. Pingback: My Credit Scores