0% found this document useful (0 votes)
44 views

Oracle Forms - Javabean Tree

This document describes how to build a hierarchical tree menu in an Oracle Forms application using data from database tables. It discusses the database objects needed including tables for storing menu options and roles. It also explains how to populate the tree with a CONNECT BY query on the menu table and handle enabling roles by filtering the query. The sample application demonstrates expanding, collapsing, and selecting nodes in the tree as well as calling corresponding screens on double click.

Uploaded by

SANJAY
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
44 views

Oracle Forms - Javabean Tree

This document describes how to build a hierarchical tree menu in an Oracle Forms application using data from database tables. It discusses the database objects needed including tables for storing menu options and roles. It also explains how to populate the tree with a CONNECT BY query on the menu table and handle enabling roles by filtering the query. The sample application demonstrates expanding, collapsing, and selecting nodes in the tree as well as calling corresponding screens on double click.

Uploaded by

SANJAY
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

4/19/2018 Oracle Forms – Javabean

Oracle Forms
Handle hierarchical trees
Home page

1. Purpose

This is an article to show how to handle a hierachical tree in an Oracle Forms


application.

The goal is to build a tree menu with the possibility of enabling the database roles.

There are 2 ways to populate a hierarchical tree in Forms:

§ Using a record group / query


§ Building the tree with the Add_Tree_Node() built-in

Because we want to handle a database stored menu, this sample use the first option with a
record group populated by a database table.
https://sheikyerbouti.developpez.com/tree/tree.htm 1/6
4/19/2018 Oracle Forms – Javabean

This table contains the corresponding menu options.

2. The database objects


This example needs 2 tables to handle the menu options and their corresponding roles:

1. The table that contains the menu options : MENU

CREATE TABLE MENU


(
ID NUMBER(5), -- Unique identifiant
LABEL VARCHAR2(128 BYTE), -- Tree label
ICON VARCHAR2(40 BYTE), -- Icon name
MASTER NUMBER(5), -- Parent ID
STATUS NUMBER(1) DEFAULT 1, -- Initial status of the node
VALUE VARCHAR2(128 BYTE) -- Dialog name to call
)
/

ICON contains the icon name (without extension) attached to the node.

STATUS can take one of the three possible values:


§ 0 normal (Not expandable)
§ 1 expanded
§ -1 collapsed

2. The table that contains the corresponding roles : MENU_ROLES

CREATE TABLE MENU_ROLES


(
ID NUMBER(5), -- Menu identifiant
ROLE VARCHAR2(30 BYTE) -- Role name
)
/

If you want to enable the database roles in the tree menu, you have to execute the following
steps :

§ Create the necessary roles in the database

CREATE ROLE ROLE_MENU1


CREATE ROLE ROLE_MENU2
...

§ Grant the roles to the users

GRANT ROLE_MENU1 to user1


GRANT ROLE_MENU1 to user2
...

This sample needs the ROLE_MENU1 and ROLE_MENU2 roles enabled.

Here is the content of the tables after the provided script is executed:

Table : MENU

ID LABEL ICON MASTER STATUS VALUE


1 Menu1 mainmenu 1
https://sheikyerbouti.developpez.com/tree/tree.htm 2/6
4/19/2018 Oracle Forms – Javabean
2 Menu1 Option 1 optionmenu 1 1 Dialog11
3 Menu1 Option 2 optionmenu 1 1 Dialog12
4 Menu1 Option 3 optionmenu 1 1
5 Menu1 Opt 3 Sub Opt 3 suboptionmenu 4 1 Dialog131
6 Menu2 mainmenu -1
7 Menu2 Option1 optionmenu 6 1 Dialog21

Table MENU_ROLES :

ID ROLE
1 ROLE_MENU1
2 ROLE_MENU1
3 ROLE_MENU1
4 ROLE_MENU1
5 ROLE_MENU1
6 ROLE_MENU2
7 ROLE_MENU2

3. How to populate the hierarchical tree


The Forms tree needs five column to work correctly:

SELECT STATUS, LEVEL, LABEL, ICON, VALUE


FROM MENU

Four of them come from the table:

STATUS that indicate the initiate status of the node


LABEL that is the visible label of the node
ICON that contains the (16x16 pixels) icon name of the node (can be NULL)
VALUE that contains the value of the node

LEVEL, wich is a “CONNECT BY” specific pseudo-column specifies the depth at


which the individual node appears.

The tree is populated with a record group...

HTREE := FIND_ITEM('BL_TREE.MENU');
V_IGNORE := POPULATE_GROUP('RG_TREE');
FTREE.SET_TREE_PROPERTY(HTREE, FTREE.RECORD_GROUP,'RG_TREE');

... , itself populated with a CONNECT BY query.

SELECT STATUS, LEVEL, LABEL, ICON, VALUE


FROM MENU
CONNECT BY PRIOR ID = MASTER
START WITH MASTER IS NULL

Two buttons are added to show how to expand or collapse all the nodes of the tree:

https://sheikyerbouti.developpez.com/tree/tree.htm 3/6
4/19/2018 Oracle Forms – Javabean

A single click populate the “Node selected” display item.

A double click populate the “Node activated” display item and call the corresponding screen:

https://sheikyerbouti.developpez.com/tree/tree.htm 4/6
4/19/2018 Oracle Forms – Javabean

A radio button allows to take into account the database roles.


For this purpose, the tree use another record group (RG_TREE_ROLES) that filters the
query.

SELECT m.STATUS, LEVEL, m.LABEL, m.ICON, m.VALUE


FROM MENU m
WHERE EXISTS
(
Select ROLE From MENU_ROLES
Where ID = m.ID
And ROLE IN (Select granted_role From user_role_privs)
)
CONNECT BY PRIOR ID = MASTER
START WITH MASTER IS NULL

4. The sample dialog


Ø Download the tree.zip file

Ø Unzip the tree.zip file

Ø Run the tree_install.sql script under Sql*Plus or Sql Developer.

https://sheikyerbouti.developpez.com/tree/tree.htm 5/6
4/19/2018 Oracle Forms – Javabean

Ø Create the 2 roles ROLE_MENU1 and ROLE_MENU2.

Ø Assign ROLE_MENU1 to one user and both roles to another user.

Ø Copy the 4 icons of the /icons directory in your icons directory

Ø Open the tree.fmb module (Oracle Forms 10.1.2)

Ø Compile all and run the module

https://sheikyerbouti.developpez.com/tree/tree.htm 6/6

You might also like