Revision 44505 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 | ||
---|---|---|
51 | 51 |
import org.gvsig.fmap.dal.swing.DALSwingLocator; |
52 | 52 |
import org.gvsig.fmap.dal.swing.DataSwingManager; |
53 | 53 |
import org.gvsig.fmap.dal.swing.expressionevaluator.FeatureStoreElement; |
54 |
import org.gvsig.fmap.dal.swing.featuretype.FeatureTypePanel; |
|
55 |
import static org.gvsig.fmap.dal.swing.featuretype.FeatureTypePanel.MODE_EDIT_ALL; |
|
56 |
import static org.gvsig.fmap.dal.swing.featuretype.FeatureTypePanel.MODE_EDIT_ONLY_METADATA; |
|
57 |
import static org.gvsig.fmap.dal.swing.featuretype.FeatureTypePanel.MODE_SHOW_ONLY; |
|
54 | 58 |
import org.gvsig.fmap.geom.Geometry; |
55 | 59 |
import org.gvsig.fmap.geom.GeometryLocator; |
56 | 60 |
import org.gvsig.fmap.geom.GeometryManager; |
... | ... | |
408 | 412 |
private TagsController tagsController; |
409 | 413 |
private ForeingKeyController foreingKeyController; |
410 | 414 |
|
411 |
private boolean editable;
|
|
415 |
private int mode;
|
|
412 | 416 |
private FeatureStoreElement featureStoreElement; |
413 | 417 |
|
414 | 418 |
public DefaultFeatureTypeAttributePanel() { |
415 |
this.editable = true;
|
|
419 |
this.mode = FeatureTypePanel.MODE_SHOW_ONLY;
|
|
416 | 420 |
DataTypesManager dataManager = ToolsLocator.getDataTypesManager(); |
417 | 421 |
this.fieldTypes = new ArrayList<>(); |
418 | 422 |
for (DataType dataType : dataManager) { |
... | ... | |
615 | 619 |
@Override |
616 | 620 |
public void stateChanged(ChangeEvent e) { |
617 | 621 |
if (chkVirtualField.isSelected()) { |
618 |
pickerVirtualField.setEnabled(editable);
|
|
622 |
pickerVirtualField.setEditable(mode==MODE_EDIT_ALL || mode==MODE_EDIT_ONLY_METADATA);
|
|
619 | 623 |
} else { |
620 |
pickerVirtualField.setEnabled(false);
|
|
624 |
pickerVirtualField.setEditable(false);
|
|
621 | 625 |
} |
622 | 626 |
} |
623 | 627 |
}); |
... | ... | |
715 | 719 |
StringUtils.defaultIfBlank((String) ListElement.getSelected(cboDataProfile), null) |
716 | 720 |
); |
717 | 721 |
|
718 |
if (this.chkVirtualField.isSelected() && this.pickerVirtualField.isEnabled()) { |
|
722 |
if (this.chkVirtualField.isSelected() ) { //&& this.pickerVirtualField.isEnabled()) {
|
|
719 | 723 |
Expression expression = this.pickerVirtualField.get(); |
720 | 724 |
if (expression == null) { |
721 | 725 |
descriptor.setFeatureAttributeEmulator((String) null); |
... | ... | |
819 | 823 |
this.chkIsPrimaryKey.setSelected(false); |
820 | 824 |
|
821 | 825 |
this.chkVirtualField.setSelected(false); |
822 |
this.chkVirtualField.setEnabled(editable);
|
|
823 |
this.pickerVirtualField.setEnabled(false);
|
|
826 |
this.chkVirtualField.setEnabled(this.mode==MODE_EDIT_ALL || this.mode==MODE_EDIT_ONLY_METADATA);
|
|
827 |
this.pickerVirtualField.setEditable(false);
|
|
824 | 828 |
this.pickerVirtualField.set(null); |
825 | 829 |
|
826 | 830 |
ListElement.setSelected(cboGeometryType, null); |
... | ... | |
880 | 884 |
groupModel.addElement(group); |
881 | 885 |
} |
882 | 886 |
} |
883 |
if (!(descriptor instanceof EditableFeatureAttributeDescriptor)) { |
|
884 |
this.setEditable(false); |
|
885 |
} |
|
886 | 887 |
|
887 | 888 |
this.pickerDefaultValue.set(descriptor.getDefaultValue()); |
888 | 889 |
this.txtFieldName.setText(descriptor.getName()); |
... | ... | |
901 | 902 |
this.chkIsAutomatic.setSelected(descriptor.isAutomatic()); |
902 | 903 |
this.chkIsPrimaryKey.setSelected(descriptor.isPrimaryKey()); |
903 | 904 |
|
905 |
this.pickerVirtualField.setEnabled(true); |
|
904 | 906 |
FeatureAttributeEmulator attrEmulator = descriptor.getFeatureAttributeEmulator(); |
905 | 907 |
if (attrEmulator instanceof FeatureAttributeEmulatorExpression) { |
906 | 908 |
Expression expression = ((FeatureAttributeEmulatorExpression) attrEmulator).getExpression(); |
907 |
this.chkVirtualField.setEnabled(editable);
|
|
909 |
this.chkVirtualField.setEnabled(this.mode==MODE_EDIT_ALL);
|
|
908 | 910 |
this.chkVirtualField.setSelected(true); |
909 |
this.pickerVirtualField.setEnabled(editable); |
|
910 | 911 |
this.pickerVirtualField.set(expression); |
911 | 912 |
} else if (descriptor.isComputed()) { |
912 | 913 |
this.chkVirtualField.setEnabled(false); |
913 | 914 |
this.chkVirtualField.setSelected(true); |
914 |
this.pickerVirtualField.setEnabled(false); |
|
915 | 915 |
this.pickerVirtualField.set(null); |
916 | 916 |
} else { |
917 |
this.chkVirtualField.setEnabled(editable);
|
|
917 |
this.chkVirtualField.setEnabled(this.mode==MODE_EDIT_ALL);
|
|
918 | 918 |
this.chkVirtualField.setSelected(false); |
919 |
this.pickerVirtualField.setEnabled(false); |
|
920 | 919 |
this.pickerVirtualField.set(null); |
921 | 920 |
} |
922 | 921 |
|
... | ... | |
947 | 946 |
this.tagsController.set(descriptor.getTags()); |
948 | 947 |
|
949 | 948 |
this.foreingKeyController.put(descriptor.getForeingKey()); |
949 |
|
|
950 |
if (!(descriptor instanceof EditableFeatureAttributeDescriptor)) { |
|
951 |
this.setMode(FeatureTypePanel.MODE_SHOW_ONLY); |
|
952 |
} |
|
953 |
this.updateEditableStates(); |
|
950 | 954 |
} |
951 | 955 |
|
952 | 956 |
private void doFieldTypeChanged() { |
... | ... | |
976 | 980 |
|
977 | 981 |
switch (fieldType) { |
978 | 982 |
case DataTypes.GEOMETRY: |
979 |
this.cboGeometryType.setEnabled(editable);
|
|
980 |
this.cboGeometrySubtype.setEnabled(editable);
|
|
981 |
this.pickerCRS.setEnabled(editable);
|
|
983 |
this.cboGeometryType.setEnabled(this.mode==MODE_EDIT_ALL);
|
|
984 |
this.cboGeometrySubtype.setEnabled(this.mode==MODE_EDIT_ALL);
|
|
985 |
this.pickerCRS.setEnabled(this.mode==MODE_EDIT_ALL);
|
|
982 | 986 |
this.cboDateFormat.setEnabled(false); |
983 | 987 |
this.pickerIntervalStart.setEnabled(false); |
984 | 988 |
this.pickerIntervalEnd.setEditable(false); |
... | ... | |
997 | 1001 |
this.cboGeometryType.setEnabled(false); |
998 | 1002 |
this.cboGeometrySubtype.setEnabled(false); |
999 | 1003 |
this.pickerCRS.setEnabled(false); |
1000 |
this.cboDateFormat.setEnabled(editable);
|
|
1001 |
this.pickerIntervalStart.setEnabled(editable);
|
|
1002 |
this.pickerIntervalEnd.setEnabled(editable);
|
|
1004 |
this.cboDateFormat.setEnabled(this.mode==MODE_EDIT_ALL || this.mode==MODE_EDIT_ONLY_METADATA);
|
|
1005 |
this.pickerIntervalStart.setEnabled(this.mode==MODE_EDIT_ALL || this.mode==MODE_EDIT_ONLY_METADATA);
|
|
1006 |
this.pickerIntervalEnd.setEnabled(this.mode==MODE_EDIT_ALL || this.mode==MODE_EDIT_ONLY_METADATA);
|
|
1003 | 1007 |
this.tabAditionalFields.setEnabledAt(1, false); |
1004 | 1008 |
this.tabAditionalFields.setEnabledAt(2, true); |
1005 | 1009 |
this.pickerSize.set(null); |
... | ... | |
1024 | 1028 |
this.tabAditionalFields.setEnabledAt(2, false); |
1025 | 1029 |
|
1026 | 1030 |
this.pickerPrecision.set(null); |
1027 |
this.pickerSize.setEnabled(true);
|
|
1031 |
this.pickerSize.setEnabled(this.mode==MODE_EDIT_ALL);
|
|
1028 | 1032 |
this.pickerPrecision.setEnabled(false); |
1029 | 1033 |
break; |
1030 | 1034 |
case DataTypes.FLOAT: |
... | ... | |
1038 | 1042 |
this.tabAditionalFields.setEnabledAt(1, false); |
1039 | 1043 |
this.tabAditionalFields.setEnabledAt(2, false); |
1040 | 1044 |
|
1041 |
this.pickerSize.setEnabled(true);
|
|
1042 |
this.pickerPrecision.setEnabled(true);
|
|
1045 |
this.pickerSize.setEnabled(this.mode==MODE_EDIT_ALL);
|
|
1046 |
this.pickerPrecision.setEnabled(this.mode==MODE_EDIT_ALL);
|
|
1043 | 1047 |
break; |
1044 | 1048 |
default: |
1045 | 1049 |
this.cboGeometryType.setEnabled(false); |
... | ... | |
1060 | 1064 |
} |
1061 | 1065 |
|
1062 | 1066 |
} |
1067 |
boolean isVirtualField() { |
|
1068 |
return this.chkVirtualField.isSelected(); |
|
1069 |
} |
|
1063 | 1070 |
|
1064 | 1071 |
@Override |
1065 |
public void setEditable(boolean editable) { |
|
1066 |
this.editable = editable; |
|
1067 |
this.pickerDefaultValue.setEditable(editable); |
|
1068 |
this.txtFieldName.setEditable(editable); |
|
1069 |
// this.pickerFieldName.setEditable(editable); |
|
1070 |
this.pickerIntervalEnd.setEditable(editable); |
|
1071 |
this.pickerIntervalStart.setEditable(editable); |
|
1072 |
this.pickerPrecision.setEditable(editable); |
|
1073 |
this.pickerSize.setEditable(editable); |
|
1074 |
this.cboDataProfile.setEnabled(editable); |
|
1072 |
public int getMode() { |
|
1073 |
return this.mode; |
|
1074 |
} |
|
1075 |
|
|
1076 |
@Override |
|
1077 |
public void setMode(int mode) { |
|
1078 |
this.mode = mode; |
|
1079 |
updateEditableStates(); |
|
1080 |
} |
|
1081 |
|
|
1082 |
private void updateEditableStates() { |
|
1083 |
switch(this.mode) { |
|
1084 |
case MODE_EDIT_ALL: |
|
1085 |
this.pickerDefaultValue.setEditable(true); |
|
1086 |
this.txtFieldName.setEditable(true); |
|
1087 |
this.pickerIntervalEnd.setEditable(true); |
|
1088 |
this.pickerIntervalStart.setEditable(true); |
|
1089 |
this.pickerPrecision.setEditable(true); |
|
1090 |
this.pickerSize.setEditable(true); |
|
1091 |
this.cboDataProfile.setEnabled(true); |
|
1075 | 1092 |
|
1076 |
this.chkAllowNulls.setEnabled(editable); |
|
1077 |
this.chkIsAutomatic.setEnabled(editable); |
|
1078 |
this.chkIsPrimaryKey.setEnabled(editable); |
|
1093 |
this.chkAllowNulls.setEnabled(true); |
|
1094 |
this.chkIsAutomatic.setEnabled(true); |
|
1095 |
if( this.isVirtualField() ) { |
|
1096 |
this.chkIsPrimaryKey.setEnabled(false); |
|
1097 |
} else { |
|
1098 |
this.chkIsPrimaryKey.setEnabled(true); |
|
1099 |
} |
|
1079 | 1100 |
|
1080 |
this.chkVirtualField.setEnabled(editable);
|
|
1081 |
this.pickerVirtualField.setEditable(editable);
|
|
1101 |
this.chkVirtualField.setEnabled(true);
|
|
1102 |
this.pickerVirtualField.setEditable(true);
|
|
1082 | 1103 |
|
1083 |
this.cboDateFormat.setEnabled(editable);
|
|
1084 |
this.cboFieldType.setEnabled(editable);
|
|
1085 |
this.cboGeometryType.setEnabled(editable);
|
|
1086 |
this.cboGeometrySubtype.setEnabled(editable);
|
|
1087 |
this.pickerCRS.setEditable(editable);
|
|
1104 |
this.cboDateFormat.setEnabled(true);
|
|
1105 |
this.cboFieldType.setEnabled(true);
|
|
1106 |
this.cboGeometryType.setEnabled(true);
|
|
1107 |
this.cboGeometrySubtype.setEnabled(true);
|
|
1108 |
this.pickerCRS.setEditable(true);
|
|
1088 | 1109 |
|
1089 |
this.cboGroup.setEnabled(editable); |
|
1090 |
this.pickerOrder.setEditable(editable); |
|
1091 |
this.chkHidden.setEnabled(editable); |
|
1092 |
this.txtLabel.setEditable(editable); |
|
1093 |
this.txtDescription.setEditable(editable); |
|
1094 |
this.txtMinValue.setEditable(false); |
|
1095 |
this.txtMaxValue.setEditable(false); |
|
1096 |
this.availableValuesController.setEditable(editable); |
|
1097 |
this.tagsController.setEditable(editable); |
|
1098 |
this.foreingKeyController.setEditable(editable); |
|
1110 |
this.cboGroup.setEnabled(true); |
|
1111 |
this.pickerOrder.setEditable(true); |
|
1112 |
this.chkHidden.setEnabled(true); |
|
1113 |
this.txtLabel.setEditable(true); |
|
1114 |
this.txtDescription.setEditable(true); |
|
1115 |
this.txtMinValue.setEditable(false); |
|
1116 |
this.txtMaxValue.setEditable(false); |
|
1117 |
this.availableValuesController.setEditable(true); |
|
1118 |
this.tagsController.setEditable(true); |
|
1119 |
this.foreingKeyController.setEditable(true); |
|
1120 |
break; |
|
1121 |
case MODE_EDIT_ONLY_METADATA: |
|
1122 |
if( this.chkVirtualField.isSelected() ) { |
|
1123 |
this.txtFieldName.setEditable(true); |
|
1124 |
this.pickerPrecision.setEditable(true); |
|
1125 |
this.pickerSize.setEditable(true); |
|
1126 |
this.pickerVirtualField.setEditable(true); |
|
1127 |
this.cboFieldType.setEnabled(true); |
|
1128 |
this.cboGeometryType.setEnabled(true); |
|
1129 |
this.cboGeometrySubtype.setEnabled(true); |
|
1130 |
this.pickerCRS.setEditable(true); |
|
1131 |
} else { |
|
1132 |
this.txtFieldName.setEditable(false); |
|
1133 |
this.pickerPrecision.setEditable(false); |
|
1134 |
this.pickerSize.setEditable(false); |
|
1135 |
this.pickerVirtualField.setEditable(false); |
|
1136 |
this.cboFieldType.setEnabled(false); |
|
1137 |
this.cboGeometryType.setEnabled(false); |
|
1138 |
this.cboGeometrySubtype.setEnabled(false); |
|
1139 |
this.pickerCRS.setEditable(false); |
|
1140 |
} |
|
1141 |
|
|
1142 |
this.pickerDefaultValue.setEditable(true); |
|
1143 |
this.pickerIntervalEnd.setEditable(true); |
|
1144 |
this.pickerIntervalStart.setEditable(true); |
|
1145 |
|
|
1146 |
this.cboDataProfile.setEnabled(true); |
|
1147 |
|
|
1148 |
this.chkAllowNulls.setEnabled(false); |
|
1149 |
this.chkIsAutomatic.setEnabled(false); |
|
1150 |
if( this.isVirtualField() ) { |
|
1151 |
this.chkIsPrimaryKey.setEnabled(false); |
|
1152 |
} else { |
|
1153 |
this.chkIsPrimaryKey.setEnabled(true); |
|
1154 |
} |
|
1155 |
|
|
1156 |
this.chkVirtualField.setEnabled(false); |
|
1157 |
|
|
1158 |
this.cboDateFormat.setEnabled(true); |
|
1159 |
|
|
1160 |
this.cboGroup.setEnabled(true); |
|
1161 |
this.pickerOrder.setEditable(true); |
|
1162 |
this.chkHidden.setEnabled(true); |
|
1163 |
this.txtLabel.setEditable(true); |
|
1164 |
this.txtDescription.setEditable(true); |
|
1165 |
this.txtMinValue.setEditable(false); |
|
1166 |
this.txtMaxValue.setEditable(false); |
|
1167 |
this.availableValuesController.setEditable(true); |
|
1168 |
this.tagsController.setEditable(true); |
|
1169 |
this.foreingKeyController.setEditable(true); |
|
1170 |
break; |
|
1171 |
case MODE_SHOW_ONLY: |
|
1172 |
this.pickerDefaultValue.setEditable(false); |
|
1173 |
this.txtFieldName.setEditable(false); |
|
1174 |
this.pickerIntervalEnd.setEditable(false); |
|
1175 |
this.pickerIntervalStart.setEditable(false); |
|
1176 |
this.pickerPrecision.setEditable(false); |
|
1177 |
this.pickerSize.setEditable(false); |
|
1178 |
this.cboDataProfile.setEnabled(false); |
|
1179 |
|
|
1180 |
this.chkAllowNulls.setEnabled(false); |
|
1181 |
this.chkIsAutomatic.setEnabled(false); |
|
1182 |
this.chkIsPrimaryKey.setEnabled(false); |
|
1183 |
|
|
1184 |
this.chkVirtualField.setEnabled(false); |
|
1185 |
this.pickerVirtualField.setEditable(false); |
|
1186 |
|
|
1187 |
this.cboDateFormat.setEnabled(false); |
|
1188 |
this.cboFieldType.setEnabled(false); |
|
1189 |
this.cboGeometryType.setEnabled(false); |
|
1190 |
this.cboGeometrySubtype.setEnabled(false); |
|
1191 |
this.pickerCRS.setEditable(false); |
|
1192 |
|
|
1193 |
this.cboGroup.setEnabled(false); |
|
1194 |
this.pickerOrder.setEditable(false); |
|
1195 |
this.chkHidden.setEnabled(false); |
|
1196 |
this.txtLabel.setEditable(false); |
|
1197 |
this.txtDescription.setEditable(false); |
|
1198 |
this.txtMinValue.setEditable(false); |
|
1199 |
this.txtMaxValue.setEditable(false); |
|
1200 |
this.availableValuesController.setEditable(false); |
|
1201 |
this.tagsController.setEditable(false); |
|
1202 |
this.foreingKeyController.setEditable(false); |
|
1203 |
break; |
|
1204 |
} |
|
1099 | 1205 |
} |
1100 | 1206 |
|
1101 | 1207 |
private int getMaxSizeOfType(int dataType) { |
Also available in: Unified diff