Return Nodes in Webview

Hi,
Can anyone please explain what does Return column in Webview mean?
The online help says:
Completed Tasks: Return
The number of tasks of the call type that software routed to Return nodes during the half-hour interval.
Derived from: Call_Type_Half_Hour.ReturnBusyToHalf + Call_Type_Half_Hour.ReturnRingToHalf + Call_Type_Half_Hour.ReturnReleaseToHalf
and the table description in the ICM DB schema says:
--ReturnBusy:
Number of calls of this type that were routed to the Busy target during thereporting interval.
--ReturnRing:
Number of calls of this type that were routed to the Ring target during thereporting interval.
--ReturnRelease:
Count of calls that executed a Release node in their routing script in thereporting interval.
But I still cannot figure out when actually a call is considered as Return?
Thanks

Thank you Gergely for the reply,
No I am not using them in any of my scripts.
Another thing is in most days the value of Return column is zero, but then comes a day where we find some return calls and I cannot justify those calls since the priority of the Skill Group is 1 "Highest" so the calls are return rather than being answered!

Similar Messages

  • Method names on "Client Request with Return" nodes

    I wasn't sure whether this question would be better here, or in the "integration"
    group. The traffic there is somewhat lighter than in here, so perhaps someone
    is more likely to read it here :) .
    I have two questions about the "method name" in a "Client Request with Return"
    node in a Java Process Definition. Apparently the method name is exposed in the
    WSDL. I can sort of understand what this method name is used for in the "request"
    node, but I fail to understand what the method name corresponds to in the "reply/response"
    node of the pair of two nodes. Why does this need to expose a method name in
    the WSDL when the point of the node is just to send back a response to the original
    request?
    Second, in the "Guide to Building Business Processes" document, in the section
    titled "Naming the Methods on Client Request with Return Nodes" (page 3-14 in
    my copy), the last sentence says "The name must be a valid Java class name".
    Is this true? That confuses me.

    What do you think is happening here? Specifically if a socket is a connected and a new one comes in. What then?
    private void listen() {
              try {
                   clientSocket = serverSocket.accept();
              } catch (IOException e) {
                   e.printStackTrace();
         }

  • Returning nodes from procedures

    What is the safest way to return nodes?
    Have a group of packages which combined create an xmlDocument.
    Level 1 calls level 2 1+ times.
    Level 2 calls any level 3 1+ times (in any order).
    Tried (amongst other alternatives) returning Fragments and
    cloning them in to the main document, but after several
    successful executions oracle fails to create xml objects.
    Only by starting a new session will the procedures work again.
    Heres a simplified look at the code.
    procedure get_level3Node_001(in_id, out_frag)
    procedure get_level3Node_010(in_id, out_frag)
    procedure get_level2Node(in_id, out_frag)
    procedure get_level1Node()
    when a node is returned from a procedure it is handled like this:
    -- xmlDoc is the local document in the procedure
    -- xmlNode is the active/current Node
    -- xmlFrag is returned from another procedure
    -- xmlFrag was created from a separate xmlDocument
    xmlNode1 := xmldom.makeNode(xmlFrag);
    xmlNode2 := xmldom.makeNode(xmlDoc);
    xmlNode2 := xmldom.cloneNode(xmlNode1, TRUE);
    xmlNode := xmldom.appendChild(xmlNode, xmlNode2);
    xmlNode := xmldom.getParentNode(xmlNode);
    xmldom.freeDocument(xmldom.getOwnerDocument(xmlNode1));
    Really need help fast!

    Not much help, but I couldn't tell you how to do this using PDO. If however, you want to know how to do it without PDO (i.e. via OCI8 PHP functions directly), let me know and I will post some code...

  • Can't get BAPI return node in web dynpro!!

    I'm calling BAPI in web dynpro, I already map the <BAPIName>_Input->Output->Return to our custom controller context. I can get the value of some other output parameters in Output node, but can't get the return node.
    wdContext->currentOutputElement is Ok, but wdContext->currentBapiReturnElement is null, what is the problem??!!!
    Can anybody give me an hint, or give me a example to access the return value of Bapi??
    Thank you very much!
    Regards,
    Xiaoming Yang

    Hi Vitaliano,
    Thanks for your reply.
    yes, I've call the invalidate method, like this:
    wdContext.currentBapi_Trip_Create_From_Data_InputElement().modelObject().execute();
    //wdContext.nodeBapireturn().invalidate();//do I need this?
    wdContext.nodeOutput().invalidate();
    But it still can't work!
    The return node is a child note of Output, does it ok?
    Thank you!

  • Dbms_xslprocessor return node copy

    Recently I converted my code from sys.xmldom and sys.xslprocessor packages to xdb.dbms_xmldom and xdb.dbms_xslprocessor packages. And what supprised me is that dbms_xslprocessor.selectSingleNode() returns a copy of the selected node not a reference. My code was able to modify the xml tree before now failed. Is there a fix to this bug? I am using 9.2.0.5 patch. Thanks.

    Hi,
    Even I tried with variable based indexing
    But for me its returing all nodes irrespective of index varible value

  • XPath - Return current node without child nodes

    Good day.
    I hv the following XML for example and I tried to write a XPath query to return just the <AAA> and omit all the other child nodes (BBB and CCC and BBBBB) .
    <AAA Name='aaa' ID='aaa'>
    <BBB>bbbbbbbbbb</BBB>
    <BBBBB>bbbbbbbbbbbbbbb</BBBBB>
    <CCC>cccccccccc</CCC>
    </AAA>I tried //AAA/self::* but it still return the whole childnodes to me. I searched in internet as well but I didn't found any solution for that. May be I was using the wrong keywords to search.
    Any idea how to accomplish this ?
    Thanks.
    SonicWave

    XPath will only return nodes that already exist in the document. What you are asking for is another node that is constructed from that AAA node by removing all its children. I don't know how you would do that, because I don't know anything about the structures you are using (DOM? XSLT? What?). But XPath can't do it.

  • WebView reporting field explanation

    Hello,
    In Webview reporting daily call type "caltyp22" there's a column called "completed tasks - return" that appears in the exported report in excel format as "returnBR" which stands for "return Busy Ring".
    I have checked in Webview Template Reference guide searching for the meaning of this field but could not understand exactly the meaning of this field.
    Snippet from the guide:
    The number of tasks of the call type that ICM software routed to Return nodes during the half-hour interval.
    Derived from: Call_Type_Half_Hour.ReturnBusyToHalf + Call_Type_Half_Hour.ReturnRingToHalf + Call_Type_Half_Hour.ReturnReleaseToHalf +
    Can someone explain please?
    Thanks,
    Justine.

    Hi Chris,
    Thank you for the explanation.
    I need to explain a bit the routing scripts on ICM:
    - I have an ICM Routing Script that sends the call to CVP for self service. Then the customer can press star to speak to an agent. Then the Call is requalified to another Call Type for reporting purposes.
    - The new call type is triggered where a new Routing Script is executed. This script contains the Queue along with the Hold Music.
    In WebView reports, I can see the following in caltyp22 daily report:
    (1) For the first Call Type (IVR only):
    Completed Tasks columns:
    I know that:
    - Total = Aban + Return + Flow Out + Others
    - Aban : number of calls that have closed the line while in IVR (did not choose to speak to an agent)
    - Flow Out : number of calls that were requalified to the second call type (this is equal to the number of calls that was offered to the Queue)
    I need to know:
    - Return : this column contains a number that is almost equivalent to 1/4 of the Total Completed Tasks
    (2) For the second Call Type (queue):
    Return = 0
    I am interested more in the Return value for the first call type.  Any idea what this value refers to?
    Thanks,
    Justine.

  • How to get total number of nodes in a JTree?

    Hi,
    I am trying to get total number of nodes in a JTree, and cannot find a way to do it.
    The current getRowCount() method returns the number of rows that are currently being displayed.
    Is there a way to do this or I am missing something?
    thanks,

    How many nodes does this tree have?
    import java.awt.EventQueue;
    import javax.swing.*;
    import javax.swing.event.TreeModelListener;
    import javax.swing.tree.*;
    public class BigTree {
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    TreeModel model = new TreeModel() {
                        private String node = "Node!";
                        @Override
                        public void valueForPathChanged(TreePath path,
                                Object newValue) {
                            // not mutable
                        @Override
                        public void removeTreeModelListener(TreeModelListener l) {
                            // not mutable
                        @Override
                        public boolean isLeaf(Object node) {
                            return false;
                        @Override
                        public Object getRoot() {
                            return node;
                        @Override
                        public int getIndexOfChild(Object parent, Object child) {
                            return child == node ? 0 : -1;
                        @Override
                        public int getChildCount(Object parent) {
                            return 1;
                        @Override
                        public Object getChild(Object parent, int index) {
                            return node;
                        @Override
                        public void addTreeModelListener(TreeModelListener l) {
                            // not mutable
                    JFrame frame = new JFrame("Test");
                    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                    frame.getContentPane().add(new JScrollPane(new JTree(model)));
                    frame.pack();
                    frame.setLocationRelativeTo(null);
                    frame.setVisible(true);
    }But for bounded tree model using DefaultMutableTreeNode look at bread/depth/preorder enumeration methods to walk the entire tree. Or look at the source code for those and adapt them to work with the TreeModel interface.

  • Can't remove a node from a tree

    I am using the custom tree dataDescriptor provided in Flex live
    doc. It works for creating the tree and add notes, however when I
    try to remove a node from the tree it cant work. Does anyone have
    any idea?
    This is the code for MyCustomeTreeDataDescriptor.as
    package
    import mx.collections.ArrayCollection;
    import mx.collections.CursorBookmark;
    import mx.collections.ICollectionView;
    import mx.collections.IViewCursor;
    import mx.events.CollectionEvent;
    import mx.events.CollectionEventKind;
    import mx.controls.treeClasses.*;
    public class MyCustomTreeDataDescriptor implements
    ITreeDataDescriptor
    // The getChildren method requires the node to be an Object
    // with a children field.
    // If the field contains an ArrayCollection, it returns the
    field
    // Otherwise, it wraps the field in an ArrayCollection.
    public function getChildren(node:Object,
    model:Object=null):ICollectionView
    try
    if (node is Object) {
    if(node.children is ArrayCollection){
    return node.children;
    }else{
    return new ArrayCollection(node.children);
    catch (e:Error) {
    trace("[Descriptor] exception checking for getChildren");
    return null;
    // The isBranch method simply returns true if the node is an
    // Object with a children field.
    // It does not support empty branches, but does support null
    children
    // fields.
    public function isBranch(node:Object,
    model:Object=null):Boolean {
    try {
    if (node is Object) {
    if (node.children != null) {
    return true;
    catch (e:Error) {
    trace("[Descriptor] exception checking for isBranch");
    return false;
    // The hasChildren method Returns true if the node actually
    has children.
    public function hasChildren(node:Object,
    model:Object=null):Boolean {
    if (node == null)
    return false;
    var children:ICollectionView = getChildren(node, model);
    try {
    if (children.length > 0)
    return true;
    catch (e:Error) {
    return false;
    // The getData method simply returns the node as an Object.
    public function getData(node:Object,
    model:Object=null):Object {
    try {
    return node;
    catch (e:Error) {
    return null;
    // The addChildAt method does the following:
    // If the parent parameter is null or undefined, inserts
    // the child parameter as the first child of the model
    parameter.
    // If the parent parameter is an Object and has a children
    field,
    // adds the child parameter to it at the index parameter
    location.
    // It does not add a child to a terminal node if it does not
    have
    // a children field.
    public function addChildAt(parent:Object, child:Object,
    index:int,
    model:Object=null):Boolean {
    var event:CollectionEvent = new
    CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
    event.kind = CollectionEventKind.ADD;
    event.items = [child];
    event.location = index;
    if (!parent) {
    var iterator:IViewCursor = model.createCursor();
    iterator.seek(CursorBookmark.FIRST, index);
    iterator.insert(child);
    else if (parent is Object) {
    if (parent.children != null) {
    if(parent.children is ArrayCollection) {
    parent.children.addItemAt(child, index);
    if (model){
    model.dispatchEvent(event);
    model.itemUpdated(parent);
    return true;
    else {
    parent.children.splice(index, 0, child);
    if (model)
    model.dispatchEvent(event);
    return true;
    return false;
    // The removeChildAt method does the following:
    // If the parent parameter is null or undefined, removes
    // the child at the specified index in the model.
    // If the parent parameter is an Object and has a children
    field,
    // removes the child at the index parameter location in the
    parent.
    public function removeChildAt(parent:Object, child:Object,
    index:int, model:Object=null):Boolean
    var event:CollectionEvent = new
    CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
    event.kind = CollectionEventKind.REMOVE;
    event.items = [child];
    event.location = index;
    //handle top level where there is no parent
    if (!parent)
    var iterator:IViewCursor = model.createCursor();
    iterator.seek(CursorBookmark.FIRST, index);
    iterator.remove();
    if (model)
    model.dispatchEvent(event);
    return true;
    else if (parent is Object)
    if (parent.children != undefined)
    parent.children.splice(index, 1);
    if (model)
    model.dispatchEvent(event);
    return true;
    return false;
    This is my tree definition:
    <mx:Tree width="143" top="0" bottom="0" left="0"
    height="100%"
    id="publicCaseTree"
    dataDescriptor="{new MyCustomTreeDataDescriptor()}"
    dataProvider="{ac}"
    defaultLeafIcon="@Embed('assets/caseIcon.png')"
    change="publicTreeChanged(event)"
    dragEnabled="true"
    dragMoveEnabled="false"/>
    This is how I remove the selected node from the tree. When
    Delete button is clicked, the doDeleteCase function is
    exectuted.
    public function publicTreeChanged(event:Event):void {
    selectedNode =
    publicCaseTree.dataDescriptor.getData(Tree(event.target).selectedItem,
    ac);
    public function doDeleteCase(event:Event):void{
    publicCaseTree.dataDescriptor.removeChildAt(publicCaseTree.firstVisibleItem,
    selectedNode, 0, ac);
    Any help would be appreciated.Thanks.

    Finally I removed nodes from tree, but not sure I did in the
    right way. Anybody encounter the same problem, please
    discuss.

  • Having multiple nodes with the same name in JTree!!!???

    Hi!
    I want to be able to have folders or files with the same name in different locations in my JTree. But if I do so the last one always overwrites the previous one.
    I have a vector with strings like root\aaa\bbb\ccc\ddd.doc, root\aaa\bbb\eee.doc, root\aaa\ccc\fff.doc etc. In this case ccc\ddd.doc out of the first string would disapear.
    In this post you can see how I add the nodes:
    http://forum.java.sun.com/thread.jsp?forum=31&thread=54920
    Is this because it adds everything in the same level or what? A solution/workaround would be much appreciated.
    Tobias

    Use this example...
    public class TreeDemo {
    private JFrame frame;
    private JTree tree;
    public TreeDemo (JTree tr) throws Exception {
    frame=new JFrame();
    frame.getContentPane().setLayout(new BorderLayout());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    edit=new JEditorPane();
    frame.getContentPane().add frame.getContentPane().add(tr,BorderLayout.CENTER);
    frame.getContentPane().add(new JButton("ok"),BorderLayout.SOUTH);
    frame.pack();
    frame.show();
    public static void main(String[] argv)
    throws Exception
    Vector v=new Vector();
    v.add(0,"c:\\first\\abc");
    v.add(1,"c:\\first\\abc\\word1.doc");
    v.add(2,"c:\\first\\abc\\description.doc");
    v.add(3,"c:\\first\\def ");
    v.add(4,"c:\\first\\der\\tor1.doc");
    TreeDemo html = new TreeDemo (createTree(v));
    private static JTree createTree(Vector v) {
    JTree tree = null;
    DefaultMutableTreeNode root = null;
    Iterator i = v.iterator();
    String subStr;
    DefaultMutableTreeNode parent=null;
    root = new DefaultMutableTreeNode("ROOT");
    tree = new JTree(root);
    parent=root;
    while (i.hasNext()) {
    String path = (String)i.next();
    StringTokenizer st = new StringTokenizer(path,"\\");
    while (st.hasMoreTokens()) {
    subStr = st.nextToken();
    DefaultMutableTreeNode current=findObject(parent,subStr);
    if (current==null) {
    DefaultMutableTreeNode node = new DefaultMutableTreeNode(subStr);
    parent.add(node);
    parent=node;
    else {
    parent=current;
    parent=root;
    return tree;
    private static DefaultMutableTreeNode findObject(DefaultMutableTreeNode parent,String value) {
    for (int i=0; i<parent.getChildCount(); i++) {
    DefaultMutableTreeNode node=(DefaultMutableTreeNode)parent.getChildAt(i);
    if (node.getUserObject().equals(value)) {
    return node;
    return null;
    best regards
    Stas

  • Remove white space nodes from jtree

    I am trying to create jtree using XML DOM.
    But I m not able to remove/ignore the white space elements from DOM.
    I am getting output something like this
    for example
    Server
    Text
    node1
    Text
    I want something like this.
    Server
    node1
    I tried all option for removeing the white space
    Here I am posting the source
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.FactoryConfigurationError;
    import javax.xml.parsers.ParserConfigurationException;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException;
    import java.io.File;
    import java.io.IOException;
    import org.w3c.dom.Document;
    import org.w3c.dom.DOMException;
    // Basic GUI components
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTree;
    // GUI components for right-hand side
    import javax.swing.JSplitPane;
    import javax.swing.JEditorPane;
    // GUI support classes
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.Toolkit;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowAdapter;
    // For creating borders
    import javax.swing.border.EmptyBorder;
    import javax.swing.border.BevelBorder;
    import javax.swing.border.CompoundBorder;
    // For creating a TreeModel
    import javax.swing.tree.*;
    import javax.swing.event.*;
    import java.util.*;
    public class DomEcho02 extends JPanel
    // Global value so it can be ref'd by the tree-adapter
    static Document document;
    static final int windowHeight = 460;
    static final int leftWidth = 300;
    static final int rightWidth = 340;
    static final int windowWidth = leftWidth + rightWidth;
    public DomEcho02()
    // Make a nice border
    EmptyBorder eb = new EmptyBorder(5,5,5,5);
    BevelBorder bb = new BevelBorder(BevelBorder.LOWERED);
    CompoundBorder cb = new CompoundBorder(eb,bb);
    this.setBorder(new CompoundBorder(cb,eb));
    // Set up the tree
    JTree tree = new JTree(new DomToTreeModelAdapter());
    // Iterate over the tree and make nodes visible
    // (Otherwise, the tree shows up fully collapsed)
    //TreePath nodePath = ???;
    // tree.expandPath(nodePath);
    // Build left-side view
    JScrollPane treeView = new JScrollPane(tree);
    treeView.setPreferredSize(
    new Dimension( leftWidth, windowHeight ));
    // Build right-side view
    JEditorPane htmlPane = new JEditorPane("text/html","");
    htmlPane.setEditable(false);
    JScrollPane htmlView = new JScrollPane(htmlPane);
    htmlView.setPreferredSize(
    new Dimension( rightWidth, windowHeight ));
    // Build split-pane view
    JSplitPane splitPane =
    new JSplitPane( JSplitPane.HORIZONTAL_SPLIT,
    treeView,
    htmlView );
    splitPane.setContinuousLayout( true );
    splitPane.setDividerLocation( leftWidth );
    splitPane.setPreferredSize(
    new Dimension( windowWidth + 10, windowHeight+10 ));
    // Add GUI components
    this.setLayout(new BorderLayout());
    this.add("Center", splitPane );
    } // constructor
    public static void main(String argv[])
    if (argv.length != 1) {
    System.err.println("Usage: java DomEcho filename");
    System.exit(1);
    DocumentBuilderFactory factory =
    DocumentBuilderFactory.newInstance();
    //factory.setValidating(true);
    //factory.setNamespaceAware(true);
    try {
    DocumentBuilder builder = factory.newDocumentBuilder();
    document = builder.parse( new File(argv[0]) );
    makeFrame();
    } catch (SAXException sxe) {
    // Error generated during parsing)
    Exception x = sxe;
    if (sxe.getException() != null)
    x = sxe.getException();
    x.printStackTrace();
    } catch (ParserConfigurationException pce) {
    // Parser with specified options can't be built
    pce.printStackTrace();
    } catch (IOException ioe) {
    // I/O error
    ioe.printStackTrace();
    } // main
    public static void makeFrame() {
    // Set up a GUI framework
    JFrame frame = new JFrame("DOM Echo");
    frame.addWindowListener(
    new WindowAdapter() {
    public void windowClosing(WindowEvent e) {System.exit(0);}
    // Set up the tree, the views, and display it all
    final DomEcho02 echoPanel =
    new DomEcho02();
    frame.getContentPane().add("Center", echoPanel );
    frame.pack();
    Dimension screenSize =
    Toolkit.getDefaultToolkit().getScreenSize();
    int w = windowWidth + 10;
    int h = windowHeight + 10;
    frame.setLocation(screenSize.width/3 - w/2,
    screenSize.height/2 - h/2);
    frame.setSize(w, h);
    frame.setVisible(true);
    } // makeFrame
    // An array of names for DOM node-types
    // (Array indexes = nodeType() values.)
    static final String[] typeName = {
    "none",
    "Element",
    "Attr",
    "Text",
    "CDATA",
    "EntityRef",
    "Entity",
    "ProcInstr",
    "Comment",
    "Document",
    "DocType",
    "DocFragment",
    "Notation",
    // This class wraps a DOM node and returns the text we want to
    // display in the tree. It also returns children, index values,
    // and child counts.
    public class AdapterNode
    org.w3c.dom.Node domNode;
    // Construct an Adapter node from a DOM node
    public AdapterNode(org.w3c.dom.Node node) {
    domNode = node;
    // Return a string that identifies this node in the tree
    // *** Refer to table at top of org.w3c.dom.Node ***
    public String toString() {
    String s = typeName[domNode.getNodeType()];
    String nodeName = domNode.getNodeName();
    if (! nodeName.startsWith("#")) {
    s += ": " + nodeName;
    if (domNode.getNodeValue() != null) {
    if (s.startsWith("ProcInstr"))
    s += ", ";
    else
    s += ": ";
    // Trim the value to get rid of NL's at the front
    String t = domNode.getNodeValue().trim();
    int x = t.indexOf("\n");
    if (x >= 0) t = t.substring(0, x);
    s += t;
    return s;
    * Return children, index, and count values
    public int index(AdapterNode child) {
    //System.err.println("Looking for index of " + child);
    int count = childCount();
    for (int i=0; i<count; i++) {
    AdapterNode n = this.child(i);
    if (child.domNode == n.domNode) return i;
    return -1; // Should never get here.
    public AdapterNode child(int searchIndex) {
    //Note: JTree index is zero-based.
    org.w3c.dom.Node node =
    domNode.getChildNodes().item(searchIndex);
    return new AdapterNode(node);
    public int childCount() {
    return domNode.getChildNodes().getLength();
    // This adapter converts the current Document (a DOM) into
    // a JTree model.
    public class DomToTreeModelAdapter
    implements javax.swing.tree.TreeModel
    // Basic TreeModel operations
    public Object getRoot() {
    //System.err.println("Returning root: " +document);
    return new AdapterNode(document);
    public boolean isLeaf(Object aNode) {
    // Determines whether the icon shows up to the left.
    // Return true for any node with no children
    AdapterNode node = (AdapterNode) aNode;
    if (node.childCount() > 0) return false;
    return true;
    public int getChildCount(Object parent) {
    AdapterNode node = (AdapterNode) parent;
    return node.childCount();
    public Object getChild(Object parent, int index) {
    AdapterNode node = (AdapterNode) parent;
    return node.child(index);
    public int getIndexOfChild(Object parent, Object child) {
    AdapterNode node = (AdapterNode) parent;
    return node.index((AdapterNode) child);
    public void valueForPathChanged(TreePath path, Object newValue) {
    // Null. We won't be making changes in the GUI
    // If we did, we would ensure the new value was really new,
    // adjust the model, and then fire a TreeNodesChanged event.
    * Use these methods to add and remove event listeners.
    * (Needed to satisfy TreeModel interface, but not used.)
    private Vector listenerList = new Vector();
    public void addTreeModelListener(TreeModelListener listener) {
    if ( listener != null
    && ! listenerList.contains( listener ) ) {
    listenerList.addElement( listener );
    public void removeTreeModelListener(TreeModelListener listener) {
    if ( listener != null ) {
    listenerList.removeElement( listener );
    // Note: Since XML works with 1.1, this example uses Vector.
    // If coding for 1.2 or later, though, I'd use this instead:
    // private List listenerList = new LinkedList();
    // The operations on the List are then add(), remove() and
    // iteration, via:
    // Iterator it = listenerList.iterator();
    // while ( it.hasNext() ) {
    // TreeModelListener listener = (TreeModelListener) it.next();
    * Invoke these methods to inform listeners of changes.
    * (Not needed for this example.)
    * Methods taken from TreeModelSupport class described at
    * http://java.sun.com/products/jfc/tsc/articles/jtree/index.html
    * That architecture (produced by Tom Santos and Steve Wilson)
    * is more elegant. I just hacked 'em in here so they are
    * immediately at hand.
    public void fireTreeNodesChanged( TreeModelEvent e ) {
    Enumeration listeners = listenerList.elements();
    while ( listeners.hasMoreElements() ) {
    TreeModelListener listener =
    (TreeModelListener) listeners.nextElement();
    listener.treeNodesChanged( e );
    public void fireTreeNodesInserted( TreeModelEvent e ) {
    Enumeration listeners = listenerList.elements();
    while ( listeners.hasMoreElements() ) {
    TreeModelListener listener =
    (TreeModelListener) listeners.nextElement();
    listener.treeNodesInserted( e );
    public void fireTreeNodesRemoved( TreeModelEvent e ) {
    Enumeration listeners = listenerList.elements();
    while ( listeners.hasMoreElements() ) {
    TreeModelListener listener =
    (TreeModelListener) listeners.nextElement();
    listener.treeNodesRemoved( e );
    public void fireTreeStructureChanged( TreeModelEvent e ) {
    Enumeration listeners = listenerList.elements();
    while ( listeners.hasMoreElements() ) {
    TreeModelListener listener =
    (TreeModelListener) listeners.nextElement();
    listener.treeStructureChanged( e );
    }

    DocumentBuilderFactory can be configured to ignore white space.
    http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/parsers/DocumentBuilderFactory.html#setIgnoringElementContentWhitespace(boolean)

  • Tree node with (...)

    i construct a tree with model,but the node do not display fully. i.e: node info is "node information", but it display "node infoma...".
    i have a Node class that log node property. In this class i override toString method, and return node's name (in order to log treepath that not change).
    model extends treemodel, thr root is Arraylist and its elments are Node object.
    i have renderer (in order to display node information that may be change) extends defaulttreecellrenderer,and override getTreeCellRendererComponent method, the code is following:
    public Component getTreeCellRendererComponent(JTree tree, Object value,
                   boolean sel, boolean expanded, boolean leaf, int row,
                   boolean hasFocus) {
              JLabel label = (JLabel) super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf,
                        row, hasFocus);
              path = tree.getPathForRow(row);
                        if (path != null) {
                   if (path.getLastPathComponent() instanceof ArrayList) {
                        value = "Invocation Tree";
                   } else {
                        node = (Node) path.getLastPathComponent();
                        value = node.getTreeshowing();
                                                                setText((String)value);
              return label;
    thandks in advance

    Could it be that your problem is described here
    http://dotuseful.sourceforge.net/doc/why.htm
    Denis Krukovsky
    http://dotuseful.sourceforge.net/
    http://dkrukovsky.blogspot.com/

  • Add node to a specific node in JTree

    I use the following TreePanel class to add node to the tree. My question is how to add a new node under
    a specific node which has been created before. In other words, how to get the path and identify the node.
    For e.g., I first loaded some raw data files and created the "raw data" node, later I need to load another file
    and create a new node under the "raw data" node. Each node is created by using user object. Any help is greatly appreicated.
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.tree.*;
    public class TreePanel extends JPanel {
      protected DefaultMutableTreeNode rootNode;
      protected DefaultTreeModel treeModel;
      protected JTree tree;
      public TreePanel() {
        super(new GridLayout(1,0));
        rootNode = new DefaultMutableTreeNode("Experiment");
        treeModel = new DefaultTreeModel(rootNode);
        tree = new JTree(treeModel);
        tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
        tree.setShowsRootHandles(true);
        JScrollPane scrollPane = new JScrollPane(tree);
        add(scrollPane);
      public JTree getTree(){
        return tree;
      /* Add child to the currently selected node. */
      public DefaultMutableTreeNode addObject(Object child){
        DefaultMutableTreeNode parentNode = null;
        TreePath parentPath = tree.getSelectionPath();
        if(parentPath == null){
          parentNode = rootNode;
        else{
          parentNode = (DefaultMutableTreeNode)(parentPath.getLastPathComponent());
        return addObject(parentNode, child, true);
      /* Add child */
      public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent, Object child){
        return addObject(parent, child, false);
      /* Add child */
      public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent, Object child, boolean shouldBeVisible){
        DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(child);
        if(parent == null){parent = rootNode;}
        treeModel.insertNodeInto(childNode, parent, parent.getChildCount());
        if(shouldBeVisible){
          tree.scrollPathToVisible(new TreePath(childNode.getPath()));
        return childNode;
      /* Add child */
      public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent, DefaultMutableTreeNode child){
       if(parent == null){parent = rootNode;}
       treeModel.insertNodeInto(child, parent, parent.getChildCount());
       return child;
    }Thanks in advance!

    public static DefaultMutableTreeNode findNode(DefaultMutableTreeNode from, Object userObject) {
              if (userObject == null && from.getUserObject() == null) {
                   return from;
              } else if (userObject.equals(from.getUserObject())) {
                   return from;
              DefaultMutableTreeNode node = null;
              for (int i = 0; i < from.getChildCount(); i ++) {
                   node = (DefaultMutableTreeNode) from.getChildAt(i);
                   if (userObject == null) {
                        if (userObject == node.getUserObject()) {
                             break;
                   } else {
                        if (userObject.equals(node.getUserObject())) {
                             break;
                   node = null;
              if (node != null) {
                   return node;
              //Node not found
              //dig deeper
              for (int i = 0; i < from.getChildCount(); i ++) {
                   node = (DefaultMutableTreeNode) from.getChildAt(i);
                   if (!node.isLeaf()) {
                        node = findNode(node, userObject);
                        if (node != null) {
                             return node;
              //Not found
              return null;
         }     

  • Icon was changed to default icon when editting a node on JTree

    I have a tree with icon on nodes. However, when I edit the node, the icon is changed to default icon.
    I don't known how to write the treeCellEditor to fix that one.
    The following is my code:
    package description.ui;
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTree;
    import javax.swing.ToolTipManager;
    import javax.swing.WindowConstants;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.DefaultTreeCellEditor;
    import javax.swing.tree.DefaultTreeCellRenderer;
    import javax.swing.tree.DefaultTreeModel;
    import javax.swing.tree.TreePath;
    import javax.swing.tree.TreeSelectionModel;
    public class Tree extends javax.swing.JPanel {
         private JTree tree;
         private JScrollPane jScrollPane1;
         public static void main(String[] args) {
              JFrame frame = new JFrame();
              frame.getContentPane().add(new Tree());
              frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
              frame.pack();
              frame.show();
         public Tree() {
              super();
              initGUI();
         private void initGUI() {
              try {
                   BorderLayout thisLayout = new BorderLayout();
                   this.setLayout(thisLayout);
                   setPreferredSize(new Dimension(400, 300));
                    jScrollPane1 = new JScrollPane();
                    this.add(jScrollPane1, BorderLayout.CENTER);
                        DefaultMutableTreeNode rootNode = createNode();
                        tree = new JTree(rootNode);
                        tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
                        jScrollPane1.setViewportView(tree);
                        ToolTipManager.sharedInstance().registerComponent(tree);
                        MyCellRenderer cellRenderer = new MyCellRenderer();
                        tree.setCellRenderer(cellRenderer);
                        tree.setEditable(true);
                        tree.setCellEditor(new DefaultTreeCellEditor(tree, cellRenderer));
                        //tree.setCellEditor(new MyCellEditor(tree, cellRenderer));
              } catch (Exception e) {
                   e.printStackTrace();
         private void btRemoveActionPerformed(ActionEvent evt) {
             TreePath path = tree.getSelectionPath();
             DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)path.getLastPathComponent();
             ((DefaultTreeModel)tree.getModel()).removeNodeFromParent(selectedNode);
         private DefaultMutableTreeNode createNode() {
             DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Doc");
             DefaultMutableTreeNode ch1 = createChuongNode(rootNode, "Ch1");
             DefaultMutableTreeNode ch2 = createChuongNode(rootNode, "Ch2");
             createTextLeafNode(ch1, "title");
             return rootNode;
         private DefaultMutableTreeNode createChuongNode(DefaultMutableTreeNode parent, String name) {
             DefaultMutableTreeNode node = new DefaultMutableTreeNode(new ChapterNodeData(name));
             parent.add(node);
             return node;
         private DefaultMutableTreeNode createTextLeafNode(DefaultMutableTreeNode parent, String name) {
             DefaultMutableTreeNode node = new DefaultMutableTreeNode(new TitleNodeData(name));
             parent.add(node);
             return node;
          private class MyCellRenderer extends DefaultTreeCellRenderer {
                 ImageIcon titleIcon;
                 ImageIcon chapterIcon;
                 public MyCellRenderer() {
                     titleIcon = new ImageIcon(getClass().getClassLoader()
                            .getResource("description/ui/icons/Text16.gif"));
                     chapterIcon = new ImageIcon(getClass().getClassLoader()
                            .getResource("description/ui/icons/Element16.gif"));
                 public Component getTreeCellRendererComponent(
                                     JTree tree,
                                     Object value,
                                     boolean sel,
                                     boolean expanded,
                                     boolean leaf,
                                     int row,
                                     boolean hasFocus) {
                     super.getTreeCellRendererComponent(
                                     tree, value, sel,
                                     expanded, leaf, row,
                                     hasFocus);
                     if (isChapterNode(value)) {
                         setIcon(chapterIcon);
                         setToolTipText("chapter");
                     } else if (isTextLeafNode(value)) {
                         setIcon(titleIcon);
                         setToolTipText("title");
                     return this;
                 protected boolean isChapterNode(Object node) {
                     return ((DefaultMutableTreeNode)node).getUserObject() instanceof ChapterNodeData;
                 protected boolean isTextLeafNode(Object node) {
                     return ((DefaultMutableTreeNode)node).getUserObject() instanceof TitleNodeData;
          private class MyCellEditor extends DefaultTreeCellEditor {
                 ImageIcon titleIcon;
                 ImageIcon chapterIcon;
              public MyCellEditor(JTree tree, DefaultTreeCellRenderer renderer) {
                  super(tree, renderer);
                  titleIcon = new ImageIcon(getClass().getClassLoader()
                         .getResource("description/ui/icons/Text16.gif"));
                  titleIcon = new ImageIcon(getClass().getClassLoader()
                         .getResource("description/ui/icons/Element16.gif"));
              public Component getTreeCellEditorComponent(
                           JTree tree,
                           Object value,
                           boolean isSelected,
                           boolean expanded,
                           boolean leaf,
                           int row) {
                  super.getTreeCellEditorComponent(tree, value, isSelected, expanded, leaf, row);
                  return this.editingComponent;
          abstract class NodeData{
              String name;
              public NodeData(String name) {
                  this.name = name;
              public String getName() {
                  return name;
              public void setName(String name) {
                  this.name = name;
              public String toString() {
                  return name;
          class ChapterNodeData extends NodeData {
              public ChapterNodeData(String s) {
                  super(s);
          class TitleNodeData extends NodeData {
              public TitleNodeData(String attr) {
                  super(attr);
    }

    Arungeeth wrote:
    I know the name of the node... but i cant able to find that nodeHere is some sample code for searching and selecting a node:
        TreeModel model = jtemp.getModel();
        if (model != null) {
            Object root = model.getRoot();
            search(model, root, "Peter");//search for the name 'Peter'
            System.out.println(jtemp.getSelectionPath().getLastPathComponent());
        } else {
            System.out.println("Tree is empty.");
    private void search(TreeModel model, Object o, String argSearch) {
        int cc;
        cc = model.getChildCount(o);
        for (int i = 0; i < cc; i++) {
            DefaultMutableTreeNode child = (DefaultMutableTreeNode) model.getChild(o, i);
            if (model.isLeaf(child)) {
                TreeNode[] ar = child.getPath();
                String currentValue = Arrays.toString(ar);
                if (currentValue.contains(argSearch)) {
                    jtemp.setSelectionPath(new TreePath(ar));
            } else {
                search(model, child, argSearch);
    }

  • 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();

Maybe you are looking for

  • SYST: Period 012 is not valid in financial year variant V3 Message no. FGV0

    Hi! While I am going to create Asset it is giving me following error : SYST: Period 012 is not valid in financial year variant V3 Message no. FGV003 I checked in OB29, I have maintained 12 period, can you please tell me what will be the problem. Rake

  • How do I re-download a song that i hid from the cloud?

    So here's the story: My wife downloaded some songs from the store directly to her iphone 5, and while they played on our pc just fine, they wouldnt play on her phone. To try and remedy this, I deleted the songs from itunes library, sync'd her phone t

  • Reading a text file and using data to plot a graph

    Dear Friends, I have the following problem... I have a text data looking like this; 100000000 1003ff001 1010013ff 1000003ff 1023fe001 102000000 1023ff3ff 1010013fd 0ff0033fc 0ff002001 0fe3fd3ff 0ff000002 100000000 1003ff001 1010013ff 1000003ff 1023fe

  • AFP version in Leopard

    What version of AFP is used in Leopard? What are the AFP functions 76 and higher? Are these documented somewhere? - Alex

  • Mysqlnd issues with php5, compile questions...

    So, I am getting an error of "Not connected : mysqlnd cannot connect to MySQL 4.1+ using old authentication" when I try to connect Wordpress, locally, to a remote server because of php5 and snow leopard. I as told by my host to recompile php on my Ma