/**
   * The <code>PropertySheetEntry</code> implmentation of this method declared on<code>
   * IPropertySheetEntry</code> will obtain an editable value for the given objects and update the
   * child entries.
   *
   * <p>Updating the child entries will typically call this method on the child entries and thus the
   * entire entry tree is updated
   *
   * @param objects the new values for this entry
   */
  public void setValues(Object[] objects) {
    values = objects;
    sources = new HashMap(values.length * 2 + 1);

    if (values.length == 0) {
      editValue = null;
    } else {
      // set the first value object as the entry's value
      Object newValue = values[0];

      // see if we should convert the value to an editable value
      IPropertySource source = getPropertySource(newValue);
      if (source != null) {
        newValue = source.getEditableValue();
        if (newValue instanceof AuroraComponent) {
          if (lastAc != null) lastAc.removePropertyChangeListener(pcListener);
          lastAc = (AuroraComponent) newValue;
          lastAc.addPropertyChangeListener(pcListener);
        }
      }
      editValue = newValue;
    }

    // update our child entries
    refreshChildEntries();

    // inform listeners that our value changed
    fireValueChanged();
  }
 /**
  * Returns the edit value for the object at the given index.
  *
  * @param index the value object index
  * @return the edit value for the object at the given index
  */
 protected Object getEditValue(int index) {
   Object value = values[index];
   IPropertySource source = getPropertySource(value);
   if (source != null) {
     value = source.getEditableValue();
   }
   return value;
 } /* (non-Javadoc)
 /**
  * The <code>PropertySheetEntry</code> implmentation of this method declared on<code>
  * IPropertySheetEntry</code> will obtain an editable value for the given objects and update the
  * child entries.
  *
  * <p>Updating the child entries will typically call this method on the child entries and thus the
  * entire entry tree is updated
  *
  * @param objects the new values for this entry
  */
 public void setValues(Object[] objects) {
   values = objects;
   sources = new HashMap(values.length * 2 + 1);
   if (values.length == 0) editValue = null;
   else {
     // set the first value object as the entry's value
     Object newValue = values[0];
     // see if we should convert the value to an editable value
     IPropertySource source = getPropertySource(newValue);
     if (source != null) newValue = source.getEditableValue();
     editValue = newValue;
   } // update our child entries
   refreshChildEntries();
   // inform listeners that our value changed
   fireValueChanged();
 }