Revision 44035

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/expressionevaluator/SavedPointsElement.java
1
package org.gvsig.app.project.documents.view.expressionevaluator;
2

  
3
import java.util.ArrayList;
4
import java.util.Iterator;
5
import java.util.List;
6
import java.util.Objects;
7
import org.apache.commons.lang3.tuple.Pair;
8
import org.gvsig.expressionevaluator.Function;
9
import org.gvsig.expressionevaluator.swing.Element;
10
import org.gvsig.expressionevaluator.swing.Element.GroupElement;
11
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingLocator;
12
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
13
import org.gvsig.expressionevaluator.swing.spi.AbstractElement;
14
import org.gvsig.fmap.geom.primitive.Point;
15
import org.gvsig.temporarystorage.TemporaryStorageGroup;
16
import org.gvsig.temporarystorage.TemporaryStorageLocator;
17
import org.gvsig.temporarystorage.TemporaryStorageManager;
18
import org.gvsig.tools.ToolsLocator;
19

  
20
/**
21
 *
22
 * @author jjdelcerro
23
 */
24
public class SavedPointsElement
25
        extends AbstractElement
26
        implements GroupElement {
27

  
28
    private class PointEntryElement
29
            extends AbstractElement
30
            implements ConstantElement {
31

  
32
        private final Object value;
33

  
34
        public PointEntryElement(Object value, String name) {
35
            super(name, null, "expressionbuilder-element-constant");
36
            this.value = value;
37
        }
38

  
39
        @Override
40
        public Object getValue() {
41
            return value;
42
        }
43
    }
44

  
45
    private final List<Element> childs;
46

  
47
    public SavedPointsElement() {
48
        super(ToolsLocator.getI18nManager().getTranslation("Saved points"), null, "view-query-coordinate-capture");
49

  
50
        ExpressionEvaluatorSwingManager evManager = ExpressionEvaluatorSwingLocator.getManager();
51
        TemporaryStorageManager manager = TemporaryStorageLocator.getTemporaryStorageManager();
52
        TemporaryStorageGroup storage = manager.create("Points", Point.class);
53

  
54
        this.childs = new ArrayList<>();
55
        for (Pair<String, Object> entry : storage.asList()) {
56
            ConstantElement e = new PointEntryElement(entry.getValue(),entry.getKey());
57
            this.childs.add(e);
58
        }
59
    }
60

  
61
    @Override
62
    public Element get(int index) {
63
        return this.childs.get(index);
64
    }
65

  
66
    @Override
67
    public int size() {
68
        return this.childs.size();
69
    }
70

  
71
    @Override
72
    public Iterator<Element> iterator() {
73
        return this.childs.iterator();
74
    }
75

  
76
    @Override
77
    public void addElement(Element element) {
78
        this.childs.add(element);
79
    }
80

  
81
    @Override
82
    public void addElement(Function function) {
83
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
84
    }
85

  
86
    @Override
87
    public List<Element> getElements() {
88
        return this.childs;
89
    }
90

  
91
    @Override
92
    public boolean hasSubgroups() {
93
        return false;
94
    }
95

  
96
    @Override
97
    public boolean hasMoreElements() {
98
        return false;
99
    }
100

  
101
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/expressionevaluator/ViewElementFactory.java
21 21
        ViewElement e = new ViewElement();
22 22
        return e;
23 23
    }
24
    
25
    
24

  
25
    @Override
26
    public boolean isAutoload() {
27
        return true;
28
    }
29
   
26 30
    public static void selfRegister() {
27 31
        ExpressionEvaluatorSwingManager manager = ExpressionEvaluatorSwingLocator.getManager();
28 32
        ViewElementFactory factory = new ViewElementFactory();
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/expressionevaluator/SavedPointsElementFactory.java
1
package org.gvsig.app.project.documents.view.expressionevaluator;
2

  
3
import org.gvsig.andami.IconThemeHelper;
4
import org.gvsig.expressionevaluator.swing.Element;
5
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingLocator;
6
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
7
import org.gvsig.expressionevaluator.swing.spi.AbstractElementFactory;
8

  
9
/**
10
 *
11
 * @author jjdelcerro
12
 */
13
public class SavedPointsElementFactory extends AbstractElementFactory {
14
    
15
    public SavedPointsElementFactory() {
16
        super("CapturedPoints", null);
17
    }
18

  
19
    @Override
20
    public Element createElement(Object... parameters) {
21
        Element e = new SavedPointsElement();
22
        return e;
23
    }
24

  
25
    @Override
26
    public boolean isAutoload() {
27
        return true;
28
    }
29
    
30
    public static void selfRegister() {
31
        ExpressionEvaluatorSwingManager manager = ExpressionEvaluatorSwingLocator.getManager();
32
        SavedPointsElementFactory factory = new SavedPointsElementFactory();
33
        manager.registerElement(factory);
34
    }
35
    
36
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/ProjectSymbolTable.java
27 27
import org.gvsig.fmap.dal.feature.FeatureStore;
28 28
import org.gvsig.fmap.geom.Geometry;
29 29
import org.gvsig.fmap.geom.primitive.Envelope;
30
import org.gvsig.fmap.geom.primitive.Point;
30 31
import org.gvsig.fmap.mapcontext.MapContext;
31 32
import org.gvsig.fmap.mapcontext.layers.FLayer;
32 33
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
33 34
import org.gvsig.fmap.mapcontrol.AreaAndPerimeterCalculator;
35
import org.gvsig.temporarystorage.TemporaryStorageGroup;
36
import org.gvsig.temporarystorage.TemporaryStorageLocator;
37
import org.gvsig.temporarystorage.TemporaryStorageManager;
34 38

  
35 39
/**
36 40
 *
......
311 315

  
312 316
    }
313 317

  
318

  
319
    private class SavedPointFunction extends AbstractFunction {
320

  
321
        public SavedPointFunction() {
322
            super(
323
                    "Project",
324
                    "savedpoint",
325
                    Range.is(1),
326
                    "Return the value of the saved point with the name indicated.\n"
327
                            + "If the named point do not exists return null.",
328
                    "savedpoint({{name}})",
329
                    new String[]{
330
                        "name - String value with the name of the point"
331
                    },
332
                    "Geometry"
333
            );
334
        }
335

  
336
        @Override
337
        public Object call(Interpreter interpreter, Object[] args) throws Exception {
338
            TemporaryStorageManager manager = TemporaryStorageLocator.getTemporaryStorageManager();
339
            TemporaryStorageGroup storage = manager.create("Points",Point.class);
340
            Geometry value = (Geometry) storage.get(getStr(args, 0));
341
            return value;
342
        }
343

  
344
    }
345

  
314 346
    private class AreaFunction extends AbstractFunction {
315 347

  
316 348
        public AreaFunction() {
......
466 498
        this.addFunction(new PropertyFunction());
467 499
        this.addFunction(new AreaFunction());
468 500
        this.addFunction(new PerimeterFunction());
501
        this.addFunction(new SavedPointFunction());
469 502
    }
470 503

  
471 504
    private MapContext getMapContext(Feature feature) {
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/ApplicationLibrary.java
35 35
import org.gvsig.app.gui.preferencespage.AppSymbolPreferences;
36 36
import org.gvsig.app.project.DefaultProject;
37 37
import org.gvsig.app.project.ProjectSymbolTable;
38
import org.gvsig.app.project.documents.view.expressionevaluator.SavedPointsElementFactory;
38 39
import org.gvsig.app.project.documents.view.expressionevaluator.ViewElementFactory;
39 40
import org.gvsig.expressionevaluator.ExpressionEvaluatorLibrary;
40 41
import org.gvsig.fmap.mapcontext.MapContextLibrary;
......
93 94
		installBaseSymbols();
94 95
                ProjectSymbolTable.selfRegister();
95 96
                ViewElementFactory.selfRegister();
97
                SavedPointsElementFactory.selfRegister();
96 98
        }
97 99

  
98 100
	/**
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/extension/SelectByAttributes.java
49 49

  
50 50
        final JExpressionBuilder builder = swingManager.createJExpressionBuilder();
51 51
        builder.addSymbolTable(DataManager.FEATURE_SYMBOL_TABLE);
52
        Element element = swingManager.createElement("View");
53
        if (element != null) {
54
            builder.getElements().add(element);
55
        }
56
        element = swingManager.createElement(
52
        builder.addElement(swingManager.createElement("View"));
53
        builder.addElement(
54
             swingManager.createElement(
57 55
                DataSwingManager.FEATURE_STORE_EXPRESSION_ELEMENT,
58 56
                builder,
59 57
                store
58
            )
60 59
        );
61
        if (element != null) {
62
            builder.getElements().add(element);
63
        }
64 60
        panel.add(builder.asJComponent(), BorderLayout.CENTER);
65 61
        JPanel buttons = new JPanel();
66 62
        buttons.setLayout(new FlowLayout(FlowLayout.RIGHT, 4, 4));

Also available in: Unified diff