Revision 45634

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.jts/src/main/java/org/gvsig/fmap/geom/jts/DefaultGeometryManager.java
30 30
import java.util.Iterator;
31 31
import java.util.List;
32 32
import java.util.Map;
33
import org.apache.commons.codec.binary.Hex;
34
import org.apache.commons.lang3.StringUtils;
33 35
import org.cresques.cts.IProjection;
34

  
35
import org.slf4j.Logger;
36
import org.slf4j.LoggerFactory;
37

  
38 36
import org.gvsig.fmap.geom.Geometry;
39 37
import org.gvsig.fmap.geom.Geometry.SUBTYPES;
40 38
import org.gvsig.fmap.geom.Geometry.TYPES;
......
79 77
import org.gvsig.tools.service.Service;
80 78
import org.gvsig.tools.service.ServiceException;
81 79
import org.gvsig.tools.service.spi.ServiceFactory;
82
import org.apache.commons.codec.binary.Hex;
83
import org.apache.commons.lang3.StringUtils;
80
import org.slf4j.Logger;
81
import org.slf4j.LoggerFactory;
84 82

  
85 83
/**
86 84
 * Default implementation for the {@link GeometryManager}. When the
......
94 92
public class DefaultGeometryManager implements GeometryManager {
95 93

  
96 94
    private static final Logger LOGGER = LoggerFactory.getLogger(GeometryManager.class);
95
    
96
    /**
97
     * Offset for GeometryType -1 value (UNKNOWN)
98
     */
99
    private final int GEOMETRY_TYPE_OFFSET = 1;
100
    
97 101
    private double flatness = 0.8;
98 102

  
99 103
    private final Map spatialIndexFactories = new HashMap();
......
126 130
     * registered.
127 131
     */
128 132
    private GeometryType[][] geometryTypes;
129

  
130
    // Initially create a matrix of 26 x 6, which are the current default
133
    
134
    // Initially create a matrix of 27 x 6, which are the current default
131 135
    // types and subtypes. If another type or subtype is registered, the
132 136
    // matrix will grow as needed
133
    private static final int DEFAULT_TYPES_SIZE = 26;
137
    private static final int DEFAULT_TYPES_SIZE = 27; // [-1, 25]
134 138
    private static final int DEFAULT_SUBTYPES_SIZE = 6;
135 139

  
136 140
    public DefaultGeometryManager() throws GeometryException {
......
313 317
            throw new IllegalArgumentException(geomClass.getName() + " must implement the Geometry interface");
314 318
        }
315 319

  
320
        int offsettedType = type + GEOMETRY_TYPE_OFFSET;
316 321
        // Check if it is registered
317 322
        GeometryType geomType = null;
318
        if (type >= geometryTypes.length || subType >= geometryTypes[0].length
319
            || (geomType = geometryTypes[type][subType]) == null) {
320
            geomType = new DefaultGeometryType(geomClass, name, type, subType, superTypes, superSubTypes);
323
        if (offsettedType >= geometryTypes.length || subType >= geometryTypes[0].length
324
            || (geomType = geometryTypes[offsettedType][subType]) == null) {
325
            geomType = new DefaultGeometryType(geomClass, name, type, subType, superTypes, superSubTypes); //Attention!
321 326
            registerGeometryType(geomType);
322 327
        }
323 328

  
......
328 333

  
329 334
    @Override
330 335
    public void registerGeometryType(GeometryType geometryType) {
331
        if (geometryType.getType() >= geometryTypes.length || geometryType.getSubType() >= geometryTypes[0].length) {
336
        int offsettedType = geometryType.getType() + GEOMETRY_TYPE_OFFSET;
337
        if (offsettedType >= geometryTypes.length || geometryType.getSubType() >= geometryTypes[0].length) {
332 338

  
333 339
            // Recreate the geometry type matrix if the types
334 340
            // or subtypes don't fit
335 341
            int newTypesSize =
336
                geometryType.getType() < geometryTypes.length ? geometryTypes.length : geometryType.getType() + 1;
342
                offsettedType < geometryTypes.length ? geometryTypes.length : offsettedType + 1;
337 343
            int newSubTypesSize =
338 344
                geometryType.getSubType() < geometryTypes[0].length ? geometryTypes[0].length : geometryType
339 345
                    .getSubType() + 1;
......
345 351
            geometryTypes = newMatrix;
346 352
        }
347 353

  
348
        geometryTypes[geometryType.getType()][geometryType.getSubType()] = geometryType;
354
        geometryTypes[offsettedType][geometryType.getSubType()] = geometryType;
349 355
        geometryTypeName.put(geometryType.getName(), geometryType);
350 356
    }
351 357

  
......
357 363
    @Override
358 364
    public GeometryType getGeometryType(int type, int subType) throws GeometryTypeNotSupportedException,
359 365
        GeometryTypeNotValidException {
360
        if (type >= geometryTypes.length || subType >= geometryTypes[0].length) {
366

  
367
        int offsettedType = type + GEOMETRY_TYPE_OFFSET;
368
        
369
        if (offsettedType >= geometryTypes.length || subType >= geometryTypes[0].length) {
361 370
            throw new GeometryTypeNotValidException(type, subType);
362 371
        }
363
        GeometryType gType = geometryTypes[type][subType];
372
        GeometryType gType = geometryTypes[offsettedType][subType];
364 373
        if (gType == null) {
365 374
            throw new GeometryTypeNotSupportedException(type, subType);
366 375
        }
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.jts/src/main/java/org/gvsig/fmap/geom/jts/DefaultGeometryLibrary.java
150 150
        // Register the geometries in 2D
151 151
        geometryManager.registerGeometryType(DefaultNullGeometry.class, "Null", TYPES.NULL, SUBTYPES.GEOM2D);
152 152

  
153
        geometryManager.registerGeometryType(Geometry2D.class, "Geometry2D", TYPES.UNKNOWN, SUBTYPES.UNKNOWN);
154
        
155
        geometryManager.registerGeometryType(Geometry2D.class, "Geometry2D", TYPES.UNKNOWN, SUBTYPES.GEOM2D);
156
        geometryManager.registerGeometryType(Geometry3D.class, "Geometry3D", TYPES.UNKNOWN, SUBTYPES.GEOM3D);
157
        geometryManager.registerGeometryType(Geometry2DM.class, "Geometry2DM", TYPES.UNKNOWN, SUBTYPES.GEOM2DM);
158
        geometryManager.registerGeometryType(Geometry3DM.class, "Geometry3DM", TYPES.UNKNOWN, SUBTYPES.GEOM3DM);
159

  
153 160
        geometryManager.registerGeometryType(Geometry2D.class, "Geometry2D", TYPES.GEOMETRY, SUBTYPES.GEOM2D);
154 161
        geometryManager.registerGeometryType(Geometry3D.class, "Geometry3D", TYPES.GEOMETRY, SUBTYPES.GEOM3D);
155 162
        geometryManager.registerGeometryType(Geometry2DM.class, "Geometry2DM", TYPES.GEOMETRY, SUBTYPES.GEOM2DM);
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.api/src/main/java/org/gvsig/fmap/geom/Geometry.java
157 157
        /**
158 158
         * NO DATA geometry.
159 159
         */
160
        @Deprecated
160 161
        public final static int NULL = 16;
161 162

  
162 163
        public final static int COMPLEX = 17;
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/dataStoreParameters/DataStoreDynObjectParametersPanel.java
33 33
    @Override
34 34
    public JComponent asJComponent() {
35 35
        JComponent x = this.form.asJComponent();
36
        x.setPreferredSize(new Dimension(500,250));
36
        Dimension preferredSize = x.getPreferredSize();
37
        if(preferredSize.width>700){
38
            preferredSize.width = 700;
39
        } else if(preferredSize.width<500) {
40
            preferredSize.width = 500;
41
        }
42
        if(preferredSize.height>400){
43
            preferredSize.height = 400;
44
        } else if(preferredSize.height<250) {
45
            preferredSize.height = 250;
46
        }
47
        x.setPreferredSize(preferredSize);
37 48
        return x;
38 49
    }
39 50

  
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/ProjectionPickerControllerImpl.java
70 70
        );
71 71
        if (crsSelectPanel.isOkPressed()) {
72 72
            this.set(crsSelectPanel.getProjection());
73
            this.fireChangeEvent();
73 74
        }
74 75
    }
75 76
    
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/fmap/dal/serverexplorer/filesystem/swing/FilesystemExplorerWizardPanel.java
146 146
        String layerName;
147 147

  
148 148
        for (DataStoreParameters params : this.getParameters()) {
149
            IProjection proj = this.getMapCtrl().getProjection();
149
            fixCRS(params);
150 150

  
151
            // Buscamos por el parametro de la proyeccion
152
            // que sean obligatorios y est?n a null
153
            // y le ponemos la proyeccion de la vista
154
            DynField[] fields = params.getDynClass().getDynFields();
155
            int crsfields = 0;
156
            DynField crsfield = null;
157
            for (DynField field : fields) {
158
                if (field.getType() == DataTypes.CRS ) {
159
                    crsfields++;
160
                    crsfield = field;
161
                    if( field.isMandatory() ) {
162
                        if (params.getDynValue(field.getName()) == null) {
163
                            params.setDynValue(field.getName(), proj);
164
                        }
165
                    }
166
                }
167
            }
168
            if( crsfields == 1 && crsfield!=null ) {
169
                // Si solo hay un parametro CRS y esta a null, aunque no sea
170
                // obligatorio le asigna el CRS de la vista.
171
                if (params.getDynValue(crsfield.getName()) == null) {
172
                    params.setDynValue(crsfield.getName(), proj);
173
                }
174
            }
175

  
176 151
            layerName = ((FilesystemStoreParameters) params).getFile().getName();
177 152

  
178 153
            this.doAddLayer(layerName, params);
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/gui/WizardPanel.java
23 23
package org.gvsig.app.gui;
24 24

  
25 25
import java.awt.Window;
26

  
27 26
import javax.swing.JOptionPane;
28 27
import javax.swing.JPanel;
29
import javax.swing.SwingUtilities;
30

  
31 28
import org.cresques.cts.IProjection;
32

  
33 29
import org.gvsig.app.ApplicationLocator;
34 30
import org.gvsig.app.ApplicationManager;
35 31
import org.gvsig.app.gui.wizards.WizardListener;
......
40 36
import org.gvsig.fmap.dal.DataManager;
41 37
import org.gvsig.fmap.dal.DataStore;
42 38
import org.gvsig.fmap.dal.DataStoreParameters;
39
import org.gvsig.fmap.dal.DataTypes;
43 40
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
44 41
import org.gvsig.fmap.mapcontext.MapContext;
45 42
import org.gvsig.fmap.mapcontext.MapContextLocator;
46 43
import org.gvsig.fmap.mapcontext.MapContextManager;
47 44
import org.gvsig.fmap.mapcontext.layers.FLayer;
48
import org.gvsig.fmap.mapcontext.layers.operations.SingleLayer;
49
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
50 45
import org.gvsig.fmap.mapcontrol.MapControl;
51 46
import org.gvsig.fmap.mapcontrol.MapControlCreationException;
52 47
import org.gvsig.fmap.mapcontrol.MapControlLocator;
53 48
import org.gvsig.tools.ToolsLocator;
54 49
import org.gvsig.tools.dispose.DisposeUtils;
50
import org.gvsig.tools.dynobject.DynField;
55 51
import org.gvsig.tools.i18n.I18nManager;
56 52
import org.gvsig.tools.identitymanagement.UnauthorizedException;
57 53
import org.gvsig.tools.swing.api.ToolsSwingLocator;
58 54
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
59

  
60 55
import org.slf4j.Logger;
61 56
import org.slf4j.LoggerFactory;
62 57

  
......
327 322
        return true;
328 323
    }
329 324

  
325
    protected void fixCRS(DataStoreParameters params) {
326
        IProjection proj = this.getMapCtrl().getProjection();
327

  
328
        // Buscamos por el parametro de la proyeccion
329
        // que sean obligatorios y est?n a null
330
        // y le ponemos la proyeccion de la vista
331
        DynField[] fields = params.getDynClass().getDynFields();
332
        int crsfields = 0;
333
        DynField crsfield = null;
334
        for (DynField field : fields) {
335
            if (field.getType() == DataTypes.CRS) {
336
                crsfields++;
337
                crsfield = field;
338
                if (field.isMandatory()) {
339
                    if (params.getDynValue(field.getName()) == null) {
340
                        params.setDynValue(field.getName(), proj);
341
                    }
342
                }
343
            }
344
        }
345
        if (crsfields == 1 && crsfield != null) {
346
            // Si solo hay un parametro CRS y esta a null, aunque no sea
347
            // obligatorio le asigna el CRS de la vista.
348
            if (params.getDynValue(crsfield.getName()) == null) {
349
                params.setDynValue(crsfield.getName(), proj);
350
            }
351
        }
352
    }
353

  
330 354
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.geodb.app/org.gvsig.geodb.app.mainplugin/src/main/java/org/gvsig/geodb/AbstractWizardDB.java
2 2

  
3 3
import java.awt.BorderLayout;
4 4
import java.awt.Dimension;
5
import java.awt.event.ActionEvent;
6
import java.awt.event.ItemEvent;
7 5
import java.util.ArrayList;
8 6
import java.util.Collection;
9 7
import java.util.HashMap;
10 8
import java.util.List;
11 9
import java.util.Map;
12
import javax.swing.ComboBoxModel;
13
import javax.swing.DefaultComboBoxModel;
14 10
import javax.swing.DefaultListModel;
15
import javax.swing.DefaultListSelectionModel;
16
import javax.swing.ListModel;
17 11
import javax.swing.ListSelectionModel;
18 12
import javax.swing.event.ChangeEvent;
19 13
import javax.swing.event.ListSelectionEvent;
20
import org.apache.commons.lang3.StringUtils;
21
import org.cresques.cts.IProjection;
22 14
import org.gvsig.app.gui.WizardPanel;
23
import org.gvsig.expressionevaluator.Expression;
24
import org.gvsig.expressionevaluator.ExpressionUtils;
25 15
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingLocator;
26 16
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
27
import org.gvsig.expressionevaluator.swing.ExpressionPickerController;
28 17
import org.gvsig.fmap.dal.DALLocator;
29 18
import org.gvsig.fmap.dal.DataManager;
30
import org.gvsig.fmap.dal.DataServerExplorer;
31 19
import static org.gvsig.fmap.dal.DataServerExplorer.MODE_ALL;
32 20
import org.gvsig.fmap.dal.DataStoreParameters;
33
import org.gvsig.fmap.dal.DataTypes;
34
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
35
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
36
import org.gvsig.fmap.dal.feature.FeatureStore;
37
import org.gvsig.fmap.dal.feature.FeatureType;
38 21
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
39 22
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
40 23
import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer;
......
42 25
import static org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer.SHOW_VIEWS;
43 26
import org.gvsig.fmap.dal.swing.DALSwingLocator;
44 27
import org.gvsig.fmap.dal.swing.DataSwingManager;
45
import org.gvsig.fmap.dal.swing.dataStoreParameters.DataStoreParametersPanel;
46
import org.gvsig.fmap.dal.swing.dataStoreParameters.DataStoreParametersPanelManager;
47 28
import org.gvsig.tools.ToolsLocator;
48 29
import org.gvsig.tools.dispose.DisposeUtils;
49 30
import org.gvsig.tools.i18n.I18nManager;
......
52 33
import org.gvsig.tools.swing.api.ToolsSwingLocator;
53 34
import org.gvsig.tools.swing.api.ToolsSwingManager;
54 35
import org.gvsig.tools.swing.api.pickercontroller.PickerController;
55
import org.gvsig.tools.swing.api.windowmanager.Dialog;
56
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
57
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
58
import org.gvsig.tools.util.LabeledValue;
59
import org.gvsig.tools.util.LabeledValueImpl;
60 36
import org.slf4j.Logger;
61 37
import org.slf4j.LoggerFactory;
62 38

  
......
70 46
    protected static final Logger LOGGER = LoggerFactory.getLogger(AbstractWizardDB.class);
71 47

  
72 48

  
73
    private AbstractWizardDBView view;
49
    protected AbstractWizardDBView view;
74 50
    private PickerController<JDBCServerExplorerParameters> pickerConnection;
75
    private PickerController<IProjection> pickerProjection;
76
    private ExpressionPickerController pickerFilter;
77
    private JListWithCheckbox lwcTables;
78
    private JListWithCheckbox lwcColumns;
79
    private Map<String, TableInfo> tablesInfo = null;
80
    private FilteredListController tablesFilterController;
51
    protected JListWithCheckbox lwcTables;
52
    protected Map<String, TableInfo> tablesInfo = null;
53
    protected FilteredListController tablesFilterController;
54
    protected TableInfoController tableInfoController;
81 55
    
56
    
82 57
    public AbstractWizardDB() {
83 58
        initComponents();
84 59
    }
......
90 65

  
91 66
        this.view = new AbstractWizardDBView();
92 67

  
93
        toolsSwingManager.translate(this.view.btnDeselectAllColumns);
94
        toolsSwingManager.translate(this.view.btnSelectAllColumns);
95 68
        toolsSwingManager.translate(this.view.lblColumns);
96 69
        toolsSwingManager.translate(this.view.lblConnection);
97 70
        toolsSwingManager.translate(this.view.lblFilter);
......
100 73
        toolsSwingManager.translate(this.view.lblName);
101 74
        toolsSwingManager.translate(this.view.lblProjection);
102 75
        toolsSwingManager.translate(this.view.lblTable);
103
        toolsSwingManager.translate(this.view.btnAdvancedProperties);
104 76

  
105 77
        toolsSwingManager.addClearButton(this.view.txtName);
106 78
        toolsSwingManager.setDefaultPopupMenu(this.view.txtName);
......
108 80
        this.lwcTables = toolsSwingManager.createJListWithCheckbox(
109 81
                this.view.lstTables
110 82
        );
111
        this.lwcColumns = toolsSwingManager.createJListWithCheckbox(
112
                this.view.lstColumns
113
        );
114 83

  
115
        this.pickerConnection = dataSwingManager.createJDBCConnectionPickerController(
116
                this.view.cboConnection,
117
                this.view.btnConnection
118
        );
119
        this.pickerConnection.addChangeListener((ChangeEvent e) -> {
120
            doUpdateTables();
121
            setEditableTables(true);
122
        });
123
        this.pickerProjection = dataSwingManager.createProjectionPickerController(
124
                this.view.txtProjection,
125
                this.view.btnProjection
126
        );
127
        this.pickerFilter = expressionSwingManager.createExpressionPickerController(
128
                this.view.txtFilter,
129
                this.view.btnFilter,
130
                this.view.btnFilterBookmarks,
131
                this.view.btnFilterHistory
132
        );
133 84
        this.lwcTables.addListSelectionListener((ListSelectionEvent e) -> {
134 85
            doChangeTableSelected();
135 86
        });
87
        
88
        this.initializePickerConnection();
89

  
136 90
        this.lwcTables.addChecksListener((ListSelectionEvent e) -> {
137
            doChangeTableSelected();
91
            doChangeTableChecked(e.getFirstIndex(), e.getLastIndex());
138 92
        });
139
        this.view.cboGeometryField.addItemListener((ItemEvent e) -> {
140
            if (e.getStateChange() == ItemEvent.SELECTED) {
141
                doChangeGeometryField();
142
            }
143
        });
144
        this.view.btnDeselectAllColumns.addActionListener((ActionEvent e) -> {
145
            doDeselectAllColumns();
146
        });
147
        this.view.btnSelectAllColumns.addActionListener((ActionEvent e) -> {
148
            doSelectAllColumns();
149
        });
150
        this.view.btnAdvancedProperties.addActionListener((ActionEvent e) -> {
151
            doShowAdvancedProperties();
152
        });
93

  
153 94
        this.tablesFilterController = toolsSwingManager.createFilteredListController(
154 95
                this.view.lstTables, 
155 96
                this.view.txtTablesFilter, 
156 97
                this.view.btnTablesFilter
157 98
        );
99
        
100
        this.tableInfoController = new TableInfoController(
101
                this.view.btnDeselectAllColumns, 
102
                this.view.btnSelectAllColumns, 
103
                this.view.lstColumns, 
104
                this.view.txtName, 
105
                this.view.cboIdField, 
106
                this.view.cboGeometryField, 
107
                this.view.txtProjection, 
108
                this.view.btnProjection, 
109
                this.view.txtFilter, 
110
                this.view.btnFilter, 
111
                this.view.btnFilterBookmarks, 
112
                this.view.btnFilterHistory, 
113
                this.view.btnAdvancedProperties, 
114
                this.view.lblReadOnlyNotification
115
        );
158 116

  
159 117
        this.clearTables();
160 118
        this.setEditableTables(false);
......
163 121
        this.add(this.view, BorderLayout.CENTER);
164 122
        this.setPreferredSize(new Dimension(500, 400));
165 123
    }
124
    
125
    private void initializePickerConnection() {
126
        DataSwingManager dataSwingManager = DALSwingLocator.getDataSwingManager();
127
        this.pickerConnection = dataSwingManager.createJDBCConnectionPickerController(
128
                this.view.cboConnection,
129
                this.view.btnConnection
130
        );
131
        this.pickerConnection.addChangeListener((ChangeEvent e) -> {
132
            doUpdateTables();
133
            setEditableTables(true);
134
        });
135
    }
166 136

  
167 137
    protected abstract boolean requireGeometry();
168 138

  
......
174 144
        return this.tablesInfo.values();
175 145
    }
176 146
    
177
    private void doDeselectAllColumns() {
178
        TableInfo info = this.getCurrentTableInfo();
179
        if (info == null) {
180
            return;
181
        }
182
        info.getColumnChecksModel().clearSelection();
183
    }
184

  
185
    private void doSelectAllColumns() {
186
        TableInfo info = this.getCurrentTableInfo();
187
        if (info == null) {
188
            return;
189
        }
190
        info.getColumnChecksModel().setSelectionInterval(0, info.getAttributeDescriptors().size());
191
    }
192

  
193
    private void doShowAdvancedProperties() {
194
        final TableInfo info = this.getCurrentTableInfo();
195
        if (info == null) {
196
            return;
197
        }
198
        this.fetch(info);
199
        I18nManager i18n = ToolsLocator.getI18nManager();
200
        WindowManager_v2 winmgr = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
201
        DataStoreParametersPanelManager paramsPanelManager = DALSwingLocator.getDataStoreParametersPanelManager();
202
        
203
        final DataStoreParametersPanel panel = paramsPanelManager.createDataStoreParametersPanel(info.getParameters());
204
        final Dialog dialog = winmgr.createDialog(
205
                panel.asJComponent(),
206
                i18n.getTranslation("_Connection_parameters"),
207
                null, 
208
                WindowManager_v2.BUTTONS_OK_CANCEL
209
        );
210
        dialog.addActionListener((ActionEvent e) -> {
211
            if( dialog.getAction()==WindowManager_v2.BUTTON_OK ) {
212
                JDBCStoreParameters parameters = info.getParameters();
213
                panel.fetchParameters(parameters);
214
                info.fetch(parameters);
215
                put(info);
216
            }
217
        });
218
        dialog.show(WindowManager.MODE.DIALOG);
219
    }
220

  
221 147
    private void clearTables() {
222 148
        this.lwcTables.setModel(new DefaultListModel());
223 149
        this.lwcTables.getCheckedModel().clearSelection();
......
225 151
    }
226 152

  
227 153
    private void clearTableConfig() {
228
        this.lwcColumns.setModel(new DefaultListModel());
229
        this.lwcColumns.getCheckedModel().clearSelection();
230
        this.view.txtName.setText("");
231
        this.view.cboGeometryField.setModel(new DefaultComboBoxModel());
232
        this.view.cboIdField.setModel(new DefaultComboBoxModel());
233
        this.pickerProjection.set(null);
234
        this.pickerFilter.set(null);
154
        this.tableInfoController.put(null);
235 155
    }
236 156

  
237 157
    private void setEditableTables(boolean enable) {
238 158
        this.view.lstTables.setEnabled(enable);
239
        this.setEditableTableConfig(enable);
240
        this.view.btnDeselectAllColumns.setEnabled(enable);
241
        this.view.btnSelectAllColumns.setEnabled(enable);
159
        this.tableInfoController.setEditable(enable);
242 160
    }
243 161

  
244
    private void setEditableTableConfig(boolean enable) {
245
        this.view.lstColumns.setEnabled(enable);
246
        this.view.txtName.setEditable(enable);
247
        this.view.cboGeometryField.setEnabled(enable);
248
        this.view.cboIdField.setEnabled(enable);
249
        this.pickerProjection.setEditable(enable);
250
        this.pickerFilter.setEditable(enable);
251
    }
252

  
253
    private TableInfo getCurrentTableInfo() {
254
        TableInfo xx = (TableInfo) this.view.lstTables.getSelectedValue();
255
        return xx;
256
    }
257

  
258
    private void doChangeGeometryField() {
259
        TableInfo info = this.getCurrentTableInfo();
260
        if (info == null) {
261
            return;
262
        }
263
        String attrName = (String) this.view.cboGeometryField.getSelectedItem();
264
        if (StringUtils.isBlank(attrName)) {
265
            return;
266
        }
267
        FeatureAttributeDescriptor attr = info.getAttributeDescriptor(attrName);
268
        IProjection srs = attr.getSRS();
269
        if (srs == null) {
270
            return;
271
        }
272
        this.pickerProjection.set(srs);
273
    }
274

  
275 162
    private void doUpdateTables() {
276 163
        JDBCServerExplorerParameters connection = this.pickerConnection.get();
277 164
        if (connection == null) {
......
287 174
            );
288 175
            List<TableInfo> parameters = new ArrayList<>();
289 176
            for (DataStoreParameters params : explorer.list(MODE_ALL, SHOW_TABLES)) {
290
                parameters.add(new TableInfo((JDBCStoreParameters) params, requireGeometry(), false));
177
                JDBCStoreParameters jdbcParams = (JDBCStoreParameters) params;
178
                parameters.add(new TableInfo(jdbcParams.getTable(), jdbcParams, requireGeometry(), false));
291 179
            }
292 180
            for (DataStoreParameters params : explorer.list(MODE_ALL, SHOW_VIEWS)) {
293
                parameters.add(new TableInfo((JDBCStoreParameters) params, requireGeometry(), true));
181
                JDBCStoreParameters jdbcParams = (JDBCStoreParameters) params;
182
                parameters.add(new TableInfo(jdbcParams.getTable(), jdbcParams, requireGeometry(), true));
294 183
            }
295 184
            parameters.sort((TableInfo o1, TableInfo o2) -> 
296 185
                    o1.getLabel().compareTo(o2.getLabel())
......
313 202
        TableInfo tableInfo = (TableInfo) this.lwcTables.getSelectedValue();
314 203
        if (tableInfo == null) {
315 204
            this.clearTableConfig();
316
            this.setEditableTableConfig(false);
205
            this.tableInfoController.setEditable(false);
317 206
            return;
318 207
        }
319 208
        this.updateTableInfoFromUI();
320
        this.put(tableInfo);
209
        this.tableInfoController.put(tableInfo);
210
    }
211

  
212
    private void doChangeTableChecked(int firstIndex, int lastIndex) {
213
        ListSelectionModel checkedModel = this.lwcTables.getCheckedModel();
214
        for (int i = firstIndex; i <= lastIndex; i++) {
215
            TableInfo tableInfo = (TableInfo) this.lwcTables.getModel().getElementAt(i);
216
            tableInfo.setSelected(checkedModel.isSelectedIndex(i));
217
        }
321 218
        this.checkFinishable();
322 219
    }
323 220
    
324 221
    private void updateTableInfoFromUI() {
325
         String previousTableName = this.view.txtName.getText();
326
         if (this.tablesInfo!=null && !this.tablesInfo.isEmpty()) {
327
         TableInfo previousInfo = this.tablesInfo.get(previousTableName);
328
            if (previousInfo != null) {
329
               this.fetch(previousInfo);
330
           }
222
        String previousId = this.tableInfoController.getId();
223
        if (previousId == null) {
224
            return;
331 225
        }
332
    }
333 226

  
334
    private void put(TableInfo tableInfo) {
335
        this.lwcColumns.setModel(tableInfo.getColumnsListModel());
336
        this.lwcColumns.setCheckedModel(tableInfo.getColumnChecksModel());
337

  
338
        this.view.cboGeometryField.setModel(tableInfo.getGeomFieldComboModel());
339
        this.view.cboGeometryField.setSelectedIndex(tableInfo.getGeomFieldSelected());
340

  
341
        this.view.cboIdField.setModel(tableInfo.getIdFieldComboModel());
342
        this.view.cboIdField.setSelectedIndex(tableInfo.getIdFieldSelected());
343

  
344
        this.pickerProjection.set(tableInfo.getProjection());
345
        this.pickerFilter.set(tableInfo.getFilter());
346
        this.view.txtName.setText(tableInfo.getDocumentName());
347
        
348
        I18nManager i18n = ToolsLocator.getI18nManager();
349
        boolean readOnly = tableInfo.isReadOnly();
350
        String readOnlyMessage = readOnly?" <b>"+i18n.getTranslation("_Read_only")+"</b>":"";
351
        if(tableInfo.isView()){
352
            this.view.lblReadOnlyNotification.setText("<html>"+i18n.getTranslation("_View")+readOnlyMessage+"</html>");
353
        } else {
354
            this.view.lblReadOnlyNotification.setText("<html>"+i18n.getTranslation("_Table")+readOnlyMessage+"</html>");
227
        if (this.tablesInfo != null && !this.tablesInfo.isEmpty()) {
228
            TableInfo previousInfo = this.tablesInfo.get(previousId);
229
            if (previousInfo != null) {
230
                this.tableInfoController.fetch(previousInfo);
231
            }
355 232
        }
356 233
    }
357 234

  
358
    private void fetch(TableInfo tableInfo) {
359
        tableInfo.setIdFieldSelected(this.view.cboIdField.getSelectedIndex());
360
        tableInfo.setGeomFieldSelected(this.view.cboGeometryField.getSelectedIndex());
361
        tableInfo.setFilter(this.pickerFilter.get());
362
        tableInfo.setProjection(this.pickerProjection.get());
363
        tableInfo.setDocumentName(this.view.txtName.getText());
364
        int index = this.lwcTables.getSelectedIndex();
365
        tableInfo.setSelected(this.lwcTables.getCheckedModel().isSelectedIndex(index));
366
    }
367 235

  
368 236
    @Override
369 237
    public void initWizard() {
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.geodb.app/org.gvsig.geodb.app.mainplugin/src/main/java/org/gvsig/geodb/vectorialdb/wizard/WizardVectorialDB.java
41 41
import org.gvsig.fmap.dal.DALLocator;
42 42
import org.gvsig.fmap.dal.DataManager;
43 43
import org.gvsig.fmap.dal.DataStoreParameters;
44
import org.gvsig.fmap.dal.DataTypes;
44 45
import org.gvsig.fmap.dal.exception.DataException;
45 46
import org.gvsig.fmap.dal.feature.FeatureStore;
46 47
import org.gvsig.fmap.dal.serverexplorer.db.DBServerExplorer;
......
53 54
import org.gvsig.fmap.mapcontext.layers.FLayer;
54 55
import org.gvsig.fmap.mapcontext.layers.FLayers;
55 56
import org.gvsig.fmap.mapcontrol.MapControl;
57
import org.gvsig.tools.dynobject.DynField;
56 58

  
57 59

  
58 60

  
......
180 182
                table = tables[i];
181 183
                UserTableSettingsPanel userTableSettingsPanel = table.getUserTableSettingsPanel();
182 184
                parameter = getParameterForTable(table);
185
                fixCRS(parameter);
183 186
                if (i == 0) {
184 187
                    String dbname = parameter.getDBName();
185 188
                    if( StringUtils.isEmpty(dbname) ) {
......
364 367

  
365 368
	}
366 369

  
367

  
368 370
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.geodb.app/org.gvsig.geodb.app.mainplugin/src/main/java/org/gvsig/geodb/WizardDBVectorial.java
78 78
                if (!tableInfo.isSelected()) {
79 79
                    continue;
80 80
                }
81
                DBStoreParameters parameter = tableInfo.getParameters();
81
                DBStoreParameters params = tableInfo.getParameters();
82
                fixCRS(params);
82 83
                if (groupName == null) {
83
                    String dbname = parameter.getDBName();
84
                    String dbname = params.getDBName();
84 85
                    if (StringUtils.isEmpty(dbname)) {
85 86
                        dbname = "Group";
86 87
                    }
87
                    String host = parameter.getHost();
88
                    String host = params.getHost();
88 89
                    if (StringUtils.isEmpty(host)) {
89 90
                        groupName = dbname;
90 91
                    } else {
......
94 95
                FeatureStore store;
95 96
                try {
96 97
                    store = (FeatureStore) man.openStore(
97
                            parameter.getDataStoreName(),
98
                            parameter);
98
                            params.getDataStoreName(),
99
                            params);
99 100
                } catch (Exception e) {
100 101
                    LOGGER.warn("While opening DB store.", e);
101 102
                    return null;
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.geodb.app/org.gvsig.geodb.app.mainplugin/src/main/java/org/gvsig/geodb/TableInfo.java
7 7

  
8 8
import java.util.ArrayList;
9 9
import java.util.List;
10
import java.util.Map;
10 11
import javax.swing.ComboBoxModel;
11 12
import javax.swing.DefaultComboBoxModel;
12 13
import javax.swing.DefaultListModel;
......
28 29
import org.gvsig.tools.dispose.DisposeUtils;
29 30
import org.gvsig.tools.util.LabeledValue;
30 31
import org.gvsig.tools.util.LabeledValueImpl;
32
import org.gvsig.tools.util.PropertiesSupport;
33
import org.gvsig.tools.util.PropertiesSupportHelper;
31 34

  
32 35
/**
33 36
 *
34 37
 * @author fdiaz
35 38
 */
36
class TableInfo extends LabeledValueImpl<JDBCStoreParameters> {
39
public class TableInfo extends LabeledValueImpl<JDBCStoreParameters> implements PropertiesSupport {
37 40
    
38 41
    private final ListSelectionModel columnChecksModel;
39 42
    private FeatureType featureType;
......
50 53
    private boolean isView;
51 54
    private Boolean readOnly;
52 55
    private boolean requireGeometry;
56
    
57
    private PropertiesSupportHelper propertiesHelper;
58
    private final String id;
53 59

  
54
    public TableInfo(JDBCStoreParameters parameters, boolean requireGeometry, boolean isView) {
60
    public TableInfo(String id, JDBCStoreParameters parameters, boolean requireGeometry, boolean isView) {
55 61
        super(getLabelForTable(parameters), parameters);
62
        this.id = id;
56 63
        this.columnChecksModel = new DefaultListSelectionModel();
57 64
        this.selected = false;
58 65
        this.documentName = parameters.getTable();
59 66
        this.projection = parameters.getCRS();
60 67
        this.isView = isView;
61 68
        this.readOnly = null;
62
        this.requireGeometry = this.requireGeometry;
69
        this.requireGeometry = requireGeometry;
70
        this.propertiesHelper = new PropertiesSupportHelper();
63 71
    }
64 72

  
65 73
    private static String getLabelForTable(JDBCStoreParameters parameters) {
......
75 83
        this.projection = parameters.getCRS();
76 84
    }
77 85

  
86
    public String getId() {
87
        return id;
88
    }
89
    
78 90
    public String getDocumentName() {
79 91
        return this.documentName;
80 92
    }
......
136 148
        if (this.idFieldSelected < 0) {
137 149
            return null;
138 150
        }
139
        return this.idFieldComboModel.getElementAt(this.idFieldSelected);
151
        return this.getIdFieldComboModel().getElementAt(this.idFieldSelected);
140 152
    }
141 153

  
142 154
    public String getGeomField() {
......
189 201
        return this.geomFieldSelected;
190 202
    }
191 203

  
192
    public ComboBoxModel getIdFieldComboModel() {
204
    public ComboBoxModel<String> getIdFieldComboModel() {
193 205
        if (this.idFieldComboModel == null) {
194 206
            StringBuilder pkName = new StringBuilder();
195 207
            for (FeatureAttributeDescriptor attr : this.getAttributeDescriptors()) {
......
276 288
        return requireGeometry;
277 289
    }
278 290

  
279
    boolean hasValidValues() {
291
    public boolean hasValidValues() {
280 292
        if (this.getGeomFieldSelected() < 0 && requireGeometry()) {
281 293
            return false;
282 294
        }
......
312 324
            DisposeUtils.disposeQuietly(store);
313 325
        }
314 326
    }
327

  
328
    @Override
329
    public Object getProperty(String name) {
330
        return this.propertiesHelper.getProperty(name);
331
    }
332

  
333
    @Override
334
    public void setProperty(String name, Object value) {
335
        this.propertiesHelper.setProperty(name, value);
336
    }
337

  
338
    @Override
339
    public Map<String, Object> getProperties() {
340
        return this.propertiesHelper.getProperties();
341
    }
315 342
    
316 343
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.geodb.app/org.gvsig.geodb.app.mainplugin/src/main/java/org/gvsig/geodb/TableInfoController.java
5 5
 */
6 6
package org.gvsig.geodb;
7 7

  
8
import java.awt.Cursor;
8 9
import java.awt.event.ActionEvent;
9 10
import java.awt.event.ItemEvent;
11
import javax.swing.DefaultComboBoxModel;
12
import javax.swing.DefaultListModel;
13
import javax.swing.DefaultListSelectionModel;
10 14
import javax.swing.JButton;
11 15
import javax.swing.JComboBox;
12 16
import javax.swing.JLabel;
13 17
import javax.swing.JList;
14 18
import javax.swing.JTextField;
19
import javax.swing.event.ChangeEvent;
20
import javax.swing.event.ChangeListener;
15 21
import org.apache.commons.lang3.StringUtils;
16 22
import org.cresques.cts.IProjection;
17 23
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingLocator;
18 24
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
19 25
import org.gvsig.expressionevaluator.swing.ExpressionPickerController;
20 26
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
27
import org.gvsig.fmap.dal.feature.FeatureType;
21 28
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
22 29
import org.gvsig.fmap.dal.swing.DALSwingLocator;
23 30
import org.gvsig.fmap.dal.swing.DataSwingManager;
24 31
import org.gvsig.fmap.dal.swing.ProjectionPickerController;
25 32
import org.gvsig.fmap.dal.swing.dataStoreParameters.DataStoreParametersPanel;
26 33
import org.gvsig.fmap.dal.swing.dataStoreParameters.DataStoreParametersPanelManager;
34
import org.gvsig.fmap.geom.Geometry;
27 35
import org.gvsig.tools.ToolsLocator;
28 36
import org.gvsig.tools.i18n.I18nManager;
37
import org.gvsig.tools.locator.LocatorException;
29 38
import org.gvsig.tools.swing.api.JListWithCheckbox;
30 39
import org.gvsig.tools.swing.api.ToolsSwingLocator;
31 40
import org.gvsig.tools.swing.api.ToolsSwingManager;
......
119 128
                this.btnFilterBookmarks,
120 129
                this.btnFilterHistory
121 130
        );
131
        this.pickerProjection.addChangeListener(new ChangeListener() {
132
            @Override
133
            public void stateChanged(ChangeEvent e) {
134
                doChangeProjection();
135
            }
136
        });
137
        
138
        this.cboIdField.addItemListener((ItemEvent e) -> {
139
            if (e.getStateChange() == ItemEvent.SELECTED) {
140
                doChangeIdField();
141
            }
142
        });
122 143
        this.cboGeometryField.addItemListener((ItemEvent e) -> {
123 144
            if (e.getStateChange() == ItemEvent.SELECTED) {
124 145
                doChangeGeometryField();
146
                updateLabel();
125 147
            }
126 148
        });
127 149
        this.btnDeselectAllColumns.addActionListener((ActionEvent e) -> {
......
133 155
        this.btnAdvancedProperties.addActionListener((ActionEvent e) -> {
134 156
            doShowAdvancedProperties();
135 157
        });
158
        
159
        this.btnSelectAllColumns.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
160
        this.btnDeselectAllColumns.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
161
        this.btnProjection.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
162
        this.btnFilter.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
163
        this.btnFilterBookmarks.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
164
        this.btnFilterHistory.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
165
        this.btnAdvancedProperties.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
166

  
136 167
    }
168
    
169
    private void doChangeIdField() {
170
        final TableInfo info = this.getCurrentTableInfo();
171
        if (info == null) {
172
            return;
173
        }
174
        info.setIdFieldSelected(this.cboIdField.getSelectedIndex());
175
        updateLabel();
176
    }
137 177

  
178
    private void doChangeProjection() {
179
        final TableInfo info = this.getCurrentTableInfo();
180
        if (info == null) {
181
            return;
182
        }
183
        info.setProjection(this.pickerProjection.get());
184
        updateLabel();
185
    }
186
    
138 187
    private void doChangeGeometryField() {
139 188
        TableInfo info = this.getCurrentTableInfo();
140 189
        if (info == null) {
141 190
            return;
142 191
        }
143 192
        String attrName = (String) this.cboGeometryField.getSelectedItem();
193
        
194
        info.setGeomFieldSelected(this.cboGeometryField.getSelectedIndex());
195
        
144 196
        if (StringUtils.isBlank(attrName)) {
197
            this.pickerProjection.set(null);
145 198
            return;
146 199
        }
200

  
147 201
        FeatureAttributeDescriptor attr = info.getAttributeDescriptor(attrName);
148 202
        IProjection srs = attr.getSRS();
149 203
        if (srs == null) {
150 204
            return;
151 205
        }
152 206
        this.pickerProjection.set(srs);
207
        tableInfo.setProjection(this.pickerProjection.get());
153 208
    }
154 209

  
155 210
    private void doDeselectAllColumns() {
......
199 254
    public void put(TableInfo tableInfo) {
200 255
        this.tableInfo = tableInfo;
201 256

  
257
        if(tableInfo == null) {
258
            this.lwcColumns.setModel(new DefaultListModel());
259
            this.lwcColumns.setCheckedModel(new DefaultListSelectionModel());
260
            this.txtName.setText("");
261
            this.cboGeometryField.setModel(new DefaultComboBoxModel());
262
            this.cboIdField.setModel(new DefaultComboBoxModel());
263
            this.pickerProjection.set(null);
264
            this.pickerFilter.set(null);
265
            if(this.lblReadOnlyNotification != null){
266
                this.lblReadOnlyNotification.setText("");
267
            }
268
            return;
269
        }
270

  
202 271
        this.lwcColumns.setModel(tableInfo.getColumnsListModel());
203 272
        this.lwcColumns.setCheckedModel(tableInfo.getColumnChecksModel());
273
        
274
        this.txtName.setText(tableInfo.getDocumentName());
204 275

  
205 276
        this.cboGeometryField.setModel(tableInfo.getGeomFieldComboModel());
206 277
        this.cboGeometryField.setSelectedIndex(tableInfo.getGeomFieldSelected());
......
210 281

  
211 282
        this.pickerProjection.set(tableInfo.getProjection());
212 283
        this.pickerFilter.set(tableInfo.getFilter());
213
        this.txtName.setText(tableInfo.getDocumentName());
284
        
285
        updateLabel();
286
    }
214 287

  
215
        I18nManager i18n = ToolsLocator.getI18nManager();
216
        boolean readOnly = tableInfo.isReadOnly();
217
        String readOnlyMessage = readOnly ? " <b>" + i18n.getTranslation("_Read_only") + "</b>" : "";
218
        if (tableInfo.isView()) {
219
            this.lblReadOnlyNotification.setText("<html>" + i18n.getTranslation("_View") + readOnlyMessage + "</html>");
220
        } else {
221
            this.lblReadOnlyNotification.setText("<html>" + i18n.getTranslation("_Table") + readOnlyMessage + "</html>");
288
    private void updateLabel() throws LocatorException {
289
        if (this.lblReadOnlyNotification != null) {
290
            StringBuilder builder = new StringBuilder();
291
            builder.append("<html>");
292
            I18nManager i18n = ToolsLocator.getI18nManager();
293
            builder.append("<font color='#00008B'>");
294
            if (tableInfo.isView()) {
295
                builder.append(i18n.getTranslation("_View"));
296
            } else {
297
                builder.append(i18n.getTranslation("_Table"));
298
            }
299
            boolean readOnly = tableInfo.isReadOnly();
300
            if (readOnly) {
301
                builder.append(" - <b>");
302
                builder.append(i18n.getTranslation("_Read_only"));
303
                builder.append("</b>");
304
            }
305
            if (StringUtils.isBlank(this.tableInfo.getFieldId())) {
306
                builder.append(" - ");
307
                builder.append(i18n.getTranslation("_PrimaryKey_field_recommended"));
308
            }
309
            if (this.tableInfo.requireGeometry()) {
310
                FeatureType featType = this.tableInfo.getFeatureType();
311
                if (StringUtils.isBlank(this.tableInfo.getGeomField())) {
312
                    builder.append(" - <b>");
313
                    builder.append(i18n.getTranslation("_Geometry_field_required"));
314
                    builder.append("</b>");
315
                }
316
                JDBCStoreParameters params = this.tableInfo.getParameters();
317
                if(params.getGeometryType() == Geometry.TYPES.NULL || params.getGeometryType() == Geometry.TYPES.UNKNOWN){
318
                    builder.append(" - <b>");
319
                    builder.append(i18n.getTranslation("_GeometryType_required"));
320
                    builder.append("</b>");
321
                }
322
                if(params.getGeometrySubtype() == Geometry.SUBTYPES.UNKNOWN){
323
                    builder.append(" - <b>");
324
                    builder.append(i18n.getTranslation("_GeometrySubType_required"));
325
                    builder.append("</b>");
326
                }
327
                if(this.tableInfo.getProjection()==null){
328
                    builder.append(" - ");
329
                    builder.append(i18n.getTranslation("_Projection_recommended"));
330
                }
331
            } else { //Not require geometry
332
                FeatureType featType = this.tableInfo.getFeatureType();
333
                if (StringUtils.isBlank(this.tableInfo.getGeomField())) {
334
                    builder.append(" - ");
335
                    builder.append(i18n.getTranslation("_Geometry_field_recommended"));
336
                }
337
                JDBCStoreParameters params = this.tableInfo.getParameters();
338
                if(params.getGeometryType() == Geometry.TYPES.NULL || params.getGeometryType() == Geometry.TYPES.UNKNOWN){
339
                    builder.append(" - ");
340
                    builder.append(i18n.getTranslation("_GeometryType_recommended"));
341
                }
342
                if(params.getGeometrySubtype() == Geometry.SUBTYPES.UNKNOWN){
343
                    builder.append(" - ");
344
                    builder.append(i18n.getTranslation("_GeometrySubType_recommended"));
345
                }
346
                if(StringUtils.isNotBlank(this.tableInfo.getGeomField()) && this.tableInfo.getProjection()==null){
347
                    builder.append(" - ");
348
                    builder.append(i18n.getTranslation("_Projection_recommended"));
349
                }
350
                
351
            }
352
            builder.append("</font>");
353
            builder.append("</html>");
354
            this.lblReadOnlyNotification.setText(builder.toString());
222 355
        }
223 356
    }
224 357

  
......
233 366
    private TableInfo getCurrentTableInfo() {
234 367
        return this.tableInfo;
235 368
    }
369
    
370
    public void setEditable(boolean enable) {
371
        this.lstColumns.setEnabled(enable);
372
        this.txtName.setEditable(enable);
373
        this.cboGeometryField.setEnabled(enable);
374
        this.cboIdField.setEnabled(enable);
375
        this.pickerProjection.setEditable(enable);
376
        this.pickerFilter.setEditable(enable);
377
        this.btnDeselectAllColumns.setEnabled(enable);
378
        this.btnSelectAllColumns.setEnabled(enable);
379
        this.btnAdvancedProperties.setEnabled(enable);
380
    }
236 381

  
382
    public void setEnabled(boolean enable) {
383
        this.lstColumns.setEnabled(enable);
384
        this.txtName.setEnabled(enable);
385
        this.cboGeometryField.setEnabled(enable);
386
        this.cboIdField.setEnabled(enable);
387
        this.pickerProjection.setEnabled(enable);
388
        this.pickerFilter.setEnabled(enable);
389
        this.btnDeselectAllColumns.setEnabled(enable);
390
        this.btnSelectAllColumns.setEnabled(enable);
391
        this.btnAdvancedProperties.setEnabled(enable);
392
    }
393
    
394
    public String getId(){
395
        if(tableInfo == null) {
396
            return null;
397
        }
398
        return this.getCurrentTableInfo().getId();
399
    }
400
    
401
    public void clear() {
402
        this.put(null);
403
    }
404

  
405

  
237 406
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.geodb.app/org.gvsig.geodb.app.mainplugin/src/main/resources-plugin/i18n/text.properties
50 50
_Visibility_scales_remembered_for_the_following_layers=Escalas de visibilidad recordadas para las siguientes capas
51 51
_Read_only=Solo lectura
52 52
_View=Vista
53
_Geometry_field_required=Es necesario especificar el campo para la geometr\u00eda
54
_Geometry_field_recommended=Es recomendable especificar el campo para la geometr\u00eda
55
_GeometryType_required=Es necesario especificar el tipo de la geometr\u00eda
56
_GeometryType_recommended=Es recomendable especificar el tipo de la geometr\u00eda
57
_GeometrySubType_required=Es necesario especificar el subtipo de la geometr\u00eda
58
_GeometrySubType_recommended=Es recomendable especificar el subtipo de la geometr\u00eda
59
_Projection_required=Es necesario especificar la proyecci\u00f3n
60
_Projection_recommended=Es recomendable especificar la proyecci\u00f3n
61
_PrimaryKey_field_required=Es necesario especificar la clave primaria
62
_PrimaryKey_field_recommended=Es recomendable especificar la clave primaria
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.geodb.app/org.gvsig.geodb.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties
50 50
_Visibility_scales_remembered_for_the_following_layers=Visibility scales remembered for the following layers
51 51
_Read_only=Read-only
52 52
_View=View
53

  
54

  
55

  
56

  
57

  
58

  
59

  
60

  
61

  
62

  
63

  
64

  
65

  
66

  
67

  
68

  
69

  
70

  
71

  
72

  
73

  
53
_Geometry_field_required=Geometry field required
54
_Geometry_field_recommended=Geometry field recommended
55
_GeometryType_required=GeometryType required
56
_GeometryType_recommended=GeometryType recommended
57
_GeometrySubType_required=GeometrySubType required
58
_GeometrySubType_recommended=GeometrySubType recommended
59
_Projection_required=Projection required
60
_Projection_recommended=Projection recommended
61
_PrimaryKey_field_required=PrimaryKey field required
62
_PrimaryKey_field_recommended=PrimaryKey field recommended

Also available in: Unified diff