128 lines
2.7 KiB
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);
|
|
}
|
|
}
|
|
}
|