java-org.hwo.servicelink/src/org/hwo/ui/servicelink/register/IndexedListRegisterEditor.java

128 lines
2.7 KiB
Java

package org.hwo.ui.servicelink.register;
import java.awt.Component;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.math.BigInteger;
import java.util.Hashtable;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.hwo.servicelink.ServiceLink;
import org.hwo.ui.JComboBoxEx;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
public class IndexedListRegisterEditor extends JPanel implements ServiceRegisterControl {
public static class IndexedItem {
private Integer index;
private String label;
public IndexedItem(Integer index,String label) {
this.index = index;
this.label = label;
}
@Override
public String toString() {
return String.format("%d: %s", this.index, this.label);
}
public Integer getIndex() {
return index;
}
public void setIndex(Integer index) {
this.index = index;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
};
private ServiceRegister serviceRegister;
private JComboBoxEx cbValue;
private IndexedItem[] items;
public IndexedListRegisterEditor()
{
super();
GridBagLayout gridBagLayout = new GridBagLayout();
gridBagLayout.columnWidths = new int[]{0, 0};
gridBagLayout.rowHeights = new int[]{0, 0};
gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE};
gridBagLayout.rowWeights = new double[]{0.0, Double.MIN_VALUE};
setLayout(gridBagLayout);
cbValue = new JComboBoxEx();
GridBagConstraints gbc_tfValue = new GridBagConstraints();
gbc_tfValue.fill = GridBagConstraints.HORIZONTAL;
gbc_tfValue.gridx = 0;
gbc_tfValue.gridy = 0;
add(cbValue, gbc_tfValue);
}
@Override
public Component getComponent() {
return this;
}
@Override
public void setServiceRegister(ServiceRegister serviceRegister) {
this.serviceRegister = serviceRegister;
}
@Override
public void writeValue() {
this.serviceRegister.writeIntegerValue(((IndexedItem)cbValue.getSelectedItem()).getIndex());
}
@Override
public void readValue() {
Integer i = this.serviceRegister.readIntegerValue();
if ( i == null )
i = 0;
for (IndexedItem item : items) {
if (item.getIndex().equals(i)) {
cbValue.setSelectedItem(item);
return;
}
}
IndexedItem item = new IndexedItem(i, "Unkown Index");
cbValue.setSelectedItem(item);
}
@Override
public boolean requestFocusInWindow() {
return cbValue.requestFocusInWindow();
}
public IndexedItem[] getItems() {
return items;
}
public void setItems(IndexedItem[] items) {
this.items = items;
cbValue.removeAllItems();
for (IndexedItem item: items){
cbValue.addItem(item);
}
}
}