package com.revolsys.swing.field; import java.util.List; import com.revolsys.datatype.DataTypes; import com.revolsys.identifier.Identifier; import com.revolsys.record.code.CodeTable; import com.revolsys.util.Strings; public class ObjectLabelField extends TextField { private static final long serialVersionUID = 1L; private final CodeTable codeTable; public ObjectLabelField() { this("fieldValue", null); } public ObjectLabelField(final String fieldName) { this(fieldName, null); } public ObjectLabelField(final String fieldName, final CodeTable codeTable) { super(fieldName); this.codeTable = codeTable; } public ObjectLabelField(final String fieldName, final int columns, final CodeTable codeTable) { super(fieldName, columns); this.codeTable = codeTable; } @Override public String getDisplayText(final Object fieldValue) { if (fieldValue == null) { return "-"; } else if (this.codeTable == null) { return DataTypes.toString(fieldValue); } else { final List<Object> values = this.codeTable.getValues(Identifier.newIdentifier(fieldValue)); if (values == null || values.isEmpty()) { return DataTypes.toString(fieldValue); } else { return Strings.toString(values); } } } @SuppressWarnings("unchecked") @Override public <T> T getFieldValue() { return (T)getFieldValueInternal(); } @Override public void setEditable(final boolean editable) { } @Override public void updateFieldValue() { } }