Hide disclose icon form ADF tree row depending on row data
Hello,
I've got an ADF tree based on recursive View Object. So basically we don't know how many tree levels are there, but depending on a row data we know that the row is a leaf and there will be no children rows.
But the disclose icon is there event though we definitely know it is currently useless.
So is there any way to hide the disclose icon from ADF tree(treetable) row depending on row data?
Thanks.
ADF 11R2
Great, it works.
The only thing is suggested style just makes the icon invisible, but it is still there and can be clicked.
I applied .hideDiscloseIcon af|treeTable::collapsed-icon-style
display: none;
}and there is no disclose button at all.
Similar Messages
-
Tomahawk how can i hide folders icons in t:tree?
Hi,
i use the tag t:tree in myfaces. I have added my own icons to the tree, but i don't know how can i hide old folders icons of tree. Can anybody help me?
Thanks and Best Regards,
SergeyHello~
I've got a bad hacking experience
It's a serious criminal hacking.
Console app on iMac had hacked by some Security Agents in China.
I need to lock 'db' folder including system key on Mac OS.
Please kindly inform me the method how to lock 'db' folder with password.
Such as this picture below :
Have a nice day~ -
Return specific number of rows depending on the data in a column in table
Hi,
I have a table named orders which has column orderid and noofbookstoorder in addition to other columns.
I want to query the orders table and depending on the value of the 'noofbookstoorder' value return that number of rows.
Eg
Orderid noofbookstoorder
1 1
2 3
3 2
when I query the above data saying
select * from orders where orderid=2;
since it has noofbookstoorders value as 3 the query should return 3 rows and when I query
select * from orders where orderid=3;
it should return 2 rows and
select * from orders where orderid=1;
should return 1 row.
Is it possible to achieve this. If yes, then how do I write my query.
Thanks in advance.with t as (
select 1 Orderid,1 noofbookstoorder from dual union all
select 2,3 from dual union all
select 3,2 from dual
select t.*
from t,
table(cast(multiset(select 1 from dual connect by level <= noofbookstoorder) as sys.OdciNumberList))
where Orderid = <order-id>
/For example:
SQL> with t as (
2 select 1 Orderid,1 noofbookstoorder from dual union all
3 select 2,3 from dual union all
4 select 3,2 from dual
5 )
6 select t.*
7 from t,
8 table(cast(multiset(select 1 from dual connect by level <= noofbookstoorder) as sys.OdciNumberList))
9 where Orderid = 2
10 /
ORDERID NOOFBOOKSTOORDER
2 3
2 3
2 3
SQL> with t as (
2 select 1 Orderid,1 noofbookstoorder from dual union all
3 select 2,3 from dual union all
4 select 3,2 from dual
5 )
6 select t.*
7 from t,
8 table(cast(multiset(select 1 from dual connect by level <= noofbookstoorder) as sys.OdciNumberList))
9 where Orderid = 3
10 /
ORDERID NOOFBOOKSTOORDER
3 2
3 2
SQL> with t as (
2 select 1 Orderid,1 noofbookstoorder from dual union all
3 select 2,3 from dual union all
4 select 3,2 from dual
5 )
6 select t.*
7 from t,
8 table(cast(multiset(select 1 from dual connect by level <= noofbookstoorder) as sys.Odc
iNumberList))
9 where Orderid = 1
10 /
ORDERID NOOFBOOKSTOORDER
1 1
SQL> -- And if you want to select multiple orders
SQL> with t as (
2 select 1 Orderid,1 noofbookstoorder from dual union all
3 select 2,3 from dual union all
4 select 3,2 from dual
5 )
6 select t.*
7 from t,
8 table(cast(multiset(select 1 from dual connect by level <= noofbookstoorder) as sys.Odc
iNumberList))
9 where Orderid in (2,3)
10 /
ORDERID NOOFBOOKSTOORDER
2 3
2 3
2 3
3 2
3 2
SQL> SY.
Edited by: Solomon Yakobson on Oct 26, 2009 7:36 AM -
Trying to retrieve mixed data across different rows depending on row type
I have a requirement to extract data from a table which happens to have different row types (header, row1, row2) in it. I thought the best way to explain what I want is to demonstrate by example!
CREATE TABLE IFSAPP.KM_MSG_TEST (MESSAGE_ID NUMBER NOT NULL,
MESSAGE_LINE NUMBER NOT NULL, NAME VARCHAR2(255 byte) NOT
NULL, ERROR_MESSAGE VARCHAR2(255 byte), C00 VARCHAR2(2000
byte), C01 VARCHAR2(2000 byte), C02 VARCHAR2(2000 byte),
C03 VARCHAR2(2000 byte), C04 VARCHAR2(2000 byte), C05
VARCHAR2(2000 byte), C06 VARCHAR2(2000 byte),
N00 NUMBER, N01 NUMBER,
D00 DATE)
TABLESPACE IFSAPP_DATA_LARGE;
insert into ifsapp.km_msg_test values('1353078','1','HEADER','','INTRST','OKM','','380','3','30025308','9',0,0,'');
insert into ifsapp.km_msg_test values('1353078','2','ROW1','','7034724','','','1057627','43','001','331276180003',5,0,'');
insert into ifsapp.km_msg_test values('1353078','3','ROW2','','3','0','','','C62','DE','',0,5,'');
insert into ifsapp.km_msg_test values('1353078','4','ROW1','','7034724','','','1058169','26','002','331346110004',6,0,'');
insert into ifsapp.km_msg_test values('1353078','5','ROW2','','3','0','','','C62','DE','',0,6,'');
insert into ifsapp.km_msg_test values('1353078','6','ROW1','','7016169','','','1059062','14','003','331483070005',1,0,'');
insert into ifsapp.km_msg_test values('1353078','7','ROW2','','3','0','','','C62','JP','',0,1,'');
insert into ifsapp.km_msg_test values('1353078','8','ROW1','','7034724','','','1059062','41','004','331483205000',11,0,'');
insert into ifsapp.km_msg_test values('1353078','9','ROW2','','3','0','','','C62','DE','',0,11,'');
insert into ifsapp.km_msg_test values('1353078','10','ROW1','','7057032','','','1059062','43','005','331483215001',2,0,'');
insert into ifsapp.km_msg_test values('1353078','11','ROW2','','3','0','','','C62','DE','',0,2,'');
insert into ifsapp.km_msg_test values('1353078','12','ROW1','','7000235','','','1059732','1','006','331566005002',14,0,'');
insert into ifsapp.km_msg_test values('1353078','13','ROW2','','3','0','','','C62','JP','',0,14,'');
insert into ifsapp.km_msg_test values('1353078','14','ROW1','','7014091','','','1059732','10','007','331566050010',2,0,'');
insert into ifsapp.km_msg_test values('1353078','15','ROW2','','3','0','','','C62','DE','',0,2,'');
commit;
select * from ifsapp.km_msg_test;
Message_Id Message_Line Name Error_Message C00 C01 C02 C03 C04 C05 C06 N00 N01 D00
1353078 1 HEADER INTRST OKM 380 3 30025308 9 0 0
1353078 2 ROW1 7034724 1057627 43 001 331276180003 5 0
1353078 3 ROW2 3 0 C62 DE 0 5
1353078 4 ROW1 7034724 1058169 26 002 331346110004 6 0
1353078 5 ROW2 3 0 C62 DE 0 6
1353078 6 ROW1 7016169 1059062 14 003 331483070005 1 0
1353078 7 ROW2 3 0 C62 JP 0 1
1353078 8 ROW1 7034724 1059062 41 004 331483205000 11 0
1353078 9 ROW2 3 0 C62 DE 0 11
1353078 10 ROW1 7057032 1059062 43 005 331483215001 2 0
1353078 11 ROW2 3 0 C62 DE 0 2
1353078 12 ROW1 7000235 1059732 1 006 331566005002 14 0
1353078 13 ROW2 3 0 C62 JP 0 14
1353078 14 ROW1 7014091 1059732 10 007 331566050010 2 0
1353078 15 ROW2 3 0 C62 DE 0 2C03 holds a reference number for ROW1s. I want to return the following:
Master_Ref Ref_Num Line_No Seq_No Part_No Qty
30025308 1059062 14 003 7016169 1
30025308 1059062 41 004 7034724 11
30025308 1059062 43 005 7057032 2when I select on Ref_Num being 1059062
Master_Ref=C05 from HEADER
Ref_Num=C03 from ROW1
Line_No=C04 from ROW1
Seq_No=C05 from ROW1
Part_No=Name from ROW1
Qty=N00 from ROW1Hi,
SQL> column Master_Ref FORMAT A9
SQL> column Ref_Num FORMAT A9
SQL> column Line_No FORMAT A3
SQL> column Seq_No FORMAT A3
SQL> column Part_No FORMAT A9
SQL>
SQL> select
2 Header.C05 as Master_Ref,
3 Row1.C03 as Ref_Num,
4 Row1.C04 as Line_No,
5 Row1.C05 as Seq_No,
6 Row1.C00 as Part_No,
7 Row1.N00 as Qty
8 from km_msg_test Row1, km_msg_test Header
9 where Row1.name = 'ROW1'
10 and Header.name = 'HEADER'
11 and Row1.message_id = Header.message_id
12 and row1.C03 = '1059062'
13 ;
MASTER_RE REF_NUM LIN SEQ PART_NO QTY
30025308 1059062 14 003 7016169 1
30025308 1059062 41 004 7034724 11
30025308 1059062 43 005 7057032 2Regards,
Dima -
Dynamically adjust table row height based on data in column
Hi all,
I'm using JDeveloper 11.1.1.5.0 and have a requirement for a table to adjust the height of its rows depending on the data in the columns. One of the columns in the table is a rich text description field and I have the 'rows' property set to 13. This field could have twenty lines of text/images or just one. The users would like the page to show all twenty lines of text without having to scroll but the table has the same height for all the rows (that I set to 13) and provides a scroll bar when the data exceeds this size. My users do not like to scroll, and want the height of each row to be determined by the data in it. I looked at a few options and also did a search online, but was unable to find anything to fulfill this requirement. Do you know of how I could change the height of each row in the table so that it fits the data that it holds?
I have an example of my table at: <b>Table with Set Row Height</b>
As you see, the picture has to be scrolled so that the whole picture is visible. The user requirement is to adjust the row height to show the full picture. Ideally the next two rows would shrink, but that would be a nice to have.
Thanks in advance for any pointers or help.Hi Frank,
Thank you for replying to my question, I truly appreciate your help.
I tried to use the autoHeightRows to adjust the height of my rows but was unsuccessful. If I understand the autoHeightRows property correctly, this is used for setting the height of the whole table. If this is incorrect and it can be used for setting the height of individual rows in the table, please correct me. I have the 'Rows' property of the richTextEditor set to 13 and this is the height that I would like to make dynamic based on the data.
My users requirement is for the height to be big enough for the data in each row of the table (the table has a description column and the height of each row should be determined by the data contained in it). I updated my <u><b>Screen Shot</b></u> to show the desired layout and what is currently being generated though ADF (http://www.flickr.com/photos/87583386@N05/) .
I have three rows in the example (in actuality these are around 50) and the text in each row can vary. The users would like to see the full text/image in each row without having to scroll each row. Currently my table is within Panel Box, which is inside a PanelGroupLayout-Scroll which is in a PanelStretchLayout. I tried to put the table by itself with the autoHeightRow modifications you suggested but thsi did not help either. I am using JDeveloper 11.1.1.6.
Is this possible with an ADF Table? If it is, is the autoHeight property the only one that I am setting incorrectly? If not, is there another component I can use to get the desired functionality? My users are very strict about this requirement and will not accept the application without this.
Thanks, -
ADF TreeTable - How to hide Disclose/Expand icon for leaf node
We are using ADF Tree Table in our application.
Whenever a node is expanded - all the child nodes have the disclose/expand icon along with it.
But, we don't want to show the disclose/expand icon if it is a leaf node.
How can this be done?
JDeveloper Version: JDeveloper 11.1.1.3
Thanks,
NavaneethI have a hierarchical tree based on single POJO based class exposed as data control.
(i.e) a node can have many levels.
Can you specify how we can use the folder icon for this - Can you please provide some detailed information?
Thanks in advance,
Navaneeth -
ADF Tree row selection and af:commandLink
Hello,
I'm quite new to JDeveloper and ADF. I'm using JDev 11.1.1 and get some issues while trying to set up a "qualifications" selection tree. Here is a summary :
I'm dealing with "Qualification" objects. A qualification has an id,name and 'selected' attribute. A Qualification can contain a list of subqualifications (same type 'Qualification'), and so on, with no limits of levels. I would like to display this structure as a tree with, for each (sub-)qualification a selectbox showing the status (selected or not) and modifiable by the user.
The qualifications are exposed to the data controls through a ResourceManager class function getQualifications(), and the datacontrol is dropped as a tree in the jsf page. The tree is bind to a backing bean 'qualificationManagerBean', and i've added an ActionListener to handle node selection (set node as current row and call update action)
page definition :
<executables>
<accessorIterator MasterBinding="ResourceManagerIterator"
Binds="qualifications" RangeSize="25"
DataControl="ResourceManager"
BeanClass="com.mobileit.planning.web.Qualification"
id="qualificationsIterator"/>
</executables>
<bindings>
<tree IterBinding="qualificationsIterator" id="qualifications">
<nodeDefinition DefName="com.mobileit.planning.web.Qualification">
<AttrNames>
<Item Value="name"/>
<Item Value="selected"/>
</AttrNames>
<Accessors>
<Item Value="subqualifications"/>
</Accessors>
</nodeDefinition>
</tree>
</bindings>
</pageDefinition>
in the jsf page :
<af:form>
<af:tree value="#{bindings.qualifications.treeModel}"
binding="#{qualificationManagerBean.tree}" var="node">
<f:facet name="nodeStamp">
<af:commandLink text="#{node}" id="test"
actionListener="#{qualificationManagerBean.clickTree}">
<af:setActionListener from="#{qualificationManagerBean.tree.rowKey}"
to="#{qualificationManagerBean.clickedNodeRowKey}"/>
</af:commandLink>
</f:facet>
</af:tree>
</af:form>
The result is that tree is well displayed, but only the first level of the tree triggers the 'clickedNodeRowKey' and 'clickTree' action. When i click on sub-levels, the page gets submitted but actions are not called.
I've also tried to map the action to a method in my ResourceManager but the result is the same, action gets never called :
page def file :
<methodAction id="qualificationSelector" RequiresUpdateModel="false"
Action="invokeMethod" MethodName="qualificationSelector"
IsViewObjectMethod="false" DataControl="ResourceManager"
InstanceName="ResourceManager.dataProvider">
<NamedData NDName="ref"
NDValue="#{node.name}"
NDType="java.lang.String"/>
</methodAction>
Do you have any idea of what I'm doind wrong?
Thank you for your help
StephaneI finally got this to work by defining the tree model in a managed bean. So there must be something wrong with my iterator binding...
-
How to hide Expand/ Collapse icon from ADF Query Panel.
Hi Experts,
I need to hide the expand collapse button from the ADF Query panel.
is there any way to hide it.
Please help me.
Thanks in Advance.
Balaji,Hi Balaji,
Create a CSS file and the below code
af|query.CustomQueryPanel::disclosure-icon-container { background-image: url("../img/minus.png"); display:none; height:0px; width:0px; }
af|query.CustomQueryPanel::disclosed-icon { display:none; }
af|query.CustomQueryPanel::undisclosed-icon { display:none; }
Add styleClass="CustomQueryPanel" inside <af:query...>
Now you can try...:)
Thanks
Prabhat -
How to create new Row in ADF Tree
I have create a ADF Tree from a VO in my page and I want to add new Row to the Tree before the Tree loads into the page.
can any one provide me the sample code to insert the new Row at runtime.
Thanks,
SwathiCreate a method in AMimpl that would create a new row for the VO and expose it to the thru client interface.
In the page Def for the page that has the tree, add the method action in the bindings section.
You can invoke this method using phase listener.
heck the code snippet below:
TestPage.jspx:
<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:f="http://java.sun.com/jsf/core"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<jsp:directive.page contentType="text/html;charset=UTF-8"/>
<f:view beforePhase="#{TestPageBean.phaseListener}">
<af:document title="TestPage.jspx" id="d1">
<af:form id="f1">
<af:panelHeader text="panelHeader 1" id="ph1">
<f:facet name="context"/>
<f:facet name="menuBar"/>
<f:facet name="toolbar">
</f:facet>
<f:facet name="legend"/>
<f:facet name="info"/>
</af:panelHeader>
</af:form>
</af:document>
</f:view>
</jsp:root>
TestPageBean.java:
package com.samples.view;
import javax.faces.event.PhaseEvent;
import oracle.adf.view.rich.component.rich.nav.RichCommandButton;
import oracle.adf.view.rich.context.AdfFacesContext;
public class TestPageBean {
public TestPageBean() {
// METHOD THAT IS INVOKED WHEN THE PAGE IS LOADED
public void phaseListener(PhaseEvent phaseEvent) {
if (phaseEvent.getPhaseId().equals(phaseEvent.getPhaseId().RENDER_RESPONSE)) {
if (!AdfFacesContext.getCurrentInstance().isPostback()) {
// DO THE NECESSARY LOGIC TO invoke the method defined in the pageDef
}Thanks,
Navaneeth -
ADF &CSS :overriding the default ADF:tree icons and CSSs
Hi,
I have major layout issue regarding ADF:tree, how can I override the default icons?
I override the oracle CSS with my own, but when I did that, the tree images has changed, its now small hideous triangles, I copied some lines from the oracle CSS and it worked, but the small triangles still show inside the images, how can I remove those triangles, or can I write something in my CSS to override them?
Thanks in prior,
Ahmad EsbitaAhmad,
According to bug 5682799, you cannot work around this in the current JDeveloper release. It is fixed in 10.1.3.3 (due out "soon," perhaps as early as 15th June, according to another post on this forum)
John -
Two Icons on ALV tree in same row
Hi all,
I need to show 2 ICONS instead of regular one icon on ALV Tree,at the same node like the easy cost planning on CJ20N.
I use the SALV Tree.
Thanks,
Omer gHi Omer,
You can achieve this by playing with is_node_layout and it_item_layout parameters of the method add_node:
set item-layout
data: lt_item_layout type lvc_t_layi,
ls_item_layout type lvc_s_layi.
ls_item_layout-t_image = '@01@'.
ls_item_layout-fieldname = o_tree->c_hierarchy_column_name.
append ls_item_layout to lt_item_layout.
add node
l_node_text = 'node_text'.
data: ls_node type lvc_s_layn.
ls_node-n_image = '@02@'.
ls_node-exp_image = '@02@'.
call method o_tree->add_node
exporting
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = l_node_text
is_outtab_line = ls_outtab
is_node_layout = ls_node
it_item_layout = lt_item_layout
importing
e_new_node_key = p_node_key.
Hope it helps,
Kr -
Adf:tree change node icons
Hi ,
Is it possible to create adf tree like in this example - http://www.roseindia.net/jsf/RCFaces/RCF-tree-component.shtml.
There is two options for tree defaultExpandedImageURL and defaultImageURL . I need implement such functionality in adf tree
how can i do it ?
Thanks in advance.with help of : zero linecodes you can achieve this in adf tree.
so can you please tel the usecase. -
Check/Uncheck issue in ADF Tree
Hi,
I am using JDev 11.1.1.5.0. Iam trying to create a ADF Tree from Single VO object with self-reference with check box option. Iam able to create required ADF tree with checkbox option. Some how, unable to provide select-deselect functionality. I mean, if we select any node from the tree, all the sub nodes (till leaf node) should be in select state. Only one node in select state. Rest are not updating.
Tried to find in JDev forum. Could not able to find suitable topic.
Tried to implement the process given in the below URL..But no use !!!
http://andrejusb.blogspot.in/2011/12/adf-tree-how-to-autoselectdeselect.html
Created two transient attributes at VO level
checkboxConfirmed - Boolean..It's value will dependent on checkboxConfirmedStatus attribute, which is of type String.
Finally I am trying to provide technical details what I did so far. It might be lengthy :)
Following is the JSPX page code
===============================
<f:view>
<af:document id="d1">
<af:messages id="m1"/>
<af:form id="f1">
<af:tree value="#{bindings.HierLinks1.treeModel}" var="node"
id="t1"
binding="#{pageFlowScope.mBean.treeProp}">
<f:facet name="nodeStamp">
<af:group id="g1">
<af:selectBooleanCheckbox
label="Label 1"
id="sbc1"
value="#{node.checkboxConfirmed}"
autoSubmit="true"
valueChangeListener="#{pageFlowScope.mBean.checkBoxChange}"
/>
<af:outputText value="#{node.ChildItemId}" id="ot1"/>
</af:group>
</f:facet>
</af:tree>
</af:form>
</af:document>
</f:view>
mBean code goes as follows:
public void checkBoxChange(ValueChangeEvent valueChangeEvent) {
System.out.println("Start checkBoxChange ");
System.out.println("OLD VALUE:"+valueChangeEvent.getOldValue());
System.out.println("NEW VALUE:"+valueChangeEvent.getNewValue());
DCIteratorBinding dcIb = ADFUtils.findIterator("HierLinks1Iterator");
HierLinksVORowImpl parent = (HierLinksVORowImpl)dcIb.getCurrentRow();
RowIterator ri = parent.getLeafHierLinks();
// parent.setAttribute("checkboxConfirmedStatus", "Y");
//RowSetIterator ri = parent.getRowSet();
Boolean check = (Boolean)valueChangeEvent.getNewValue();
while(ri.hasNext()){
LeafHierLinksVORowImpl leaf = (LeafHierLinksVORowImpl)ri.next();
System.out.println("Leaf ChildItemId"+leaf.getAttribute("ChildItemId"));
if (check == true) {
parent.setAttribute("checkboxConfirmedStatus", "Y");
leaf.setAttribute("checkboxConfirmedStatus", "Y");
else{
parent.setAttribute("checkboxConfirmedStatus", "Y");
leaf.setAttribute("checkboxConfirmedStatus", "N");
System.out.println("Leaf checkboxFlag 222"+leaf.getAttribute("checkboxConfirmed"));
Tried to iterate the tree in another approach.
if( (Boolean)(valueChangeEvent.getOldValue()) != null) {
Boolean check = (Boolean) valueChangeEvent.getNewValue();
RichTree navTree = this.getTreeProp();
CollectionModel model = (CollectionModel)navTree.getValue();
JUCtrlHierBinding treeBinding = (JUCtrlHierBinding)model.getWrappedData();
JUCtrlHierNodeBinding currentSelectedNode = (JUCtrlHierNodeBinding)navTree.getRowData();
List<JUCtrlHierNodeBinding> children = currentSelectedNode.getChildren();
if (children != null) {
for (JUCtrlHierNodeBinding _node : children) {
//Each child search returns node check status
Row nodeRow = _node.getRow();
if (nodeRow != null) {
//_node.setAttribute("checkboxConfirmedStatus",true);
String childId = (String)_node.getAttribute("ChildItemId");
System.out.println("CHILDID"+childId);
String[] atts = (String[]) _node.getAttributeNames();
System.out.println(Arrays.asList(atts));
System.out.println("CHECK"+check );
if(check == true){
_node.setAttribute("checkboxConfirmedStatus","Y");
else{
_node.setAttribute("checkboxConfirmedStatus","N");
System.out.println("Check Status"+_node.getAttribute("checkboxConfirmed") );
}else{
System.out.println("NODE ROW NULL");
} //End of for loop
else{
System.out.println("children NULL");
else{
System.out.println("OLD VALUE NULL");
//refreshSelectedRows();
System.out.println("End checkBoxChange ");
Iam suspecting, in JSPX page value="#{node.checkboxConfirmed}" is updating the checkbox status.
Could please help me on this?
Thanks in advance,
Samba.Finally able to achieve by enabling 'Retain View Link Accessor Rowset'.
Thanks,
Samba -
Remove/Hide Toggle Icon Column in using f:facet name="detailStamp"
Hi All,
I am using <f:facet name="detailStamp"> to expand the row with details ,Done that part with separate button programmatically.
So I need to hide/remove additional toggle icon column in the table...
JDev 11.1.1.4 and adf faces application...
Please anybody help.......Hi,
use skinning
af|table::disclosed-icon
Overrides the default disclosed icon used with the detailStamp facet in table.
af|table::undisclosed-icon
Overrides the default undisclosed icon used with the detailStamp facet in table.
e.g.
af|table:disclosed-icon(display:none);
af|table::undisclosed-icon(display:none);
Frank -
Howto: display dynamic form on tree selection (jdev 11gR1)
Heya,
another question by myself, hoping for an advice.
I finally made a tree including different types of "objects" into one tree (based on ADF BC). Simple example use case used in this post: displaying employee hierarchy PLUS assigned projects per employee.
So my current problem is: what is the "way to go" to change the form in the "content" facet (made a simple splitter layout with tree in left facet and "content" in right facet) AND binding the data to it? Clicking on an employee would open the employee form and load data for selected employee into it, but clicking on a project would open the project form and loading data for selected project into it. I have all data available in the tree application module and the decision "what to display" is based on one of the attributes.
All tutorials I found so far for master/detail are kinda "static" (linking employee tree to employee form) and I can't figure out how to do want I want to do.
Is this possible going the declarative way? If yes, how? Or do I have to code something? If yes, how? No need for actual code, just need a hint what to look for.. feeling lost atm.
Any help is highly appreciated. :)Hi,
here's how you do it
1. Create a iterator binding for the project ViewObject (choose a ViewObject instance that is not dependent to the employees ViewObject you use as the tree top level)
2. In the binding editor, expand the Data Source entry (below the rule attribute configuration) and create an EL expression that references the iterator bindingyou created
This ensures that selecting an emplloyee is synchronized with the Employee iterator used to build the top level nodes and the selected project is synchronized with the project iterator node.
3. Add a switcher component to switch between the employee and the project edit form
4. Create a facet in the af:switcher that has the name of the full employee view object e.g. adf.mysample.EmployeesView
5. Create a facet in the af:switcher for the full name of the Project VO
6. Drag and drop the EmployeeView entry from the data Controls palette as a form into the Employees facet
7. Do the same for the Projects (make sure you use the Projects VO that is not depedent)
Set the default value of the switcher too point to the facet that should be shown by default. The value of the switcher set to an EL that points to a managed bean method or memory attribute. Upon selecting a node (you can use the tree node selection listener) you access the selected tree node. The selection listener code woud look as shown below
//tree reference can be obtained from the selectionListener event (Source) or from a JSF component binding property reference
//example uses the latter
RichTree tree = this.getTree1();
//get selected row keys. This could be a single entry or
//multiple entries dependent on whether the tree is
//configured for multi row selection or single row selection
RowKeySet rks = tree.getSelectedRowKeys();
Iterator rksIterator = rks.iterator();
//assuming single select use case. Otherwise, this is where you
//need to add iteration over the entries in the multi select use case
if (rksIterator.hasNext()){
//a key is a list object that containe the node path information for the
//selected node
List key = (List)rksIterator.next();
//determine the selected node. Note that the tree binding is an instance of
//JUCtrlHierBinding
JUCtrlHierBinding treeBinding = null;
//We can get the binding information without using EL in our Java, which you always should
//try to do. Using EL in Java is good to use, but only second best as a solution
treeBinding = (JUCtrlHierBinding) ((CollectionModel)tree.getValue()).getWrappedData();
//the row data is represented by the JUCtrlHierNodeBinding class at runtime. We get the node value
//from the tree binding at runtime
JUCtrlHierNodeBinding nodeBinding = treeBinding.findNodeByKeyPath(key);
//the JUCtrlHierNodeBinding object allows you to access the row data, so if all you want is to
//get the selected row data, then you are done already. However, in many cases you need to further
//distinguish the node, which is what we can do using the HierTypeBinding
String nodeStuctureDefname = nodeBinding.getHierTypeBinding().getStructureDefName();
//determine the selected node by the ViewObject name and package
String employeesDef = "adf.mysample.EmployeesView";
String projectDef = "adf.mysample.ProjectsView";
if (nodeStuctureDefname.equalsIgnoreCase(empoyeesDef)){
// change value reference used in af:switcher and partially refresh the af:switcher component to show the edit form
// e.g. change the value of the refrenced memory attribute or managed bean variable
else if (nodeStuctureDefname.equalsIgnoreCase(projectDefDef)){
// change value reference used in af:switcher and partially refresh the af:switcher component to show the edit form
// e.g. change the value of the refrenced memory attribute or managed bean variable
else{
//what the heck did the user click on? Ask him ;-)
}Frank
Maybe you are looking for
-
Playback Issues with multiple framerates and Blackmagic Decklink 4K Extreme
I recently swapped by AJA Kona Card for a Blackmagic Decklink 4K Extreme in order to get external monitoring in DaVinci Resolve. I'm working in a 1080p 23.976 project that includes some 29.97 SD and HD footage. When loading this 29.97fps footage into
-
Audigy 4, digital out would not work, now external box does not power
I recently purchased a audigy 4 sound card. At first it was almost as if there was a loose wire somewhere. Sometimes the external break out box would power up and sometimes it would not. There was no loose wire and it now no longer powers up at all.
-
Need help editing scanned images of old photo album pages PSE 9
Before I begin this project, I thought I'd get some advice from someone who has undertaken a similar project. I have three photo albums from the 50's and 60's. The albums were made by my mother who mounted the photos (mostly black and white but som
-
When I try to oen i-tunes I get tne message "This version of I-tunes has not been correctly localized for this lanauge. Please run the English version . It will not open. One proposed fis was to uninstall it and reinstall it. If I uninstall it and r
-
Can't access "accounts" in mail or calendar menu
Hello ! I can't access "accounts" in Mail or Calendar app menu. The "syst pref" app stops working if I do . Any solution ? Thanks for answer.