Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / May 2007

Tip: Looking for answers? Try searching our database.

valueForPathChanged event

Thread view: 
rob - 22 May 2007 14:19 GMT
Hello all,

In my program I load xml data from file to the DOM, create a custom
model for the tree and display the data in the gui in the form of a
tree. If I want to edit the elements of the tree I have to modify the
valueForPathChanged event in my tree model.
I can't find any description how to do this in the literature.
Everybody seems to omit that part assuming in their examples that the
tree will not be editable.

I will be very grateful for suggestions how to implement the
valueForPathChanged event in my code  (which is essentially a little
modified code from the java tutorial) so it is possible to edit the
displayed tree nodes.

My tree model looks like this:

class DomToTreeModelAdapter implements javax.swing.tree.TreeModel
{

       private Document document;

               public DomToTreeModelAdapter(Document document)
               {
                       this.document=document;
               }

 public Object  getRoot() {
   return new AdapterNode(document);
 }
 public boolean isLeaf(Object aNode) {
   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) {

         //AdapterNode node =
(AdapterNode)path.getLastPathComponent();
           DefaultMutableTreeNode node =
               (DefaultMutableTreeNode)path.getLastPathComponent();
           String value = (String)newValue;
           if (object != null) {
             node.setUserObject(object);
           } else {
             node.setUserObject(value);
           }*/
           if (value!=null)
               node.setUserObject(value);
 }

 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 );
   }
 }

 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 );
   }
 }

}

Regards,
Rob
rob - 29 May 2007 14:41 GMT
> Hello all,
>
[quoted text clipped - 107 lines]
> Regards,
> Rob

This works here:

     public void valueForPathChanged(TreePath path, Object newValue)
{
                 AdapterNode node = (AdapterNode)
path.getLastPathComponent();
                 node.getDomNode().setNodeValue((String)newValue);
                 fireTreeNodesChanged(new TreeModelEvent(this,
path));
     }


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.