Revision 46485

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/featureset/DefaultFeatureSet.java
57 57

  
58 58
public class DefaultFeatureSet extends AbstractFeatureSet implements
59 59
    FeatureSet, Observer {
60

  
60
    
61 61
    protected static final int NO_CHECKED = -1;
62 62
    protected static final int DEFAULT = 0;
63 63
    protected static final int FILTERED = 1;
......
389 389
  
390 390
    protected void checkSourceStoreModified() {
391 391
        if (sourceStoreModified) {
392
            LOG.debug("ConcurrentDataModification in featureSet "+this.hashCode()+" of store '"+(store == null ? "": store.getName())+"'");
392 393
            ConcurrentDataModificationException ex = new ConcurrentDataModificationException(
393 394
                    store == null ? "": store.getName()
394 395
            );
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/DefaultFeatureAttributesSelectionPanel.java
10 10
import javax.swing.DefaultListCellRenderer;
11 11
import javax.swing.ImageIcon;
12 12
import javax.swing.JComponent;
13
import javax.swing.ListCellRenderer;
13 14
import javax.swing.event.DocumentEvent;
14 15
import javax.swing.event.DocumentListener;
15 16
import javax.swing.event.ListSelectionEvent;
16 17
import org.apache.commons.io.FilenameUtils;
18
import org.apache.commons.lang.StringUtils;
17 19
import org.gvsig.expressionevaluator.Expression;
18 20
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
19 21
import org.gvsig.expressionevaluator.swing.ExpressionPickerController;
22
import org.gvsig.fmap.dal.DALLocator;
23
import org.gvsig.fmap.dal.DataTypes;
20 24
import org.gvsig.fmap.dal.exception.DataException;
21 25
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
22 26
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
23 27
import org.gvsig.fmap.dal.feature.FeatureStore;
24 28
import org.gvsig.fmap.dal.feature.FeatureType;
25 29
import org.gvsig.fmap.dal.swing.DALSwingLocator;
30
import org.gvsig.fmap.dal.swing.DataSwingManager;
26 31
import org.gvsig.tools.swing.api.ActionListenerSupport;
27 32
import org.gvsig.tools.swing.api.FilteredListController;
28 33
import org.gvsig.tools.swing.api.FilteredListModel;
......
32 37
import org.gvsig.fmap.dal.swing.featuretype.FeatureAttributesSelectionPanel;
33 38
import org.gvsig.tools.locator.ReferenceNotRegisteredException;
34 39
import org.gvsig.tools.util.LabeledValue;
40
import org.gvsig.tools.util.LabeledValueImpl;
35 41

  
36 42
/**
37 43
 *
......
42 48
        implements FeatureAttributesSelectionPanel 
43 49
    {
44 50

  
51
    private static final String ATTR_IS_EXPRESSION = "DefaultFeatureAttributesSelectionPanel_isExpression";
52

  
45 53
    private FeatureType featureType;
46 54
    private final ActionListenerSupport actionListenerSupport;
47 55
    private FilteredListController availableFieldsController;
48
    private final List<String> selecteds;
56
    private final List<FeatureAttributeDescriptor> selecteds;
49 57
    private ExpressionPickerController expressionPicker = null;
50 58
    private boolean allowCalculatedAttributes = false;
51 59
    private List<EditableFeatureAttributeDescriptor> extraColumns;
......
58 66
    
59 67
    private void initComponents() {
60 68
        ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
61
//        ListCellRenderer renderer = DALSwingLocator.getDataSwingManager().createDefaultFeatureAttributeListCellRenderer();
62
        DefaultListCellRenderer renderer = new DefaultListCellRenderer();
69
        ListCellRenderer renderer = DALSwingLocator.getDataSwingManager().createDefaultFeatureAttributeListCellRenderer();
70
//        DefaultListCellRenderer renderer = new DefaultListCellRenderer();
63 71
        this.lstAvailableColumns.setCellRenderer(renderer);
64 72
        this.lstSelectedColumns.setCellRenderer(renderer);
65 73
        
......
118 126

  
119 127
    @Override
120 128
    public List<String> getSelectedNames() {
121
      return Collections.unmodifiableList(selecteds);
129
        List<String> names = new ArrayList<>();
130
        for (FeatureAttributeDescriptor selected : selecteds) {
131
                names.add(selected.getName());
132
        }
133
      return names;
122 134
    }
123 135

  
124 136
    @Override
125 137
    public void setSelectedNames(List<String> names) {
126
      this.selecteds.clear();
127
      if( names!=null ) {
128
        for (String name : names) {
129
          if(!this.selecteds.contains(name)) {
130
            this.selecteds.add(name);
131
          }
138
        this.selecteds.clear();
139
        if (names != null) {
140
            for (String name : names) {
141
                FeatureAttributeDescriptor attr = this.getAttributeDescriptor(name);
142
                if(attr == null){
143
                    attr = createAttributeFromExpression(name);
144
                } 
145
                if (selectedContains(attr)) {
146
                    continue;
147
                }
148
                this.selecteds.add(attr);
149
            }
132 150
        }
133
      }
134
      updateControls();
151
        updateControls();
135 152
    }
153
    
154
    private boolean selectedContains(FeatureAttributeDescriptor attr) {
155
        for (FeatureAttributeDescriptor selected : selecteds) {
156
            if(StringUtils.equalsIgnoreCase(selected.getName(), attr.getName())){
157
                return true;
158
            }
159
        }
160
        return false;
161
    }
136 162

  
137 163
    private void doSelectAvailableColumn() {
138 164
        if( this.lstAvailableColumns.getSelectedIndex()>=0 || !this.expressionPicker.isEmpty()) {
......
212 238
    }
213 239

  
214 240
    private void doColumnRemove() {
215
        LabeledValue attr = (LabeledValue) this.lstSelectedColumns.getSelectedValue();
241
        FeatureAttributeDescriptor attr = (FeatureAttributeDescriptor) this.lstSelectedColumns.getSelectedValue();
216 242
        if( attr == null ) {
217 243
            return;
218 244
        }
219
        String label = attr.getLabel();
220
        int n = this.selecteds.indexOf(label);
245
        int n = this.selecteds.indexOf(attr);
221 246
        if( n<0 ) {
222 247
          return;
223 248
        }
224
        
225
        if (!checkIfAttributeInFeatureType(label)) {
249
        if(attr.getTags().getBoolean(ATTR_IS_EXPRESSION,false)){
226 250
            Expression toExp = ExpressionEvaluatorLocator.getManager().createExpression();
227
            toExp.setPhrase(label);
251
            toExp.setPhrase(attr.getLabel());
228 252
            this.expressionPicker.set(toExp);
229
        } 
230
 
253
        }
231 254
        this.selecteds.remove(n);
232 255
        this.updateControls();
233 256
    }
......
235 258
    private void doColumnAdd() {
236 259
        
237 260
        if (this.expressionPicker.isEmpty()) {
238
            LabeledValue attr = (LabeledValue) this.lstAvailableColumns.getSelectedValue();
261
            FeatureAttributeDescriptor attr = (FeatureAttributeDescriptor) this.lstAvailableColumns.getSelectedValue();
239 262
            if( attr == null ) {
240 263
                return;
241 264
            }
......
243 266
            if( n>=0 ) {
244 267
              return;
245 268
            }
246
            this.selecteds.add(attr.getLabel());
269
            this.selecteds.add(attr);
247 270
        } else {
248 271
            if (this.expressionPicker.isValid()) {
249 272
                Expression exp = this.expressionPicker.get();
250 273
                String expressionField = exp.getPhrase();
251
                int n = this.selecteds.indexOf(expressionField);
252
                if (n >= 0) {
253
                    return;
274
                FeatureAttributeDescriptor attr = createAttributeFromExpression(expressionField);
275
                for (FeatureAttributeDescriptor selected : this.selecteds) {
276
                    if(StringUtils.equals(attr.getName(),selected.getName())){
277
                        return;
278
                    }
254 279
                }
255
                this.selecteds.add(expressionField);
280
                this.selecteds.add(attr);
256 281
                this.expressionPicker.set(null);
257 282
            }
258 283
        }
259 284
        this.updateControls();
260 285
    }
286
    
287
    private FeatureAttributeDescriptor createAttributeFromExpression(String expressionField) {
288
        EditableFeatureAttributeDescriptor attr = DALLocator.getDataManager().createFeatureAttributeDescriptor(expressionField, DataTypes.STRING);
289
        attr.getTags().set(ATTR_IS_EXPRESSION, true);
290
        attr.setLabel(expressionField);
291
        return attr;
292
    }
261 293

  
262 294
    @Override
263 295
    public void setStore(FeatureStore store) {
......
337 369
        int indexSelecteds = this.lstSelectedColumns.getSelectedIndex();
338 370
        FilteredListModel modelAvailables = ToolsSwingLocator.getToolsSwingManager().createFilteredListModel();
339 371
        FilteredListModel modelSelecteds = ToolsSwingLocator.getToolsSwingManager().createFilteredListModel();
372
        DataSwingManager dataSwingManager = DALSwingLocator.getDataSwingManager();
340 373
        for (FeatureAttributeDescriptor attr : featureType) {
341
            if( !this.selecteds.contains(attr.getName()) ) {
342
                modelAvailables.addElement(attr.getName()); //label?
374
            if (!selectedContains(attr)) {
375
                modelAvailables.addElement(attr);
343 376
            }
344 377
        }
345 378
        List<EditableFeatureAttributeDescriptor> columns = featureType.getExtraColumns().getColumns();
346 379
        if (columns!=null && !columns.isEmpty()) {
347 380
            for (EditableFeatureAttributeDescriptor extraCol : columns) {
348
                if( !this.selecteds.contains(extraCol.getName()) ) {
349
                    modelAvailables.addElement(extraCol.getName());
381
                if (!selectedContains(extraCol)) {
382
                    modelAvailables.addElement(extraCol);
350 383
                }
351 384
            }
352 385
        }
353 386
        
354 387
        if (this.extraColumns!=null && !this.extraColumns.isEmpty()) {
355 388
            for (FeatureAttributeDescriptor extraCol : this.extraColumns) {
356
                if( !this.selecteds.contains(extraCol.getName()) ) {
357
                    modelAvailables.addElement(extraCol.getName());
389
                if (!selectedContains(extraCol)) {
390
                    modelAvailables.addElement(extraCol);
358 391
                }
359 392
            }
360 393
        }
361 394
        
362 395
        modelAvailables.setFilter(this.txtColumnsFilter.getText());
363 396
        modelAvailables.sort(true);
364
        for (String name : this.selecteds) {
365
            modelSelecteds.addElement(name);
397
        for (FeatureAttributeDescriptor attr : this.selecteds) {
398
            modelSelecteds.addElement(attr);
366 399
        }
367 400
        modelAvailables.sort(true);
368 401
        this.lstAvailableColumns.setModel(modelAvailables);
......
433 466
        this.btnExpression.setVisible(this.allowCalculatedAttributes);
434 467
        this.txtExpression.setVisible(this.allowCalculatedAttributes);
435 468
    }
469
    
470
    private FeatureAttributeDescriptor getAttributeDescriptor(String name) {
471
        if(this.featureType == null){
472
            return null;
473
        }
474
        FeatureAttributeDescriptor attr = this.featureType.getAttributeDescriptorFromAll(name);
475
        if(attr != null){
476
            return attr;
477
        }
478
        if(this.extraColumns == null){
479
            return null;
480
        }
481
        for (EditableFeatureAttributeDescriptor extraColumn : this.extraColumns) {
482
            if(StringUtils.equalsIgnoreCase(extraColumn.getName(), name)){
483
                return extraColumn;
484
            }
485
        }
486
        return null;
487
    }
436 488
}
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/FeatureAttributeTreeModel.java
23 23
import org.gvsig.fmap.dal.feature.FeatureType;
24 24
import org.gvsig.fmap.dal.feature.ForeingKey;
25 25
import org.gvsig.fmap.dal.feature.ForeingKey.ContextForeingKey;
26
import static org.gvsig.fmap.dal.swing.impl.searchpanel.DefaultSearchPanel.getAttributeDescriptorLabel;
27 26
import org.gvsig.tools.ToolsLocator;
28 27
import org.gvsig.tools.dynobject.DynField;
29 28
import org.gvsig.tools.util.LabeledValue;
......
31 30
import org.slf4j.Logger;
32 31
import org.slf4j.LoggerFactory;
33 32
import org.gvsig.expressionevaluator.Code.Callable;
33
import org.gvsig.fmap.dal.swing.DALSwingLocator;
34 34
import org.gvsig.tools.dispose.Disposable;
35 35
import org.gvsig.tools.dispose.DisposeUtils;
36 36

  
......
94 94
          ForeingKey foreingKey = attrdesc.getForeingKey();
95 95
          tableName = foreingKey.getTableName();
96 96
        }
97
        theLabel = getAttributeDescriptorLabel(attrdesc, tableName);
97
        theLabel = DALSwingLocator.getDataSwingManager().getAttributeDescriptorLabel(attrdesc, tableName);
98 98
      }
99 99
      switch (type) {
100 100
        case Search.OrderedAttribute.TYPE_REGURAL:
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/FeatureAttributeListCellRendererImpl.java
6 6
import javax.swing.JList;
7 7
import org.gvsig.fmap.dal.DataManager;
8 8
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
9
import org.gvsig.fmap.dal.swing.DALSwingLocator;
10
import org.gvsig.fmap.dal.swing.DataSwingManager;
9 11
import org.gvsig.fmap.dal.swing.featuretype.FeatureAttributeListCellRenderer;
10 12
import org.gvsig.tools.swing.api.ToolsSwingLocator;
11 13
import org.gvsig.tools.swing.icontheme.IconTheme;
......
21 23
    {
22 24

  
23 25
    private final IconTheme iconTheme;
24
    private int useLabels;
26
    private Integer useLabels;
27
    private final DataSwingManager dalSwingManager;
25 28

  
26 29
    public FeatureAttributeListCellRendererImpl() {
27 30
        this.iconTheme = ToolsSwingLocator.getIconThemeManager().getCurrent();
28
        this.useLabels = DataManager.USE_LABELS_BOTH;
31
        this.useLabels = null;
32
        this.dalSwingManager = DALSwingLocator.getDataSwingManager();
29 33
    }
30 34
    
31 35
    @Override
......
44 48
        String iconName = null;
45 49
        try {
46 50
            if(attrdesc  != null) {
47
                switch (this.useLabels) {
48
                    case DataManager.USE_LABELS_NO:
49
                        theLabel = attrdesc.getName();
50
                        break;
51
                    case DataManager.USE_LABELS_YES:
52
                        if (attrdesc.hasLabel()) {
53
                            theLabel = attrdesc.getLocalizedLabel();
54
                        } else {
51
                if(this.useLabels == null) {
52
                    theLabel = dalSwingManager.getAttributeDescriptorLabel(attrdesc);
53
                } else {
54
                    switch (this.useLabels) {
55
                        case DataManager.USE_LABELS_NO:
55 56
                            theLabel = attrdesc.getName();
56
                        }
57
                        break;
58
                    case DataManager.USE_LABELS_BOTH:
59
                    default:
60
                        if (attrdesc.hasLabel()) {
61
                            theLabel = String.format("%s [%s]", attrdesc.getLocalizedLabel(), attrdesc.getName());
62
                        } else {
63
                            theLabel = attrdesc.getName();
64
                        }
65
                        break;
57
                            break;
58
                        case DataManager.USE_LABELS_YES:
59
                            if (attrdesc.hasLabel()) {
60
                                theLabel = attrdesc.getLocalizedLabel();
61
                            } else {
62
                                theLabel = attrdesc.getName();
63
                            }
64
                            break;
65
                        case DataManager.USE_LABELS_BOTH:
66
                        default:
67
                            if (attrdesc.hasLabel()) {
68
                                theLabel = String.format("%s [%s]", attrdesc.getLocalizedLabel(), attrdesc.getName());
69
                            } else {
70
                                theLabel = attrdesc.getName();
71
                            }
72
                            break;
73
                    }
66 74
                }
67 75
                iconName = attrdesc.getDataType().getIconName();
68 76
            }
......
79 87
    }
80 88

  
81 89
    @Override
82
    public void setUseLabeld(int useLabels) {
90
    public void setUseLabels(Integer useLabels) {
83 91
        this.useLabels = useLabels;
84 92
    }
85 93

  
86 94
    @Override
87
    public int getUseLabels() {
95
    public Integer getUseLabels() {
88 96
        return this.useLabels;
89 97
    }
90 98
    
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/DefaultDataSwingManager.java
58 58
import org.gvsig.featureform.swing.impl.DefaultJFeaturesForm;
59 59
import org.gvsig.fmap.dal.DALLocator;
60 60
import org.gvsig.fmap.dal.DataManager;
61
import static org.gvsig.fmap.dal.DataManager.DAL_USE_LABELS;
62
import static org.gvsig.fmap.dal.DataManager.USE_LABELS_BOTH;
63
import static org.gvsig.fmap.dal.DataManager.USE_LABELS_NO;
64
import static org.gvsig.fmap.dal.DataManager.USE_LABELS_YES;
61 65
import org.gvsig.fmap.dal.DataStoreProviderFactory;
62 66
import org.gvsig.fmap.dal.StoresRepository;
63 67
import org.gvsig.fmap.dal.exception.DataException;
......
124 128
import org.gvsig.fmap.dal.swing.impl.storerepository.StoresRepositoryTreeModel;
125 129
import org.gvsig.fmap.dal.swing.searchPostProcess.SearchPostProcessFactory;
126 130
import org.gvsig.tools.dynform.DynFormDefinition;
131
import org.gvsig.tools.dynobject.Tags;
127 132

  
128 133

  
129 134
/**
......
136 141
    private final Map<String,DALActionFactory> featureStoreSearchActions;
137 142
    private final Map<String,SearchPostProcessFactory> searchPostProcess;
138 143
    private Map<String,SearchConditionPanelFactory> searchConditionPanelFactories;
144
    private Integer useLabels;
139 145
    
140 146
    public DefaultDataSwingManager() {
141 147
        this.featureStoreSearchActions = new LinkedHashMap<>();
......
570 576
        StoresRepositoryTreeModel model = new StoresRepositoryTreeModel(repository);
571 577
        return model;
572 578
    }
579

  
580
    @Override
581
    public String getAttributeDescriptorLabel(FeatureAttributeDescriptor attrdesc) {
582
        return getAttributeDescriptorLabel(attrdesc, null);
583
    }
584
    
585
    @Override
586
    public String getAttributeDescriptorLabel(FeatureAttributeDescriptor attrdesc, String tableName) {
587
        String theLabel;
588
        int theUseLabels;
589
        if (getUseLabels() == null) {
590
            Tags tags = attrdesc.getTags();
591
            if (tags.has(DAL_USE_LABELS)) {
592
                theUseLabels = tags.getInt(DAL_USE_LABELS, USE_LABELS_NO);
593
            } else {
594
                if (attrdesc.getFeatureType() != null) {
595
                    tags = attrdesc.getFeatureType().getTags();
596
                    theUseLabels = tags.getInt(DAL_USE_LABELS, USE_LABELS_NO);
597
                } else {
598
                    theUseLabels = USE_LABELS_NO;
599
                }
600
            }
601
        } else {
602
            theUseLabels = getUseLabels();
603
        }
604
        switch (theUseLabels) {
605
            case USE_LABELS_BOTH:
606
                if (!StringUtils.equals(attrdesc.getLocalizedLabel(), attrdesc.getName())){
607
                    if (StringUtils.isBlank(tableName)) {
608
                        theLabel = String.format("%s [%s]", attrdesc.getLocalizedLabel(), attrdesc.getName());
609
                    } else {
610
                        theLabel = String.format("%s [%s/%s]", attrdesc.getLocalizedLabel(), attrdesc.getName(), tableName);
611
                    }
612
                    break;
613
                }
614
            case USE_LABELS_YES:
615
                if (StringUtils.isBlank(tableName)) {
616
                    theLabel = attrdesc.getLocalizedLabel();
617
                } else {
618
                    theLabel = String.format("%s [%s]", attrdesc.getLocalizedLabel(), tableName);
619
                }
620
                break;
621
            default:
622
            case USE_LABELS_NO:
623
                if (StringUtils.isBlank(tableName)) {
624
                    theLabel = attrdesc.getName();
625
                } else {
626
                    theLabel = String.format("%s [%s]", attrdesc.getName(), tableName);
627
                }
628
                break;
629
        }
630
        return theLabel;
631
    }
632

  
633
    /**
634
     * @return the useLabels
635
     */
636
    @Override
637
    public Integer getUseLabels() {
638
        return useLabels;
639
    }
640

  
641
    /**
642
     * @param useLabels the useLabels to set
643
     */
644
    @Override
645
    public void setUseLabels(Integer useLabels) {
646
        this.useLabels = useLabels;
647
    }
648

  
573 649
}
574 650

  
575 651
        
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/featuretable/SimpleFeaturesTableModelImpl.java
33 33
import org.gvsig.fmap.dal.feature.FeatureStore;
34 34
import org.gvsig.fmap.dal.feature.FeatureType;
35 35
import org.gvsig.fmap.dal.feature.paging.FacadeOfAFeaturePagingHelper;
36
import org.gvsig.fmap.dal.swing.DALSwingLocator;
36 37
import org.gvsig.tools.ToolsLocator;
37 38
import org.gvsig.tools.dataTypes.DataTypeUtils;
38 39
import org.gvsig.tools.dataTypes.DataTypes;
......
267 268
                }
268 269
                TableColumn columnModel = new TableColumn();
269 270
                columnModel.setModelIndex(n);
270
                columnModel.setHeaderValue(i18n.getTranslation(descriptor.getLabel()));
271
                columnModel.setHeaderValue(DALSwingLocator.getDataSwingManager().getAttributeDescriptorLabel(descriptor));
271 272
                TableCellRenderer renderer = renderers.get(columnName);
272 273
                if (renderer == null) {
273 274
                    renderer = new FeatureAttributeCellRenderer(descriptor);
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/searchpanel/DefaultSearchParameters.java
18 18
import org.gvsig.expressionevaluator.Expression;
19 19
import org.gvsig.fmap.dal.exception.DataException;
20 20
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
21
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
22 21
import org.gvsig.fmap.dal.feature.FeatureQuery;
23 22
import org.gvsig.fmap.dal.feature.FeatureQueryOrder;
24 23
import org.gvsig.fmap.dal.feature.FeatureSet;
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/searchpanel/SearchConditionFieldController.java
43 43
import org.gvsig.fmap.dal.feature.FeatureStore;
44 44
import org.gvsig.fmap.dal.feature.FeatureType;
45 45
import org.gvsig.fmap.dal.feature.ForeingKey;
46
import org.gvsig.fmap.dal.swing.DALSwingLocator;
46 47
import org.gvsig.fmap.dal.swing.impl.featuretype.DefaultFeatureAttributeSelectionPanel;
47
import static org.gvsig.fmap.dal.swing.impl.searchpanel.DefaultSearchPanel.getAttributeDescriptorLabel;
48 48
import static org.gvsig.fmap.dal.swing.searchpanel.FeatureStoreSearchPanel.NOT_HANDLE_NULL;
49 49
import static org.gvsig.fmap.dal.swing.searchpanel.FeatureStoreSearchPanel.NULL_AS_FALSE;
50 50
import static org.gvsig.fmap.dal.swing.searchpanel.FeatureStoreSearchPanel.NULL_AS_TRUE;
......
106 106
                boolean showStoreName
107 107
        ) {
108 108
            super(
109
                    getAttributeDescriptorLabel(attrdesc, store.getName()),
109
                    DALSwingLocator.getDataSwingManager().getAttributeDescriptorLabel(attrdesc, store.getName()),
110 110
                    attrdesc.getName()
111 111
            );
112 112
            this.path = path;
......
122 122

  
123 123
        @Override
124 124
        public String getLabel() {
125
            String theLabel = getAttributeDescriptorLabel(attrdesc, showStoreName ? store.getName() : null);
125
            String theLabel = DALSwingLocator.getDataSwingManager().getAttributeDescriptorLabel(attrdesc, showStoreName ? store.getName() : null);
126 126
            switch (this.presentationMode) {
127 127
                case Search.OrderedAttribute.TYPE_REGURAL:
128 128
                    break;
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/searchpanel/DefaultSearchPanel.java
130 130

  
131 131
	private static final Logger LOGGER = LoggerFactory.getLogger(DefaultSearchPanel.class);
132 132

  
133
	static /* friend */ Integer useLabels = null;
134 133
	private BookmarksController bookmarksController;
135 134
	private HistoryController historyController;
136 135
	private FeatureQuery lastQuery;
137 136
	private Feature lastSelectedFeature;
138 137
	private final PropertiesSupportHelper propertiesHelper;
139 138
	private TaskStatusController taskStatusController;
139
        private boolean automaticallySearch;
140 140

  
141 141
	public static class UseLabelsYesAction extends AbstractAction {
142 142

  
......
160 160

  
161 161
		@Override
162 162
		public void actionPerformed(ActionEvent ae) {
163
			DefaultSearchPanel.useLabels = USE_LABELS_YES;
163
                    DALSwingLocator.getDataSwingManager().setUseLabels(USE_LABELS_YES);
164 164
		}
165 165
	}
166 166

  
......
185 185

  
186 186
		@Override
187 187
		public void actionPerformed(ActionEvent ae) {
188
			DefaultSearchPanel.useLabels = USE_LABELS_NO;
188
                    DALSwingLocator.getDataSwingManager().setUseLabels(USE_LABELS_NO);
189 189
		}
190 190
	}
191 191

  
......
211 211

  
212 212
		@Override
213 213
		public void actionPerformed(ActionEvent ae) {
214
			DefaultSearchPanel.useLabels = USE_LABELS_BOTH;
214
                    DALSwingLocator.getDataSwingManager().setUseLabels(USE_LABELS_BOTH);
215 215
		}
216 216
	}
217 217

  
......
508 508
		this.resultPostProcessModel = null;
509 509
		this.propertiesHelper = new PropertiesSupportHelper();
510 510
		this.propertiesHelper.setProperty("SearchPanel", this);
511
                this.automaticallySearch = true;
511 512

  
512 513
		Search search = (Search) ToolsLocator.getComplementsManager().get(
513 514
			Search.COMPLEMENT_MANE, getFeatureType()
......
725 726
					if (b.getCurrentValue() == null) {
726 727
						return;
727 728
					}
728
                                        doSearchFromParameters(b.getCurrentValue());
729
                                        putParametersAndSearch(b.getCurrentValue());
729 730
					break;
730 731
			}
731 732
		});
......
742 743
						return;
743 744
					}
744 745
                                        b.getBookmark().used();
745
                                        doSearchFromParameters(b.getCurrentValue());
746
                                        putParametersAndSearch(b.getCurrentValue());
746 747
					break;
747 748
			}
748 749
		});
......
790 791
		}
791 792

  
792 793
		//this.tblResults.add
793
		if (this.bookmarks.hasBookmark(this.store.getName())) {
794
			Bookmark<DefaultSearchParameters> initBookmark = this.bookmarks.get(this.store.getName());
795
                        initBookmark.used();
796
                        doSearchFromParameters(initBookmark.getValue());
797
		} else {
794
                if (this.automaticallySearch){
795
                    if (this.bookmarks.hasBookmark(this.store.getName())) {
796
                            Bookmark<DefaultSearchParameters> initBookmark = this.bookmarks.get(this.store.getName());
797
                            initBookmark.used();
798
                            putParametersAndSearch(initBookmark.getValue());
799
                    } else {
800
                        clear();
801
                        search();
802
                    }
803
                } else {
798 804
                    clear();
799
                    search();
805
                    
800 806
                }
801 807
	}
802 808
        
803
    private void doSearchFromParameters(DefaultSearchParameters searchParams) {
809
    private void putParametersAndSearch(DefaultSearchParameters searchParams) {
804 810
        DefaultSearchParameters params;
805 811
        try {
806 812
            params = searchParams.getCopy();
......
962 968
                return STATUS_OK;
963 969
	}
964 970

  
971
        @Override
965 972
	public int search(SearchParameters searchParams) {
966
            return search(searchParams);
973
            ((DefaultSearchParameters)searchParams).fix(this.getFeatureType());
974
            return doSearch(searchParams);
967 975
        }
968 976
        
969 977
	private int doSearch(SearchParameters searchParams) {
......
996 1004
			);
997 1005
			model.setValue(tableModel);
998 1006
			rowCount.setValue(tableModel.getRowCount());
1007
        		resultModel = (SimpleFeaturesTableModel) model.getValue();
999 1008
		} catch (Exception ex) {
1000 1009
			LOGGER.warn("Search not able to be executed. Can't get features or create table model", ex);
1001 1010
			status.setTitle(ToolsLocator.getI18nManager().getTranslation("_Errors_getting_new_feature_set") + "...");
......
1007 1016
				I18nManager i18n = ToolsLocator.getI18nManager();
1008 1017
				try {
1009 1018
					TableModel oldmodel = tblResults.getModel();
1010
					resultModel = (SimpleFeaturesTableModel) model.getValue();
1011 1019
					tblResults.setModel(resultModel);
1012 1020
					resultModel.setCellRenderers(tblResults, getCustomRenderers(searchParams));
1013 1021
					if (oldmodel instanceof SimpleFeaturesTableModelImpl) {
......
1400 1408
		return this.showActions;
1401 1409
	}
1402 1410

  
1403
	public static String getAttributeDescriptorLabel(FeatureAttributeDescriptor attrdesc, String tableName) {
1404
		String theLabel;
1405
		int theUseLabels;
1406
		if (useLabels == null) {
1407
			Tags tags = attrdesc.getTags();
1408
			if (tags.has(DAL_USE_LABELS)) {
1409
				theUseLabels = tags.getInt(DAL_USE_LABELS, USE_LABELS_NO);
1410
			} else {
1411
				if (attrdesc.getFeatureType() != null) {
1412
					tags = attrdesc.getFeatureType().getTags();
1413
					theUseLabels = tags.getInt(DAL_USE_LABELS, USE_LABELS_NO);
1414
				} else {
1415
					theUseLabels = USE_LABELS_NO;
1416
				}
1417
			}
1418
		} else {
1419
			theUseLabels = useLabels;
1420
		}
1421
		switch (theUseLabels) {
1422
			case USE_LABELS_YES:
1423
				if (StringUtils.isBlank(tableName)) {
1424
					theLabel = attrdesc.getLocalizedLabel();
1425
				} else {
1426
					theLabel = String.format("%s [%s]", attrdesc.getLocalizedLabel(), tableName);
1427
				}
1428
				break;
1429
			default:
1430
			case USE_LABELS_NO:
1431
				if (StringUtils.isBlank(tableName)) {
1432
					theLabel = attrdesc.getName();
1433
				} else {
1434
					theLabel = String.format("%s [%s]", attrdesc.getName(), tableName);
1435
				}
1436
				break;
1437
			case USE_LABELS_BOTH:
1438
				if (StringUtils.isBlank(tableName)) {
1439
					theLabel = String.format("%s [%s]", attrdesc.getLocalizedLabel(), attrdesc.getName());
1440
				} else {
1441
					theLabel = String.format("%s [%s/%s]", attrdesc.getLocalizedLabel(), attrdesc.getName(), tableName);
1442
				}
1443
				break;
1444
		}
1445
		return theLabel;
1446
	}
1447

  
1448 1411
	private void doCalculatedColumns() {
1449 1412
		WindowManager_v2 winmanager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
1450 1413
		I18nManager i18n = ToolsLocator.getI18nManager();
......
1882 1845
		return this.propertiesHelper.getProperties();
1883 1846
	}
1884 1847

  
1848
    public void setAutomaticallySearch(boolean automaticallySearch){
1849
        this.automaticallySearch = automaticallySearch;
1850
    }
1851
    
1852
    public boolean isAutomaticallySearch(){
1853
        return automaticallySearch;
1854
    }
1855
        
1885 1856
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/fmap/dal/swing/searchpanel/FeatureStoreSearchPanel.java
91 91
    
92 92
    public boolean isFilterOnlyMode();
93 93
    
94
    public void setAutomaticallySearch(boolean automaticallySearch);
95
    
96
    public boolean isAutomaticallySearch();
97
    
94 98
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/fmap/dal/swing/DataSwingManager.java
182 182
    public FeaturesFormContext createFeaturesFormContext(FeatureStore store);
183 183
    
184 184
    public TreeModel createTreeModel(StoresRepository repository);
185

  
186
    String getAttributeDescriptorLabel(FeatureAttributeDescriptor attrdesc);
187

  
188
    String getAttributeDescriptorLabel(FeatureAttributeDescriptor attrdesc, String tableName);
189

  
190
    /**
191
     * @return the useLabels
192
     */
193
    Integer getUseLabels();
194

  
195
    /**
196
     * @param useLabels the useLabels to set
197
     */
198
    void setUseLabels(Integer useLabels);
185 199
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/fmap/dal/swing/featuretype/FeatureAttributeListCellRenderer.java
8 8
 */
9 9
public interface FeatureAttributeListCellRenderer extends ListCellRenderer<Object> {
10 10
    
11
    public void setUseLabeld(int useLabels);
11
    public void setUseLabels(Integer useLabels);
12 12
    
13
    public int getUseLabels();
13
    public Integer getUseLabels();
14 14
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/extension/geometriespalette/GeometriesPalettePanel.java
98 98
        DataSwingManager dataSwingManager = DALSwingLocator.getDataSwingManager();
99 99

  
100 100
        FeatureAttributeListCellRenderer renderer = dataSwingManager.createDefaultFeatureAttributeListCellRenderer();
101
        renderer.setUseLabeld(DataManager.USE_LABELS_NO);
101
        renderer.setUseLabels(DataManager.USE_LABELS_NO);
102 102
        this.cboLabel.setRenderer(renderer);
103 103
        labelPicker = dataSwingManager.createAttributeDescriptorPickerController(this.cboLabel);
104 104
        labelPicker.addChangeListener((ChangeEvent e) -> {
105 105
            doChangeAttrLabel();
106 106
        });
107 107
        renderer = dataSwingManager.createDefaultFeatureAttributeListCellRenderer();
108
        renderer.setUseLabeld(DataManager.USE_LABELS_NO);
108
        renderer.setUseLabels(DataManager.USE_LABELS_NO);
109 109
        this.cboColor.setRenderer(renderer);
110 110
        colorPicker = dataSwingManager.createAttributeDescriptorPickerController(this.cboColor);
111 111
        colorPicker.addChangeListener((ChangeEvent e) -> {
112 112
            doChangeAttrColor();
113 113
        });
114 114
        renderer = dataSwingManager.createDefaultFeatureAttributeListCellRenderer();
115
        renderer.setUseLabeld(DataManager.USE_LABELS_NO);
115
        renderer.setUseLabels(DataManager.USE_LABELS_NO);
116 116
        this.cboGroup.setRenderer(renderer);
117 117
        groupPicker = dataSwingManager.createAttributeDescriptorPickerController(this.cboGroup);
118 118
        groupPicker.addChangeListener((ChangeEvent e) -> {

Also available in: Unified diff