/**
   * Load, starting with the memoryComboIcon element, then all the value-icon pairs
   *
   * @param element Top level Element to unpack.
   * @param o an Editor as an Object
   */
  public void load(Element element, Object o) {
    // create the objects
    Editor p = (Editor) o;

    Element elem = element.getChild("itemList");
    List<Element> list = elem.getChildren("item");
    String[] items = new String[list.size()];
    for (int i = 0; i < list.size(); i++) {
      Element e = list.get(i);
      String item = e.getText();
      //            int idx = 0;
      //            try {
      //                idx = e.getAttribute("index").getIntValue();
      //            } catch ( org.jdom2.DataConversionException ex) {
      //                log.error("failed to convert ComboBoxIcon index attribute");
      //                idx = i;
      //            }
      items[i] = item;
    }

    MemoryComboIcon l = new MemoryComboIcon(p, items);

    loadTextInfo(l, element);
    String name;
    Attribute attr = element.getAttribute("memory");
    if (attr == null) {
      log.error("incorrect information for a memory location; must use memory name");
      p.loadFailed();
      return;
    } else {
      name = attr.getValue();
    }

    Memory m = jmri.InstanceManager.memoryManagerInstance().getMemory(name);

    if (m != null) {
      l.setMemory(name);
    } else {
      log.error("Memory named '" + attr.getValue() + "' not found.");
      p.loadFailed();
      return;
    }

    p.putItem(l);
    // load individual item's option settings after editor has set its global settings
    loadCommonAttributes(l, Editor.MEMORIES, element);
  }
  /**
   * Default implementation for storing the contents of a MemorySpinnerIcon
   *
   * @param o Object to store, of type MemorySpinnerIcon
   * @return Element containing the complete info
   */
  public Element store(Object o) {

    MemoryComboIcon p = (MemoryComboIcon) o;

    Element element = new Element("memoryComboIcon");

    Element elem = new Element("itemList");
    DefaultComboBoxModel model = p.getComboModel();
    for (int i = 0; i < model.getSize(); i++) {
      Element e = new Element("item");
      e.setAttribute("index", "" + i);
      e.addContent((String) model.getElementAt(i));
      elem.addContent(e);
    }
    element.addContent(elem);

    // include attributes
    element.setAttribute("memory", p.getNamedMemory().getName());
    storeCommonAttributes(p, element);
    storeTextInfo(p, element);

    element.setAttribute("class", "jmri.jmrit.display.configurexml.MemoryComboIconXml");
    return element;
  }