Revision 2609

View differences:

org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.swing/org.gvsig.vectorediting.swing.impl/src/main/java/org/gvsig/vectorediting/swing/impl/DefaultEditingContext.java
42 42
import javax.swing.JOptionPane;
43 43
import javax.swing.SwingUtilities;
44 44
import org.apache.commons.lang3.StringUtils;
45
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
46
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
45 47
import org.gvsig.expressionevaluator.ExpressionUtils;
46 48
import org.gvsig.fmap.dal.DataTypes;
47 49
import org.gvsig.fmap.dal.EditingNotification;
......
70 72
import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
71 73
import org.gvsig.fmap.mapcontrol.tools.CompoundBehavior;
72 74
import org.gvsig.tools.ToolsLocator;
75
import org.gvsig.tools.bookmarksandhistory.Bookmark;
73 76
import org.gvsig.tools.dataTypes.Coercion;
74 77
import org.gvsig.tools.i18n.I18nManager;
78
import org.gvsig.tools.locator.LocatorException;
75 79
import org.gvsig.tools.observer.BaseNotification;
76 80
import org.gvsig.tools.observer.Notification;
77 81
import org.gvsig.tools.observer.ObservableHelper;
......
992 996
    private static EditingContextSymbolTable contextSymbolTable = new EditingContextSymbolTable();
993 997
    
994 998
    private Point parsePoint(String response) throws ParsePointException {
999
        response = fixResponseUsingBookmarks(response);
1000
        
995 1001
        try {
996 1002
            Object x = ExpressionUtils.evaluate(contextSymbolTable, response);
997 1003
            if( x instanceof Point ) {
......
1015 1021
    }
1016 1022
    
1017 1023
    private Double parseValue(String response) throws ParseValueException {
1024
        response = fixResponseUsingBookmarks(response);
1025

  
1018 1026
        try {
1019 1027
            Object x = ExpressionUtils.evaluate(contextSymbolTable, response);
1020 1028
            if( x instanceof Double ) {
......
1031 1039

  
1032 1040
    }
1033 1041

  
1042
    protected String fixResponseUsingBookmarks(String response) throws LocatorException {
1043
        if(StringUtils.startsWith(response, "$")){
1044
            int n = StringUtils.indexOf(response, " ");
1045
            if(n>0){
1046
                String name = StringUtils.left(response, n);
1047
                ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getExpressionEvaluatorManager();
1048
                Bookmark bookmark = manager.getBookmarks().get(name);
1049
                if(bookmark != null){
1050
                    response = name+"("+response.substring(n)+")";
1051
                }
1052
            }
1053
        }
1054
        return response;
1055
    }
1056

  
1034 1057
    protected void refreshMenusAndToolBars() {
1035 1058
        if (!SwingUtilities.isEventDispatchThread()) {
1036 1059
            SwingUtilities.invokeLater(new Runnable() {

Also available in: Unified diff