package org.hwo.ui.servicelink.register; import java.util.HashSet; import java.util.Hashtable; import java.util.LinkedList; import javax.swing.JComponent; import org.hwo.bitfields.BitField; import org.hwo.io.servicelink.ServiceLink; import org.hwo.ui.servicelink.register.IndexedListRegisterEditor.IndexedItem; import org.hwo.xml.NodeListIterator; import org.w3c.dom.Element; public class IndexedListServiceRegister extends ServiceRegister { IndexedListRegisterEditor editor; Hashtable items; public IndexedListServiceRegister(ServiceLink serviceLink) { super(serviceLink); editor = new IndexedListRegisterEditor(); editor.setServiceRegister(this); items = new Hashtable(); } @Override public void setRegisterNode(Element registerNode) { super.setRegisterNode(registerNode); Element listNode = (Element)registerNode.getElementsByTagName("List").item(0); LinkedList items = new LinkedList(); for (Element listItem: new NodeListIterator(listNode.getElementsByTagName("Item"))){ IndexedItem item = new IndexedItem(Integer.parseInt(listItem.getAttribute("index")), listItem.getTextContent()); items.add(item); this.items.put(item.getIndex(), item); } editor.setItems(items.toArray(new IndexedItem[0])); } private IndexedItem getIndexedItem(Integer index) { if (this.items.containsKey(index)) { return this.items.get(index); } IndexedItem unknown = new IndexedItem(index, "Unkown"); return unknown; } @Override public String getTextRepresentation() { Integer i = readIntegerValue(); if (i == null) return ""; return getIndexedItem(i).toString(); } @Override public JComponent getEditorComponent() { return editor; } @Override public void acceptEditorValue() { editor.writeValue(); } @Override public void updateEditorValue() { editor.readValue(); } }