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

View differences:

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