Search in sources :

Example 1 with ObjectLabelField

use of com.revolsys.swing.field.ObjectLabelField in project com.revolsys.open by revolsys.

the class SwingUtil method newField.

@SuppressWarnings("unchecked")
static <T extends Field> T newField(final RecordDefinition recordDefinition, final String fieldName, final boolean editable) {
    Field field;
    final FieldDefinition fieldDefinition = recordDefinition.getField(fieldName);
    if (fieldDefinition == null) {
        throw new IllegalArgumentException("Cannot find field " + fieldName);
    } else {
        final boolean required = fieldDefinition.isRequired();
        final int length = fieldDefinition.getLength();
        CodeTable codeTable;
        if (recordDefinition.getIdFieldNames().contains(fieldName)) {
            codeTable = null;
        } else {
            codeTable = recordDefinition.getCodeTableByFieldName(fieldName);
        }
        final DataType type = fieldDefinition.getDataType();
        int columns = length;
        if (columns <= 0) {
            columns = 10;
        } else if (columns > 50) {
            columns = 50;
        }
        final Class<?> javaClass = type.getJavaClass();
        if (codeTable != null) {
            if (editable) {
                final JComponent component = codeTable.getSwingEditor();
                if (component == null) {
                    field = newComboBox(fieldName, codeTable, required, -1, false);
                } else {
                    field = ((Field) component).clone();
                }
            } else {
                field = new ObjectLabelField(fieldName, columns, codeTable);
            }
        } else if (!editable) {
            final TextField textField = newTextField(fieldName, columns);
            textField.setEditable(false);
            field = textField;
        } else if (Number.class.isAssignableFrom(javaClass)) {
            final int scale = fieldDefinition.getScale();
            final Number minValue = fieldDefinition.getMinValue();
            final Number maxValue = fieldDefinition.getMaxValue();
            final NumberTextField numberTextField = new NumberTextField(fieldName, type, length, scale, minValue, maxValue);
            field = numberTextField;
        } else if (Date.class.isAssignableFrom(javaClass)) {
            field = newDateField(fieldName);
        } else if (Geometry.class.isAssignableFrom(javaClass)) {
            field = new ObjectLabelField(fieldName);
        } else {
            field = newTextField(fieldName, columns);
        }
    }
    if (field instanceof JTextField) {
        final JTextField textField = (JTextField) field;
        final int preferedWidth = textField.getPreferredSize().width;
        textField.setMinimumSize(new Dimension(preferedWidth, 0));
        textField.setMaximumSize(new Dimension(preferedWidth, Integer.MAX_VALUE));
    }
    ((JComponent) field).setFont(FONT);
    return (T) field;
}
Also used : CodeTable(com.revolsys.record.code.CodeTable) NumberTextField(com.revolsys.swing.field.NumberTextField) FieldDefinition(com.revolsys.record.schema.FieldDefinition) JComponent(javax.swing.JComponent) Dimension(java.awt.Dimension) JTextField(javax.swing.JTextField) Point(java.awt.Point) Date(java.util.Date) NumberTextField(com.revolsys.swing.field.NumberTextField) DateField(com.revolsys.swing.field.DateField) JTextField(javax.swing.JTextField) Field(com.revolsys.swing.field.Field) TextField(com.revolsys.swing.field.TextField) ColorChooserField(com.revolsys.swing.field.ColorChooserField) ObjectLabelField(com.revolsys.swing.field.ObjectLabelField) DataType(com.revolsys.datatype.DataType) NumberTextField(com.revolsys.swing.field.NumberTextField) JTextField(javax.swing.JTextField) TextField(com.revolsys.swing.field.TextField) ObjectLabelField(com.revolsys.swing.field.ObjectLabelField)

Example 2 with ObjectLabelField

use of com.revolsys.swing.field.ObjectLabelField in project com.revolsys.open by revolsys.

the class SwingUtil method newField.

@SuppressWarnings("unchecked")
static <T extends JComponent> T newField(final Class<?> fieldClass, final String fieldName, final Object fieldValue) {
    JComponent field;
    if (Number.class.isAssignableFrom(fieldClass)) {
        final NumberTextField numberTextField = new NumberTextField(fieldName, DataTypes.DOUBLE, 10, 2);
        if (fieldValue instanceof Number) {
            final Number number = (Number) fieldValue;
            numberTextField.setFieldValue(number);
        }
        field = numberTextField;
    } else if (Date.class.isAssignableFrom(fieldClass)) {
        final DateField dateField = newDateField(fieldName);
        if (fieldValue instanceof Date) {
            final Date date = (Date) fieldValue;
            dateField.setDate(date);
        }
        field = dateField;
    } else if (Geometry.class.isAssignableFrom(fieldClass)) {
        final ObjectLabelField objectField = new ObjectLabelField(fieldName);
        objectField.setFieldValue(fieldValue);
        field = objectField;
    } else if (Color.class.isAssignableFrom(fieldClass)) {
        field = new ColorChooserField(fieldName, (Color) fieldValue);
    } else if (Boolean.class.isAssignableFrom(fieldClass)) {
        field = new CheckBox(fieldName, fieldValue);
    } else {
        final TextField textField = new TextField(fieldName, fieldValue);
        textField.setColumns(50);
        MenuFactory.getPopupMenuFactory(textField);
        field = textField;
    }
    if (field instanceof JTextField) {
        final JTextField textField = (JTextField) field;
        final int preferedWidth = textField.getPreferredSize().width;
        textField.setMinimumSize(new Dimension(preferedWidth, 0));
        textField.setMaximumSize(new Dimension(preferedWidth, Integer.MAX_VALUE));
        textField.setText(DataTypes.toString(fieldValue));
    }
    field.setFont(FONT);
    return (T) field;
}
Also used : NumberTextField(com.revolsys.swing.field.NumberTextField) ColorChooserField(com.revolsys.swing.field.ColorChooserField) Color(java.awt.Color) JComponent(javax.swing.JComponent) Dimension(java.awt.Dimension) JTextField(javax.swing.JTextField) Date(java.util.Date) Point(java.awt.Point) CheckBox(com.revolsys.swing.field.CheckBox) JCheckBox(javax.swing.JCheckBox) NumberTextField(com.revolsys.swing.field.NumberTextField) JTextField(javax.swing.JTextField) TextField(com.revolsys.swing.field.TextField) DateField(com.revolsys.swing.field.DateField) ObjectLabelField(com.revolsys.swing.field.ObjectLabelField)

Example 3 with ObjectLabelField

use of com.revolsys.swing.field.ObjectLabelField in project com.revolsys.open by revolsys.

the class LayerRecordForm method addCodeTableLabelField.

protected ObjectLabelField addCodeTableLabelField(final String fieldName) {
    final RecordStore recordStore = getRecordStore();
    final CodeTable codeTable = recordStore.getCodeTableByFieldName(fieldName);
    final ObjectLabelField field = new ObjectLabelField(fieldName, codeTable);
    field.setFont(SwingUtil.FONT);
    addField(fieldName, field);
    return field;
}
Also used : CodeTable(com.revolsys.record.code.CodeTable) RecordStore(com.revolsys.record.schema.RecordStore) ObjectLabelField(com.revolsys.swing.field.ObjectLabelField)

Aggregations

ObjectLabelField (com.revolsys.swing.field.ObjectLabelField)3 CodeTable (com.revolsys.record.code.CodeTable)2 ColorChooserField (com.revolsys.swing.field.ColorChooserField)2 DateField (com.revolsys.swing.field.DateField)2 NumberTextField (com.revolsys.swing.field.NumberTextField)2 TextField (com.revolsys.swing.field.TextField)2 Dimension (java.awt.Dimension)2 Point (java.awt.Point)2 Date (java.util.Date)2 JComponent (javax.swing.JComponent)2 JTextField (javax.swing.JTextField)2 DataType (com.revolsys.datatype.DataType)1 FieldDefinition (com.revolsys.record.schema.FieldDefinition)1 RecordStore (com.revolsys.record.schema.RecordStore)1 CheckBox (com.revolsys.swing.field.CheckBox)1 Field (com.revolsys.swing.field.Field)1 Color (java.awt.Color)1 JCheckBox (javax.swing.JCheckBox)1