Click on Tree
I am developing an application using Application Express 4.1.1.00.23, I developed a tree similar to APEX Sample Database Application tree (i.e Reports > Product Order Tree).
When I click on a specific node of the tree it navigates/opens to another page in the existing application (as Sample Database Application tree do).
Sample Database Application does not return back to the called form (if called from Reports > Product Order Tree).
I have a requirement to come back to the tree form when i click cancel button on called page.
Please advice. Thanks in advance.
I think it's a better question for APEX forum,
Oracle Application Express (APEX)
So close this thread and re-open it there.
Aman....
Similar Messages
-
Single click on tree control navigation
Hello I have a tree control where I have include the navigation, I know that there is a method
HANDLE_NODE_DOUBLE_CLICK FOR G_TREE
but is there an method for only one click, I want to change my alv grid data when I click on several nodes in my tree controlHello Muhammet
I have re-written my sample report ZUS_SDN_TWO_ALV_GRIDS into ZUS_SDN_TREE_AND_GRID_CONTROL which is now display a tree control together with the ALV grid.
When you analyze this new report you will see that every step of the program logic is as I described in my previous e-mails.
*& Report ZUS_SDN_TWO_ALV_GRIDS
*& Screen '0100' contains no elements.
*& ok_code -> assigned to GD_OKCODE
*& Flow logic:
* PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
* PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
*& Thread: single click on tree control navigation
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="1143770"></a>
REPORT zus_sdn_tree_and_grid_control.
TYPE-POOLS: abap, cntl.
TYPES: node_table_type LIKE STANDARD TABLE OF mtreesnode
WITH DEFAULT KEY.
* CAUTION: MTREESNODE is the name of the node structure which must
* be defined by the programmer. DO NOT USE MTREESNODE!
CONSTANTS:
BEGIN OF c_nodekey,
root TYPE tv_nodekey VALUE 'Root', "#EC NOTEXT
child1 TYPE tv_nodekey VALUE 'Child1', "#EC NOTEXT
* child2 type tv_nodekey value 'Child2', "#EC NOTEXT
new1 TYPE tv_nodekey VALUE 'New1', "#EC NOTEXT
new2 TYPE tv_nodekey VALUE 'New2', "#EC NOTEXT
* new3 type tv_nodekey value 'New3', "#EC NOTEXT
* new4 type tv_nodekey value 'New4', "#EC NOTEXT
END OF c_nodekey.
DATA:
gd_okcode TYPE ui_func,
gd_repid TYPE syst-repid,
go_docking TYPE REF TO cl_gui_docking_container,
go_splitter TYPE REF TO cl_gui_splitter_container,
go_cell_left TYPE REF TO cl_gui_container,
go_cell_right TYPE REF TO cl_gui_container,
go_tree TYPE REF TO cl_gui_simple_tree,
go_grid1 TYPE REF TO cl_gui_alv_grid,
** go_grid2 TYPE REF TO cl_gui_alv_grid,
gs_layout TYPE lvc_s_layo.
DATA:
gt_knb1 TYPE STANDARD TABLE OF knb1,
gt_knvv TYPE STANDARD TABLE OF knvv.
* CLASS lcl_eventhandler DEFINITION
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING
e_row
e_column
es_row_no
sender.
ENDCLASS. "lcl_eventhandler DEFINITION
* CLASS lcl_eventhandler IMPLEMENTATION
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_double_click.
* define local data
DATA:
ls_knb1 TYPE knb1.
CHECK ( sender = go_grid1 ).
READ TABLE gt_knb1 INTO ls_knb1 INDEX e_row-index.
CHECK ( ls_knb1-kunnr IS NOT INITIAL ).
** CALL METHOD go_grid1->set_current_cell_via_id
** EXPORTING
*** IS_ROW_ID =
*** IS_COLUMN_ID =
** is_row_no = es_row_no.
* Triggers PAI of the dynpro with the specified ok-code
CALL METHOD cl_gui_cfw=>set_new_ok_code( 'DETAIL' ).
ENDMETHOD. "handle_double_click
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
* CLASS LCL_APPLICATION DEFINITION
CLASS lcl_application DEFINITION.
PUBLIC SECTION.
CLASS-DATA:
md_event TYPE string READ-ONLY,
md_node_key TYPE tv_nodekey READ-ONLY.
CLASS-METHODS:
handle_node_double_click
FOR EVENT node_double_click
OF cl_gui_simple_tree
IMPORTING node_key,
handle_expand_no_children
FOR EVENT expand_no_children
OF cl_gui_simple_tree
IMPORTING node_key.
ENDCLASS. "LCL_APPLICATION DEFINITION
* CLASS LCL_APPLICATION IMPLEMENTATION
CLASS lcl_application IMPLEMENTATION.
METHOD handle_node_double_click.
" this method handles the node double click event of the tree
" control instance
" show the key of the double clicked node in a dynpro field
md_event = 'NODE_DOUBLE_CLICK'.
md_node_key = node_key.
" Trigger PAI and set ok-code = 'DETAIL'
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = 'DETAIL'
* IMPORTING
* rc =
MESSAGE md_node_key TYPE 'I'.
ENDMETHOD. "HANDLE_NODE_DOUBLE_CLICK
METHOD handle_expand_no_children.
" this method handles the expand no children event of the tree
" control instance
DATA: node_table TYPE node_table_type,
node TYPE mtreesnode.
" show the key of the double clicked node in a dynpro field
md_event = 'EXPAND_NO_CHILDREN'.
md_node_key = node_key.
IF node_key = 'Child1'.
* add two nodes to the tree control (the children of 'Child1')
* Node with key 'New1'
CLEAR node.
node-node_key = c_nodekey-new1.
node-relatkey = c_nodekey-child1.
node-relatship = cl_gui_simple_tree=>relat_last_child.
node-isfolder = ' '.
node-text = 'New1'(ne1).
APPEND node TO node_table.
* Node with key 'New2'
CLEAR node.
node-node_key = c_nodekey-new2.
node-relatkey = c_nodekey-child1.
node-relatship = cl_gui_simple_tree=>relat_last_child.
node-n_image = '@10@'.
node-expander = ' '.
node-text = 'New2'(ne2).
APPEND node TO node_table.
CALL METHOD go_tree->add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = node_table
EXCEPTIONS
failed = 1
error_in_node_table = 2
dp_error = 3
table_structure_name_not_found = 4
OTHERS = 5.
IF sy-subrc <> 0.
** MESSAGE A000.
ENDIF.
ENDIF.
ENDMETHOD. "HANDLE_EXPAND_NO_CHILDREN
ENDCLASS. "LCL_APPLICATION IMPLEMENTATION
START-OF-SELECTION.
SELECT * FROM knb1 INTO TABLE gt_knb1 UP TO 100 ROWS
WHERE bukrs = '1000'.
PERFORM init_controls.
* Display data
gs_layout-grid_title = 'Customers: Sales Areas'.
CALL METHOD go_grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'KNVV'
is_layout = gs_layout
CHANGING
it_outtab = gt_knvv
EXCEPTIONS
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.
* Link the docking container to the target dynpro
gd_repid = syst-repid.
CALL METHOD go_docking->link
EXPORTING
repid = gd_repid
dynnr = '0100'
* CONTAINER =
EXCEPTIONS
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.
* NOTE: dynpro does not contain any elements
CALL SCREEN '0100'.
* Flow logic of dynpro (does not contain any dynpro elements):
*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'. " contains push button "DETAIL"
* SET TITLEBAR 'xxx'.
* Refresh display of detail ALV list
CALL METHOD go_grid1->refresh_table_display
* EXPORTING
* IS_STABLE =
* I_SOFT_REFRESH =
EXCEPTIONS
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
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
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
* User has pushed button "Display Details"
WHEN 'DETAIL'.
MESSAGE gd_okcode TYPE 'I'.
PERFORM entry_show_details.
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form ENTRY_SHOW_DETAILS
* text
* --> p1 text
* <-- p2 text
FORM entry_show_details .
* define local data
DATA:
ld_row TYPE i,
ls_knb1 TYPE knb1.
IF ( gt_knvv IS INITIAL ).
SELECT * FROM knvv INTO TABLE gt_knvv
FOR ALL ENTRIES IN gt_knb1
WHERE kunnr = gt_knb1-kunnr.
ELSE.
REFRESH: gt_knvv.
ENDIF.
ENDFORM. " ENTRY_SHOW_DETAILS
*& 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 splitter container
CREATE OBJECT go_splitter
EXPORTING
parent = go_docking
rows = 1
columns = 2
* NO_AUTODEF_PROGID_DYNNR =
* NAME =
EXCEPTIONS
cntl_error = 1
cntl_system_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.
* Get cell container
CALL METHOD go_splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = go_cell_left.
CALL METHOD go_splitter->get_container
EXPORTING
row = 1
column = 2
RECEIVING
container = go_cell_right.
* Create ALV grids
CREATE OBJECT go_grid1
EXPORTING
i_parent = go_cell_right
EXCEPTIONS
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Set event handler
SET HANDLER:
lcl_eventhandler=>handle_double_click FOR go_grid1.
PERFORM create_and_init_tree.
ENDFORM. " INIT_CONTROLS
*& Form CREATE_AND_INIT_TREE
* text
* --> p1 text
* <-- p2 text
FORM create_and_init_tree .
DATA: lt_node_table TYPE node_table_type,
lt_events TYPE cntl_simple_events,
ls_event TYPE cntl_simple_event.
* create a tree control
CREATE OBJECT go_tree
EXPORTING
parent = go_cell_left
node_selection_mode = cl_gui_simple_tree=>node_sel_mode_single " single node selection is used
EXCEPTIONS
lifetime_error = 1
cntl_system_error = 2
create_error = 3
failed = 4
illegal_node_selection_mode = 5.
IF sy-subrc <> 0.
** MESSAGE a000.
ENDIF.
* define the events which will be passed to the backend
" node double click
ls_event-eventid = cl_gui_simple_tree=>eventid_node_double_click.
** ls_event-appl_event = 'X'. " process PAI if event occurs
" NOTE: Do NOT register as application event !!!!!
APPEND ls_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 a000.
ENDIF.
SET HANDLER:
lcl_application=>handle_node_double_click FOR go_tree,
lcl_application=>handle_expand_no_children FOR go_tree.
* add some nodes to the tree control
* NOTE: the tree control does not store data at the backend. If an
* application wants to access tree data later, it must store the
* tree data itself.
PERFORM build_node_table USING lt_node_table.
* node_table_structure_name = 'MTREESNODE'
* A programmer using the tree control must create a structure in the
* dictionary. This structure must include the structure TREEV_NODE
* and must contain a character field with the name 'TEXT'.
CALL METHOD go_tree->add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = lt_node_table
EXCEPTIONS
failed = 1
error_in_node_table = 2
dp_error = 3
table_structure_name_not_found = 4
OTHERS = 5.
IF sy-subrc <> 0.
** MESSAGE a000.
ENDIF.
ENDFORM. " CREATE_AND_INIT_TREE
*& Form build_node_table
* text
* --> p1 text
* <-- p2 text
FORM build_node_table
USING
node_table TYPE node_table_type.
DATA: node LIKE mtreesnode.
* Build the node table.
* Caution: The nodes are inserted into the tree according to the order
* in which they occur in the table. In consequence, a node must not
* occur in the node table before its parent node.
* Node with key 'Root'
node-node_key = c_nodekey-root.
" Key of the node
CLEAR node-relatkey. " Special case: A root node has no parent
CLEAR node-relatship. " node.
node-hidden = ' '. " The node is visible,
node-disabled = ' '. " selectable,
node-isfolder = 'X'. " a folder.
CLEAR node-n_image. " Folder-/ Leaf-Symbol in state "closed":
" use default.
CLEAR node-exp_image. " Folder-/ Leaf-Symbol in state "open":
" use default
CLEAR node-expander. " see below.
node-text = 'Root'(roo).
APPEND node TO node_table.
* Node with key 'Child1'
node-node_key = c_nodekey-child1.
" Key of the node
" Node is inserted as child of the node with key 'Root'.
node-relatkey = c_nodekey-root.
node-relatship = cl_gui_simple_tree=>relat_last_child.
node-hidden = ' '.
node-disabled = ' '.
node-isfolder = 'X'.
CLEAR node-n_image.
CLEAR node-exp_image.
node-expander = 'X'. " The node is marked with a '+', although
" it has no children. When the user clicks on the
" + to open the node, the event
" expand_no_children is fired. The programmer can
" add the children of the
" node within the event handler of the
" expand_no_children event
" (see method handle_expand_no_children
" of class lcl_application)
node-text = 'Child1'(ch1).
node-style = cl_gui_simple_tree=>style_emphasized_positive.
APPEND node TO node_table.
ENDFORM. " build_node_table
Regards
Uwe -
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); -
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.
-
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 -
On click at tree component it has to call SWF using XML
Hi,
I have created a flash file with name xmltoflash_tree.
Incules a Tree component named "tree01". On my first frame of
actions i have included "#include "test.as"". This is about my
flash file
In my Test.as :
import mx.controls.Tree;
var xmlLoader:XML = new XML();
xmlLoader.ignoreWhite = true;
xmlLoader.load("list.xml");
xmlLoader.onLoad = function(success:Boolean):Void {
tree01.dataProvider = this;
tree01.initBranches();
tree01.vScrollPolicy = "auto";
Tree.prototype.initBranches = function(node:XMLNode):Void {
if (node == undefined) {
for (var i = 0; i < this.dataProvider.childNodes.length;
i++) {
this.initBranches(this.dataProvider.childNodes
} else {
if ( (node.attributes.isBranch == "true") &&
!(this.getIsBranch(node)) ) {
this.setIsBranch(node, true);
if ( (node.attributes.isOpen == "true") &&
!(this.getIsOpen(node)) ) {
this.setIsOpen(node, true);
for (var i = 0; i < node.childNodes.length; i++) {
this.initBranches(node.childNodes);
I created an XML file named as "list.xml" :
Script inside this xml is :
<?xml version="1.0" encoding="iso-8859-1"?>
<node label="Select Application" isOpen="true">
<node label="Application1" isBranch="true">
<node label="Introduction to Application1"
isBranch="true" >
<node label="Testing1" />
<node label="Testing2" />
<node label="Testing3" />
</node>
</node>
<node label="Application2" isBranch="true">
<node label="Introduction to Application2"
isBranch="true" >
<node label="Testing1" />
<node label="Testing2" />
<node label="Testing3" />
</node>
</node>
I have folder with name Treehelp. All my files are in this
folder.
xmltoflash_tree.fla
test.as
list.xml
linktesting.swf
I have SWF in the same folder named "linktesting.swf".
I need to call "linktesting.swf" or any other swf files
included in the same folder. when i click on "Testing1/ or any
othe".
Have to write the script in XML to call the swf file. Help me
in this.
Regards
Ranjith Kumar. BandiAdd oneMore attribute in the XML Nodes,
When selecting a Node in a Tree component you will recieve
all the data of that particular xml node. using that you can load
the Files
<node label="Testing1" filePath="MyFirstSWF.swf"/> -
Report is Blank Until you Click Group Tree
Hello,
I have a report that is opening as a totally blank page (except for group tree). When you click on group tree, the report appears. Once this happens, you can refresh the report, and it is fine.
Can someone tell me what is happening, and how I can fix it?
Thanks.As you've discovered, this can be caused when the Preview app on a Mac saves a PDF form. Any script you download has to be installed in the correct location and then Acrobat has to be restarted. Here's a link to an updated script that works with Reader: http://kb2.adobe.com/community/publishing/885/cpsid_88564.html
An alternative to using a script with Acrobat is to export the form data and then reimporting it into the form. -
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);
} -
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. -
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, -
Avisports_store does not appear in the tree when clicked Refresh tree button in eclipse
I have connected my eclipse to Jump start kit remotely and facing the issue. I have attached screen shot here.
I just read your comment - "connected my eclipse to Jump start kit remotely". Does that mean that you have installed eclipse and JSK in different location/server/machine? or they are installed in same machine?
If installed in same machine, can you the do the following?
1. Remove the CSDT plugin from eclipse. Open eclipse with CMD - Open command line and type "eclipse - clean" and press enter.
2. Add the CSDT plugin as described in the guide - http://docs.oracle.com/cd/E29542_01/doc.1111/e29634/dt_quickstart.htm#WBCSD941
Note: you need to have correct plugin as mentioned in guide.
3. When you try to connect, do you see green icon after the connection details are entered as shown here - http://docs.oracle.com/cd/E29542_01/doc.1111/e29634/dt_quickstart.htm#BEHBAIAC? If not, then you are not connected. Check user's permission. If you are using fwadmin, this user must be a part of the RestAdmin group. Once added to RestAdmin group, try to connect and see if GREEN icon is shown.
Regards,
Guddu -
Regarding the creation of dynamic view by clicking on a tree.
Hi all:
There are two parts on the window. the left part is a tree with three tree nodes, by clicking on tree nodes, the other is an area to show the business content.
for example, three tree nodes are respectively "input customer infor", "change customer infor", "view customer infor".
the initial view is input customer infor, I know how to create the view initially in method init or wddomodifyview, but when I click tree node like "change customer infor", how create the view , or how to refresh the view , that is to say, to delete old elements in the view of " input customer infor".
can you please give me a hint?
Thank you very much !Hello,
be wary of always creating the view and then just assigning the visbility of the given view container. Although this is quite simple, it means that the WD events are still called for the view - especially where tree might be built, the associated logic could be quite intensive. It is better to only call this logic when needed.
Embedding the views in a single view container - and dynamically switching the assignment would ensure only the selected view would be called.
I would strongly advocate the FPM to do some of this - but unfortunately it doesn't (yet) have a layout that would easily support your two pane view (if you really need this). However it does have a guided activity floorplane (GAF) which is the standard for this sort of select, edit, save, confirm sort of work - if you want your users to have a similar experience to the rest of SAP's delivered apps, it would certainly be worth considering.
good luck,
Chris -
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;}
} -
Hi friends.........
Iam using flex tree control data coming from coldfusion file to display grid. As i click the tree folder to change the data from dynamic from grid.
How to pass the folder id from coldfusion file.. Is it possible ?.. Means give any example please....
Any One Help Me......
With Regards.,
Lingu.......When you set the dataProvider for your tree control, you actually pass an array or arraycollection or whatever to that property. The array contains objects coming from your server, right? Each object should contain a property with the folder id, something like:
var arr:Array = [{id: 1, folderID: 34, name: "..."}, {id: 2, folderID: 4, name: "..."}, ...];
Now, when you click an item in your tree or your dataGrid, you can access the folder id by:
myTree.selectedItem.folderID
Hope this helps
Dany -
How to handle Right Click Event in Tree
Hi ,
I am Vaibhav. I have create a tree in Apex 4.0. I have to add options insert,update,delete in right click on tree node. So
what is the solution for this scenario.
Thanks in advance,
Vaibhav
Edited by: user10600404 on Apr 27, 2011 2:46 AMhi
Thanks for reply,
I have add this in tree query
select case when connect_by_isleaf = 1 then 0
when level = 1 then 1
else -1
end as status,
level,
rt.NAME as title,
null as icon,
ex.ID as value,
null as tooltip,
null as link
from TREE_MASTER ex
inner join ROOT_MASTER rt
on ex.PARENT_ID=rt.ID
start with ex.PARENT_ID = 11
connect by prior ex.PARENT_ID=ex.CHILD_ID
But tree title not looks in correct way It Looks like as Javascript synatax. So what is the solution for this ?
Regards,
Vaibhav
Maybe you are looking for
-
Need help with spry collapsible panel (menu)
I learn as I go when I created my website http://www.invitation-fascination.com/shapes.html and so far I've created a page with 13 spry collapsible panels- I think it came out pretty well. Now this is what I want to add to the page: I want to creat
-
I think I have deleted my printer drivers and I can't recover them
Hello, I use an HP PSC1600 printer/scanner. Recently I had to reinstall my OS, and today I tried to scan for the first time since doing so. The scanner didn't work, and unfortunately I went on the wrong route to try to fix it. Instead of the usual 'k
-
Disabling Radio Button Conditionally is not working Well
Hi friends, I have three radio buttons <li>self <li>New Hire <li>On Behalf of I will be showing this radio button conditionally according to the user who logs into the application. Assume, suppose if a person 'A' enters into the application means he
-
Security Answer Verification Problem.....???
I have forgotten my Security question and my apple id requires security question.I had request to reset these ques when i submit for reset t "plase i forguet my questions password and i want reset password <Personal Information Edited by Host>
-
My computer was not responding well when I tried to install a driver for my webcam. The error message said that I should try uninstalling some recently installed programs. So I did. There were some that were recently installed but I didn't really kno