Package org.w3c.jigadmin.editors

Source Code of org.w3c.jigadmin.editors.RemoteResourceWrapperNode

// RemoteResourceWrapperNode.java
// $Id: RemoteResourceWrapperNode.java,v 1.13 2000/08/16 21:37:30 ylafon Exp $
// (c) COPYRIGHT MIT and INRIA, 1998.
// Please first read the full copyright statement in file COPYRIGHT.html

package org.w3c.jigadmin.editors;

import java.awt.Cursor;

import javax.swing.JTree;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import javax.swing.tree.MutableTreeNode;

import java.util.Enumeration;
import java.util.Vector;

import org.w3c.jigadmin.RemoteResourceWrapper;
import org.w3c.jigadmin.PropertyManager;
import org.w3c.jigadmin.gui.Message;

import org.w3c.jigsaw.admin.RemoteAccessException;

import org.w3c.tools.sorter.Sorter;

import org.w3c.util.ArrayEnumeration;

/**
* The TreeNode for Resources
* @version $Revision: 1.13 $
* @author  Beno�t Mah� (bmahe@w3.org)
*/
public class RemoteResourceWrapperNode
    implements MutableTreeNode, RemoteNode
{

    protected RemoteResourceWrapper     rrw        = null;
    protected RemoteResourceWrapperNode parent     = null;
    protected String                    name       = null;
    protected Vector                    children   = null;

    /**
     * Load the children of this node.
     */
    protected synchronized void loadChildren() {
  String                names[] = null;
  RemoteResourceWrapper child   = null;
 
  children = new Vector();

  try {
      names = rrw.getResource().enumerateResourceIdentifiers();
  } catch (RemoteAccessException ex) {
      Message.showErrorMessage(rrw, ex);
  }
  if (names == null)
      return;
  Sorter.sortStringArray(names, true);
  for (int i = 0 ; i < names.length ; i++) {
      try {
    child = rrw.getChildResource(names[i]);
      } catch (RemoteAccessException ex) {
    Message.showErrorMessage(rrw, ex, names[i]);
      }
      if (child != null) {
    RemoteResourceWrapperNode node =
        new RemoteResourceWrapperNode(this, child, names[i]);
    children.add(node);
      }
  }
    }

    //RemoteNode part
    /**
     * Invoked whenever this node is about to be expanded.
     */   
    public void nodeWillExpand() {
  children = null;
    }

    /**
     * Invoked whenever this node is about to be collapsed.
     */
    public void nodeWillCollapse() {
  //children = null;
    }

    /**
     * Get the associated RemoteResourceWrapper.
     * @return the associated RemoteResourceWrapper
     */
    public RemoteResourceWrapper getResourceWrapper() {
  return rrw;
    }

    /**
     * Load the children if needed.
     */
    protected void acquireChildren() {
  rrw.getServerBrowser().setCursor(Cursor.WAIT_CURSOR);
  if (children == null)
      loadChildren();
  rrw.getServerBrowser().setCursor(Cursor.DEFAULT_CURSOR);
    }

    //TreeNode part

    /**
     * Returns the child TreeNode at index childIndex.
     * @param childIndex the index of the child to return
     * @return a TreeNode instance
     */
    public TreeNode getChildAt(int childIndex) {
  acquireChildren();
  return (TreeNode)children.elementAt(childIndex);
    }

    /**
     * Returns the number of children TreeNodes the receiver contains.
     * @return the number of children TreeNodes the receiver contains
     */
    public int getChildCount() {
  acquireChildren();
  return children.size();
    }

    /**
     * Returns the parent TreeNode of the receiver.
     * @return a TreeNode
     */
    public TreeNode getParent() {
  return parent;
    }

    /**
     * Returns the index of node in the receivers children. If the receiver
     * does not contain node, -1 will be returned.
     * @return an int.
     */
    public int getIndex(TreeNode node) {
  acquireChildren();
  return children.indexOf(node);
    }

    /**
     * Returns true if the receiver allows children.
     * @return an int.
     */
    public boolean getAllowsChildren() {
  try {
      return rrw.getResource().isContainer();
  } catch (RemoteAccessException ex) {
      Message.showErrorMessage(rrw, ex);
  }
  return false;
    }

    /**
     * Returns true if the receiver is a leaf.
     * @return a boolean
     */
    public boolean isLeaf() {
  return (! getAllowsChildren());
    }

    /**
     * Returns the children of the reciever as an Enumeration.
     * @return an Enumeration
     */
    public Enumeration children() {
  acquireChildren();
  return children.elements();
    }

    //MutableTreeNode part

    /**
     * Adds child to the receiver at index. child will be messaged
     * with setParent.
     * @param child the child to add.
     * @param index the index of the new child.
     */
    public void insert(MutableTreeNode child, int index) {
  acquireChildren();
  children.insertElementAt(child, index);
    }

    /**
     * Removes the child at index from the receiver.
     * @param the index of the child to remove.
     */
    public void remove(int index) {
  acquireChildren();
  children.remove(index);
    }

    /**
     * Removes node from the receiver. setParent will be messaged on node
     * @param node the node to remove
     */
    public void remove(MutableTreeNode node) {
  children.remove(node);
    }

    /**
     * Resets the user object of the receiver to object.
     * @param object the new user object, actually the new identifier.
     */   
    public void setUserObject(Object object) {
  if (object instanceof String) {
      PropertyManager pm = PropertyManager.getPropertyManager();
      if (pm.isEditable(rrw)) {
    try {
        rrw.getResource().setValue("identifier", (String)object);
        name = (String)object;
    } catch (RemoteAccessException ex) {
        Message.showErrorMessage(rrw, ex);
    }
      }
  }
    }

    /**
     * Removes the receiver from its parent.
     */
    public void removeFromParent() {
  if (parent != null)
      parent.remove(this);
    }

    /**
     * Sets the parent of the receiver to newParent.
     * @param newParent the new parent.
     */
    public void setParent(MutableTreeNode newParent) {
  this.parent = (RemoteResourceWrapperNode)newParent;
    }

    /**
     * Return the string reoresentation of this node.
     * @return its name
     */
    public String toString() {
  return name;
    }

    /**
     * Constructor
     * @param parent The parent node
     * @param rrw The associated RemoteResourceWrapper
     * @param name The name of this node
     */
    protected RemoteResourceWrapperNode(RemoteResourceWrapperNode parent,
          RemoteResourceWrapper rrw,
          String name)
    {
  this.parent = parent;
  this.name   = name;
  this.rrw    = rrw;

    }

    /**
     * Constructor
     * @param rrw The associated RemoteResourceWrapper
     * @param name The name of this node
     */
    protected RemoteResourceWrapperNode(RemoteResourceWrapper rrw,
          String name)
    {
  this.rrw   = rrw;
  this.name  = name;
    }

}
TOP

Related Classes of org.w3c.jigadmin.editors.RemoteResourceWrapperNode

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.