Double-click on tree nodes
Is there a way to disable the double-click-to-expand-
node feature? This seems to be a default behaviour,
wish to remove it. Thanks in advance.
I use forms6i patch 12. And that is what I have:
Block 'TREE'
Triggers
WHEN-MOUSE-DOUBLECLICK
begin
:global.MDC := 1;
Message ('1', Acknowledge);
Pause;
end;
Tree_Item
WHEN-TREE-NODE-EXPANDED
begin
Message ('2', Acknowledge);
Pause;
if :global.MDC = 1 then
:global.MDC := 0;
Return;
else
FillLevel; --(e.g. fill the lower nodes and
-- expand the parent node)
end if;
end;
And that is what I get at runtime after double clicking on a collapsed node:
1 (acknowledge)
2 (acknowledge)
So WHEN-MOUSE-DOUBLECLICK fires prior to WHEN-TREE-NODE-EXPANDED in my environment.
Sergey.
Similar Messages
-
How to go to different screen by Double Clicking a Tree Node
Hi guys,
I have a tool where i have a top panel and a bottompanel. On the top panel, i add Tab buttons so that if anyone is clicked, it will repaint the bottom panel with corresponding Tab screen(New screen will come with the top panel remaining same). There are Actions, Conditions,Trees tabs on the main panel. There is also a Home Tab on the main panel which when clicked brings up a tree structure on the left hand side of the bottom panel which has some parent and child nodes depending on whether they are files or directories. There are folders(parent nodes) with names Trees & Conditions also related to the Tabs on the main panel under which i have some file names. I am including the method which creates the nodes. The problem is that when i double click any file(not a directory), it should take me to the screen which is actually populated when i select the Trees/Conditions tab and select the corresponding file name from the drop down provided in that screen and click a view button. So, it is something like adding an actionListener or SelectionListener. But, i am unable to do it. Can anyone suggest me how to do it?
The class involving the following looks something like this.
public class MainHomePanel extends AbstractDtPanel {And the AbstractDtPanel looks something like this.
public abstract class AbstractDtPanel extends JPanelFinally, the method to create the Nodes is given below
private void createNodes(DefaultMutableTreeNode top) {
DefaultMutableTreeNode parentFolder = null;
DefaultMutableTreeNode innerFolder = null;
DefaultMutableTreeNode fileNames = null;
ArrayList folderName = new ArrayList();
ArrayList innerFolderNames = new ArrayList();
ArrayList fileNameArray = new ArrayList();
CommonUtil cu = new CommonUtil();
folderName =cu.getFolderNames(sessionData.getSysPath());
if(folderName != null && folderName.size() > 0) {
for(int i =0; i<folderName.size(); i++) {
parentFolder = new DefaultMutableTreeNode((String)folderName.get(i));
top.add(parentFolder);
innerFolderNames = new ArrayList();
innerFolderNames = cu.getInnerFolderNames(sessionData.getSysPath(), (String)folderName.get(i));
for(int k=0; k<innerFolderNames.size();k++) {
innerFolder = new DefaultMutableTreeNode((String)innerFolderNames.get(k));
parentFolder.add(innerFolder);
fileNameArray = new ArrayList();
fileNameArray = cu.getFileNames(sessionData.getSysPath(), (String)folderName.get(i),(String)innerFolderNames.get(k));
for(int j=0; j<fileNameArray.size(); j++) {
fileNames = new DefaultMutableTreeNode(fileNameArray.get(j));
innerFolder.add(fileNames);
}Sorry, a small mistake. The "createNodes" method is in the "MainHomePanel" class.
-
Double click on the node,ALV tree, subscreen
Hi,
I have a small requirement in ALV Tree
left side i get a tree and when i double click on one of it , i'm trying to display the subscreen. even though i am setting the paramaters to the screen but i'm unable to get those values in the subscreen.
example
Name Description subscreen 0101
xyz xyz desc (double click on this) name = XYZ
ABC abs desc descrip = xyz desc
This is what the requirement is:
Please help me out with the solution.
BhavanaHi Bhavana,
Register your double click event in the ALV Tree program. Then call the respective subscreen using sy-ucomm value.
IF NOT r_ucomm IS INITIAL.
CASE r_ucomm.
WHEN '&F03'.
SET SCREEN 100.
LEAVE SCREEN.
endif.
Refer the below code for setting the registering the event.
CALL METHOD tree->get_registered_events
IMPORTING
events = l_events_s.
l_event-eventid = cl_gui_column_tree=>eventid_item_double_click.
APPEND l_event TO l_events_s.
CALL METHOD tree->set_registered_events
EXPORTING
events = l_events_s
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3.
CREATE OBJECT l_events_receiver.
SET HANDLER l_events_receiver->handle_item_click FOR tree.
CLASS lcl_events_receiver DEFINITION. "#EC *
PUBLIC SECTION.
METHODS:
handle_item_click FOR EVENT item_double_click OF cl_gui_alv_tree
IMPORTING node_key fieldname.
ENDCLASS. "lcl_handle_events DEFINITION
CLASS lcl_events_receiver IMPLEMENTATION.
METHOD handle_item_click.
PERFORM employee_data USING node_key fieldname.
CALL SCREEN 300.
ENDMETHOD. "HANDLE_ITEM_DOUBLE_CLICK
ENDCLASS. "lcl_events_receiver IMPLEMENTATION
Thanks.
Ganesh R K
Edited by: Ganesh.rk83 on Jun 23, 2011 11:21 AM -
Clicking a tree node does not refresh the fields in the table component
hi all,
I am using a tree component along with a table component in my page.so whenever i am clicking on a node it should display the relevant information of that node in the table from the database.But whenever i am doing the page is not refreshing and the old values of the textfields in the table still exist.i have written the code to populate the table in a button click event.It is working fine but the same is not working when i am clicking any node in the tree component.Can anyone provide a solution to this problem.
Thanks and regards,
Prasant KumarNever mind... I actually found something that works...
treeModel.nodeStructureChanged(leadSelection); -
Confirmation Dialog when clicking on Tree Node.
I am working on Oracle Apex 4.2.0.00.27 and I have the following problem:
The code below shows the definition of a tree. The tree displays records from the table ACTIVITIES in hierarchical structure.
When user clicks on a leaf/node of the tree he will be redirected to another page where the details of each Activity/leaf/node are displayed.
The tree is part of a page where I have established a functionality to check for changes on the input fields of the page and inform the user when he tries to redirect without first saving the changes he made.
What I want to do is:
WHEN user clicks on a node of the tree AND he hasn't saved any changes he made
THEN
trigger a confirmation dialog.
IF
he clicks OK he is redirected to the node details page as defined on the tree definition:
f?p=&APP_ID.:10:'||:APP_SESSION||'::::P10_ID:'||"ID"
ELSE if he clicks CANCEL
he stays on the same page.
The condition to trigger the confirmation box is:
if (document.getElementById('P0_CHANGES_DETECTED').value == 1)
where P0_CHANGES_DETECTED is a universal hidden text field that is set to +'1'+ every time a change is made.
and here is the tree definition:
select case when connect_by_isleaf = 1 then 0
when level = 1 then 1
else -1
end as status,
level,
+"NAME" as title,+
null as icon,
+"ID" as value,+
null as tooltip,
decode(PARENT_ID,null,null, 'f?p=&APP_ID.:10:'||:APP_SESSION||'::::P10_ID:'||"ID") as link
from "#OWNER#"."ACTIVITIES"
where GROUP_ID = :P20_GROUP_ID
start with "ID" in (select ID from "#OWNER#"."ACTIVITIES" where GROUP_ID = :P20_GROUP_ID and PARENT_ID is null)
connect by prior "ID" = "PARENT_ID"
order siblings by "ID"
I hope it is clear what I want to achieve. Thanks in advance.So you'll want to bind an event to all tree nodes that checks for the value and then fires the confirmation if there value is 1.
Try something like this:
- first, give your static ID attribute in your tree the value of tree_static_id (or whatever you want. just replace the id selector below with what you choose).
- In your Page Function and Variable Declaration Javascript:
function confirmSave() {
var changeDetected = jQuery('#P0_CHANGES_DETECTED').val();
if(changeDetected == 1) {
//only do this if change is detected
if(confirm('You have unsaved changes. Do you want to leave this page?')) {
window.location('[your url here]');
jQuery(document).ready(function() {
//bind function to the click event
$('#tree_static_id').find('li a').bind('click', function() { confirmSave(); } });
});Hope this helps -
How to programmatically click a tree node(make it selected)?
in my program, i want to make a tree node "clicked" by codes, so that the valueChanged(TreeSelectionEvent tse e) method of the TreeSelectionListener can be invoked.
thanks a lot!!private Robot robot;
private void triggerMouseClick(TreePath treePath) {
if (robot == null) {
try {
robot = new Robot();
robot.setAutoDelay(60);
catch (AWTException e) {
e.printStackTrace();
Rectangle rect = this.getPathBounds(treePath);
Point point = new Point(rect.x+1, rect.y+1);
SwingUtilities.convertPointToScreen(point, this);
robot.mouseMove(point.x, point.y);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
} -
Call a form by click a tree node
Hi,
How can I created tree and i wanna call form when tree node selected
Thank you
MNHHi ,
Use the "WHEN-TREE-NODE-ACTIVATED" Trigger , and you can retrive the selected node using :
- FTREE.GET_TREE_SELECTION.
- FTREE.GET_TREE_NODE_PROPERTY.
Regards, -
Dear all.
How can i open new FORM, when i double click at (tree) node.
Best Regards
node
|__node1
|__node11 <-- double click and open new FORM
|__node12
|__node2
|__node21
Message was edited by:
First_StepWhe-tree-node-activated trigger
declare
pl_id paramlist;
value1 varchar2(100) ;
begin
-- Checks whether the trigger node is a leaf not or not if yes
-- Call the Corresponding form else do nothing
if (Ftree.Get_Tree_Node_Property('tree_block.tree1', :SYSTEM.TRIGGER_NODE, Ftree.NODE_STATE)= 0) THEN
--CREATE PARAM LIST FOR CALL_FORM
pl_id:=get_parameter_list('userparam');
if(id_null(pl_id)) then
pl_id:=create_parameter_list('userparam');
else
destroy_parameter_list(pl_id);
pl_id:=create_parameter_list('userparam');
end if;
--ADD NEEDED PARAMETERS
add_parameter(pl_id,'user_name',text_parameter,:parameter.user_name);
--HERE NODE VALUE IS FORM NAME
value1:=Ftree.get_tree_node_property('tree_block.tree1', :system.trigger_node,ftree.node_value);
call_form(value1,hide,no_replace,no_query_only,pl_id);
END IF;
end;
jeneesh -
Disabling the tree nodes.
hi,
Can anyone tell me , Is it possible to disable the tree nodes?How??so that user cannot perform any action
on tree nodes i.e, expanding the tree node or double clicking the tree node.
Thankx in advance,
Manish.hi,
Can anyone tell me , Is it possible to disable the tree nodes?How??so that user cannot perform any action
on tree nodes i.e, expanding the tree node or double clicking the tree node.
Thankx in advance,
Manish. -
Double click in ALV tree output????
Hi all,
I am able to display output in tree format. But I want to add the double click functionality to some of the fields in output. Means if I double click on some value in output tree, it should call some transaction. Please help me with this issue of double clicking.
Please tell how to handle events in this report tree display.
For the following code its displaying output in tree format and in right way. But i need to add double click functionality to this.
So provide me some sample program for this one....
* create hierarchy
CALL METHOD tree1->set_table_for_first_display
EXPORTING
it_list_commentary = lt_list_commentary
i_background_id = 'ALV_BACKGROUND'
i_save = 'A'
is_variant = ls_variant
CHANGING
it_sort = gt_sort[]
it_outtab = itab_outtab
it_fieldcatalog = t_fieldcat. "gt_fieldcatalog.
* expand first level
CALL METHOD tree1->expand_tree
EXPORTING
i_level = 1.
* optimize column-width
CALL METHOD tree1->column_optimize
EXPORTING
i_start_column = tree1->c_hierarchy_column_name
i_end_column = tree1->c_hierarchy_column_name.
In grid ALV we can have double cilck functionality using code:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = w_repid
i_callback_pf_status_set = 'PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
is_layout = ls_layout
it_fieldcat = gt_fc[]
Here we can write subroutine for USER_COMMAND and handle the double click evenet. But tell me how to provide this in tree ALV.
<REMOVED BY MODERATOR>
Regards,
Sachin
Edited by: Alvaro Tejada Galindo on Feb 14, 2008 1:47 PMHello Sachin
The following sample report ZUS_SDN_ALV_TREE_DEMO demonstrates the crucial parts for double-click event handling (nodes & items) in ALV trees.
*& Report ZUS_SDN_ALV_TREE_DEMO
*& Thread: double click in ALV tree output????
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="742412"></a>
REPORT zus_sdn_alv_tree_demo.
CLASS cl_gui_column_tree DEFINITION LOAD.
CLASS cl_gui_cfw DEFINITION LOAD.
TYPE-POOLS: abap.
TYPES: BEGIN OF ty_s_outtab.
INCLUDE TYPE knvv AS data.
TYPES: nkey TYPE lvc_nkey.
TYPES: parent_key TYPE lvc_nkey.
TYPES: END OF ty_s_outtab.
TYPES: ty_t_outtab TYPE STANDARD TABLE OF ty_s_outtab
WITH DEFAULT KEY.
DATA: gt_outtab TYPE ty_t_outtab.
DATA:
gd_okcode TYPE ui_func,
gd_repid TYPE syst-repid,
gt_fcat TYPE lvc_t_fcat,
gs_layout TYPE lvc_s_layo,
gs_variant TYPE disvariant,
go_docking TYPE REF TO cl_gui_docking_container,
go_tree TYPE REF TO cl_gui_alv_tree.
* CLASS lcl_eventhandler DEFINITION
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_node_double_click
FOR EVENT node_double_click OF cl_gui_alv_tree
IMPORTING node_key,
handle_item_double_click
FOR EVENT item_double_click OF cl_gui_alv_tree
IMPORTING node_key
fieldname.
ENDCLASS. "lcl_eventhandler DEFINITION
* CLASS lcl_eventhandler IMPLEMENTATION
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_node_double_click.
message 'Event=Double-Click on Node' type 'I'.
call transaction 'XD03'.
ENDMETHOD. "handle_node_double_click
METHOD handle_item_double_click.
message 'Event=Double-Click on Item' type 'I'.
call transaction 'VA03'.
ENDMETHOD. "handle_item_double_click
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
START-OF-SELECTION.
PERFORM init_controls.
gd_repid = syst-repid.
CALL METHOD go_docking->link
EXPORTING
repid = gd_repid
dynnr = '0100'
* container =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
lifetime_dynpro_dynpro_link = 3
OTHERS = 4.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL SCREEN '0100'.
** NOTE: no elements on screen
** PROCESS BEFORE OUTPUT.
** MODULE STATUS_0100.
** PROCESS AFTER INPUT.
** MODULE USER_COMMAND_0100.
END-OF-SELECTION.
*& Module STATUS_0100 OUTPUT
* text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
* text
MODULE user_command_0100 INPUT.
TRANSLATE gd_okcode TO UPPER CASE.
CASE gd_okcode.
WHEN 'BACK' OR
'EXIT' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
WHEN 'REFRESH'.
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form init_controls
* text
* --> p1 text
* <-- p2 text
FORM init_controls .
* Create docking container
CREATE OBJECT go_docking
EXPORTING
parent = cl_gui_container=>screen0
ratio = 90
EXCEPTIONS
OTHERS = 6.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* create tree control
CREATE OBJECT go_tree
EXPORTING
parent = go_docking
node_selection_mode = cl_gui_column_tree=>node_sel_mode_multiple
item_selection = 'X' " required for double-click event on item
no_html_header = ''
no_toolbar = ''
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'ERROR'. "#EC NOTEXT
ENDIF.
* create Hierarchy-header
DATA ls_hierarchy_header TYPE treev_hhdr.
PERFORM build_hierarchy_header CHANGING ls_hierarchy_header.
PERFORM build_fieldcatalog.
PERFORM set_layout_and_variant.
* create emty tree-control
CALL METHOD go_tree->set_table_for_first_display
EXPORTING
** i_structure_name = 'KNVV'
is_variant = gs_variant
i_save = 'A'
* i_default = 'X'
is_hierarchy_header = ls_hierarchy_header
* is_exception_field =
* it_special_groups =
* it_list_commentary =
* i_logo =
* i_background_id =
* it_toolbar_excluding =
* it_except_qinfo =
CHANGING
it_outtab = gt_outtab
* it_filter =
it_fieldcatalog = gt_fcat.
* create hierarchy
PERFORM create_hierarchy.
* register events
PERFORM register_events.
* adjust column_width
CALL METHOD go_tree->column_optimize.
ENDFORM. " init_controls
*& Form build_hierarchy_header
* build hierarchy-header-information
* -->P_L_HIERARCHY_HEADER strucxture for hierarchy-header
FORM build_hierarchy_header CHANGING
p_hierarchy_header TYPE treev_hhdr.
p_hierarchy_header-heading = 'Hierarchy Header'. "#EC NOTEXT
p_hierarchy_header-tooltip =
'This is the Hierarchy Header !'. "#EC NOTEXT
p_hierarchy_header-width = 30.
p_hierarchy_header-width_pix = ''.
ENDFORM. " build_hierarchy_header
*& Form BUILD_FIELDCATALOG
* text
* --> p1 text
* <-- p2 text
FORM build_fieldcatalog .
REFRESH: gt_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
i_structure_name = 'KNVV'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = gt_fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
DELETE gt_fcat FROM 8.
ENDFORM. " BUILD_FIELDCATALOG
*& Form SET_LAYOUT_AND_VARIANT
* text
* --> p1 text
* <-- p2 text
FORM set_layout_and_variant .
CLEAR: gs_layout,
gs_variant.
gs_variant-report = syst-repid.
gs_variant-handle = 'TREE'.
ENDFORM. " SET_LAYOUT_AND_VARIANT
*& Form create_hierarchy
* text
* --> p1 text
* <-- p2 text
FORM create_hierarchy .
DATA: ls_knvv TYPE sflight,
ls_outtab TYPE ty_s_outtab,
lt_outtab TYPE ty_t_outtab.
* get data
SELECT * FROM knvv INTO CORRESPONDING FIELDS OF TABLE lt_outtab
UP TO 200 ROWS . "#EC CI_NOWHERE
SORT lt_outtab BY kunnr vkorg.
* add data to tree
DATA: ld_kunnr_key TYPE lvc_nkey,
ld_vkorg_key TYPE lvc_nkey,
ld_last_key TYPE lvc_nkey.
LOOP AT lt_outtab INTO ls_outtab.
ON CHANGE OF ls_outtab-kunnr.
PERFORM add_customer_line USING ls_outtab-data
CHANGING ld_kunnr_key.
ENDON.
ON CHANGE OF ls_outtab-vkorg.
PERFORM add_salesorg_line USING ls_outtab-data
ld_kunnr_key
CHANGING ld_vkorg_key.
ENDON.
PERFORM add_complete_line USING ls_outtab-data
ld_vkorg_key
CHANGING ld_last_key.
ENDLOOP.
* calculate totals
CALL METHOD go_tree->update_calculations.
* this method must be called to send the data to the frontend
CALL METHOD go_tree->frontend_update.
ENDFORM. " create_hierarchy
*& Form add_customer_line
* add hierarchy-level 1 to tree
* -->P_LS_SFLIGHT sflight
* -->P_RELEATKEY relatkey
* <-->p_node_key new node-key
FORM add_customer_line USING us_data TYPE ty_s_outtab-data
ud_relat_key TYPE lvc_nkey
CHANGING cd_node_key TYPE lvc_nkey.
DATA: l_node_text TYPE lvc_value,
ls_data TYPE ty_s_outtab-data.
* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-t_image = '@A0@'. " icon_customer.
ls_item_layout-fieldname = go_tree->c_hierarchy_column_name.
ls_item_layout-style =
cl_gui_column_tree=>style_intensifd_critical.
APPEND ls_item_layout TO lt_item_layout.
* add node
l_node_text = us_data-kunnr.
DATA: ls_node TYPE lvc_s_layn.
ls_node-n_image = space.
ls_node-exp_image = space.
CALL METHOD go_tree->add_node
EXPORTING
i_relat_node_key = ud_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = l_node_text
is_outtab_line = ls_data
is_node_layout = ls_node
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = cd_node_key.
ENDFORM. " add_customer_line
*& Form add_salesorg_line
* add hierarchy-level 1 to tree
* -->P_LS_SFLIGHT sflight
* -->P_RELEATKEY relatkey
* <-->p_node_key new node-key
FORM add_salesorg_line USING us_data TYPE ty_s_outtab-data
ud_relat_key TYPE lvc_nkey
CHANGING cd_node_key TYPE lvc_nkey.
DATA: l_node_text TYPE lvc_value,
ls_data TYPE ty_s_outtab-data.
* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-t_image = '@DS@'. " ICON_PARTNER_SALES_ACTIVITY
ls_item_layout-fieldname = go_tree->c_hierarchy_column_name.
ls_item_layout-style =
cl_gui_column_tree=>style_intensifd_critical.
APPEND ls_item_layout TO lt_item_layout.
* add node
l_node_text = us_data-vkorg.
DATA: ls_node TYPE lvc_s_layn.
ls_node-n_image = space.
ls_node-exp_image = space.
CALL METHOD go_tree->add_node
EXPORTING
i_relat_node_key = ud_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = l_node_text
is_outtab_line = ls_data
is_node_layout = ls_node
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = cd_node_key.
ENDFORM. " add_salesorg_line
*& Form add_cmplete_line
* add hierarchy-level 3 to tree
* -->P_LS_SFLIGHT sflight
* -->P_RELEATKEY relatkey
* <-->p_node_key new node-key
FORM add_complete_line USING us_data TYPE ty_s_outtab-data
ud_relat_key TYPE lvc_nkey
CHANGING cd_node_key TYPE lvc_nkey.
DATA: l_node_text TYPE lvc_value.
* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-fieldname = go_tree->c_hierarchy_column_name.
ls_item_layout-class = cl_gui_column_tree=>item_class_checkbox.
** ls_item_layout-editable = 'X'.
APPEND ls_item_layout TO lt_item_layout.
** CLEAR ls_item_layout.
** ls_item_layout-fieldname = 'PLANETYPE'.
** ls_item_layout-alignment = cl_gui_column_tree=>align_right.
** APPEND ls_item_layout TO lt_item_layout.
l_node_text = us_data-vtweg.
DATA: ls_node TYPE lvc_s_layn.
ls_node-n_image = space.
ls_node-exp_image = space.
CALL METHOD go_tree->add_node
EXPORTING
i_relat_node_key = ud_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = us_data
i_node_text = l_node_text
is_node_layout = ls_node
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = cd_node_key.
ENDFORM. " add_complete_line
*& Form register_events
* text
* --> p1 text
* <-- p2 text
FORM register_events.
* define the events which will be passed to the backend
DATA: lt_events TYPE cntl_simple_events,
l_event TYPE cntl_simple_event.
* define the events which will be passed to the backend
l_event-eventid = cl_gui_column_tree=>eventid_expand_no_children.
APPEND l_event TO lt_events.
** l_event-eventid = cl_gui_column_tree=>eventid_checkbox_change.
** APPEND l_event TO lt_events.
** l_event-eventid = cl_gui_column_tree=>eventid_header_context_men_req.
** APPEND l_event TO lt_events.
** l_event-eventid = cl_gui_column_tree=>eventid_node_context_menu_req.
** APPEND l_event TO lt_events.
** l_event-eventid = cl_gui_column_tree=>eventid_item_context_menu_req.
** APPEND l_event TO lt_events.
** l_event-eventid = cl_gui_column_tree=>eventid_header_click.
** APPEND l_event TO lt_events.
** l_event-eventid = cl_gui_column_tree=>eventid_item_keypress.
** APPEND l_event TO lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_node_double_click.
APPEND l_event TO lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_item_double_click.
APPEND l_event TO lt_events.
CALL METHOD go_tree->set_registered_events
EXPORTING
events = lt_events
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3.
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'ERROR'. "#EC NOTEXT
ENDIF.
* set Handler
set handler:
lcl_eventhandler=>handle_node_double_click for go_tree,
lcl_eventhandler=>handle_item_double_click for go_tree.
** DATA: l_event_receiver TYPE REF TO lcl_tree_event_receiver.
** CREATE OBJECT l_event_receiver.
** SET HANDLER l_event_receiver->handle_node_ctmenu_request
** FOR tree1.
** SET HANDLER l_event_receiver->handle_node_ctmenu_selected
** FOR tree1.
** SET HANDLER l_event_receiver->handle_item_ctmenu_request
** FOR tree1.
** SET HANDLER l_event_receiver->handle_item_ctmenu_selected
** FOR tree1.
** SET HANDLER l_event_receiver->handle_checkbox_change FOR tree1.
ENDFORM. " register_events
Regards
Uwe -
Dear Colleagues !
I have a tree :
class lcl_tree definition inheriting from CL_COLUMN_TREE_MODEL.
data: G_TREE TYPE REF TO lcl_TREE.
CREATE OBJECT G_TREE
EXPORTING
NODE_SELECTION_MODE = CL_COLUMN_TREE_MODEL=>NODE_SEL_MODE_MULTIPLE
It works fine. I want to react to double click of a node:
event-eventid = CL_GUI_COLUMN_TREE=>EVENTID_NODE_DOUBLE_CLICK.
event-appl_event = 'X'.
APPEND event to events.
CALL METHOD G_TREE->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = EVENTS
EXCEPTIONS
unknown_event = 1
ILLEGAL_EVENT_COMBINATION = 2.
But it doesn't happen anything.
I enhanced it:
CLASS gcl_events_hndl DEFINITION.
PUBLIC SECTION .
METHODS handle_node_double_click
FOR EVENT node_double_click
OF lcl_tree
IMPORTING node_key sender.
ENDCLASS.
DATA: l_event_receiver TYPE REF TO gcl_events_hndl.
CREATE OBJECT l_event_receiver.
SET HANDLER l_event_receiver->handle_node_double_click FOR g_tree.
And I have the same, nothing ...
Can You propose me anything ?
Thanks a lot and kind regards
PeterHello Peter
Depending on "object" on which you double-click you either trigger event NODE_DOUBLE_CLICK or ITEM_DOUBLE_CLICK. The NODE_DOUBLE_CLICK event is only triggered if you click on the leftmost part of the node.
Have a look at my sample report ZUS_SDN_ALV_TREE_DEMO_1 in thread
drop down list in alv tree
Depending on where you double-click the raised event is displayed as I-message.
Regards
Uwe -
ALV-Tree Node click not working
Hi All,
I am displaying the data in ALV tree. When the user click on the node i want to capture some event and method in which i have to do some coding. Can you tell me which method and event i should use to achieve this functionality. its bit urgent.
Immediate response will be apprecited.
Regards,
RanjanHi ,
I have gone through the link. I have done the below part in my coding even though when i double click on the node, the event node_double_click is not getting triggered. Kindly suggest me what i have missed.
1) Register event with tree instance:
Register event for NODE_DOUBLE_CLICK
l_event-eventid = cl_gui_column_tree=>eventid_node_double_click.
APPEND l_event TO lt_events.
(2) Set handler for event:
SET HANDLER l_event_receiver->handle_node_double_click FOR tree1
(3) Define and implement event handler method:
METHODS handle_node_double_click
FOR EVENT node_double_click OF cl_gui_alv_tree
IMPORTING node_key.
ENDCLASS. "lcl_tree_event_receiver DEFINITION
CLASS lcl_tree_event_receiver IMPLEMENTATION
CLASS lcl_tree_event_receiver IMPLEMENTATION.
METHOD handle_node_double_click.
break-point.
ENDMETHOD. "handle_node_double_click
Regards,
Ranjan -
How to trigger an ActionListener in different class on click of a tree node
Hi guyz,
There are three panels inside my main Frame
-->TopPanel,MiddlePanel and BottomPanel. I have a tree structure inside a panel. This panel along with couple more panels is in MiddlePanel. My main class is "mainClass.java". Inside that i have an actionListener for a specific button. I need to trigger that actionListener when i click one of the tree nodes in the panel i specified before. The problem is that my MiddlePanel is itself a different ".java" file which is being called in my "mainClass" when a specific button is clicked. There are different buttons in my "mainClass" file and for each one i am creating different MiddlePanels depending on the buttons clicked.
So, if i click the tree node, i need to remove the MiddlePanel and recreate the MiddlePanel(One that will be created when a different button in the mainClass file is clicked). i.e., i need to trigger the actionListener for that corresponding button. Is there a way to do it?use this code to call different panel by selecting tree node.....ok
import javax.swing.*;
import javax.swing.tree.*;
import java.awt.*;
import java.sql.SQLException;
import javax.swing.event.*;
class MainTree extends JFrame
private static final long serialVersionUID = 1L;
CardLayout cl = new CardLayout();
JPanel panel = new JPanel(cl);
public MainTree() throws Exception
JPanel blankPanel = new JPanel();
blankPanel.setBorder(BorderFactory.createTitledBorder("Blank Panel"));
panel.add(blankPanel,"0");
panel.add(blankPanel,BorderLayout.CENTER);
panel.setPreferredSize(new Dimension(800, 100));
setSize(1000, 700);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
// getContentPane().setLayout(new GridLayout(1,2));
getContentPane().setLayout(new BorderLayout());
ConfigTree test = new ConfigTree();
DefaultMutableTreeNode mainTree = (DefaultMutableTreeNode)test.buildTree();
JTree tree = new JTree(mainTree);
tree.setCellRenderer(new DefaultTreeCellRenderer(){
private static final long serialVersionUID = 1L;
public Component getTreeCellRendererComponent(JTree tree,Object value,
boolean sel,boolean expanded,boolean leaf,int row,boolean hasFocus){
JLabel lbl = (JLabel)super.getTreeCellRendererComponent(tree,value,sel,expanded,leaf,row,hasFocus);
NodeWithID node = (NodeWithID)((DefaultMutableTreeNode)value).getUserObject();
if(node.icon != null)lbl.setIcon(node.icon);
return lbl;
getContentPane().add(new JScrollPane(tree));
loadCardPanels((DefaultMutableTreeNode)((DefaultTreeModel)tree.getModel()).getRoot());
getContentPane().add(panel,BorderLayout.EAST);
getContentPane().add(blankPanel,BorderLayout.WEST);
// getContentPane().add(panel);
tree.addTreeSelectionListener(new TreeSelectionListener(){
public void valueChanged(TreeSelectionEvent tse){
NodeWithID node =(NodeWithID)((DefaultMutableTreeNode)((TreePath)tse.getPath())
.getLastPathComponent()).getUserObject();
if(node.nodePanel != null)
String cardLayoutID = node.ID;
cl.show(panel,cardLayoutID);
cl.show(panel,"0");
public void loadCardPanels(DefaultMutableTreeNode dmtn)
for(int x = 0; x < dmtn.getChildCount(); x++)
if(((DefaultMutableTreeNode)dmtn.getChildAt(x)).isLeaf() == false)
loadCardPanels((DefaultMutableTreeNode)dmtn.getChildAt(x));
NodeWithID node = (NodeWithID)((DefaultMutableTreeNode)dmtn.getChildAt(x)).getUserObject();
if(node.nodePanel != null)
String cardLayoutID = node.ID;
panel.add(cardLayoutID,node.nodePanel);
public static void main(String[] args) throws Exception{new MainTree().setVisible(true);}
class ConfigTree
public Object buildTree() throws Exception
NodeWithID n0 = new NodeWithID("HelpDesk","");
NodeWithID n1 = new NodeWithID("Administrator",n0.nodeName);
NodeWithID n2 = new NodeWithID("Report Form",n1.nodeName,new Tree().getContentPane());
NodeWithID n3 = new NodeWithID("Create User",n2.nodeName,new JPanel());
NodeWithID n4 = new NodeWithID("Unlock User",n2.nodeName,new unlockui().getContentPane());
NodeWithID n5 = new NodeWithID("List User",n2.nodeName,new JPanel());
NodeWithID n6 = new NodeWithID("Assign Role",n2.nodeName,new AssignRole());
NodeWithID n9 = new NodeWithID("Operator",n1.nodeName,new JPanel());
NodeWithID n10 = new NodeWithID("Create Ticket",n9.nodeName,new JPanel());
NodeWithID n11 = new NodeWithID("My Ticket",n9.nodeName,new JPanel());
NodeWithID n12 = new NodeWithID("All Ticket",n9.nodeName,new JPanel());
NodeWithID n13 = new NodeWithID("Event Viewer",n1.nodeName,new JPanel());
DefaultMutableTreeNode top = new DefaultMutableTreeNode(n0);
DefaultMutableTreeNode branch1 = new DefaultMutableTreeNode(n1);
top.add(branch1);
DefaultMutableTreeNode node1_b1 = new DefaultMutableTreeNode(n2);
DefaultMutableTreeNode n1_node1_b1 = new DefaultMutableTreeNode(n3);
DefaultMutableTreeNode n2_node1_b1 = new DefaultMutableTreeNode(n4);
DefaultMutableTreeNode n3_node1_b1 = new DefaultMutableTreeNode(n5);
DefaultMutableTreeNode n4_node1_b1 = new DefaultMutableTreeNode(n6);
branch1.add(node1_b1);
branch1.add(n1_node1_b1);
branch1.add(n2_node1_b1);
branch1.add(n3_node1_b1);
branch1.add(n4_node1_b1);
DefaultMutableTreeNode node4_b1 = new DefaultMutableTreeNode(n9);
DefaultMutableTreeNode n1_node4_b1 = new DefaultMutableTreeNode(n10);
DefaultMutableTreeNode n2_node4_b1 = new DefaultMutableTreeNode(n11);
DefaultMutableTreeNode n3_node4_b1 = new DefaultMutableTreeNode(n12);
node4_b1.add(n1_node4_b1);
node4_b1.add(n2_node4_b1);
node4_b1.add(n3_node4_b1);
DefaultMutableTreeNode node5_b1 = new DefaultMutableTreeNode(n13);
branch1.add(node1_b1);
branch1.add(node4_b1);
branch1.add(node5_b1);
return top;
class NodeWithID
String nodeName;
String ID;
JPanel nodePanel;
ImageIcon icon;
public NodeWithID(String nn,String parentName)
nodeName = nn;
ID = parentName+" - "+nodeName;
public NodeWithID(String nn,String parentName,Container container)
this(nn,parentName);
nodePanel = (JPanel) container;
nodePanel.setBorder(BorderFactory.createTitledBorder(ID + " Panel"));
public NodeWithID(String nn,String parentName,JPanel p, ImageIcon i)
this(nn,parentName,p);
icon = i;
public String toString(){return nodeName;}
} -
Double click a node in a jtree
hi i have a Jtree with usernames has nodes. how do i generate a code that when a user double clicks a username node, the corresponding code will execute along with what node was clicked on.
for example, a user clicks on username "jonney" and than a new chat window will appear to establish a chat session with jonney.
at the moment when a user selects a node, you are able to create a new chat session, but i want to change it so that the user has to double click their username not just selecting it. similar to msn mesenger.
here is the code i have at the moment.
public void valueChanged(TreeSelectionEvent event)
DefaultMutableTreeNode node = (DefaultMutableTreeNode)
userTree.getLastSelectedPathComponent();
//get username.
Object nodeInfo = node.getUserObject();
String info =nodeInfo.toString();
if(node.isLeaf())
ChatDialog_c chatting = new ChatDialog_c(crnt_user, info);
Thread t = new Thread(chatting);
chatting.setTitle("I-comm");
chatting.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
chatting.setSize(430, 200);
chatting.getSize();
chatting.setLocation(420,200);
chatting.setVisible(true);
t.start();
}when you call a method you call it on an object.
e.g.
Class instance = new Class();
instance.method();where Class is a hypathetical class name and instance is a hypathetical variable name of type Class.
new is a keyword for creating an instance of a Class.
method is the name of a method in Class which is accessable through instance.
when you do not put an instance in front of a metho call:
method();it is the same as:
this.method();this being the keyword to say "us the current object we are in".
In the API for MouseEvent it says there is a method getClickCount(). looking back at your code we have a refrence to a MouseEvent being passed as a parameter to the method you are in.
private void userTreeMouseClicked(java.awt.event.MouseEvent evt) {
^from this you should be able to see what you are doing wrong, I could have just told you the line to write in much less time but i think you will gain more this way. -
Call forms and reports from a hierarchical tree node.
Hello,
I am new in pl/sql programming and I have some dificulties. I have created a hierarchical tree, in order to use it as a menu in an application that I am trying to develope. The problem is that I do not know how can I make the last nodes to be either a form or a report and when somebody double clicks on these nodes the form or the report will run. What is more, should I use the when-tree-node-selected trigger or the when-tree-node-activated?
Thank you in advance,
VagHi ,
In Oracle Forms , a hierarchical tree is developed through the use of a sql statement and column which defines the order of leaves...
Visit the on-line help of Forms10g to find out the details , and the triggers as well...
Something else...post this question to Oracle Forms to get more detailed answer...
Regards,
Simon
Maybe you are looking for
-
Can I create a fillable form in Pages and then PDF to iWeb?
I'm a teacher and I'd like to be able to upload some PDF documents for my students to download, but would LOVE it if I could make sections of the document available for them to fill out answers, so they could, in turn, save as PDF and send back to me
-
My ipad2 is acting strangely. I am running iOS 5.1 and in the last several days it has stopped updating applications. If more than 1 app is available for updates, if I say "update all" it will update all of the apps except the last one in the list -
-
Header at text file (Destination ) in SSIS
How to give the header while fetching from database source to text files destination (Tab Delimiter)
-
JDeveloper 3.1 JSP Engine Run-Time error - "NLSFormat undefined"
hi, I have a JSP/Bean page running through JDeveloper 3.1 It has the "EditForm" bean with (among other fields) a date field in it. <jsp:useBean class="....EditForm" id = "f1"> <% f1.initialize(.....); f1.setFormAction(.....); f1.addHiddenField("execu
-
I have used Zotero for some time from my computer at home. My library usually appeared at the bottom of Firefox screen. I have recently updated Firefox and as the site recommended cleaned it. The letter Z in my tool bar disappeared. I also had anothe