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

View differences:

GeometriesPalettePanel.java
11 11
import java.awt.Image;
12 12
import java.awt.image.BufferedImage;
13 13
import java.util.AbstractList;
14
import java.util.ArrayList;
15 14
import java.util.Collections;
16 15
import java.util.List;
17 16
import javax.swing.AbstractListModel;
......
23 22
import javax.swing.SpinnerNumberModel;
24 23
import javax.swing.SwingConstants;
25 24
import javax.swing.event.ChangeEvent;
25
import javax.swing.event.ChangeListener;
26 26
import javax.swing.event.ListSelectionEvent;
27 27
import org.apache.commons.lang3.StringUtils;
28 28
import org.gvsig.expressionevaluator.Expression;
29 29
import org.gvsig.expressionevaluator.ExpressionUtils;
30
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingLocator;
31
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
32
import org.gvsig.expressionevaluator.swing.ExpressionPickerController;
30 33
import org.gvsig.fmap.dal.DALLocator;
31 34
import org.gvsig.fmap.dal.DataManager;
32 35
import org.gvsig.fmap.dal.exception.DataException;
......
50 53
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.impl.SimpleFillSymbol;
51 54
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.impl.SimpleLineSymbol;
52 55
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.impl.SimpleMarkerSymbol;
53
import org.gvsig.tools.dispose.DisposeUtils;
54 56
import org.gvsig.tools.dynobject.Tags;
55 57
import org.gvsig.tools.swing.api.FilteredListController;
56 58
import org.gvsig.tools.swing.api.ToolsSwingLocator;
......
73 75
    private FeatureStore store;
74 76
    private FilteredListController dataController;
75 77
    private AttributeDescriptorPickerController colorPicker;
76
    private AttributeDescriptorPickerController groupPicker;
77
    private Expression filter;
78
//    private AttributeDescriptorPickerController groupPicker;
79
    private ExpressionPickerController filterPicker;
80
//    private Expression filter;
78 81

  
79 82
    private class FeratureWithGeomCellRenderer extends DefaultListCellRenderer {
80 83

  
......
115 118
    private void initComponents() {
116 119
        ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
117 120
        DataSwingManager dataSwingManager = DALSwingLocator.getDataSwingManager();
121
        ExpressionEvaluatorSwingManager expressionSwingManager = ExpressionEvaluatorSwingLocator.getManager();
118 122

  
119 123
        FeatureAttributeListCellRenderer renderer = dataSwingManager.createDefaultFeatureAttributeListCellRenderer();
120 124
        renderer.setUseLabels(DataManager.USE_LABELS_NO);
......
134 138
        
135 139
        renderer = dataSwingManager.createDefaultFeatureAttributeListCellRenderer();
136 140
        renderer.setUseLabels(DataManager.USE_LABELS_NO);
137
        this.cboGroup.setRenderer(renderer);
138
        groupPicker = dataSwingManager.createAttributeDescriptorPickerController(this.cboGroup);
139
        groupPicker.addChangeListener((ChangeEvent e) -> {
140
            doChangeAttrGroup();
141

  
142
        this.filterPicker = expressionSwingManager.createExpressionPickerController(
143
                this.txtFilter, 
144
                this.btnFilter
145
        );
146
        this.filterPicker.addChangeListener((ChangeEvent e) -> {
147
            doChangeAttrLabel();
141 148
        });
142
        groupPicker.setAllowNull(true);
143 149
        SpinnerNumberModel spnSizeModel = new SpinnerNumberModel(100, 30, 600, 10);
144 150
        this.spnSize.setModel(spnSizeModel);
145 151
        this.spnSize.addChangeListener((ChangeEvent e) -> { doChangeSize(); });
......
154 160
        this.dataController = toolsSwingManager.createFilteredListController(lstData, txtDataFilter, btnDataFilter);
155 161

  
156 162
        colorPicker.setEnabled(false);
157
        groupPicker.setEnabled(false);
163
        filterPicker.setEnabled(true);
158 164
        ToolsSwingUtils.ensureRowsCols(this, 25,40,25,80);
159 165
    }
160 166

  
......
235 241
            this.attributeLabel = attributeLabel;
236 242
        }
237 243
        
238
        public DataModel(FeatureStore store, Expression filter, FeatureAttributeDescriptor attributeLabel, FeatureAttributeDescriptor attributeGroup) {
239
            this(attributeLabel);
240
            String groupAttributeName = attributeGroup.getName();
241
            String order = groupAttributeName;
242
            if( attributeLabel!=null ) {
243
                order = order+","+attributeLabel.getName();
244
            }
245
            LabeledValueImpl<List<Feature>> element = null;
246
            String previousGroup = null;
247
            FeatureSet features = createFeatureSet(store, filter, order);
248
            for (Feature feature : features) {
249
                if( !StringUtils.equals(previousGroup, feature.getString(groupAttributeName)) ) {
250
                    if( element != null ) {
251
                        elements.add(element);
252
                    }
253
                    element = new LabeledValueImpl<>(
254
                            feature.getString(attributeLabel.getName()),
255
                            new ArrayList<>()
256
                    );
257
                }
258
                element.getValue().add(feature.getCopy());
259
            }
260
            DisposeUtils.disposeQuietly(features);
261
        }
244
//        public DataModel(FeatureStore store, Expression filter, FeatureAttributeDescriptor attributeLabel, FeatureAttributeDescriptor attributeGroup) {
245
//            this(attributeLabel);
246
//            String groupAttributeName = attributeGroup.getName();
247
//            String order = groupAttributeName;
248
//            if( attributeLabel!=null ) {
249
//                order = order+","+attributeLabel.getName();
250
//            }
251
//            LabeledValueImpl<List<Feature>> element = null;
252
//            String previousGroup = null;
253
//            FeatureSet features = createFeatureSet(store, filter, order);
254
//            for (Feature feature : features) {
255
//                if( !StringUtils.equals(previousGroup, feature.getString(groupAttributeName)) ) {
256
//                    if( element != null ) {
257
//                        elements.add(element);
258
//                    }
259
//                    element = new LabeledValueImpl<>(
260
//                            feature.getString(attributeLabel.getName()),
261
//                            new ArrayList<>()
262
//                    );
263
//                }
264
//                element.getValue().add(feature.getCopy());
265
//            }
266
//            DisposeUtils.disposeQuietly(features);
267
//        }
262 268
        
263 269
        public DataModel(FeatureStore store, Expression filter, FeatureAttributeDescriptor attributeLabel) {
264 270
            this(attributeLabel);
......
300 306
    
301 307
    private void doChangeAttrLabel() {
302 308
        this.attributeLabel = this.labelPicker.get();
303
        this.lstData.setModel(new DataModel(store, filter, attributeLabel));
309
        this.lstData.setModel(new DataModel(store, this.getFilter(), attributeLabel));
304 310
    }
305 311

  
306 312
    public void setFilter(String filter) {
307
        this.filter = ExpressionUtils.createExpression(filter);
313
        this.filterPicker.set(ExpressionUtils.createExpression(filter));
308 314
    }
309 315
    
310 316
    public void setFilter(Expression filter) {
311
        this.filter = filter;
317
        this.filterPicker.set(filter);
312 318
    }
313 319
    
314 320
    public void setFeatureStore(FeatureStore store) {
321
        DataSwingManager dataSwingManager = DALSwingLocator.getSwingManager();
322

  
315 323
        this.store = store;
316 324
        FeatureType featureType = store.getDefaultFeatureTypeQuietly();
317 325
        this.lstData.setModel(new DataModel());
318 326
        this.labelPicker.setFeatureType(featureType);
319 327
        this.colorPicker.setFeatureType(featureType);
320
        this.groupPicker.setFeatureType(featureType);
328

  
329
        dataSwingManager.configureExpressionBuilder(this.filterPicker.getConfig(), this.store);        
330
        
321 331
        this.geomattr = featureType.getDefaultGeometryAttribute();
322 332
        GeometryType geomtype = geomattr.getGeomType();
323 333
        if( GeometryUtils.isSubtype(Geometry.TYPES.POINT, geomtype.getType()) ||
......
333 343
    }
334 344

  
335 345
    public void updateListContents() {
336
        FeatureAttributeDescriptor groupAttribute = this.groupPicker.get();
337
        if( groupAttribute == null ) {
338
            this.lstData.setModel(new DataModel(store, filter, attributeLabel));
339
        } else {
340
            this.lstData.setModel(new DataModel(store, filter, attributeLabel, groupAttribute));
341
        }
346
        this.lstData.setModel(new DataModel(store, this.getFilter(), attributeLabel));
342 347
    }
343 348
    
344 349
    public static void showPalette(FLyrVect layer) {
......
359 364
        if( StringUtils.isBlank(labelattr) ) {
360 365
            labelattr = tags.getString("geometriespalette.attribute.label", null);
361 366
        }
362
        String attrGroup = tags.getString("geometriespalette.attribute.group", null);
367
//        String attrGroup = tags.getString("geometriespalette.attribute.group", null);
363 368
        String attrColor = tags.getString("geometriespalette.attribute.color", null);
364 369
        int size = tags.getInt("geometriespalette.size",-1);
365 370
        
366 371
        GeometriesPalettePanel palette = new GeometriesPalettePanel();
367 372
        palette.setFilter(filter);
368 373
        palette.setFeatureStore((FeatureStore) store);
369
        palette.setGroupAttributeName(attrGroup);
370 374
        palette.setColorAttributeName(attrColor);
371 375
        if( size>0 ) {
372 376
            palette.setSize(size);
......
390 394
        this.labelPicker.set(labelattr);
391 395
    }
392 396

  
393
    void setGroupAttributeName(String attrGroup) {
394
        this.groupPicker.set(attrGroup);
395
    }
396

  
397 397
    void setColorAttributeName(String attrColor) {
398 398
        this.colorPicker.set(attrColor);
399 399
    }
......
419 419
        return this;
420 420
    }
421 421

  
422
    public Expression getFilter() {
423
        return this.filterPicker.get();
424
    }
422 425
}

Also available in: Unified diff