Posts tagged rich client components
Bookreview: Oracle Fusion Developer Guide
Apr 20th
Oracle Fusion Developer Guide: Building Rich Internet Applications With Oracle ADF Business Components And Oracle ADF Faces
In December 2009 some 750 pages of ADF examples and ADF how-to’s were released in a great book: “Oracle Fusion Developer Guide: Building Rich Internet Applications With Oracle ADF Business Components And Oracle ADF Faces” by Frank Nimphius and Lynn Munsinger.

I ordered the book at amazon (this is the direct link) and received it by mail a few weeks later. In this post I share my first impressions with you. Read the rest of this entry »
ADF 11g – implementing conditionally required input fields – by playing client side hide and seek
Dec 17th
The requirement I was dealing with today in ADF 11g Rich Client Components was the following: we have an input field that is required under certain conditions. Only when one of this cluster of fields has a value, is it required. Otherwise it is optional. The use case was that the fields represent a detail record. There does not need to be a detail record (optional) but if there is one (one of the fields in the detailrecord has a value), then certain fields are mandatory.
The desire was to dynamically set the required-ness of the inputText – depending on whether one of the items in the detail record cluster has a value or not. Dynamically means that when something changes with one of the items, the conditionally required item is immediately refreshed to either required or optional.

It turned out to be fairly easy to implement: the required attribute can be set using an EL expression that refers to a bean method. In the bean we can easily check the values of the other items and determine whether or not based on that assessment the inputText component is mandatory or not. By setting autoSubmit to true for all the items that determine the mandatoriness – and by adding the inputText as a partialTarget in the PPR request, we achieve the desired functionality. However … Read the rest of this entry »
ADF 11g – the native AutoSuggest behavior
Nov 25th
The recent ADF 11gR1 PS1 release introduced a component we have been waiting for: the inputText with AutoSuggest. An inputText component that will present suggested values to the user depending on whatever text the user has already entered. The implementation in ADF of the functionality that got AJAX started, based on the original Google Suggest feature:

The auto suggest mechanism in ADF is not so much a new input component as it is a behavior (component) that can be added to inputText components. By adding the properly configured autoSuggest to an inputText, it is turned into an inputText with autoSuggest:
<af:inputText label="Country" value="#{item.country}"
columns="20" id="it5">
<af:autoSuggestBehavior suggestedItems="#{countrySuggester.getCountries}"/>
</af:inputText>
Here we have added the autoSuggestBehavior to an inputText that is used for entering a country. Of course we could have used a dropdown component, combobox or list of values. However, the auto suggest is somewhat more light weight and elegant especially when our collection of countries is far from complete, and we only have a limited number of suggestions to offer – and we certainly would not want to suggest that the user can only choose from the values we are proposing.

ADF 11g: Carousel is not just for images – on carousels with panelbox, tabs, panelform and input components
Nov 24th
Following on the heels of Luc's excellent post on the new ADF 11g carousel component – http://technology.amis.nl/blog/6514/jdeveloper-11112-carousel-component-as-master-and-detail – is another article that shows off this visually attractive component, using it in a slightly different way.
Even though the most logical application of the ADF 11gR1 PS1 carousel component is to use for displaying images, the component does not mandate that approach. We can create carousel-items that contain whatever we like – including forms with enterable items. The carousel can be used for example as an alternative way of presenting, browsing through and editing detail records.

As you can see in this screenshot, a carousel item can hold various nested components, such as PanelBox, PanelTabbed, PanelFormLayout and all kinds of input components.
ADF 11g – persisted run time user UI personalization or: Impatient man’s MDS
Jan 9th
One of the rather cool pieces of functionality that did not make it into the JDeveloper 11g Boxer release of early October 2008 is the Meta Data Service or MDS and especially its capability to store and reapply user created personalizations of the User Interface across sessions. Some simple examples of what this means: ADF 11g Rich Client Components allow users to manipulate the state of components – such as the position of the separator in the PanelSplitter, the ordering and width of Table Columns, the initially visible tab or accordion child etc.. Through MDS, these changes are captured and stored for th duration of the session (if so desired), which means that when the user returns to a page thus ‘personalized’, the component will not assume their default state as specified in the JSF page at design time by the developer, but rather the state that user specified. Eventually MDS will persist these component personalizations across sessions – but not right now. That means that at the present when a user starts a new session, all components are presented in their default state.
In this article I will describe two things: Change Persistency for all attributes – not just the built-in settings that can be manipulated through the components and Persisting the changes across sessions, even with the current release of JDeveloper, ADF and MDS.
ADF 11g – reducing the price of richness or how to streamline downloading Javascript Resources for ADF 11g Rich Client components
Jan 7th
When you run a ADF Faces 11g Rich Client components application, you (or rather your users) are hit with a substantial JavaScript download overhead. It is not surprising, given the richness of the component library. However, especially for internet applications targeted at external users – consumers, customers – it may be very undesirable to have them wait up to several seconds for this download to complete.
The default splash-page that displays during the load of the Javascript surely looks familiar. (note: the resources section of this article has a reference to an article by Frank Nimphius that explains how to get rid of the splash-page -or modify it-; however, that does not take away the download overhead itself unfortunately).
Especially if the first page in the web application does not really use all that much richness to begin with. It is not uncommon to have a homepage that is largely static, pretty and heavily styled through CSS with perhaps a global search item, a couple of navigation links or buttons and maybe some newsfeeds or special offers. Or to start the application with a fairly simple login page.
This article describes how to reduce the (initial) download size to have the first page in an ADF 11g Rich Client Faces application display much more rapidly.
ADF 11g Rich Client Components – programmatically adding a ShowPopupBehavior
Dec 11th
This morning I received an email from a reader of one of my articles on the blog. The challenge in the email: I want to programmatically create an input field. Then I want to add a showpopup behavior to this input field – to have a popup display when the field is hovered over with the mouse. It turns out that the ShowPopupBehavior is not a UIComponent that you can simply add a child to another UIComponent. So could it be done and if so, how?
A little investigation made clear Read the rest of this entry »


