77 lines
1.9 KiB
Java
77 lines
1.9 KiB
Java
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<Integer, IndexedItem> items;
|
|
|
|
public IndexedListServiceRegister(ServiceLink serviceLink)
|
|
{
|
|
super(serviceLink);
|
|
editor = new IndexedListRegisterEditor();
|
|
editor.setServiceRegister(this);
|
|
|
|
items = new Hashtable<Integer, IndexedListRegisterEditor.IndexedItem>();
|
|
}
|
|
|
|
@Override
|
|
public void setRegisterNode(Element registerNode) {
|
|
super.setRegisterNode(registerNode);
|
|
|
|
Element listNode = (Element)registerNode.getElementsByTagName("List").item(0);
|
|
|
|
LinkedList<IndexedItem> items = new LinkedList<IndexedListRegisterEditor.IndexedItem>();
|
|
|
|
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();
|
|
}
|
|
|
|
}
|