How to select a tree node in JSF.

Hi All,
Sample code for JSF components having following lines to display a tree node:
<d:graph_treenode name="File-New" label="New 5"
icon="folder_16_pad.gif" action="demo-test.faces"/>
The above lines are showing that when we select the node it is invoking "demo-test.jsp". Whether it is possible to select multiple nodes similar to JTree(Swing) functionality?
Regards,
Sharath Reddy.

Hi again,
I am sorry, I cannot help in another way than looking at the documentation, because I have currently no JDK available here. If expandPath(...) doesn't work, you can try to get all the nodes of that path and expand them from the root node downwards, perhaps that will work.
greetings Marsian

Similar Messages

  • Programmatically selecting a Tree node

    Hi there,
    Given a TreePath object, I need to know how to programmatically select a tree node on a JTree.
    Here's the situation:
    I have a simple text editor project which has a JTree on its interface representing the local file system. The program has a SaveAs dialog box which also has a duplicate JTree as the one on the main interface (directories only). As the user selects the directory in which they wish to save the open file in the SaveAs dialog box, I need somehow to programmatically cause the JTree on the main interface to correspondingly select the same directory. How is this done?
    The whole point of this is so that I can then add a new leaf node to the tree at the specified directory location. I've tried simply setting the jTree1.setSelectionPath(...) method and even tried to call the valueChanged(...) method of the TreeSelectionListener object as you can see from the code snippet below, but none of these approaches have been successful.
    Please advise,
    Alan
    public void createLeafNode()
         jTree1.repaint();
         if(path == null)
            return;
         jTree1.setSelectionPath(path);
         //SelectionListener.valueChanged(new TreeSelectionEvent(jTree1, path, true, oldLeadPath, newLeadPath));
         //System.out.println("path is: " + path.toString());
         DefaultTreeNode parent = getTreeNode(path);
         //System.out.println("parent is " + parent.toString());
         //Create the child node
         IconData idata = new IconData(ICON_LEAF, new FileNode(new SpecialFile(ref.FileOpen)));
         DefaultTreeNode node = new DefaultTreeNode(idata);
         parent.add(node);
         //Tell the model that the tree structure has changed
         model.nodeStructureChanged(parent);
         path = path.pathByAddingChild(node);
         jTree1.scrollPathToVisible(path);
         //jTree1.repaint();    

    Yes, I've tried setSelectionPath(TreePath path) numerous times, but it does nothing to select the node on the tree! You can see from the code I submitted that it is there commented out.
    Ordinarily, when you click on a node on the tree it becomes the "active" node, evident because it becomes highlighted. But when I use setSelectionPath(TreePath path) method, giving it the path it needs, the node on the tree doesn't become the "active" node, therefore, not selected! Furthermore and subsequently, the rest of the code in the method createLeafNode() doesn't add a new node to the tree in the location specified by the TreePath object!
    If you have used setSelectionPath(TreePath path) before successfully I would be interested in seeing a small sample program demonstrating its use. It would have to prove to me that you can select a node in the tree without physically clicking on any node in the tree with the mouse cursor, and add a new child node to that selected node.
    I submit to you a small test program I put together that demonstrates the "typical setup". It requires the user to physically click on a node of the tree, then click on a button that adds a new node in the location of the selected node. If you can alter this program demonstrating that you can add a new node to the tree without my having to click on any node of the tree with my cursor, then I'll assign you the Duke Dollars and be forever humbled by your programming prowess.
    Thanks for keeping on top of this thread as I've tried everything I can think of to try and make my program work. If you need to ask any questions please ask away. Perhaps there is something about my program that I've not explained yet that you're not aware of that I should have included. At this point I can't see the forest for the trees.
    Alan
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.JTree;
    import javax.swing.event.*;
    import javax.swing.tree.*;
    public class AddNodeExample extends JFrame implements ActionListener
      JTree jTree1 = null;
      DefaultTreeModel model = null;
      DefaultMutableTreeNode rootNode = null;
      JScrollPane jScrollPane1 = null;
      JLabel status = new JLabel("Status:");
      TreePath path = null;
      JButton add = new JButton("Add new node");
      public static void main(String[] args)
        AddNodeExample example = new AddNodeExample();
        example.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      public AddNodeExample()
        super("Add Node To JTree Example");
        setSize(400, 300);
        jScrollPane1 = new JScrollPane();
        add.addActionListener(this);
        DefaultMutableTreeNode[] boys = new DefaultMutableTreeNode[6];
        boys[0] = new DefaultMutableTreeNode("Harry");
        boys[1] = new DefaultMutableTreeNode("Tom");
        boys[2] = new DefaultMutableTreeNode("Jake");
        boys[3] = new DefaultMutableTreeNode("Brian");
        boys[4] = new DefaultMutableTreeNode("Alan");
        boys[5] = new DefaultMutableTreeNode("Guy");
        DefaultMutableTreeNode[] girls = new DefaultMutableTreeNode[6];
        girls[0] = new DefaultMutableTreeNode("Debbie");
        girls[1] = new DefaultMutableTreeNode("Jane");
        girls[2] = new DefaultMutableTreeNode("Sally");
        girls[3] = new DefaultMutableTreeNode("Jessica");
        girls[4] = new DefaultMutableTreeNode("MoonUnit");
        girls[5] = new DefaultMutableTreeNode("Sara");
        rootNode = new DefaultMutableTreeNode("Students");
        DefaultMutableTreeNode Boys = new DefaultMutableTreeNode("Boys");
        DefaultMutableTreeNode Girls = new DefaultMutableTreeNode("Girls");
        //Fill up the node for boys
        for(int i = 0; i < boys.length; i++)
          Boys.add(boys);
    //Fill up the node for girls
    for(int i = 0; i < girls.length; i++)
    Girls.add(girls[i]);
    //add Boys and Girls to rootNode
    rootNode.add(Boys);
    rootNode.add(Girls);
    model = new DefaultTreeModel(rootNode);
    jTree1 = new JTree(model);
    jTree1.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
    jTree1.putClientProperty("JTree.lineStyle", "Angled");
    jTree1.addTreeSelectionListener(new TreeSelectionListener()
    public void valueChanged(TreeSelectionEvent event)
         path = event.getPath();
    DefaultMutableTreeNode node = getTreeNode(path);
    status.setText("Selected: " + (String)node.getUserObject());     
    jScrollPane1.getViewport().add(jTree1, null);
    getContentPane().add(jScrollPane1, BorderLayout.CENTER);
    getContentPane().add(add, BorderLayout.NORTH);
    getContentPane().add(status, BorderLayout.SOUTH);
    setVisible(true);
    public DefaultMutableTreeNode getTreeNode(TreePath path)
    return (DefaultMutableTreeNode)(path.getLastPathComponent());
    public void actionPerformed(ActionEvent e)
    jTree1.repaint();
    if (path == null || path.getPathCount() < 1)
         return;
    DefaultMutableTreeNode treeNode = getTreeNode(path);
    DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("My New Node");
    treeNode.add(newNode);
    model.nodeStructureChanged(treeNode);
    path = path.pathByAddingChild(newNode);
    jTree1.scrollPathToVisible(path);                    

  • How to get a Tree Node Value when a Tree is Expanded

    My reqiurement is when i Expand a Tree i need the Expanded tree Node Value. For Example Consider Parent as a Root Node of a Tree, and Consider its two Children Child1 and Child2.
    When + Parent Expanded
    I will Get the Output as --Parent
    - Child1
    - Child2
    so As when i expand the Tree i must Get the String Value Parent.

    duplicate
    How to get a Tree Node Value when a Tree is Expanded

  • Want to select a tree node Programmatically

    Hi all,
    I have a tree which is acting as a menu and by deafult which nodes are collapsed. Now what I need is I want to select a tree node(which node value or node label is known) by clicking a button. Pls help me. Bye.
    BR
    Tarik.

    Is it about this one?
    FTREE.SET_TREE_SELECTION(tree, node, FTREE.SELECT_ON)
    If another node is already selected, first unselect it:
    FTREE.SET_TREE_SELECTION(tree, FTREE.GET_TREE_SELECTION(tree, 1), FTREE.SELECT_OFF);

  • How to Programatically select a Tree Node ?

    Hi,
    JDV = 11.1.1.6
    I don't know about the answer yet! but the question is simple ;)
    say I'm viewing departments Info in a tree (Code , Name)
    How can I select a particular node in my tree using "Code" value as the parameter?
    Thank you ,
    Shahab

    Hi Shahab,
    Please find below a custom method to programmatically select a node during a disclose event by the user:
    public void onRowDisclosure(RowDisclosureEvent rowDisclosureEvent) {
         RichTree tree = (RichTree)rowDisclosureEvent.getSource();
         RowKeySet disclosedRows = rowDisclosureEvent.getAddedSet();
         RowKeySet selectedRows = tree.getSelectedRowKeys();
         selectedRows.clear();
         if (disclosedRows.size() == 1){
         Object disclosedNode = disclosedRows.iterator().next();
         selectedRows.add(disclosedNode);
         makeCurrent(tree, disclosedRows);
         tree.setSelectedRowKeys(selectedRows);
         AdfFacesContext adfFacesContext =
         AdfFacesContext.getCurrentInstance();
         adfFacesContext.addPartialTarget(tree.getParent());
    Hope this helps in your requirement.
    Best Regards,
    Ankit Gupta

  • How to create Hierarchy Tree Node structure?

    Hi experts,
              I want to know how to create a tree with kind of below Structure:
    Root A
             NodeA1
                  ITEMA1_IT1
                  ITEMA1_IT2
                  ITEMA1_IT3
             NodeA2
                  ITEMA2_IT1
                  ITEMA2_IT2
             NodeA3
                  ITEMA3_IT1
                  ITEMA3_IT2
                  ITEMA3_IT3
                  ITEMA3_IT4
    So when i click on Root A it shows me, NODEA1, NODEA2 & NODEA3....
    when further i click on NODEA1, it shows me items like  ITEMA1_IT1,ITEMA1_IT2, ITEMA1_IT3.
    when further i click on NODEA2, it shows me items like  ITEMA2_IT1,ITEMA2_IT2.
    SO item will get loaded when i click on perticular node.
    how its possible.
    I have gone through SDN so many threads, bt i didn't get exactly for webdynpro ABAP.
    Please guide me for the same.
    Thanks ,
    Saurin Shah

    Hi,
    you can create the tree you wanted as follows:
    1) create a node under your context say "root_node" with cardinality 1..1
    2) now create an attribute under it called "text" with type string.
    3) now create three nodes under this "root_node" called nodeA1 nodeA2 and nodeA3 with cardinality 0..n
    4) now under nodeA1 , nodeA2 and nodeA3 create an attribute called "text" with type string...so each node will have one attribute called "text" of type string...
    5) now create a node under nodeA1 called "itemA1" with cardinlity 0..n
    6) now create an attribute called "text" of type string under this node "itemA"...
    7) repeat step 5 and 6 for the other two nodes...nodeA2 and nodeA3
    8) now create six supply functionsthese functions will supply the text values for your nodes-
    I created like this:
    FILL_ITEM1
    FILL_ITEM2
    FILL_ITEM3
    FILL_NODEA1
    FILL_NODEA2
    FILL_NODEA3
    Note:*******************my view is called MAIN******************
    hence the coding is
    data
        lt_elements type if_main=>elements_nodea1.
    if you view is called view1...than the data declaration would be
    data
        lt_elements type if_view1=>elements_nodea1.
    9) go to each node and assign the supply function respectively....you can assign this by going to context tab and selecting the node you want to assign the supply function to and just type in the name of the supply funciton or do the help for that field by clicking on the little square btn...
    10) now we go the layout tab and put the tree ui on the layout....bind the datasource property to the context node "root_node"
    and bind the rootText property to the attribute "text" of the root_node...
    11) now right click on this tree ui element under the ROOTUIELEMENTCONTAINER and select "insert node type" ...a box will appear where you can see it has two types of node for you....one is tree_node_type and other one is tree_item_type...
    create three nodes with tree_node_type with names "nodeA1" nodeA2 and nodeA3 and three with tree_item_type with names "itemA1" itemA2 and itemA3...
    12) now bind all these node types and item types data sources and texts with corresponding nodes and attributes under your context...
    so nodeA1datasource will get bind to context nodeA1 and itemA1 data source will get bind to itemA1 from context..and so on...
    13) now in the wddoinit method: I setup the text for the root node.....
    DATA lo_nd_root_node TYPE REF TO if_wd_context_node.
      DATA lo_el_root_node TYPE REF TO if_wd_context_element.
      DATA ls_root_node TYPE wd_this->element_root_node.
      DATA lv_root_txt TYPE wd_this->element_root_node-root_txt.
    navigate from <CONTEXT> to <ROOT_NODE> via lead selection
      lo_nd_root_node = wd_context->get_child_node( name = wd_this->wdctx_root_node ).
    get element via lead selection
      lo_el_root_node = lo_nd_root_node->get_element( ).
    @TODO fill attribute
    lv_root_txt = 'Root Node'.
    set single attribute
      lo_el_root_node->set_attribute(
        name =  `ROOT_TXT`
        value = lv_root_txt ).
    hope this will give you the solution you are looking for...
    Thanks...
    AS...........

  • How to highlight a tree node programmatically

    Problem
    =====
    Just like a typical management software, I have a navigation tree presenting a list of objects (let's say toasters) on the left panel. The content panel on the right side presents the details of a toaster, when the user selects the toaster on the navigation tree. On the toaster details panel, I would like to have a hyper link referring to another toaster - associated to the selected toaster. On clicking on the hyperlink, I would like to display the details of the associated toaster and the navigation tree node for the associated toaster being highlighted.
    For example, BUI presents the following now:
    + Toasters | Toaster 1 Details [Refresh]
    + <toaster1> |
    + toaster2 | ... toaster3
    + toaster3 |
    toaster1 is selected on the navigation tree. The contents panel displays Toaster 1 details, which has a hyper link for toaster3.
    When the user click on toster3 on the contents panel, I would like to see the following
    + Toasters | Toaster 3 Details [Refresh]
    + toaster1 |
    + toaster2 | ...
    + <toaster3> |
    My Trial
    =====
    ADF Rich Client 11.1.2.3 is used for my development.
    Jspx code for the navigation tree looks like this:
    <af:tree id="navTree" ...>
    <f:facet name="nodeStamp">
    <af:panelGroupLayout id="nodePgl">
    <af:switcher facetName="#{stamp.outcome!=null?'actnode':'noactnode'}" ...>
    <f:facet name="actnode">
    <af:commandLink id="leafLink" text="#{stamp.label}" action="#{stamp.actionOutcome}">
    <af:setActionListener from="#{stamp.key}" to="#{treeHandler.selectedMenuItem}"/>
    </af:commandLink>
    </f:facet>
    <f:facet name="noactnode">
    <af:outputText id="notLeafText" value="#{stamp.label}"/>
    </f:facet>
    </af:switcher>
    </af:panelGroupLayout>
    </f:facet>
    </af:tree>
    The hyper link on the contents panel looks like this:
    <af:iterator var="toaster" value="#{toastData.toasters}">
    <af:commandLink text="#{toaster}" action="#{toasterHandler.goToToaster}">
    <f:param name="toasterId" value="#{toaster}"/>
    <af:setActionListener from="#{toaster}" to="#{treeHandler.selectedToaster}"/>
    </af:commandLink>
    </af:iterator>
    I got some tips from this forum (cannot find thread at the moment) and implemented the treeHandler.selectedToaster method as follows:
    // getSelectionState returns selStat, which is instantiated like the following:
    // RowKeySet selStat = new RowKeySetTreeImpl();
    // TreeModel model = (TreeModel) menuModel.getWrappedData();
    // selStat.setCollectionModel(model);
    // selStat.setContained(true);
    RowKeySet rowKeySet = getSelectionState();
    rowKeySet.removeAll();
    // synthesize the rowKey for the selected toaster
    // if the toaster found in the toaster node list,
    // rowKey should look like [0, <rowIdx of toaster>]
    ArrayList<Integer> rowKey = new ArrayList<Integer>();
    rowKey.add(0);
    rowKey.add(new Integer(rowIdx));
    TreeModel model = (TreeModel) menuModel.getWrappedData();
    model.setRowKey(rowKey);
    model.setRowIndex(rowIdx);
    rowKeySet.add();
    This seems to work most of times except when I refresh the contents details panel using partial page rendering.
    I get NullPointerException on the call to rowKeySet.removeAll().
    Caused by: java.lang.NullPointerException
         at org.apache.myfaces.trinidad.model.RowKeySetTreeImpl._selectAll(RowKeySetTreeImpl.java:459)
         at org.apache.myfaces.trinidad.model.RowKeySetTreeImpl.removeAll(RowKeySetTreeImpl.java:146)
    In my observation, this NPE happens when rowKeySet.size() returns 1 but rowKeySet.iterator() does not return any entries.
    I suspect this is a bug on RowKeySetTreeImpl but not sure.
    Help Need
    =======
    1. What is the reasonably right way to highlight the tree node for my problem?
    2. If my trial is one way to do it, how can I get around the NPE? I cannot change ADF Rich Client library at this point.
    Any help/suggestion/advise would be appreciated.
    Thanks,
    Jeongtae

    I did this, to programmatically expand a tree node, you can try the same and set the row key to highlight.
    private RowKeySet disclosedTreeRowKeySet = new RowKeySetImpl();
    public void rowDisclosureListener(RowDisclosureEvent rowDisclosureEvent)
    Iterator added = rowDisclosureEvent.getAddedSet().iterator();
    if (added!=null)
    while (added.hasNext())
    Object rowKey = added.next();
    //disclosedTreeRowKeySet.clear();
    List path = (List)rowKey;
    for( int i=0; i< path.size(); i++ )
    List<Object> nodePath = new ArrayList<Object>();
    for( int j=0; j<i; j++ )
    nodePath.add( path.get( j ) );
    disclosedTreeRowKeySet.add( nodePath );
    disclosedTreeRowKeySet.add( rowKey );
    System.out.println( "disclosed Keys...... " + disclosedTreeRowKeySet );
    private void expandSelectedNode(RowKeySet addedObj) {
    if (sourceTreeTable != null) {
    Iterator added = (Iterator)addedObj.iterator();
    if (added!=null)
    while (added.hasNext())
    Object rowKey = added.next();
    List path = (List)rowKey;
    for( int i=0; i< path.size(); i++ )
    List<Object> nodePath = new ArrayList<Object>();
    for( int j=0; j<i; j++ )
    nodePath.add( path.get( j ) );
    disclosedTreeRowKeySet.add( nodePath );
    disclosedTreeRowKeySet.add( rowKey );
    sourceTreeTable.setDisclosedRowKeys(disclosedTreeRowKeySet);
    }

  • How do we get tree node infomation in an App Engine

    I want to write an app engine to get accounts that are under various tree nodes. How do I write this in an App Engine.. I just need help getting started

    you can use start with connect by clause in a SQL step to link data in a hierarchy
    something on the lines of :
    +SELECT     *+
    FROM pstreenode
    WHERE setid = '<YourSetID>'
    AND tree_name = '<YourTreeName>'
    AND EFFDT='<YourEFFDT>'
    START WITH tree_node = '<Tree Node for which you wish to find all the child nodes>'
    CONNECT BY PRIOR tree_node = parent_node_name

  • How to hide a tree node from the GUI but still keep it in the tree model?

    Hi, All
    I used a JTree in my project in which I have a DefaultTreeModel to store all the tree structure and a JTree show it on the screen. But for some reason, I want to hide some of the nodes from the user, but I don't want to remove them from the tree model because later on I still need to use them.
    I searched on the web, some people suggested method to hide the root node, but that's not appliable to my project because I want to hide some non-root nodes; Some people also suggested to collapse the parent node when there are child to hide, it is not appliable to me either, because there still some other childnodes (sibling of the node to hide) I want to show.
    How can I hide some of the tree node from the user? Thanks for any information.
    Linda

    Here's an example using a derivation of DefaultTreeModel that shows (or does not show) two types of Sneech (appologies to the good Dr Zeus) by overiding two methods on the model.
    Now, there are many things wrong with this example (using instanceof, for example), but it's pretty tight and shows one way of doing what you want.
    Note: to make it useful, you''d have to change the implementation of setShowStarBelliedSneeches() to do something more sophisticated than simply firing a structure change event on the root node. You'd want to find all the star bellied sneech nodes and call fireTreeNodesRemoved(). That way the tree would stay expanded rather than collapse as it does now.
    import javax.swing.JTree;
    import javax.swing.JScrollPane;
    import javax.swing.JOptionPane;
    import javax.swing.JCheckBox;
    import javax.swing.JPanel;
    import javax.swing.tree.TreePath;
    import javax.swing.tree.DefaultTreeModel;
    import javax.swing.tree.DefaultMutableTreeNode;
    import java.awt.Dimension;
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Enumeration;
    class FilteredTree
         private class PlainBelliedSneech {
              public String toString() { return "Plain Bellied Sneech"; }
         private class StarBelliedSneech {
              public String toString() { return "Star Bellied Sneech"; }
         private class FilteredTreeModel
              extends DefaultTreeModel
              private boolean mShowStarBelliedSneeches= true;
              private DefaultMutableTreeNode mRoot;
              FilteredTreeModel(DefaultMutableTreeNode root)
                   super(root);
                   mRoot= root;
              public Object getChild(Object parent, int index)
                   DefaultMutableTreeNode node=
                        (DefaultMutableTreeNode) parent;
                   if (mShowStarBelliedSneeches)
                        return node.getChildAt(index);
                   int pos= 0;
                   for (int i= 0, cnt= 0; i< node.getChildCount(); i++) {
                        if (((DefaultMutableTreeNode) node.getChildAt(i)).getUserObject()
                                            instanceof PlainBelliedSneech)
                             if (cnt++ == index) {
                                  pos= i;
                                  break;
                   return node.getChildAt(pos);
              public int getChildCount(Object parent)
                   DefaultMutableTreeNode node=
                        (DefaultMutableTreeNode) parent;
                   if (mShowStarBelliedSneeches)
                        return node.getChildCount();
                   int childCount= 0;
                   Enumeration children= node.children();
                   while (children.hasMoreElements()) {
                        if (((DefaultMutableTreeNode) children.nextElement()).getUserObject()
                                            instanceof PlainBelliedSneech)
                             childCount++;
                   return childCount;
              public boolean getShowStarBelliedSneeches() {
                   return mShowStarBelliedSneeches;
              public void setShowStarBelliedSneeches(boolean showStarBelliedSneeches)
                   if (showStarBelliedSneeches != mShowStarBelliedSneeches) {
                        mShowStarBelliedSneeches= showStarBelliedSneeches;
                        Object[] path= { mRoot };
                        int[] childIndices= new int[root.getChildCount()];
                        Object[] children= new Object[root.getChildCount()];
                        for (int i= 0; i< root.getChildCount(); i++) {
                             childIndices= i;
                             children[i]= root.getChildAt(i);
                        fireTreeStructureChanged(this, path, childIndices, children);
         private FilteredTree()
              final DefaultMutableTreeNode root= new DefaultMutableTreeNode("Root");
              DefaultMutableTreeNode parent;
              DefaultMutableTreeNode child;
              for (int i= 0; i< 2; i++) {
                   parent= new DefaultMutableTreeNode(new PlainBelliedSneech());
                   root.add(parent);
                   for (int j= 0; j< 2; j++) {
                        child= new DefaultMutableTreeNode(new StarBelliedSneech());
                        parent.add(child);
                        for (int k= 0; k< 2; k++)
                             child.add(new DefaultMutableTreeNode(new PlainBelliedSneech()));
                   for (int j= 0; j< 2; j++)
                        parent.add(new DefaultMutableTreeNode(new PlainBelliedSneech()));
                   parent= new DefaultMutableTreeNode(new StarBelliedSneech());
                   root.add(parent);
                   for (int j= 0; j< 2; j++) {
                        child= new DefaultMutableTreeNode(new PlainBelliedSneech());
                        parent.add(child);
                        for (int k= 0; k< 2; k++)
                             child.add(new DefaultMutableTreeNode(new StarBelliedSneech()));
                   for (int j= 0; j< 2; j++)
                        parent.add(new DefaultMutableTreeNode(new StarBelliedSneech()));
              final FilteredTreeModel model= new FilteredTreeModel(root);
              JTree tree= new JTree(model);
    tree.setShowsRootHandles(true);
    tree.putClientProperty("JTree.lineStyle", "Angled");
              tree.setRootVisible(false);
              JScrollPane sp= new JScrollPane(tree);
              sp.setPreferredSize(new Dimension(200,400));
              final JCheckBox check= new JCheckBox("Show Star Bellied Sneeches");
              check.setSelected(model.getShowStarBelliedSneeches());
              check.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent e) {
                        model.setShowStarBelliedSneeches(check.isSelected());
              JPanel panel= new JPanel(new BorderLayout());
              panel.add(check, BorderLayout.NORTH);
              panel.add(sp, BorderLayout.CENTER);
              JOptionPane.showOptionDialog(
                   null, panel, "Sneeches on Beeches",
                   JOptionPane.DEFAULT_OPTION,
                   JOptionPane.PLAIN_MESSAGE,
                   null, new String[0], null
              System.exit(0);
         public static void main(String[] argv) {
              new FilteredTree();

  • WD ABAP: selecting a tree node from program and scroll to it

    Hi guys!
    I am using a tree in Web Dynpro ABAP. I would like to select/highlight one node from the coding, without user interaction. Is it possible? I couldn't find any (obvious) way so far...
    If it is possible, then let us go a little bit further. Suppose, that the tree grew so big, that cannot fit in the container. Suppose, that you can scroll the tree up/down to see all the nodes. Now, if you mark one tree node from the coding, is it possible somehow, that you scroll the tree automatically, so that the selected node is visible?
    I am interested in any solutions within WD ABAP.
    If you can only answer one of the questions, that is also appreciated!
    Thanks for the help in advance.
    Best regards,
    Janos Kis
    Aerospace&Defense(ERP)

    Hi Thomas,
    thanks for the advice, it works, I have already tried it. The tree node in the lead selection appears highlighted.
    The scrolling doesn't work, though. I have tried to put the tree in a scroll container, and I have also tried it without (relying on the browser to scroll). Neither of them worked, it doesn't scroll to the selected node, it remains offscreen. Can you think of a way, to bring it automatically within the visible range? Ideas, anyone?
    Actually we would like to implement a search function in the tree, and show the result within the tree (highlight the node, expand, if necessary, and bring it on the screen, if off-screen)
    A negative answer is good enough for me, so that I know, that I can stop looking for a solution. Thanks in advance.
    Janos

  • How to make a Tree Node invisible?

    Hi
    I have got a JTree where I have created a DefaultTreeModel and a DefaultTreeCellRenderer. The JTree is filled to data from data base. These nodes after are used to do querys to a data base. But when in tree's level 2 has got only a child, this node I want to set like not visible. because this node i need it do querys.
    I have found a thread to explain something:
    http://forum.java.sun.com/thread.jsp?forum=57&thread=126031
    a) A kind to do, it is so
    I make a new Class extends DefaultTreeCellRenderer, but it doesn't work, the code is here
    public class SegnalarNodoRender extends DefaultTreeCellRenderer {
      public SegnalarNodoRender() {
      public Component getTreeCellRendererComponent(JTree tree, Object value,
                                                    boolean sel, boolean expanded, boolean leaf,
                                                    int row, boolean hasFocus) {
               Component comp;
              DefaultMutableTreeNode nodo = (DefaultMutableTreeNode) value;
              DefaultMutableTreeNode padreNodo = (DefaultMutableTreeNode) nodo.getParent();
               if (leaf && sel)  {
                 return super.getTreeCellRendererComponent(tree,value,sel,
                                                           expanded,leaf,row,hasFocus);}
               else
                 if (!leaf && nodo.getLevel()==2 && padreNodo.getChildCount()==1 ) {
                 //Set not visible
                   this.setVisible(false);
                   return  super.getTreeCellRendererComponent(tree, value, false,
                                                             expanded, leaf, row, hasFocus);
                 else {
                   return super.getTreeCellRendererComponent(tree, value, false,
                                                             expanded, leaf, row, hasFocus);
    }b) the anoher kinds it explains how to make it. It is extended a class from DefaultTreeModel, But it is in this function the this class(botton), where I don't know how the node sets to invisible. Why NodoPadre hasn't any function to set invisible.
    public Object getChild(Object parent, int index) {
      // DefaultMutableTreeNode NodoPadre = (DefaultMutableTreeNode) parent;
      // TreeNode p;
      // p = NodoPadre.getParent();
       return parent;
    }I hope somebody can help me.
    thanks in advanced.

    Hi,
    I have the same problem and would realy like to know how to do this´, using ADF Faces 11G with the up to date JDeveloper.
    I've found some blog entries in the web showing how to do this with a POJO-based approach. They insert Data programmatically based on a view object's result set, reading all data and inserting the data to the POJO.
    However, I like to
    1) Drag-And-Drop the data-control (based on one master and one details - view object and a view link) to a page and add it as tree table
    2) Get the folder icon only displayed when there are children
    3) get the last child (=leaf) displayed without folder icon.
    To make this possible, we should somehow extend the TreeModel Class and override the function isContainer
    @Override
    public boolean isContainer() {
      if (getRowData() != null) {
         MyRowImpl value = (MyRowImpl) getRowData();
        if (value.getChildValues() != null &&
           value.getChildValues().size() > 0) {
          return true;
        return false;
    }Can somehow please give me a hint how to extend the tree model base class (What class?) and how to get the framework to use this model class?
    Maybe there is a sample application for 11g somewhere?
    Thanks,
    Stefan
    Edited by: Stefan1979 on 04.11.2009 18:10

  • How to copy & paste tree nodes

    Hello,
    Can i have an example that copies & pastes tree nodes?
    thank u.

    It is most probably be cause you are trying to select/deselect an already selected/deselected node programmatically, you need to be careful when using SELECT_ON/OFF if the node is already selected.
    The WHEN-TREE-NODE-SELECTED trigger fires also when a node is deselected, this where the problem exists with this error.
    Use the :SYSTEM..TRIGGER_NODE_SELECTED system variable to determine whether the node is being selected or deselected, it returns 'TRUE' when selected and 'FALSE' when deselected and change your code logic accordingly.
    Metalink Note:292050.1 clearly states the cause of this error
    Tony
    Edited by: Tony Garabedian on Aug 26, 2008 2:08 PM

  • How to display the tree nodes distinctivly.

    Hay all,
    Frnds , i am facing a problem. I have created a tree whose each node consisted of a checkbox and a label. For that i have used DefaultMutableTreeNodes for tree nodes and a TreeCellRenderer. Is there any method or way to display some nodes distinctively(may be in different color or something else). Plz tell me soon its very urgent.

    Hi Jürgen,
    See http://help.sap.com/saphelp_nw04/helpdata/en/44/6aaf92f5a23672e10000000a114a6b/frameset.htm
    Only Worksets and Roles are not described, anyhow, doing a bit research via decompiling or just by searching on SDN will bring you the needed extra info; just as an example for roles access: https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/6112ecb7-0a01-0010-ef90-941c70c9e401
    Hope it helps
    Detlev

  • How to get all tree node parents upon select

    I have a tree, and when user clicks an item in the tree, I want to get all the parents of the selectedItem node.
    So if I have this XML:
    <products>
        <item>
            <sku>1001</sku>
            <quantity value="100" />
        </item>
        <item>
            <sku>2001</sku>
            <quantity value="250" />
        </item>
        <item>
            <sku>3001</sku>
            <quantity value="300" />
        </item>
    </products>  
    If user clicks on the 1001 sku, I want to get something like this:
    <products><item><sku>
    Also if I have a custom component, perhaps based on tree or but maybe not, and if this custom component shows the actual XML and used can click on XML elements or XML attributes, how can I use the selected item to get the parent nodes, so if they click on the value="100", I want to get this:
    <products><item><sku><quantity>
    I need this because I have a set of fields, and users will drag their XML node elements or attributes to my fields, to define a mapping between their XML and my fields.
    The selectedItem is just a snippet of XML cut off from its source XMLListCollection, and I might be able to search the XMLListCollection, but what if there were say <sku> elements at more than one level in the XML? I'm guessing a search might return multiple hits for a selected element, when I want the actual parent nodes for the actual selected node.
    Thanks very much!

    var path:Array=[]
    var parent:XML = xxxx.selectedItem.parent()
    while(parent){
    path.push(parent.localName())
    parent = parent.parent()
    Or, i didn't get your question and xxxx.selectedItem is "detached" XML snippet ?

  • How to select a particular node in a tree?-want suggestions urgent

    i've to make a tree showing "c:\" folder structure of the system. Initially i'm adding the folders in c:\ only tothe tree. And i'm adding the subfolders when ever i select a particular folder. I'm opening the subfolders and inner subfolders of it and so inside like that. now i'm closing the window . i want the tree to reopen with the previously opened level when ever i again run the program. On closing i'm storing the last selected node using tree.getMaxSelectionPath() . And on reopen i'm setting it as tree.setSelectionPath(tree.getMaxSelectionPath()).
    But it is not opening the entire path. it is opening uptop one level only. what to do. Needs suggestion urgently.
    Thnaks for suggestons.

    Hi again,
    I am sorry, I cannot help in another way than looking at the documentation, because I have currently no JDK available here. If expandPath(...) doesn't work, you can try to get all the nodes of that path and expand them from the root node downwards, perhaps that will work.
    greetings Marsian

Maybe you are looking for

  • Document and printing On Pages

    When I am writing a document on pages, there's a grey box on the side (i think its because i made the window bigger but I am not sure if this may be why I am having difficulties), my margins and everything are correct, I checked clicking the insector

  • Add or remove job dynamically in Quartz Scheduler using c#

    Hi, is it possible to add ,update, remove jobs and trigger to quartz scheduler dynamically.just like reading from database and add jobs and trigger to scheduler .Or using a GUI to add ,edit and remove the jobs and triggers to scheduler while schedule

  • Batch processing and parallelism

    I have recently taken over a project that is a batch application that processes a number of reports. For the most part, the application is pretty solid from the perspective of what it needs to do. However, one of the goals of this application is to a

  • Premiere Pro CS5 crashes just after media is loaded

    Hello I have HUUUGE problem with PrPro CS5. I have project file - lot of work is already done but lot of more left. When I try to open my project file it loads fine. But then when it is loading all media files (at the bottom left corner) just when i

  • External DVD drive compatible with Windows 8

    I am looking to purchase an external DVD drive to use with the U430 laptop which is running Windows 8.  Which units does lenovo offer that can run in this OS?  Would the 0A33988 work; the specs only list Windows 7.  I don't think the DB60 will work i