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
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