Shuttle region allows users to move items between two lists as well as reorder the items in the list. When you implement a Shuttle region, you define two lists:
1) Create a new region under pageLayout of type shuttle. This will automatically create a region for leading list.
2) Add Trailing list: right click shuttle region --> new --> Trailing.
3) Add trailing footer to display button: Again right click on shuttle region --> new --> trailingFooter. This will create a flowLayout region under trailingFooter.
4) Add 'Display Items' button: Create an item of type submitButton under the flowLayout region.
Now change the properties for each field from property inspector as shown below:
Available Header: Available Employees
Selected Header: Selected Employees
list2:
We will catch the button event (displayBtn) in PFR method of controller and display a message showing all the employees present in selected list. If there is no item in selected list, throw an error message. Below is code for the same:
Below is how the error message will appear:
A Leading list (Available List) - from which user can select items from a given list of items
A Trailing list (Selected List) - user will select item from Leading list and move those to this trailing list.
Also we can implement a Shuttle region with just one list, to achieve only Reorder functionality, in that case only a Leading list is required.
We can also add buttons/icons in the footer below each of the Shuttle lists. By Simply defining Leading footer child or Trailing footer child in region creates a flowLayout region by default, to which we can add a button or image.
Here, I have created a simple page to implement shuttle region. User will select employee name from 'Available List' and move them to 'selected List'. A button is also added at footer of trailing list. Clicking on this button will show all the employees selected in a message.
1) Create a new OA page:
=========================
Right click on project (xxcus) --> New --> Web Tier --> OA Components --> select 'Page' item. Click OK. (This will open a popup window)
We are creating a page for implementing shuttle region, so specify the details of page as below:
Name: XxShuttleDemoPG
Package: xxcus.oracle.apps.fnd.shuttledemo.webui
2) Create a new view objects (VO):
=========================
Right click --> New View Object (This will open a wizard having 7 steps).
Step 1
Package: xxcus.oracle.apps.fnd.shuttledemo.server
Name: XxEmpShuttleVO
Choose the radio button 'Read-only Access' (as there is no DML operation). Click Next.
Step 2
Enter the below query in 'Query Statement':
select ename from employee
Keep defaults for step3, 4, 5, 6 & 7 and click Finish. Save All.
3) Create a new Application Module (AM):
=========================
Step 1
Package: xxcus.oracle.apps.fnd.shuttledemo.server
Name: XxShuttleDemoAM. Click Next.
Step 2
Here we will add an instance of the VO created in (2). Select XxEmpShuttleVO from 'Available View Objects' and shuttle it to 'Data Model' using ">" button.
Keep defaults for all other steps (3, 4). Click Finish.
4) Create a new Controller (CO):
=========================
Right click on pageLayout region and create a new controller
Name: XxShuttleDemoCO
package: xxcus.oracle.apps.fnd.shuttledemo.webui
5) Creating the Page Layout & Setting its Properties :-
==========================
The page will appear as below:
The page will appear as below:
1) Create a new region under pageLayout of type shuttle. This will automatically create a region for leading list.
2) Add Trailing list: right click shuttle region --> new --> Trailing.
3) Add trailing footer to display button: Again right click on shuttle region --> new --> trailingFooter. This will create a flowLayout region under trailingFooter.
4) Add 'Display Items' button: Create an item of type submitButton under the flowLayout region.
Now change the properties for each field from property inspector as shown below:
pageLayout:
ID: pageLayoutRN
AM Definition: xxcus.oracle.apps.fnd.shuttledemo.server.XxShuttleDemoAM
Window Title: Shuttle Demo Page
Title: Shuttle Demo
shuttle:
ID: shuttleRNAvailable Header: Available Employees
Selected Header: Selected Employees
leadingList:
Picklist View Definition: xxcus.oracle.apps.fnd.shuttledemo.server.XxEmpShuttleVO
Picklist View Instance: XxEmpShuttleVO1
Picklist Display Attribute: Ename
Picklist Value Attribute: Ename
Picklist Display Attribute: Ename
Picklist Value Attribute: Ename
submitButton:
ID: displayBtn
Prompt: Display Items
The declarative page structure in jDev will be similar to as shown below:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| public void processFormRequest(OAPageContext pageContext, OAWebBean webBean) { super .processFormRequest(pageContext, webBean); String message = "" ; if (pageContext.getParameter( "displayBtn" ) != null ) { OADefaultShuttleBean shuttle = (OADefaultShuttleBean)webBean.findChildRecursive( "shuttleRN" ); String[] items = shuttle.getTrailingListOptionValues(pageContext, shuttle); if (items != null ) { for ( int i = 0 ; i < items.length - 1 ; i++) { message = items[i] + " , " + message; } message = message + items[items.length - 1 ]; throw new OAException( "Items in trailing list are: " + message, OAException.INFORMATION); } else { throw new OAException( "Please shuttle at least one item from available list." , OAException.ERROR); } } } |
Below is how the error message will appear:
please could you provide solution/suggestion for using HGrid Tree as available/selected lists.
ReplyDeleteNice article.
ReplyDeleteWe are providing Oracle OAF Online training.For more visit my site ORACLE OAF ONLINE TRAINING
Thank you very for sharing this valuable information.Oracle OAF Online Training
ReplyDelete