Revision 44669 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretype/DefaultFeatureTypeAttributePanel.java

View differences:

DefaultFeatureTypeAttributePanel.java
403 403
    private DatePickerController pickerIntervalEnd;
404 404
    private DatePickerController pickerIntervalStart;
405 405
    private CalculatorController<Integer> pickerSize;
406
    private CalculatorController<Integer> pickerPrecision;
406
    private CalculatorController<Integer> pickerScale;
407 407
    private CalculatorController<Object> pickerDefaultValue;
408 408
    private PickerController<IProjection> pickerCRS;
409 409
    private ExpressionPickerController pickerVirtualField;
......
496 496
        swingManager.translate(this.lblIntervalStart);
497 497
        swingManager.translate(this.lblIsAutomatic);
498 498
        swingManager.translate(this.lblIsPrimaryKey);
499
        swingManager.translate(this.lblPrecision);
499
        swingManager.translate(this.lblScale);
500 500
        swingManager.translate(this.lblSize);
501 501
        swingManager.translate(this.chkVirtualField);
502 502
        swingManager.translate(this.tabAditionalFields);
......
527 527
        swingManager.addClearButton(this.txtFieldName);
528 528
        swingManager.addClearButton(this.txtIntervalEnd);
529 529
        swingManager.addClearButton(this.txtIntervalStart);
530
        swingManager.addClearButton(this.txtPrecision);
530
        swingManager.addClearButton(this.txtScale);
531 531
        swingManager.addClearButton(this.txtSize);
532 532
        swingManager.addClearButton(this.txtLabel);
533 533
        swingManager.addClearButton(this.txtDescription);
......
541 541
        swingManager.setDefaultPopupMenu(this.txtFieldName);
542 542
        swingManager.setDefaultPopupMenu(this.txtIntervalEnd);
543 543
        swingManager.setDefaultPopupMenu(this.txtIntervalStart);
544
        swingManager.setDefaultPopupMenu(this.txtPrecision);
544
        swingManager.setDefaultPopupMenu(this.txtScale);
545 545
        swingManager.setDefaultPopupMenu(this.txtSize);
546 546
        swingManager.setDefaultPopupMenu(this.cboDateFormat);
547 547
        swingManager.setDefaultPopupMenu(this.cboFieldType);
......
580 580
        this.pickerSize = evaluatorManager.createCalculatorController(
581 581
                this.txtSize, DataTypes.INT
582 582
        );
583
        this.pickerPrecision = evaluatorManager.createCalculatorController(
584
                this.txtPrecision, DataTypes.INT
583
        this.pickerScale = evaluatorManager.createCalculatorController(
584
                this.txtScale, DataTypes.INT
585 585
        );
586 586
        this.pickerDefaultValue = evaluatorManager.createCalculatorController(
587 587
                this.txtDefaultValue, DataTypes.OBJECT
......
643 643
            }
644 644
        });
645 645

  
646
        this.pickerPrecision.addChangeListener(new ChangeListener() {
646
        this.pickerScale.addChangeListener(new ChangeListener() {
647 647
            @Override
648 648
            public void stateChanged(ChangeEvent e) {
649
                doCheckSizeAndPrecision();
649
                doCheckPrecisionAndScale();
650 650
            }
651 651
        });
652 652
        this.pickerSize.addChangeListener(new ChangeListener() {
653 653
            @Override
654 654
            public void stateChanged(ChangeEvent e) {
655
                doCheckSizeAndPrecision();
655
                doCheckPrecisionAndScale();
656 656
            }
657 657
        });
658 658

  
......
692 692
            descriptor.setIsPrimaryKey(this.chkIsPrimaryKey.isSelected());
693 693
            descriptor.setIsAutomatic(this.chkIsAutomatic.isSelected());
694 694
            descriptor.setSize(this.pickerSize.get(0));
695
            descriptor.setPrecision(this.pickerPrecision.get(0));
695
            descriptor.setScale(this.pickerScale.get(0));
696 696
            descriptor.setDefaultValue(this.pickerDefaultValue.get());
697 697
            descriptor.setDataProfileName((String) ListElement.getSelected(this.cboDataProfile));
698 698
            switch (descriptor.getType()) {
......
815 815
//        this.pickerFieldName.set(null);
816 816
        this.pickerIntervalEnd.set(null);
817 817
        this.pickerIntervalStart.set(null);
818
        this.pickerPrecision.set(null);
818
        this.pickerScale.set(null);
819 819
        this.pickerSize.set(null);
820 820

  
821 821
        this.chkAllowNulls.setSelected(false);
......
895 895
            this.pickerIntervalEnd.set(interval.getEnd().toDate());
896 896
            this.pickerIntervalStart.set(interval.getStart().toDate());
897 897
        }
898
        this.pickerPrecision.set(descriptor.getPrecision());
898
        this.pickerScale.set(descriptor.getScale());
899 899
        this.pickerSize.set(descriptor.getSize());
900 900

  
901 901
        this.chkAllowNulls.setSelected(descriptor.allowNull());
......
978 978
                    this.pickerSize.set(maxsize);
979 979
                }
980 980
            }
981
            Integer precision = this.pickerPrecision.get();
982
            if (precision == null) {
983
                int defaultPrecision = this.getDefaultPrecisionOfType(fieldType);
984
                if (defaultPrecision > 0) {
985
                    this.pickerPrecision.set(defaultPrecision);
981
            Integer scale = this.pickerScale.get();
982
            if (scale == null) {
983
                int defaultScale = this.getDefaultScaleOfType(fieldType);
984
                if (defaultScale > 0) {
985
                    this.pickerScale.set(defaultScale);
986 986
                }
987 987
            }
988 988

  
......
997 997
                    this.tabAditionalFields.setEnabledAt(1, true);
998 998
                    this.tabAditionalFields.setEnabledAt(2, false);
999 999
                    this.pickerSize.set(null);
1000
                    this.pickerPrecision.set(null);
1000
                    this.pickerScale.set(null);
1001 1001
                    this.pickerSize.setEditable(false);
1002
                    this.pickerPrecision.setEditable(false);
1002
                    this.pickerScale.setEditable(false);
1003 1003
                    break;
1004 1004
                case DataTypes.INSTANT:
1005 1005
                case DataTypes.INTERVAL:
......
1015 1015
                    this.tabAditionalFields.setEnabledAt(1, false);
1016 1016
                    this.tabAditionalFields.setEnabledAt(2, true);
1017 1017
                    this.pickerSize.set(null);
1018
                    this.pickerPrecision.set(null);
1018
                    this.pickerScale.set(null);
1019 1019
                    this.pickerSize.setEditable(false);
1020
                    this.pickerPrecision.setEditable(false);
1020
                    this.pickerScale.setEditable(false);
1021 1021
                    break;
1022 1022
                case DataTypes.BYTE:
1023 1023
                case DataTypes.INT:
......
1035 1035
                    this.tabAditionalFields.setEnabledAt(1, false);
1036 1036
                    this.tabAditionalFields.setEnabledAt(2, false);
1037 1037

  
1038
                    this.pickerPrecision.set(null);
1038
                    this.pickerScale.set(null);
1039 1039
                    this.pickerSize.setEditable(this.mode==MODE_EDIT_ALL);
1040
                    this.pickerPrecision.setEditable(false);
1040
                    this.pickerScale.setEditable(false);
1041 1041
                    break;
1042 1042
                case DataTypes.FLOAT:
1043 1043
                case DataTypes.DOUBLE:
......
1051 1051
                    this.tabAditionalFields.setEnabledAt(2, false);
1052 1052

  
1053 1053
                    this.pickerSize.setEditable(this.mode==MODE_EDIT_ALL);
1054
                    this.pickerPrecision.setEditable(this.mode==MODE_EDIT_ALL);
1054
                    this.pickerScale.setEditable(this.mode==MODE_EDIT_ALL);
1055 1055
                    break;
1056 1056
                default:
1057 1057
                    this.cboGeometryType.setEnabled(false);
......
1063 1063
                    this.tabAditionalFields.setEnabledAt(1, false);
1064 1064
                    this.tabAditionalFields.setEnabledAt(2, false);
1065 1065
                    this.pickerSize.set(null);
1066
                    this.pickerPrecision.set(null);
1066
                    this.pickerScale.set(null);
1067 1067
                    this.pickerSize.setEditable(false);
1068
                    this.pickerPrecision.setEditable(false);
1068
                    this.pickerScale.setEditable(false);
1069 1069
            }
1070 1070
        } catch (Exception ex) {
1071 1071
            LOGGER.warn("Problems changing field type.", ex);
......
1094 1094
                this.txtFieldName.setEditable(true);
1095 1095
                this.pickerIntervalEnd.setEditable(true);
1096 1096
                this.pickerIntervalStart.setEditable(true);
1097
                this.pickerPrecision.setEditable(true);
1097
                this.pickerScale.setEditable(true);
1098 1098
                this.pickerSize.setEditable(true);
1099 1099
                this.cboDataProfile.setEnabled(true);
1100 1100

  
......
1129 1129
            case MODE_EDIT_ONLY_METADATA:
1130 1130
                if( this.chkVirtualField.isSelected() ) {
1131 1131
                    this.txtFieldName.setEditable(true);
1132
                    this.pickerPrecision.setEditable(true);
1132
                    this.pickerScale.setEditable(true);
1133 1133
                    this.pickerSize.setEditable(true);
1134 1134
                    this.pickerVirtualField.setEditable(true);
1135 1135
                    this.cboFieldType.setEnabled(true);
......
1138 1138
                    this.pickerCRS.setEditable(true);
1139 1139
                } else {
1140 1140
                    this.txtFieldName.setEditable(false);
1141
                    this.pickerPrecision.setEditable(false);
1141
                    this.pickerScale.setEditable(false);
1142 1142
                    this.pickerSize.setEditable(false);
1143 1143
                    this.pickerVirtualField.setEditable(false);
1144 1144
                    this.cboFieldType.setEnabled(false);
......
1181 1181
                this.txtFieldName.setEditable(false);
1182 1182
                this.pickerIntervalEnd.setEditable(false);
1183 1183
                this.pickerIntervalStart.setEditable(false);
1184
                this.pickerPrecision.setEditable(false);
1184
                this.pickerScale.setEditable(false);
1185 1185
                this.pickerSize.setEditable(false);
1186 1186
                this.cboDataProfile.setEnabled(false);
1187 1187

  
......
1233 1233
        }
1234 1234
    }
1235 1235

  
1236
    private int getDefaultPrecisionOfType(int dataType) {
1236
    private int getDefaultScaleOfType(int dataType) {
1237 1237
        switch (dataType) {
1238 1238
            case DataTypes.FLOAT:
1239 1239
                return 6;
1240 1240
            case DataTypes.DOUBLE:
1241 1241
                return 6;
1242
            case DataTypes.DECIMAL:
1243
                return 6;
1242 1244
            default:
1243 1245
                return -1;
1244 1246
        }
1245 1247
    }
1246 1248

  
1247
    private void doCheckSizeAndPrecision() {
1249
    private void doCheckPrecisionAndScale() {
1248 1250
        Integer size = this.pickerSize.get();
1249 1251
        if (size == null) {
1250 1252
            return;
......
1255 1257
        } else {
1256 1258
            this.pickerSize.setWarning(false);
1257 1259
        }
1258
        if (this.pickerPrecision.isEnabled()) {
1259
            Integer precision = this.pickerPrecision.get();
1260
        if (this.pickerScale.isEnabled()) {
1261
            Integer precision = this.pickerScale.get();
1260 1262
            if (precision == null) {
1261 1263
                return;
1262 1264
            }
1263 1265
            if (precision < 0) {
1264
                this.pickerPrecision.setWarning(true, "the precision can not have a negative value");
1266
                this.pickerScale.setWarning(true, "the precision can not have a negative value");
1265 1267
            } else if (precision > size) {
1266
                this.pickerPrecision.setWarning(true, "the precision can not have a value greater than the size");
1268
                this.pickerScale.setWarning(true, "the precision can not have a value greater than the size");
1267 1269
            } else {
1268
                this.pickerPrecision.setWarning(false);
1270
                this.pickerScale.setWarning(false);
1269 1271
            }
1270 1272
        }
1271 1273
    }

Also available in: Unified diff